どうも篠島です。前の記事と同様にコンパイルエラーについてです。
今回のサンプルファイルです。
Compile_error2.zip
Attempt to internally reference a compiled node: …
このエラーはコンパイルブロック内部のノードを参照すると出てきます。下のサンプルの様に Box と Font をコンパイルブロック内で Merge しています。その時、Font SOPの所でコンパイルブロック内部のノードを参照し、そのジオメトリのポイントの数を返すようなエクスプレッションが書かれています。ネットワークビューで分かりやすいように依存関係のリンクを表示させてあります。Fontがコンパイル内部のノードを参照しているのが見て取れますね。
対処法として考えられるのが、コンパイルブロック内のジオメトリを参照するのではなく、コンパイル外部のジオメトリを参照するという方法があります。下のネットワークビューをみて分かる通り、Fotn SOPのエクスプレッションでコンパイル外部のノードを参照してみました。外部ノードを参照することで問題なく動作し、Box と Font がきちんと合成されています。
上のようにコンパイル外部ノードを参照して解決することは稀で、殆どの場合はコンパイルブロック内部のノードを参照しなければならない場合がほとんどだと思います。その場合は前の記事で説明したように、Spare Input を使うと解決します。