直線的に動かす系のコンポーネントを5つご紹介いたします。
値を動かしたり、物を動かしたりできます。
前回はコチラ
これからはTransformのDriversに入っている動かす系のコンポーネントを取り扱いますので、とりあえず下記のリンクをご参照下さい。
・Neos Wikiのリンク【ドライブについて】
https://wiki.neosvr.com/Drive/ja
Panner(パナー)
0から指定の数値まで、一定の速度で値を駆動するコンポーネント。
Float1~4型の値を動かせる。周期的な動きが作れる。
・場所
Transform/Drivers/
項目 | 解説 | 初期値 |
_target: | 駆動したい値欄を指定。 | null |
_offset: | 繰り返す値をずらす。 | 0 |
_preOffset: | 駆動する値をずらす。 | 0 |
_speed: | 速さ。 | 0秒 |
_repeat: | 繰り返す量。 | 1 |
PingPong: | 往復させる。 | 無効 |
・使い方
適当なスロットにアタッチ。
_targetを指定して、_speedを設定。
・補足
マテリアルの模様を動かしたり、物の座標や大きさを動かしたり、他のコンポーネントと組み合わせたり等、様々な動きを作る事ができる汎用的なコンポーネントです。
_targetに回転(FloatQ型)欄は指定できません。(回転系は次回やります。)
0から指定の量(_repeat)まで、指定の速さ(_speed)で駆動する。
_offsetの例、_repeatが2で_offsetに-1を設定した時は-1~1の間で駆動します。
_preOffsetは別のパナーを用意すると分かりやすいです。駆動する値をずらせます。
逆に動かす場合は_speedにマイナスを入れればOK。
_speedを書き換えると、その都度駆動値が変化するので加減速的な変化はできません。別のコンポーネントを組み合わせて疑似的にやるか、LogiXでやりましょう。
_speedを0にした時やEnabledを無効にした時、駆動値は0になってしまいますが、スロットのActiveを切ることで一時停止する事ができます。
1D~3Dはよく使うけど、4Dの出番は少ないっぽい。マテリアルのカラーを駆動する場合はFloat4ToColorSwizzleDriver等を組み合わせることで可能。
3Dアクションゲームで定番の動く床も作れます。(人や物を乗せて移動できるようにする為のコンポーネントが別にあります。そのうち紹介します。)
・Neos Wiki リンク
https://wiki.neosvr.com/Panner1D_(Component)
・関連
Spinner
Wobbler(ウォブラー)
ヨロヨロするコンポーネント。
Float1~4型の値を動かせる。ランダムな動きが作れる。
・場所
Transform/Drivers/
項目 | 解説 | 初期値 |
_target: | 駆動したい値欄を指定。 | null |
_baseValue: | 基準の値。 | 0 |
_speed: | 速さ。 | 0秒 |
_magnitude: | 大きさ。(振り幅) | 0 |
_seed: | 乱数の種。 | ランダム |
・使い方
適当なスロットにアタッチ。
_targetを指定して、_speedと_magnitudeを設定。
・補足
パナー(PingPong有効)をランダムにしたようなヤツ。
_baseValueを基準として、_magnitudeの量だけ動く。例えば、_baseValueと_magnitudeをそれぞれ0.5に設定すると、0~1の間で駆動値がヨロヨロとランダムに変化する。
逆に動かす場合は_magnitudeにマイナスを入れればOK。
_seedは大きい数だとおかしくなるので、初期値をそのまま使うのがおススメです。
別の_seed欄に同じ値を入れれば、同じ動きになります。
_speed等を書き換えると、その都度駆動値が変化します。
Enabledを無効にすると一時停止できます。
ちなみにウォブラー3Dの場合は、自動的にアタッチしたスロットのScaleが_targetに指定されます。_baseValueも同じく設定されます。
・Neos Wiki リンク
https://wiki.neosvr.com/Wobbler1D_(Component)
・関連
Wiggler
AxisPanner(アクシス パナー)
軸に沿って物を動かしつつ大きさも変えられるコンポーネント。
何かが通過していくアニメーション(流れる景色)等が作れる。
・場所
Transform/Drivers/
項目 | 解説 | 初期値 |
TimeBase: | AuthorityTimeBaseコンポーネントを指定する。 | null |
Speed: | 移動する速さ。 | 0秒 |
Range: | 移動する距離。 | 0m |
Offset: | 位置の調節。 | 0m |
Axis: | 移動する方向。 | z 1(前方向) |
ReferenceScale: | 中間地点での大きさ。 | 0 |
FullScaleRangeRatio: | 大きさを維持する比率。 | 0 |
_position: | 駆動したい値欄を指定。 | 自スロットのPosition |
_scale: | 駆動したい値欄を指定。 | null |
・使い方
動かしたいスロットにアタッチ。
SpeedとRangeを設定。
・補足
スケールの変化は_scaleに動かしたいスロットのScaleを指定して下さい。
ReferenceScaleの初期値は0なので、そのままでは何も表示されないです。
逆に動かす場合はSpeedかAxisにマイナスを入れればOK。
Speed、Axis、Enabled、Activeでは一時停止できない。(位置が戻ったり、動かした時にワープしちゃう。)
初期設定だと座標が0になってしまうので、親スロットを作成して移動するか、Offsetを設定して調節しましょう。
ちなみにTimeBaseにオソーリティタイムベースを指定しなくても動かせるけど、加減速や一時停止等を滑らかに行いたい場合は必要です。
・Neos Wiki リンク
https://wiki.neosvr.com/AxisPanner_(Component)
AuthorityTimeBase(オソーリティ タイム ベース)
アクシスパナーに使うコンポーネント。
・場所
Utility/
項目 | 解説 | 初期値 |
BaseSpeed: | 速さ。 | 0秒 |
TimePosition: | ||
_actualSpeed: | ? | 自動 |
_actualOffset: | ? | 自動 |
・使い方
適当なスロットにアタッチ。
BaseSpeedを設定。
・補足
アクシスパナーのTimeBase欄に使う。このコンポーネントかSlotの名前を掴んで放り込むと入る。
BaseSpeedを変更して滑らかに加減速できちゃうのスゴイ。マイナスを入れれば逆方向にもできる。
アクシスパナーのSpeedと掛け合わさってるっぽい。
これ1個で、複数のアクシスパナーを制御できるので、流れる景色のアニメーションが容易に作れる。
鉄道の車窓や、2D横スクロールゲームの背景等のアニメーションを作る場合…
木、山、雲等のオブジェクトにアクシスパナーを設定して、それらを1個のオソーリティタイムベースで動かします。
加速や停止等をBaseSpeedで行うことで、全部のオブジェクトを支配して動かせます。
オブジェクトの移動速度を個別に変更したい場合は、アクシスパナーのSpeedを増減させればOK。
・Neos Wiki リンク
https://wiki.neosvr.com/AuthorityTimeBase_(Component)
LineTransform(ライン トランスフォーム)
2点間を直線的に移動させることができるコンポーネント。
動的な2点間を往復するアニメーションを作ったり、常に2点間の中間位置にしたりも出来る。
・場所
Transform/Drivers/
項目 | 解説 | 初期値 |
Point0: | 点0の座標。 | 0 |
Point1: | 点1の座標。 | 0 |
Point0Anchor: | 点0の基準にしたいSlotを指定。 | null |
Point1Anchor: | 点1の基準にしたいSlotを指定。 | null |
LinePositionType: | 相対的か絶対的か。 | Relative |
PlanePositionType: | ? | Relative |
LinePoint: | 点0からの距離。(相対なら割合、絶対ならメートル。) | 0 |
OffsetPoint: | 距離の調節。 | 0 |
RotationOffset: | 回転の調節。 | 0 |
_position: | 駆動したい値欄を指定 | 自スロットのPosition |
_rotation: | 駆動したい値欄を指定 | 自スロットのRotation |
AllowRepositioning: | ? | 有効 |
RepositionOffset: | ? | 有効 |
・使い方
動かしたいスロットにアタッチ。
Pointを設定又は、PointAnchorを指定。
LinePointを設定。
・補足
初期設定だと座標が0になってしまうので、親スロットを作る等して調節しましょう。
2点の指定は自由にできます。座標かSlotを使います。組み合わせて使用することも可能です。
PositionTypeはRelative(相対)とAbsolute(絶対)の2種類。相対の時LinePointを0.5にすると、常に2点間の中間位置になります。
LinePointの値を、パナー1DやLogiX等で駆動することで2点間を移動するアニメーションが作れます。
動的な2点間を移動するだけではなく、向きも制御されるのでLookAtコンポーネント等に似た動きも作れます。
工夫する事で、槍のような両手で持つアイテムを作ることも可能です。
宣伝になりますが、MMC22(メタバースメーカーコンペディション2022)に出展したワールド『TENINU Field』で、このコンポーネントを活用しています。パーフェクトなテニスが出来るワールドですので、是非遊んでみてください。
・Neos Wiki リンク
https://wiki.neosvr.com/LineTransform_(Component)
おわり
以上で第八回は終了です。拙文ではございますが、最後までご覧頂きありがとうございました。
ちなみに、私が書いているコンポーネント紹介記事でのカタカナ表記(コンポーネント名)は私が勝手に付けているだけなので、あくまでも参考程度に留めておいてください。
次回は回転系のコンポーネントを紹介予定です。
お楽しみに!