日々適当

hibitekitou

グリッド状に並べる

xsi |2011-05-18
グリッド状に並べるコンパウンドを書いていました。
グリッドがワールド座標に固定されてたら面白い見た目になるかな、って。

ドット表現


つまり、この動画のようなことなんだけど、オブジェクトのボリュームの内側にだけポイントを発生させています。
ただし、ポイントはワールド座標系に固定されるようにして、ドット絵のようになってくれないかな、て感じで。

このとき問題になるのがポイントをどのように発生させるかです。今回は単純に、内外を判定するオブジェクトのバウンディングボックス内で点(ベクトル)を発生させて、それがボリュームの内側にある場合だけポイントを発生させる、という方法をとっています。

この方法の場合、とびとびにボリューム判定するオブジェクトが配置されている場合で、そのオブジェクトを1つのグループにまとめて1つのPointCloud内で処理しようとしたとき、バウンディングボックスの中であるがボリュームの外であるという空間の方がはるかに広くなる可能性が高くなります。非常に無駄が多くなることが予想されます。



そこで、オブジェクト1つ1つにPointCloudを設定して制御するのと、複数オブジェクトをグループにまとめて1つのPointCloudで制御するのと、どちらがどれぐらい有利かな、と考えました。

シーンはこんな感じです。



プリミティブのオブジェクトを複数作り、それを1つのグループ(エクスプローラの一番下に見えるグループ)にまとめています。
このグループを利用したPointCloudがエクスプローラ上でハイドされているPointCloudです。

それとは別に、各プリミティブオブジェクトごとにPointCloudを設定しました。それが上図のエクスプローラ上で選択されているPointCloudです。

それぞれのPointCloudには下図のようなICE Treeが組まれています。この中の一番大きいサイズのコンパウンドが今回作っていたものです。そこに接続されている"Get Cone"の部分に、ボリュームの内外を判定するためのプリミティブオブジェクトだったりグループが入っています。



それで、ICE Treeの左下のスカラーノードの数字を2から0.3に変化させたときの秒数を計りました(カスタムパラメータを作り、すべてのPointCloudの該当する部分の値を変えられるようにしてあります)。



この状態からカスタムパラメータに数字を「0.3」と入れてエンターを押してから



この状態になるまでの秒数を手動で計っています。

ボリューム判定用プリミティブを一つのグループにまとめ、一つのPointCloudで制御したときの秒数は1分33秒程。
対して、各プリミティブオブジェクトにPointCloudを設定したときは、3.3秒。

もぅ、圧倒的に違いますな。
これは、横着せずに一つずつ設定するのがよさそうです。

まぁ、グループ内のポリゴンアイランドごとにバウンディングボックスを作ってやる事が出来ればいいんですけどね。そんなスキルはありません。
コメント ( 0 )|Trackback ( )

MacBook Proソフトウェアアップデート 1.4

mac |2011-05-18
ちょっと前に来ていたのだけど、ようやくそれを当てまして…。



Thunderboltデバイスってのはいつくるんだ?ってのはともかく、グラフィックの安定性が向上するのと外部ディスプレイの問題と3Dパフォーマンスが改善されるってのなら見逃せません。

とりあえず、Cinebench。



まぁ、そもそもMac上ではパフォーマンスが低いのでこんなもんでしょという感じですし(Windowsマシンでは40は軽く超えてくる、と思う)、外部ディスプレイの問題ってのも感じたことが無いので、メリットはよく分からないのが正直なところですけど、メンテナンスされているというのは気分が良いですな。
コメント ( 0 )|Trackback ( )
  ・