Created on | Updated on

カーブの交差ポイントを取得するには

交差しているかの判断にはRayノードを使用することができます。

mceclip1.png

 

このノードには2つの入力が必要です。

mceclip2.png

 

そして、Rayを放出する方からコリジョンオブジェクトへどの方向にRayを飛ばすのか指定します。

mceclip3.png

例えば、カーブがこのようになっている場合(すべてのポイントの高さが同じ)、交差するポイントを取得することが難しくなります。

mceclip4.png

これを回避して交差点をゲットしてみましょう!

まず、こうなっているカーブを

mceclip5.png

Rayがヒットできるように各ポイントで一旦高さを変える必要があります。

mceclip6.png

もし、Resampeノードを使用している場合、Curve U Attributeを有効にします。

mceclip7.png

Resampleが直前にない場合、Attribute Createを使用して作成することも可能です。

Attribute Createノードを作成し、下記のようにします。

mceclip8.png

Valueには、下記のエクスプレッションを入力してください。

fit($PT, 0, $NPT-1, 0, 1)

すると、ポイントにcurveuアトリビュートが追加され

mceclip9.png

カーブ全体を0から1までとしたとき、各ポイントの距離を取得することができます。

カーブ全体に対するポイントの割合が取得で来たら、これをPositionのY値に設定します。

Attribute Wrangleを追加し、下記のように入力します。

mceclip10.png

v@origpos = @P;
@P.y = f@curveu ;

 

後で元に戻すために現在の位置をまず保存します。
その後、P.yアトリビュートにcurveuの値を代入します。

すると、下記のように各ポイントに異なる高さが設定されます。

mceclip11.png

これをそのままRayに接続し

mceclip12.png

Rayの設定を下記のように変更します。

mceclip13.png

今回は交差ポイント情報だけを修正したいので、Transform Pointsは必要ありません。
Create Point Groupをオンにすると、レイがヒットしたポイントはグループに登録されます。

mceclip14.png

しかし現状すべてのポイントがグループ化されます。

mceclip15.png

そこで、CollosionをSweepでジオメトリにします。

mceclip16.png

 

Surface ShapeはRibbonにしていきます。
mceclip17.png

このような感じでジオメトリが作成されました。
mceclip18.png

Rayをみると先ほどとあまり変わっていないのですが。。。
mceclip19.png

RayノードのBiasに0.01を入力します。

mceclip20.png

BiasでRayの開始位置を少しずらすことで。。

このように交差ポイントを取得できるようになりました。

mceclip21.png

後は、Attribute Wrangleを追加しポイントをアトリビュートとして保存した元の位置に戻します。

mceclip22.png

v@P = v@origpos;

これでカーブの交差ポイントを取得することができました。

mceclip23.png

 

 

 

 

 

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ