見出し画像

Resoniteでモノを手動で囘せるやうにする方法【Joint】

どうも、萬朶櫻です。

Resoniteでは、(grabbableコンポーネントが付いてゐれば)物を摑んで自由に囘轉くわいてんさせることが出來ます。

しかし、レバーやシーソーなど、特定の軸を中心にして囘轉させたい場合があるでせう。

「Joint」といふコンポーネント解決できますので、備忘録ついでにやり方を書き記していきます。

何のコンポーネントも使はない、完全手動の場合、次の通りに物(grabbableが付いてゐること前提)を囘轉させられます。

【デスクトップモード】
物を右クリックで摑む、Eキーを推しながらドラッグで自由囘轉。Shift + Eで水平囘轉。

【VRモード】
そのまま摑んで囘す。または、物をレーザーで摑んでスティックを左右に倒す。

自動で囘轉させる方法も書きました。


準備

前囘の記事では白い物體オブジェクトを使用したが、今囘は囘轉くわいてんの樣子をわかりやすくするため、以下の通り、アバターのフィギュアを使用する。

なほ、もしJointさせたいモノにGrabbableが付いてゐる場合、それのGrabbableは無效(Enabledのチェックを外す、あるいはGrabbableコンポーネントそのものを削除)にしておく

この操作は必須である。なぜなら、Jointの「決められた軸で動け」よりも、Grabbableの「自由に動け」の方が優先されてしまふからである。

コンポーネント「Joint」を付ける

この項目での操作は、前囘の記事とほとんど同じなので省略する。詳しくはそちらを參照されたい。

インスペクターでフィギュアを選んで、左側の領域を下にスクロールして、「コンポーネントをアタッチ」を押す。

コンポーネント窓の階層を以下のやうに掘り進んでいくと、Jointがある。これをクリック(またはダブルクリック)。

すると、インスペクターの最下段にJointが追加される。

ターンテーブルのやうな囘轉くわいてん

水平囘轉など

まづは、中華のターンテーブルのやうな動きをさせてみる。

Amazon https://amzn.asia/d/26yFnqQ  より

それにはJointの「MaxTwist」の値を「180」にして、「Axis」の値を「x=0, y=1, z=0」にしておく。

「Axis」のxyzの値は「0=無效 1=有效」として扱はれる。
今囘はY軸(緑色の軸)を囘轉の中心としたいので、Yの値のみ「1」とする

「MaxTwist」の値を「180」にすることは、すなはち「最初に向いてゐる角度から、180°まで囘轉してよい」といふ扱ひになる。

この處理しより、一見すると「後ろ(±180°)を向いたら、それ以上(±181°以上)は囘轉できないのでは?」と思はれるかもしれないが、見かけ上はターンテーブルのやうに、スムーズに何度でも囘轉させつづけることができる。

おそらく、「『MaxTwist』の値よりも多く動かさうとすると、反對はんたい側の角度までワープさせる」といふ處理になってゐると思はれる。

試しにRotationの値を注視しながらグリグリ囘轉させてみると、180°を超えると-180に反轉してゐるのがわかる。

このあたりの擧動きよどうは「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にそれぞれ數値すうちを入力にすることで、囘轉軸を斜めにずらす事もできる。

「x=1, y=1, z=0」にして、斜めの軸に囘轉させることができた
  • 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を充ててゐた物體オブジェクト選擇せんたくする(名前が黄色になってゐれば成功)

  • ②このアイコンをクリック/トリガー

このやうに、「元々の物體の名前 - Parent」といふ名前のものが親である。

この階層が見つからない場合は、赤丸の所を1囘以上クリック。

親オブジェクトのRotationの値を好きな數値にする。今囘はzを45°にした。

すると、軸と物體がz軸に對して同時に45°傾いた。

囘轉の軸をずらして囘轉

「軸と物體とを同時に傾けて囘轉」と同樣に、親子構造を作る。

次に、①子オブジェクト(元々あったやつ)にある「Joint」の、黄色文字のタイトル部分を右クリックで摑む。手元に摑んだコンポーネント名(この場合は「Joint」)が表示されてゐれば成功。

②右クリック状態のまま、親の階層をダブルクリック。

そして、親階層が開かれると、右側にある何もない空間で離す

「子にする:[ローカルユーザースペース][ワールドルート]などと書かれた項目の下である。
このやうな表示がでるので、今囘は「コンポーネントを移動」を選ぶ

親の階層にJointコンポーネントが移動した。


子の階層を選び、Positionの値を好きな數値にする。今囘はxを0.2にした。

そして、物體を摑んで囘轉させると、囘轉の軸がずれてゐるのがわかる。

3Dスティックのやうな囘轉

任天堂公式ページ(https://www.nintendo.com/jp/hardware/detail/switch/index.html )より

ゲームコントローラーの3Dスティックのやうな囘轉をさせたい。

さういふ時は、「MaxSwing」の値に好きな數字をいれるとよい。

MaxSwingを30にした樣子。3Dスティック樣の動きをしてゐる

MaxSwingに入れる値による見かけ上の振舞ひは、以下の通り。

  • 0以下(マイナス含む)で囘らなくなる

  • 1~179で、それぞれの値まで囘轉

  • 180以上で事實じじつ上の自由囘轉だが、181以上にする意味はない。

MaxSwingによる動きも、ターンテーブル囘轉の時と同樣に、「軸だけ傾ける」「軸と物體とを同時に傾ける」「囘轉の軸をずらす」といった動きができる。操作は先述と同じなので省略する。

Joint應用おうよう

MaxSwingとMasTwistは併用可能

同時に30にすると、傾きつつ囘轉といった動きになる

その他の設定項目

筆者が理解した項目のみ説明する。

  • 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の使ひ道

閉まりかけると、磁石で自動で閉まるといふ設定の棚

たとへば、このやうな棚の扉に對して「閉まる直前で手を離すと自動で閉まる」といったギミックで使へる。

この記事が気に入ったらサポートをしてみませんか?