![見出し画像](https://assets.st-note.com/production/uploads/images/142469683/rectangle_large_type_2_90611f0500e63fb36e46c426ac650b6a.png?width=1200)
Resoniteでモノを自動で囘せるやうにする方法【Spinner・Wiggler・ValueGradientDriver・Panner】
どうも、萬朶櫻です。
前囘の記事では、「Joint」コンポーネントを用ゐてモノを手動囘轉させる方法を書きました。
しかし、振り子や理髮店のサインポールなど、勝手に囘っておいてほしいギミックがあると思ひます。
目的に應じて、次の2つを使ひ分けるとよいでせう。
「Spinner」を用ゐた方法
一定の速度で囘り續ける
「ValueGradientDriver」と「Panner」を用ゐた方法
行ったり來たりさせる
速度に變化をつける
![](https://assets.st-note.com/img/1716886877192-whXc7tX5Oi.png?width=1200)
「Spinner」を用ゐた方法
コンポーネントの追加
まづ、コンポーネントを充てたい物體の階層を選んで、右下の「コンポーネントをアタッチ」を選ぶ。
![](https://assets.st-note.com/img/1716886922823-ZAt30FmQ1B.png)
Spinnerコンポーネントは以下の階層にあるので、クリックする。
![](https://assets.st-note.com/img/1716887116487-hfNJr5X5CE.png?width=1200)
![](https://assets.st-note.com/img/1716887164627-IzbP3u6VCo.png?width=1200)
![](https://assets.st-note.com/img/1716887565358-r2AXNsKdab.png?width=1200)
とりあへずで動かしたいなら「_speed」のxyz値に好きな數値を入れるとよい。
各項目の紹介
Persistent: このコンポーネントを充てられてゐる物をインベントリなどに保存する時に、このコンポーネントも一緒に保存するかどうか
UpdateOrder: このコンポーネントの更新順序
Enabled: このコンポーネントを有效・無效
Range: 稼働域。360°より大きくする必要はない。xyzすべての値を1以上にしないと囘らなくなる
_targer: どの物體のRotationにこのコンポーネントの囘轉を適用するか。普通はSpinnerを充てた物體のRotationが自動で割り當てられる
_offset: 初期のRotationの向き
_speed: 囘轉の速さ。0で囘轉なし。マイナスで逆囘轉
番外編
Rangeの値を極端に小さくし、_Speedの値を大きめにすると、ブルブル震へたやうな動きをする。
![](https://assets.st-note.com/img/1716888216601-G21BSxfKuF.png?width=1200)
この例ではyの値で試してゐるが、x・zの値でもよい
「Wiggler」でランダム囘轉させる方法
ランダムに囘轉させるにはWigglerを用ゐる。Wigglerは以下の階層にある。
![](https://assets.st-note.com/img/1716887116487-hfNJr5X5CE.png?width=1200)
Wigglerを充てたところ。いくつか細かい數値などは場合によって異なる。
![](https://assets.st-note.com/img/1719823615987-qFXGWOI16F.png?width=1200)
この中で、基本的には「_speed(囘轉スピード)」「_magnitude(振れ幅の大きさ)」を弄ると良い。
各項目の紹介
Persistent: このコンポーネントを充てられてゐる物をインベントリなどに保存する時に、このコンポーネントも一緒に保存するかどうか
UpdateOrder: このコンポーネントの更新順序
Enabled: このコンポーネントを有效・無效
_target: ここにWigglerの囘轉を適用する對象を充てる
_offset: 基準となる向き。Wigglerを充てた時の物體の囘轉の値が初期値としてそのまま當てはめられる
_speed: 囘轉の速さ
_magnitude: 囘轉の振れ幅の大きさ
_seed: 例へば複數の物體にWigglerを充てたとき、全ての「_seed」値を同じにすると、全く同じ囘り方をする。違ふ値を入れると、それぞれずれた動きになる
![](https://assets.st-note.com/img/1719824348734-J7vQtTriDq.png)
そのままコピーしたかのやうに同じ動きになる
![](https://assets.st-note.com/img/1719824411441-S7Sp5eJVbC.png?width=1200)
それぞれズレた動きになる
「ValueGradientDriver」と「Panner」を用ゐた方法
この方法では、Spinnerで出來なかった複雜な動きをさせることが出來る。しかし、複雜な動きをさせるからには、コンポーネントの構成もやや複雜になる。
「ValueGradientDriver<floatQ>」の準備
動かしたい物體にValueGradientDriverを充てる。ValueGradientDriverの場所は以下の通り。
![](https://assets.st-note.com/img/1716974104427-qU8YeRbfjj.png?width=1200)
ValueGradientDriverにはいろいろ種類があるが、今囘は末尾が<floatQ>になってゐるものを用ゐる。
「<>」で區別されるものを「型」といふ。囘轉(Rotation)を扱ふときは、たいてい<floatQ>の型が使はれる。
ValueGradientDriver<floatQ>を充てると以下の通りに表示される。
![](https://assets.st-note.com/img/1716974925449-kxRp1bwfz5.png?width=1200)
ValueGradientDriver<floatQ>を意圖した通りに動かすには、次の2つの準備が必要である。
「Target」に動かしたい物體のRotationを入れる
「Points(list):」に項目を追加し、それぞれの項目のPosition・Valueを適切に設定する
まづは1から。
①動かしたい物體のRotationの「Rotation」と書かれた部分を右クリックで摑む
②摑むのに成功すると、手元にその項目(ここではRotation)が浮かび上がる
③「Target」の「null」と書かれた部分に持っていき、指を離す
![](https://assets.st-note.com/img/1716975062168-aLWhvMlKaY.png?width=1200)
成功すると、TargetのnullがRotationになる。
![](https://assets.st-note.com/img/1716975365215-QSvH3FRo5W.png?width=1200)
この操作は、ValueGradientDriverでの操作をどこに適用するかを指定するものである。
「Points(list):」に項目を追加し、それぞれの項目のPosition・Valueを適切に設定する
つづいて、これをやる。「Points(list):」の下に「Add」のボタンがあるので、それを押す。
![](https://assets.st-note.com/img/1716975534593-xdTbCWlaKy.png?width=1200)
すると、新たに項目が追加される。
![](https://assets.st-note.com/img/1716975586284-LgmjKfa97w.png?width=1200)
ひとまづもう1つ追加して、項目を2つにする。
![](https://assets.st-note.com/img/1716975624443-KAluY4G5vG.png?width=1200)
追加された各項目のPositionとValueを次の通りに設定する。
![](https://assets.st-note.com/img/1716976206962-q8kR0X7XlM.png?width=1200)
そして、Progressのツマミを左右に動かしてみると、物體が0°~180°の範圍で動くやうになる。
![](https://assets.st-note.com/img/1716976242804-9BA28197Tv.png?width=1200)
「ValueGradientDriver<floatQ>」の仕組み
ValueGradientDriverの仕組みは動畫に似てゐる。
![](https://assets.st-note.com/img/1716977134804-hJmLndKnJi.png?width=1200)
Progressは動畫の再生時間に相當し、「0.00」が動畫の最初、「1.00」が動畫の最後である。
Points(list)の各項目について、
Positionの値は、Progressのどのタイミングかを指定する
Valueの値は、そのタイミングでの状態(ここでは囘轉=Rotation)を指定する
動畫編輯の經驗がある人向けに説明すると、キーフレームのやうなものである。
つまり、今囘の例では、Progressの最初ではyの角度を0°に、最後には180°にする。といふ指示を出したことになる。
ちなみに、各Positionの中間地点は、Resonite側で良い感じに補完してくれる。
「Gradient」は傾斜・勾配といった意味らしい。つまり「ValueGradientDriver」は「特定の値(Value)が、決められたペース(ProgressのPosition)で、變化させられる」といふ意味のコンポーネントと云ふことが出來る。
「Pannner1D」で自動化
さて、このままではValueGradientDriverのProgressを手動で操作しなければならない。
そこで「Pannner」といふコンポーネントで自動化する。Pannerの位置は以下の通り。ValueGradientDriverと同じやうな階層にある。
![](https://assets.st-note.com/img/1717058608600-0gsDqz7bXX.png?width=1200)
次に、①ValueGradientDriverのProgressを右クリックで摑み、②Pannner1Dの「_Target」の「null」と書かれた部分で離す。
![](https://assets.st-note.com/img/1717058837728-Xv6I4gLSHY.png)
成功すると以下の通り。「Progress on ValueGradientDriverなんちゃら」と表示される。
![](https://assets.st-note.com/img/1717058930740-V9gvb0shuk.png?width=1200)
そして、「_Speed」の値を1にすると、ValueGradientDriverのProgressが勝手に動き始めるやうになる。
![](https://assets.st-note.com/img/1717059217167-x5CUWJXvYl.png?width=1200)
この數値を變へることで、囘轉の速さを變化させる事ができる。
「Pannner」の名前の由來は、おそらく「カメラを固定したまま、フレーミングを水平方向や垂直方向に移動させる技術」のことと思はれる。
「ValueGradientDriver<floatQ>」と「Pannner1D」の各項目の詳細
今囘はValueGradientDriver<floatQ>とPannner1Dを用ゐたが、他の種類のValueGradientDriver・Pannnerでもだいたい同じはずである。筆者が理解した項目を述べる。
【ValueGradientDriver】
![](https://assets.st-note.com/img/1717059730885-bu5FoQaVgh.png?width=1200)
Persistent: このコンポーネントを充てられてゐる物をインベントリなどに保存する時に、このコンポーネントも一緒に保存するかどうか
UpdateOrder: このコンポーネントの更新順序
Enabled: このコンポーネントを有效・無效
Progress: アニメーションの進行度
Target: このコンポーネントの操作を適用する對象
Interpolate: 動きの補間。オフにするとカクカクした動きになる
Points(list): 右側の矢印ボタンで順序の變更。✕ボタンで削除
Position: その數値になる點時
Value: その點時における數値
[Add]: Points(list)の項目を追加
【Pannner】
![](https://assets.st-note.com/img/1717059742525-Y5fgOiGcmv.png?width=1200)
Persistent: このコンポーネントを充てられてゐる物をインベントリなどに保存する時に、このコンポーネントも一緒に保存するかどうか
UpdateOrder: このコンポーネントの更新順序
Enabled: このコンポーネントを有效・無效
_Target: このコンポーネントの操作を適用する對象
_offset: ずらし。0の状態だとValueGradientDriverのProgressが「0→1」で推移するが、たとへば1にすると「1→2」に、-1にすると「-1→0」のやうな動きになる
_preOffset: 不明
_speed: 繰り返しの速さ。マイナスにすることで逆再生も可能だが、たとへば「-1」にするならば、「_offset」も同時に「1」にしておく必要がある[※1]
_repeat: _speedで行なった處理を何度繰り返すか。「0」で事實上の無效で、それ以外の數値(プラスでもマイナスでも同じ動きのやうだ)にすると、間延びと云ふか、1囘休みのやうな動きをする[※2]
PingPong: 往復。オフだと「0→1、0→1」と、最後まで行くと最初までワープするやうな動きだが、オンにすると「0→1→0→1」と、最後まで行くと逆再生で最初に戻るやうになる
[※1]
この動きは、おそらく「1秒間で0からどこまで行くか」といふことだと思はれる。
たとへば「1」にすると、「1秒間でTargetの數値(ここではValueGradientDriverのProgress)が0から1まで増加する」といふ具合である。
「-1」にすると、「1秒間でTargetの數値が0から-1まで減少する」といふ處理になる。「_offset」も同時に「1」にしておく必要があるのは、このためである。
[※2]
この動きは、おそらく[※1]で述べた「Speed=1秒間で0からどこまで行くか」を何度繰り返すかといふ處理になるものと思はれる。
つまり「2」にすると「1秒間で行ける距離の2倍」になるし、「0.5」にすると「1秒間で行ける距離の半分」といふ事になる。
「ValueGradientDriver」と「Panner」で樣々な囘轉を試す
行ったり來たり
PannerのPingPongをオンにする。
または、ValueGradientDriver側で「行って返ってくる」までを設定する。(設定項目が多くなって面倒だし、後から編輯し直すのがダルいので、PannerのPingPongで制禦するのを推奬する)
等速で1囘轉
見かけ上はSpinnerと同じ動きになる。
![](https://assets.st-note.com/img/1716979718548-VLAy36uKB1.png?width=1200)
上記は、制禦する項目が最小限で濟むパターン。Progressの1を3等分する關係上、割り切れない。
![](https://assets.st-note.com/img/1716979772594-GchQHpX8X0.png?width=1200)
こちらは4等分なので、嚴密に割り切れる。
加減速のある囘轉
![](https://assets.st-note.com/img/1716979657348-zOv8deYixQ.png?width=1200)
このやうに、Positionの位置を寄せるとよい。
この記事が気に入ったらサポートをしてみませんか?