接地点を取りたい
接地点を取りたいって言うと、closestPoint~ をすすめられることがあるけども
最近接点なので
ほんとは青い点が取りたいのに赤い点が取れちゃったりするのでなんか違うんですよ。
API使えば任意方向にray飛ばしてぶつかった点とか取れるのですが、もっとお手軽に何とかしたい。
shrinkWrap
私が見つけたのはこれ、えすけーt shrinkWrap
shrinkWrapはまぁ便利なやつですね。
検索すると色んな事例が出てきます。
plane から sphereに対してshrinkWrapを行い
projectionを parallel to axesに変更
axisReferenceをとりあえず target local にし
along X/Y/Z のYのみにチェック
※Yのチェックを on/offすると形状がリセットされます
sphereを-Y方向に移動させて、planeと接し始めるとshrinkWrapが働き
sphereがplaneにshrinkされます
planeが平面でない場合も
設定した軸方向にrayを飛ばした感じになるので、良い感じに接地してくれます。
接地点を取りたい
nurbsCurveだと楽なのですが、shrinkWrapは非対応なのでポリゴンで。
一番下のvtxを選択して constraint > rivet を実行
※特にrivetである必要はないので、vtx位置をトレースできれば他の方法でも可
ひし形ポリゴンを動かすと
shrinkWrapでplaneにshrinkされて、
リベットされてるロケーターが接地点を教えてくれます。
接地判定するなら
一番下のvtx位置にロケーターを2個作成し、親子化(locator1 locator2
pinOutput から locator2 に対して pointConstraint (offset = False)
floatLogicとかconditionとか適当につかって、locator2のtranslateYが > 0 になった時が接地してる時
判定結果をsphereのvisにつないでみたのがこちら
https://vimeo.com/896185642?share=copy