![見出し画像](https://assets.st-note.com/production/uploads/images/142127058/rectangle_large_type_2_8e233af81feaa3f274f6582cc77471aa.jpeg?width=1200)
Resoniteでモノを手動で囘せるやうにする方法【Joint】
どうも、萬朶櫻です。
Resoniteでは、(grabbableコンポーネントが付いてゐれば)物を摑んで自由に囘轉させることが出來ます。
しかし、レバーやシーソーなど、特定の軸を中心にして囘轉させたい場合があるでせう。
「Joint」といふコンポーネント解決できますので、備忘録ついでにやり方を書き記していきます。
何のコンポーネントも使はない、完全手動の場合、次の通りに物(grabbableが付いてゐること前提)を囘轉させられます。
【デスクトップモード】
物を右クリックで摑む、Eキーを推しながらドラッグで自由囘轉。Shift + Eで水平囘轉。
【VRモード】
そのまま摑んで囘す。または、物をレーザーで摑んでスティックを左右に倒す。
自動で囘轉させる方法も書きました。
準備
前囘の記事では白い物體を使用したが、今囘は囘轉の樣子をわかりやすくするため、以下の通り、アバターのフィギュアを使用する。
![](https://assets.st-note.com/img/1716456946682-m4VM8tmCp0.png)
![](https://assets.st-note.com/img/1716457002717-lNo9uM9Kdd.png)
なほ、もしJointさせたいモノにGrabbableが付いてゐる場合、それのGrabbableは無效(Enabledのチェックを外す、あるいはGrabbableコンポーネントそのものを削除)にしておく。
この操作は必須である。なぜなら、Jointの「決められた軸で動け」よりも、Grabbableの「自由に動け」の方が優先されてしまふからである。
コンポーネント「Joint」を付ける
この項目での操作は、前囘の記事とほとんど同じなので省略する。詳しくはそちらを參照されたい。
インスペクターでフィギュアを選んで、左側の領域を下にスクロールして、「コンポーネントをアタッチ」を押す。
コンポーネント窓の階層を以下のやうに掘り進んでいくと、Jointがある。これをクリック(またはダブルクリック)。
![](https://assets.st-note.com/img/1716455727237-fPx9uJLko1.png?width=1200)
すると、インスペクターの最下段にJointが追加される。
ターンテーブルのやうな囘轉
水平囘轉など
まづは、中華のターンテーブルのやうな動きをさせてみる。
![](https://assets.st-note.com/img/1716456539895-l5D3XCz21E.png?width=1200)
それにはJointの「MaxTwist」の値を「180」にして、「Axis」の値を「x=0, y=1, z=0」にしておく。
![](https://assets.st-note.com/img/1716457304351-Y7lprI602j.png?width=1200)
今囘はY軸(緑色の軸)を囘轉の中心としたいので、Yの値のみ「1」とする
「MaxTwist」の値を「180」にすることは、すなはち「最初に向いてゐる角度から、180°まで囘轉してよい」といふ扱ひになる。
この處理、一見すると「眞後ろ(±180°)を向いたら、それ以上(±181°以上)は囘轉できないのでは?」と思はれるかもしれないが、見かけ上はターンテーブルのやうに、スムーズに何度でも囘轉させ續けることができる。
おそらく、「『MaxTwist』の値よりも多く動かさうとすると、反對側の角度までワープさせる」といふ處理になってゐると思はれる。
試しにRotationの値を注視しながらグリグリ囘轉させてみると、180°を超えると-180に反轉してゐるのがわかる。
![](https://assets.st-note.com/img/1716458044907-g8ocdT0rBx.png?width=1200)
このあたりの擧動は「MaxTwist」の値を「150」等にして、グリグリ動かしてみると、より分かりやすい。
なほ、「MaxTwist」の値を「181」以上にしても正常に動作するが、「180」の時と動作は同じなので意味はない。
また先述の通り、「Axis」のxyzの値を變へることで、囘轉の軸を變へることができる。
x=1, y=0, z=0:x軸を中心に囘轉
x=0, y=1, z=0:y軸を中心に囘轉
x=0, y=0, z=1:z軸を中心に囘轉
軸だけを傾けて斜め囘轉
「Axis」のxyzにそれぞれ數値を入力にすることで、囘轉軸を斜めにずらす事もできる。
![](https://assets.st-note.com/img/1716634327587-s1YjZoknbb.png?width=1200)
x=10, y=1, z=0:x軸のプラス方向に傾いた角度(何°か判らん)
x=1, y=1, z=0:x軸のプラス方向に傾いた斜め45°
x=0.5, y=1, z=0:x軸のプラス方向に傾いた斜め22.5°
x=0.1, y=1, z=0:x軸のプラス方向に傾いた斜め4.5°(ほぼ水平に近い)
x=-1, y=1, z=0:x軸のマイナス方向に傾いた斜め45°
軸と物體とを同時に傾けて囘轉
①先ほどまでJointを充ててゐた物體を選擇する(名前が黄色になってゐれば成功)
②このアイコンをクリック/トリガー
![](https://assets.st-note.com/img/1716630976940-NVjILbJNQS.png?width=1200)
このやうに、「元々の物體の名前 - Parent」といふ名前のものが親である。
![](https://assets.st-note.com/img/1716792794727-QYW07esue1.png)
この階層が見つからない場合は、赤丸の所を1囘以上クリック。
親オブジェクトのRotationの値を好きな數値にする。今囘はzを45°にした。
![](https://assets.st-note.com/img/1716793396742-0eigM4Yh9n.png?width=1200)
すると、軸と物體がz軸に對して同時に45°傾いた。
![](https://assets.st-note.com/img/1716793434906-VBorwdgBNp.png?width=1200)
囘轉の軸をずらして囘轉
「軸と物體とを同時に傾けて囘轉」と同樣に、親子構造を作る。
![](https://assets.st-note.com/img/1716793576519-NemtijMFvg.png?width=1200)
次に、①子オブジェクト(元々あったやつ)にある「Joint」の、黄色文字のタイトル部分を右クリックで摑む。手元に摑んだコンポーネント名(この場合は「Joint」)が表示されてゐれば成功。
②右クリック状態のまま、親の階層をダブルクリック。
![](https://assets.st-note.com/img/1716793085705-jtdRYUe70L.png?width=1200)
そして、親階層が開かれると、右側にある何もない空間で離す
![](https://assets.st-note.com/img/1716793114697-ru6lxQfPqS.png?width=1200)
![](https://assets.st-note.com/img/1716793217332-zaCrxjqzgM.png?width=1200)
親の階層にJointコンポーネントが移動した。
![](https://assets.st-note.com/img/1716793731234-2XE8m68dmL.png?width=1200)
子の階層を選び、Positionの値を好きな數値にする。今囘はxを0.2にした。
![](https://assets.st-note.com/img/1716793826647-r73kNKfHiN.png?width=1200)
そして、物體を摑んで囘轉させると、囘轉の軸がずれてゐるのがわかる。
![](https://assets.st-note.com/img/1716793916921-98ixgCk9t0.png?width=1200)
3Dスティックのやうな囘轉
![](https://assets.st-note.com/img/1716794033028-uwUG7THXi7.png?width=1200)
ゲームコントローラーの3Dスティックのやうな囘轉をさせたい。
さういふ時は、「MaxSwing」の値に好きな數字をいれるとよい。
![](https://assets.st-note.com/img/1716794190446-jLIfOXo43v.png?width=1200)
MaxSwingに入れる値による見かけ上の振舞ひは、以下の通り。
0以下(マイナス含む)で囘らなくなる
1~179で、それぞれの値まで囘轉
180以上で事實上の自由囘轉だが、181以上にする意味はない。
MaxSwingによる動きも、ターンテーブル囘轉の時と同樣に、「軸だけ傾ける」「軸と物體とを同時に傾ける」「囘轉の軸をずらす」といった動きができる。操作は先述と同じなので省略する。
Joint應用
MaxSwingとMasTwistは併用可能
![](https://assets.st-note.com/img/1716794736913-FltGjP3OzL.png?width=1200)
その他の設定項目
![](https://assets.st-note.com/img/1716454809183-uz09Xt6I9F.png?width=1200)
筆者が理解した項目のみ説明する。
Enabled: このコンポーネントを有效/無效
EditModeOnly: 編集モードの時だけ摑める
AllowSteal: 誰かが摑んでゐる最中に他のユーザーも摑めるやうにする
DropOnDisable:摑んでゐる最中にEnabledが無效になっても、それを離すまでは摑み續けられるやうにする
DontDrive: よくわからないがチェックを入れておくとよいらしい
MaxSwing: 3Dスティック風の動きをさせる。角度を數値で指定
MaxTwist: ターンテーブル風の動きをさせる。角度を數値で指定
Axis: 囘轉の軸
VibrationPreset: VRモード限定。「None」以外にすると、持つた時にコントローラーが振動する
SnapIncrement: 0の場合は滑らかに囘轉するが、それより大きい數値を入力すると、その角度だけ飛び飛びに動く
Snaptime: SnapOrientationsで定めた角度に吸着吸着するまでの速さ。單位はおそらく秒。SnapOrientationsを設定しなかった場合、數値を變更する意味はない
SnapOnRelease: 「手を離した時にだけスナップする」といふ意味。基本的にチェックを入れておくとよい。SnapOrientationsを設定しなかった場合、數値を變更する意味はない
チェックしない…摑んで囘してゐる最中でも、SnapOrientationsの範圍内に來とると、問答無用で吸着する
チェックする…SnapOrientationsの範圍内になっても、手を離さない限りは吸着しない
SnapOrientations(list): 右側の矢印ボタンで順序の變更。✕ボタンで削除
Orientation: 「向き・角度」を意味する。ここで定めた角度まで吸着する
MaxAngle: ここで定めた數値(角度)以内だと、Orientationで定めた角度に吸着する
[Add]: SnapOrientations(list)の項目を追加
SnapOrientationsの使ひ道
![](https://assets.st-note.com/img/1717143465346-sPaegToGKW.png)
たとへば、このやうな棚の扉に對して「閉まる直前で手を離すと自動で閉まる」といったギミックで使へる。