2011年9月29日木曜日

SoftimageICE : SDK ICEAttributes が反映されない問題




ICEをちょろっと

ICETreeで Set Dataしたものは、変数のように格納されるっぽいです。

そのデータのアクセスは
Object.ActivePrimitive.Geometry.ICEAttributes
でアクセスできるようになります。

しかし、ICETreeでSetDataをした場合でも
データーを取得できる場合と
取得できない場合がありました。

タービュランス等の、良く稼働するデーターの
取得はできるのですが、
変化の乏しい、動かさなかったSizeとか
有効になってないようなのです。

理由をマニュアルで調べたのですが
ICEが行う最適化に鍵がありそうです。

以下マニュアルより
----Manual----

ICE 最適化の注意事項
データを設定しても、シーンでまったく使用されていない場合、ICE が最適化される仕組みにより、そのデータが実際に設定されることはありません。これはカスタム属性だけでなく、動的属性にも適用されます。たとえば、[PointVelocity]を設定しても、シミュレート ノードを使用してポイント位置を更新しない場合、[PointVelocity]は実際には設定されません。
その他にも、この動作による次のような影響が考えられます。

  • キャッシュにあると予測していたデータが失われている可能性があります。
  • そのデータを使用する別のツリーを作成する前に、データを初期化するツリーをフリーズすると、そのデータは失われます。
  • SDK の ICEAttribute.IsDefined プロパティが、誤解を招くおそれがあります。
    フォース データは、次の 2 つの方法で評価および設定できます。

  • ビューポートでデータ値を表示する。「ポートの値を表示する」を参照してください。
    データを使用して、シーンの実際のデータを設定する。たとえば、ウェイト マップ値を設定したり、Render Tree でデータを使用したりします。

ほむう、コレが原因のようですな。
ようは、Setしたんだけど使わなかったら別に覚えなくてもいいよねってことらしい。
それは、ICEAttributeの数は膨大だものねぇ。
こんなにデーター格納してどうするの?
ふつう思うわよねぇ〜
膨大なアトリビュートの数
原因はわかったので、対処の方法を
・実際に使ってやる
・ビューポートで表示
とりあえずビューポートで
ほむほむ

ということでした。



0 件のコメント:

コメントを投稿