!!!独り言日記 !!MML(2005/12/31) 2chでたまたま見かけた「TSS Clipboard Player」。 http://www.yomogi.sakura.ne.jp/~si/SolidImage/tpda2.shtml ファミコンとかの懐かしのPSG(矩形波・三角波・ホワイトノイズなど)を使った 演奏を行うことができます。最大26chという(昔から見ると)夢のような仕様。 これが面白いのは、クリップボードにコピーしたテキストを そのまま演奏ができる、ということ。 つまり、[Ctrl] + [C]で取り込んだテキストをダイレクトに 解釈して鳴らしています。 これがまたまた面白い。MMLはPC98時代に遊んでたなぁ(雑誌に載ってたのを打ち込んでいただけですが)。 早速 頭にこびりついている昔のファミコンの某曲をMMLで必死で書いているのですが、 ・・・い、いかん、耳コピーでの音取りがあまりにもへたっぴだ、ワタシ。 途中で記憶の中のメロディーがおかしくなってしまうので、なかなか時間がかかってます(^_^;;。 2chの以下の板なんて、すごい方達がいっぱいいますね。ほんと、えらいレベルの高さだ・・。 http://game10.2ch.net/test/read.cgi/gamestg/1134269690/ http://pc8.2ch.net/test/read.cgi/dtm/1135002098/ MMLの場合はMIDIと違ってプレーンなテキストですので、 「ああ、こうやるのか」とか他の方のを見ると非常に参考になります。 #WAV 0,<0,16,32,48,64,80,96,112,112,96,80,64,48,32,16,0, -16,-32,-48,-64,-80,-96,-112,-128,-128,-112,-96,-80,-64,-48,-32,-16>; %4@0s0 o3cdefgabget_native_window()); みたいにしても、HWNDとは関係ない値が取得されました。 ・・・姑息にHWNDをたどるか・・・・。 !!Mayaのポリゴンモデリング練習中(2005/12/25) 机とかツボとかの簡単なものを飛ばして、いきなりポリゴン顔の製作中。 {{ref_image maya_20051225.png}} Mayaでの作法は分からないので、私が唯一使える3Dアトリエの作法で できるかどうか試してました。 まだまだ途中なんですが、手ごたえとしては「難なく可能」な感じがします。 私はSoft Modification(Shadeで言うマグネット)をよく使うのですが、 これがアクセスしやすい位置にデフォルトで存在する、というのが 気に入ってます(移動・回転・拡大縮小の下にSoft Modification アイコンがあります)。 私は、NURBSが一般的になろうともマグネット機能は欠かせない、と 思ってるのですが一般ではどうでしょうね? (昔、とあるデザイナさんはいらない、と突っぱねてましたが(^_^;;) Shadeでもプラグインじゃなくて、標準機能でアクセスしやすい位置に マグネットを設けたほうがいいんじゃないか、と前から思ってます。 モデリングは私としては「買い」です(NURBSはまだ掘ってません)。 ただ、マテリアル設定がちょっと回りくどいかな、という気が。 光源設定と影有効化もShadeから比べると少しくどい印象を受けました。 まぁ、住めば都なんでしばらくPLEでいろいろ遊びながら覚えていこうと思ってます。 もう購入路線前提です(笑)。いやはや、楽しいのなんの。 アニメーションが目標にあるので、これが使いやすいか調査するまでは まだまだ時間がかかりそうです。 !!惑星大怪獣ネガドン(2005/12/25) ひさびさに秋葉に行ってきました。 ヨドバシ初めて行きましたけど、えらい広いですね。 とても回りきれないのでまた探索にいかねば。 で、別店で「惑星大怪獣ネガドン」というDVD作品がありましたので 買ってきました。 http://www.h2.dion.ne.jp/~magara/project.html 昭和の空気感あふれる特撮ものです(ウルトラマンやゴジラの影響を 受けまくっている、80年代全盛期の感じ)。 これ、すべて個人が製作した3DCG作品で、MAXを使っているようです。 バイタリティーあふれる方もいるもんだなぁ。空気感がよく出てます。 また、メイキングが非常に参考になりました。フィルターの作り方も 解説されてました。こんな世界観は好きだなぁ。 そういや、新海さんのはまだ見てないや。 ネガドンも、同じくコミック・ウェーブさんの協力の元で制作されているようで。 !!MEL(2005/12/24) Mayaのスクリプト言語としてMELというのがあります。 これを使うことで、簡単にMaya上で操作系の 便利ツールを作ったり独自のダイアログを出したり、が可能になります。 以下は、球をランダムに出してみたもの。 {{ref_image maya_mel_20051224.png}} MELのソースは以下のようになります。変数指定がPHPみたいですね。 string $name; float $dat; float $x, $y, $z; int $i; for($i = 0; $i < 100; $i++) { $rad = rand(2.0); $x = rand(10) - 5.0; $y = rand(10) - 5.0; $z = rand(10) - 5.0; $name = "mySphere" + $i; sphere -radius $rad -name $name -pivot $x $y $z; } 「rand」で第一引数で指定した値までのランダムな浮動小数点を求めて、 「sphere」で半径、名前、座標位置を指定して球を生成しています。 上記ですと、100個の球をランダムな半径・位置で配置します。 で、びっくりしたんですがPLEでこれが使用できます。 あらゆることをMELでいじれますので、いろいろ幅を広げれそうな予感(逆に、 MELが使えないとMayaは操作しにくいと聞いたこともありますが)。 PLEのヘルプにMELのリファレンスがありますので、すぐにいじることができました。 いやはや簡単です。案外プログラマ向けの3Dツールかもしれない・・。 ただ、当たり前ですがオブジェクトの名称に日本語は使えないですね。 製品版でも英語onlyみたいなので(ドキュメントは日本語ですが)、ちと残念。 まだまだ探り探りなんですが、ぼやっとMayaの性格がつかめてきた感じです(といっても、氷山の一角・・・奥が深い・・・)。 !!Maya PLE 7.0(2005/12/24) FBX SDK触ってからというもの、ちょっとMayaにほれ込んでまして Maya PLEで遊んでます。 ポリゴンモデリングの方法が分からなかったので、 「3DビギナーのためのMaya」という本を買って勉強中。 複数ポリゴンの結合って、他オブジェクト同士の場合は ヒストリを無効にしてからポリゴンを複数選択して[polygons]-[combine]なんですね、気づかなかった・・・・(そうしないと変な行列情報が残ってしまう)。 仕事場ではすでにMayaがあるのですが、PLEをまともに 使いこなせるようになってから趣味を広げるために 個人的に買おうかなと思ってます。MAXは私にはしっくりこなかったのですが、 Mayaはなぜか使いやすいです。 デザイナの方に聞いたところ、たしかにMayaは使いやすい(けど高い)、 ということでした。 また、PLEのヘルプ(日本語のものです)は結構分かりやすくていいですね。 PLEではエクスポートで別ツールでいじれそうな形式出力はさすがになかったのですが、 インポートではFBXが使えました。 !!Shade8プラグインSDKのdialog_interfaceでのOpenGL描画(2005/12/19) ちょっと骨がありそうだったので実装してみました。 {{ref_image shade_dialog_opengl.png}} 「opengl_window_class」というのを新たにでっち上げて、 Shadeのイベントを乗っ取っての実装です。 普通のやり方では、dialog_interfaceにてOpenGL描画はできません。 実は実装にあたって、スレッドを使わないといけませんでした。 これでマウス処理・タイマー(によるOpenGLのアニメーションなど)・キーイベント、再描画はすべて自前で処理できます。 OSXではどうかな、まだ未調査ですができそうな気もします。 きっちりまとめてからソース公開しますね。 !!SDK(2005/12/14) 仕事で使う予定の某SDKを触ってみる(前述のFBXじゃないよ)。 結構楽しい、、、というか情報公開してむずむずするのですが、 仕事なんで表に出せません、、、、むぅ。 時が来たらまたTipsなどを披露しますね。 ちょっと前までは 自分で何もかも作らなければ気がすまなかったのですが、 最近はSDKで開発効率がアップした日にゃ「頼っちゃおうかな」 となる気持ちのほうが強いです。 小さいこと(最適化とかマルチプラットフォームでの調整とか)ばっかりしていて結局アプリが完成しなかった、ということが 多々あるので、そろそろモノ作りの大きな枠に乗らないといけないかなぁと 少し焦りがあります。これでもまだ「ツール」の域は出ないので・・・ と更なる葛藤があるわけですが(苦笑)。 以前書いたFBXなんですが、フォーマットとして完成度が高いですね。 これのサンプルとしてFBXビュワーがあります。 {{ref_image fbx_img_20051214.png}} もちろんソースつきなので、時間があればシーン階層の解析ツールでも 作りたいところですが、あいにく時間がありません。 このSDKは触っていてワクワクします。自分のツールのインポータ・エクスポータで ぜひ採用したいフォーマットだなぁ。 ついでに、妄想でですが 未だにGIレンダラ作成はあきらめきれてません(^_^;;。 アイデアだけなんですが、書いておきます(このあたりは仕事ではやってなくて 完全な趣味です。なんで情報公開OK)。 空間分割の前処理を極力減らすレンダラって書けないでしょうか? たとえば、HUGで空間を分割する場合はゆるく(80x80x80くらい)シーンを 分割します。 そして、トラバースに突入するわけですが、このときに重み付けをしつつ シーンをたどります。で、よく通過するボクセルはさらに再分割して 「階層グリッド」を作っていきます。 これだと、最終的にレイが飛ばないボクセルは空間分割含めて無視することができるかもしれません。 しかし、CPUキャッシュから見ると無駄が多いかな。 後、やはりレイの方向による局所的な状態はもったいないなぁと 思いますので「Ray Classification」で方向によるシーン分割を行います。 これもキャッシュを絡めて「トラバース処理を遅らせる」が何か効かないかなぁと。 後、GIでの拡散反射は1点を中心に半球上をランダムに飛ばすのですが、 もしランダムでないとすると、何かしらの最適化が効かないだろうか、 と妄想してます。 ほか実験してみたいことはあるのですが、 たぶん時間的に厳しいと思われますので棚に上げつつ、今の仕事を 進めることにします(^_^;;。 う〜ん、時間と気力がほしい・・・。 !!OBB - 傾きのあるバウンディングボックス(2005/12/13) ひさびさに3Dの技術的な話題を。 よくレンダラでは「AABB(Axis Aligned Bounding Box)」で XYZ軸に平行な軸で構成される直方体でオブジェクトを囲ったりします。 これは交差判定の前に簡単な形状(ここでは直方体)で刈るためです。 しかし、傾いた形状(XYZ軸に平行な直方体内には収まりにくい形状)では無駄が出ますので、その傾きも考慮した バウンディングボックスを「OBB(Oriented Bounding Box)」と言います。 レンダラだけでなく衝突判定や物理シミュレーションでも応用できそうですね。 ゲームでは特に使えそうです。 DirectXのサンプルでおなじみのトラを囲ってみました。 足元で平行というわけではなく、しっぽも含んで囲まれているのが分かります。 {{ref_image obb_20051213_01.png}} OBBでは、傾き(行列で算出される)のほか、3つの辺の長さと中心位置を パラメータとして持ちます。 これを再帰的に8個(2の3乗)のボックスで囲みます。普通のAABBだと無駄があるのですが、 これだとうまいこと隙間を避けてくれてます。 {{ref_image obb_20051213_02.png}} 32個(2の5乗)のボックスで囲むと、もうトラが分かるくらいの形状で 囲まれているのが分かります。この分割は、再帰的に行います。 BSPみたいにボックス(しかし、斜め向きもあり)の空間を2分割して、それからOBBを求める、を繰り返します。 {{ref_image obb_20051213_03.png}} どちらかというと、レンダラよりも衝突判定で刈るために使えそうですね。 上記だと、たった32個のボックスとの当たり判定だけでも結構な精度を出せそうですので、ゲームだとこのOBB情報をアニメーション時に自動で算出して(それを前処理後に保持しておいて)当たり判定に使うといいかもしれません。 で、肝心のソースですがこちらの方のサイトが大変参考になります(というか参考にしました(^_^;;)。 http://www.nomuraz.com/denpa/ これってなんとなくですが、ポリゴンリダクションに似てるなぁと思います(ゲームでの当たり判定だとリダクションした形状を使うほうが多いのかな)。 !!FBX SDK(2005/12/10) ちょっと頼まれごとがあったのでfbxについて調べていました。 fbxとはAliasが公開している3Dのシーンフォーマットです。 光源・カメラ・テクスチャ・ボーンなど、必要な情報を 1つのファイルにまとめることができます。 これをいじるSDKとして「FBX SDK」というのがあります。 http://www.alias.co.jp/products-services/fbx/ これで遊んでいたのですが、すごい出来がいいです。 「SDKはこうあるべき」というのが伝わってきます。 こうしたいという場合に予想通りの関数が存在する、 ヘッダにコメントがしっかり書いていて分かりやすい、 サンプルソースが的を得た「キタコレ!」な情報が書いている、などなど。 私も見習わないといけないなぁ。 ひさびさに分かりやすいSDKに出会いました (ということは、Mayaプラグインは結構作りやすいのかな)。 ShadeのプラグインSDKもこれくらいすっきりすればいいのですが(^_^;;。 (STLはうまいこと使わないと分かりにくくなる元ですよ〜、と 言いたい(苦笑)) !!資料あさり(2005/12/04) 仕事で使う資料を探しにブックオフで探索。 なかなかいいのがない・・・が、ある棚に使えそうな 雑誌のバックナンバーがあったので購入。 こういうときは古本屋は便利です。 と、まったくコンピュータと関係ない分野なのですが 資料を探していました。 私自身はコンピュータのプログラムの仕事しか しないので、ほかの世界は真新しい反面どう取っ掛かりを つかめばいいのかが難しいです。 コンピュータといっても、しょせんは道具ですので 「何かの業務に使うシステムを作る」となると、 二次的にその業務の知識を少しでも理解していないといけません。 と考えると特殊な分野だなぁと。 コンピュータ関連の書籍は、本屋でも古本屋でもたくさんあったのですが、 私がほしかった分野のものは1つの棚でも少ししかありませんでした。 書籍だけでは判断できませんが、コンピュータの知識は一般にも浸透していて 意外と手をつけやすいものなのかもしれません(もちろん、コンピュータでも さらに細分化されているので、深くなると情報が極端に少なくなるわけですが)。 ネット検索ではもっと情報量が多いのですが、まとまっているものは 少ないですね。手順・ノウハウを文字で表現できないような情報は、 さすがに本のほうが情報量が多いというか(探し方がまずいだけかもしれませんが(^_^;;)。後、ノウハウが商売に結びついているものは さすがに 本でもネットでも公開できるものではないので、その場合は情報がないかな。 !!掲示板の更新が完了しました(2005/12/03) ft-lab.ne.jpの掲示板の更新作業が完了しました。 http://ft-lab.ne.jp/fl_bbs/bbs 何かありましたらご自由にご利用くださいませ。 唐突に関係ない話ですが、 テレビ東京の深夜番組の「牙狼(GARO)」という特撮ものを毎週見ています。 たまたまテレビつけたときに見つけたのですが(3話目くらいから見続けてます)、 このアクションシーンがかっこいい!! って、特撮はゴレンジャーくらいから見たことがなかった気がするのですが、 最近のものってレベルがすごいですね(ほかのもこんなクオリティーなのかな?)。 公式サイトは以下です。 http://www.tv-tokyo.co.jp/garo/ ただ、生身の人間のアクションは目を見張るものがある反面、 CGがちょっと・・・・(いや、かっこいいことには変わりないのですが)。 動きがちと不自然な部分があるかなと。