コンパイルブロックのエラー 2


どうも、篠島です。前回に引き続きコンパイルエラーについてです。

 

今回のサンプルファイルです。
Compile_error_1.zip

Block Begin encountered outside of matching Block End ….
Unable to compile input.

 

前回に続き、コンパイルブロックの中に複数インプットのあるForループを入れた時に出ることがあるこのエラー。

例えば下の例を見てみましょう。オブジェクトをボロノイで破壊し、Box を Match Size SOP によってそれぞれの破片と同じサイズになるようにするサンプルです。これは問題なく動作します。このままの利用でも全く問題ないのですが、コンパイル内に Box が入ってしまっています。後にデジタルアセット化して、Box以外のオブジェクトを使えるようにしたい場合は、Box の部分のジオメトリをコンパイルブロックの外に出さなければなりません。

 

すると下のようになります。Box をコンパイルブロックの外に出しているので、別に Compile Begin を作っています。しかし、ここでエラーがでてしまいます。画像に印を付けた様に、コンパイルブロックの黄色いエリアとForループのオレンジのエリアに接続用のラインが横切ってしまっています。これだとエラーになります。

 

 

これを回避するために、新しくForループのインプットを作ります。Method を Fetch Input にするのを忘れずに。Match Size SOP に繋がっているラインが Forループのエリアを横切る事無くきれいに内部に収まっています。これでエラーは無くなり問題なく動作します。

 

そしてコンパイルブロックの部分をデジタルアセットにして簡単に再利用できるようにすると下の図のようになります。実際にはデジタルアセットにしてないでサブネットワークで包んだだけですが・・・。これならデジタルアセットに潜って変更する事無く簡単にMatch Size SOPに繋げるオブジェクトを変更することができますね。