11:42カーブの長さにそってパイプのUVを設定するSweepを使用してカーブに沿ったパイプを作成した場合に、UVをカーブの長さに合わせたいと思います。これでジオメトリは作成できますが、UVは持っていません。TextureノードをカーブとSweepの間に追加します。ClassをPointにします。UVEditorを確認すると以下のようにカーブのUVが生成されます。この状態だとカーブを移動しても、それにあわせてUVが変わることはありません。Xに以下のエクスプレッションを追加します。0,0,1)arclenは描いたカーブの長さを取得することができます。Curve1は求めるカーブ、その次の0はプリミティブ番号、その次の0はUの開始値、最後の1はUの終了領地になします。これでカーブのポイントを移動すると、それに応じてUVの位置が変わるようになります。これをもとに、パイプジオメトリにUVを設定します。SweepのOutputにuvと入力し、カーブのUVをジオメトリに渡します。pointVopを接続します。pointvopの中に入ります。moduloを作成します。このオペレーターは名前の通りモジュロ演算を行います。※Wikiより、剰余演算(モジュロとも呼ぶ)は、コンピュータにおいて、ある数値を別の数値(法と呼ばれることもある)で除算し、余りを取得する演算である。geometryVopGlobalのptnum(ポイント番号)をmoduloのinput1に入力します。このパイプはDivision=12のCircleから作成されています。そのため、作成されたポイント番号も0から始まり12までで1つの繋がりを作成し、次にセクションが作成されています。UVを作成する場合、0から12まで(1サークルのポイント数)までで1つの区切りとしてこれを縦の軸していきます。いうことで、取得したptnumをサークルのポイント数を使用してモジュロします。paramオペレーターを作成し、名前そslidesに設定します。TypeはCircleのポイント数を入力するためIntegerにします。paramオペレーターを追加すると、その上部であるpointVopノードのslidesという名前のパラメーターが追加されたことがわかります。Referenceします。このままだと12という数字が入力されてしまいます。実際には0から開始し、12までとなるので常にCircleのDivisionに+1した数値が必要です。constを追加し、1を追加します。constの結果をmoduloに接続します。これで、常に0から12の間に数字がクランプされます。次にこの0から12までの数字で0から1の間に等間隔に並ぶようにします。12を0-1に等間隔に並べるためのXは1割るslidesで算出できます。constantオペレータで1という数字を作成し、それをslidesで除算します。その結果をMuduloで計算された0-12の数字にかければ、Vの値が決まります。この結果の計算値は常にfloatなので、UVにするためにfloattovectorを作成し、fval2(つまりはv)に接続します。2つ目のparamを追加します。ここには、先ほどカーブに設定したUVをもってきます。Nameをuvにします。popvopparamオペレーターはNameに既に存在するパラメーターを入力すると、そのパラメーターを参照するようになります。今回はuvとしたので、このpointvopに入力した時点で持っているuvの値を参照します。これでUとVの値を作ることができたので2つのVecotを足し算します。最後にBindを作成します。bindのNameをuvとし、TypeをVector(float)に設定します。Attributesを有効にします。Connectedに設定します。Visualizeを接続してみると、元のカーブに合わせてUVが設定されていることがわかります。Textureでカーブの長さからUの値を取得しているので、常にこの状態を保つことができます。サポートまでお問い合わせ下さい。