!!!独り言日記 !!ObjectCracker Ver1.20(2007/04/28) Shade9.xの形状を破片化するプラグイン「ObjectCracker」をVer1.20にバージョンアップしました。以下からダウンロードできます。 http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=ObjectCracker%5Fshade 修正点は高速化、の1点です。 テストでは、頂点数15194、ポリゴン数15064の形状を分割レベル4にて破片化したときの処理時間が、Ver1.10→Ver1.20にて、47sec→5sec、と9.4倍速度アップしました。 実は、これと同じことをShade9 professional/standardでの「ヘアーサロン」でも修正をかけています(まだアップデータは出ていないですが)。関連する箇所は、オブジェクトの同一と思われる頂点をまとめる部分(ヘア設定ダイアログを出すときの前処理)です。 過去バージョンで「遅いよ!!」と思った方は、これにて速度アップを体感していただければと思います。 アルゴリズムとしては以下のとおり。 同一頂点の検索に時間がかかっていたため、これがボトルネックになってました。 オブジェクトを囲むバウンディングボックスを求めて、その中でXYZ軸ごとに等分割を行います(ようはUniformGridです)。 各グリッドに対し、先にオブジェクトの頂点を格納します。 {{ref_image ug_vertex_img_20070428.png}} たとえば、頂点5の近辺の頂点を探す場合は *頂点5がグリッドのどこに入るのか計算(これはあらかじめグリッドに格納するときに位置は求まるので2度計算するまでもないです)→ 図の「B-3」の位置。 *同一グリッド内を調べて、グリッド内の頂点との距離を求めます。この場合は、頂点7のみ調べればいいことになります。 ということで、頂点数が多いオブジェクトの場合でも「ほぼ同一」な頂点検索がかなり速くなります。 この同一頂点検索処理のみの時間を計測すると、二重ループにて単純検索するよりも300倍は速度アップしてました(15000頂点くらいで)。 で、UniformGridに頂点情報を格納するときに時間がかかるのでは?と疑問を持たれる方がいるかもしれませんがご心配なく。この部分は単純が故に数百万頂点でも数秒で完了します。実は、Shade9「ヘアーサロン」は、ビュー部(OpenGL)にて操作があるたびに瞬間的にリアルタイムでUniformGridを構築しているのですが、気づいた人はたぶんいないかと(^_^;;。 なんで、インタラクティブに空間分割を行い、操作自体を快適にしたい場合は結構UniformGridの考え方は使えますよ。 !!OpenGLとLayeredWindowは相性が悪い?(2007/04/27) 朝日新聞のサイトにて、ニュースの出るデスクトップアクセサリが提供されてまして、ニュースを見ながらShadeと併用してました。 そのときに、どうも両ウィンドウがかぶるときにShadeサイドのOpenGL領域の再描画が変になってました(再描画範囲だけ乱れる、点滅する、などなど)。 で、もしやと思って調べてみたら、、、 {{ref_image OpenGL_layererWindow_20070427.png}} レイヤウィンドウが存在する場合は、OpenGLによる再描画は崩れますね。 他の組み合わせでも再現。 どうもOpenGLとLayeredWindowは相性が良くないようです。 デスクトップアクセサリ(ガジェット含む)とOpenGLを使うアプリの併用にて この現象がある方はご注意を。OSの問題といえば問題か。 ちなみにDirectXではまったく問題なしです。 それ以外に、Shadeの管理ウィンドウ自身が異常に点滅するのはShade側の問題でしょうけどね(まれに、図形ウィンドウが表示されずにフローティングウィンドウだけになって、どうしようかと思った(^_^;;)。 !!ペルソナ3アレンジアルバム(2007/04/21) 買ってきました。ほんとはフェスを買おうかと迷ってたのですが、 たぶん、今時間をあけるとまずい(時間を食いつぶす自信あり)ので音楽のみ。 で、アレンジアルバムですが、かっこいいなぁ。ラップで かっこいいと思ったのは自分としては珍しいです(正直、ラップという音楽での良さが分かってなかったので)。全体的にポップな感じになっていて、ゲームっぽくないです(原曲がすでにゲームっぽいBGMでないのですが、妙にマッチしている)。 ペルソナ3フェスは、BGMも追加されている、アベンド版でも通常版と同じく 本編が入っている(古いペルソナ3のCDチェックはいりますが)、とのことで ひと段落したら買うことにしよう(内容としては追加部分は30時間くらいのボリュームらしいけど・・・)。 後、「時をかける少女」(アニメ)のDVDが発売されてました。 これも買う予定にしてます。 !!同一位置の頂点を求める処理(2007/04/20) 3DCGにて、ポリゴンメッシュの頂点法線(スムージング角度も考慮)を 求める部分にて、最適化のため同一位置を持つ頂点を検索する処理があるのですが、この部分、頂点数が増えるとボトルネックになります。 まぁ、Shade9のヘアーサロンでやってる部分なのですが・・・。 いいことを思いつきました。 同一位置の頂点を求めるときに、UniformGridにあらかじめ頂点を格納して、グリッドにて同一位置判定を行います。 結果、形状によっては300倍くらい速度アップ。たぶん、Shade以外の某所でやったお仕事も速度アップできるかと思います・・・。 いやはや、アホなことをしていたんですね(汗)。 とりあえず、今までやった部分は見直してみよう。 !!Norton 360(2007/04/11) 仕事場のWindows XP上のNorton Internet Security 2006(以降NIS2006)が期限切れになったので、「Norton 360」というものをインストールしました。 「Norton 360」は、1パッケージにて3ユーザまでのインストールが可能なもので、価格も若干安いです。小企業にはうってつけか、と思ってインストールしたのですが、いろいろトラブったのでその内容を記載です。なお、こちらの環境での試行錯誤ですので、あくまで以下手順で不都合があっても保証外なので注意です。ご自分の責任で。 まず、過去のNIS2006をアンインストールしてマシン再起動、その後Norton360をインストールしたのですが「LiveUpdateが異なるプロセスで実行中」と出てLiveUpdateの更新に失敗していました。プロセスを一度「サービス」より停止してから再度行う、としても改善されず。結局一度アンインストールしました。 !Norton 360のアンインストール [コントロールパネル] - [管理ツール] - [サービス]に「LiveUpdate」があり、すでに開始されていたのでこれを停止しました。これをまずストップしないとNortonの削除ができません。こちらではインストールに失敗している場合は、これが常に起動していて正常の場合は停止している(必要なときだけNortonから開始処理が送られる?)ようでした。 次にコントロールパネルの「プログラムの追加と削除」より、 「Norton 360(Symantec Corporation)」を削除します。 同じく「プログラムの追加と削除」より「LiveUpdate 3.2(Symantec Corporation)」を削除。 これで、Nortonがクリーンアンインストールされた様子。 !Norton 360のインストール 一度マシンを再起動してから、Norton 360をインストール(ちなみに、ダウンロード販売でのインストールは、デスクトップにNorton360のセットアップが置かれていますのでそれを起動します)。 インストール途中でユーザ登録の画面が出てくるのですが、アカウントがなければ作成。 で、アンインストールに2時間ほど、再度のインストールで1時間ほど、、、ようやくNorton 360が正常に動作するようになりました。 しかし、インストール時間かかりすぎ・・・。速度は以前のNortonよりも速くなってるのかな? で、ファイアウォールの設定とかどこいったんだろう? 設定画面が以前とがらっと変わっていて、メンテ方法が分からない・・・。 !!ObjectCracker Ver1.10(2007/04/05) バグ修正しました。 [[ObjectCracker|ObjectCracker_shade]]のページからダウンロードできます(Win/OSX)。 どうも不安定部分と重い部分があったため、空間上でつながっていない(陸続きになっていない)三角形の分離処理ははずしました。その他いろいろ修正です。 顔のオブジェクトを破壊するとシュールな感じに。 {{ref_image ObjectCracker_20070405.jpg}} あまりにも細かい破片をチェックしてはじく(再分割しない)ようにしたけど、もしかしたらはじかない方がよかったかな?以前のむやみに細かい破壊が再現できないようになってしまった予感。 !!続・ObjectCracker(2007/04/04) 以下のObjectCrackerですが、形状によっては欠けてしまう部分が出る場合がありますね。ということで、この部分は修正します。 後、細かく割ると思いっきり小さい形状が出ることがあるため、これも最小値をダイアログで制御できるようにする予定です。 !!ObjectCracker(2007/04/03) {{ref_image objectcracker_20070403.jpg}} ムービー(1.08MB) http://ft-lab.ne.jp/files/shade/teapot_cracker_20070403.mov 「ObjectCracker」というShade9プラグインを公開しました。 上記のムービーのような亀裂を入れるプラグインです。 アニメーション自身は、パーティクルフィジックスで付けるようにするといいと思います。 [[ObjectCracker|ObjectCracker_shade]]のページからダウンロードできます(Win/OSX)。 ただし、形状自身が複雑な場合はそれだけ時間がかかるため注意してください。 アルゴリズムはこの後解説していくことにします(たいした内容ではないのですが)。 !!本日の破壊(2007/04/02) 再びShade9での破壊テストです。 ムービー(758KB) http://ft-lab.ne.jp/files/shade/teapot_cracker_2.mov {{ref_image te_01_20070402.jpg}} ポリゴン単位でなくて、ランダムに直線で切るようにしました(分割のレベルは調整できます。これは割と荒い例)。 また、テクスチャも貼り付けてます。 しかし、これテストしていてなぜかカブトムシを連想してしまった(というか、昆虫が脱皮したときの抜け殻なイメージ)・・・。 後、ユーザインターフェースを整えたら一通り完成です。