ノードの警告に対する処理


こんにちは、篠島です。たまにノードを繋げていると、何やらエラーでは無いものの警告が出ることがあります。

a

 

まず、警告以外にもエラーもあります。エラーはその名の通りエラーであり、処理ができない事を意味します。それに対し警告はちょっと問題があるけど実行可能なのでとりあえずそのまま実行します、という意味です。

まずはどういった理由でエラーや警告が出ているのかを知る必要があります。ノードを中クリックすると、一番下にError: やWarning: といった形で情報が表示されています。下の画面では Not enough sources specified.  と書かれています。要はインプットを繋げてないので何かインプットを繋げてくださいという意味ですね。

b

 

次によく出てくるのがMergeによる警告です。これはMerge元のそれぞれのオブジェクトが異なるアトリビュートを持っているために警告がでます。この場合、アトリビュートが存在しない方のオブジェクトはアトリビュートが追加され0などのデフォルトで初期化されます(Stringデータの場合は空白)。なのでお互い異なるオブジェクトを持っていてもとりあえずは処理できるので警告がでます。
警告を無くすにはどうするかというと、アトリビュートが足りない方にもアトリビュートを足す、余分なアトリビュートを削除するなどして対応できます。

c

 

 

別の例として Point SOPを例にあげます。もし異なるポイント数のオブジェクトを繋げると警告が出ます。なぜならばPoint SOPは同一ポイントのオブジェクトを処理する為のものだからです。しかし、もちろん同一ポイントのオブジェクトじゃなくても動作はします。さて、同一ポイントじゃないオブジェクトを繋げるとどうやって処理されるのでしょうか?

d

 

例えばポイント3つのLineと、ポイント1つのAdd をPoint SOPでVelocityの計算をするとします。下に示したように、対応するポイントがないLine上のポイントは、インプット2のポイント一つに対して計算されています。

e

 

もしインプット2のポイントが1つじゃなくて2つだったらどうなるか? その場合は、対応するポイントが有る場合は対応するポイントに対し計算され、対応するポイントがない場合はポイント番号0に対して計算されます。

f

 

こういったテストをする場合は、簡略化したオブジェクトを使うとわかりやすいです。