[3dsMax]
エッジとエッジで位置合わせ


エッジとエッジで位置あわせをしたい。
↓こうしたい

▼やり方

エッジと向きが一致する円柱を作り、
位置合わせしたいオブジェクトを円柱の子にして、
円柱を使って位置合わせをする。

まずエッジと重なるベクトルを作るために
エッジの両端にポイントヘルパーを作成する。

ポイントヘルパーを置く際は
スナップをONにして、頂点にスナップする様にする。

↓ポイントヘルパーを作成して、位置あわせに使いたいエッジを挟む様に配置

↓以下のスクリプトを実行

・スクリプト1

muki = $point001.pos - $point002.pos
muki = normalize muki

tra = matrixFromNormal muki

hako = Cylinder()
hako.transform = tra
hako.radius = 1
hako.height = distance $point001 $point002
hako.pos = $point002.pos

・スクリプト2

muki = $point003.pos - $point004.pos
muki = normalize muki

tra = matrixFromNormal muki

hako = Cylinder()
hako.transform = tra
hako.radius = 1
hako.height = distance $point003 $point004
hako.pos = $point004.pos

↓処理の説明

エッジを中心とする円柱オブジェクトを作りたい。
そのために、エッジと重なるベクトルを作り、
そのベクトルを元にmatrix3値を作る。
円柱を作りmatrix3値を割り当てる。
円柱の高さをエッジの長さと同じにする。
円柱とエッジの向きと長さは一致したので、
最後に円柱の位置を合わせる。

memo
Cylinder.dir に正規化したベクトルを割り当てるのでも良いかも。

muki = $point001.pos - $point002.pos
↑位置から位置を引くとベクトルが得られる。
 得たベクトルを変数mukiに入れる。

muki = normalize muki
↑ベクトルの正規化(ベクトルの長さを1にする)
 正規化したベクトルを変数mukiに入れる。(上書き)

tra = matrixFromNormal muki
↑向きからmatrix3値を作り、変数traに入れる。

hako = Cylinder()   ←シリンダーを作成
hako.transform = tra  ←シリンダーのトランスフォームを変数traの中身にする
hako.radius = 1    ←シリンダーの半径を1にする

hako.height = distance $point001 $point002
↑シリンダーの高さを、ポイント1と2の間の距離にする

hako.pos = $point002.pos
↑シリンダーの位置をポイント2の位置にする

↓こうなる

↓位置あわせのショートカットキーは、Alt+Aキー

↓シリンダーとポイントヘルパーを非表示すると、
 ぴったりとエッジで一致しているのが確認できる。

▼参考リンク
3ds Max 2019 ヘルプ: Matrix3 値
3ds Max 2019 ヘルプ: ノードの共通プロパティ、演算子、メソッド
3ds Max 2019 ヘルプ: 位置合わせ
3ds Max 2019 ヘルプ: 標準的なスナップ

広告

コメントを残す

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*