Relation/ValueMultiDriver<T>で解決
好きな値をどこか別の場所にコピーしたい時は、Transform/Drivers/ValueCopy<T>を使いますが、いろんなところにコピーして使いたい時はValueMultiDriverというコンポーネントがおすすめです。
・「コンポーネントをアタッチ」を押し、Relationsを開いたところにあります。
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2F4a5c3d98-50a1-f494-f1cd-9e2a30700dd3.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6db8c16693f95eb0b2639b6209253e07) |
Value(Reference)MultiDriverは、Transform/Drivers内ではなく、Relations内にある。 |
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2F856910c7-5508-317d-a634-c5a034eb5523.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=83f3b372755d0497592c33cb36924090) |
クリックすると、ズラっといっぱい出てくる。例えば、文字だったら「String」、ブレンドシェイプであれば「float」、座標やスケールであれば「float3」を選ぼう。 |
つかいかた
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2Fbc3955e2-9fd3-e04e-7dff-cc6d8b9076bc.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=018c687b04592ece653489bac01b7a51) |
コンポーネントを置いた直後の様子 |
コンポーネントはこんなかんじです。『Add』ボタンを押すと「コピーして上書きしたいとこリスト」が増えます
要素名 |
説明 |
型 |
persistent |
基本的にTrue(☑)のままでいい。詳細は折り畳み。インベントリ等に保存、あるいはワールドをしたときにこのコンポーネントを残すかどうか。True(☑)だとそのまま残り、False(☐)にすると保存時に消えてくれる。 |
bool |
UpdateOrder |
基本的に0のままでいい。詳細は折り畳み。NeosVRが1フレームごとに行う処理の中の順番を指定できる。数字が小さければ先に、数字が大きければ後になる。 |
int |
Enabled |
コンポーネントが動作するかを設定できる。False(☐)にすると動作しなくなる……はずだが、なぜかこのコンポーネントに関しては、どうあがいても動く。 |
bool |
Value |
コピーして描き込みたい数値を入れる。ValueCopyコンポーネントは「『ここの中身』を『ここの中身』にコピーしてね」みたいに使うが、ValueMultiDriverは「『この数字』を『ここの中身』にコピーしてね」みたいに使う。数字を直接描き込まないといけない。 |
ユーザーが指定した型 この記事ではfloat |
Drives(list) |
コピー先(後述)を入れる。 |
IValueField |
- コピー先の入れ方
- コピー先の数字を入力するところの左にある文字にレーザーを当ててグラブして「掴む」(↓例の場合Valueをつかんでいる)
- 掴んだままDrives(list)のnullとなっている場所にレーザーを当てて離す
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2Ff1c83d13-437e-3040-3416-72e34e26053c.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9ca99ab5c02d001a1010558b57104b3d) |
コピー先の数字を入力するところの左にある文字にレーザーを当ててグラブして「掴む」 |
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2Ffc0be615-f3f8-0adc-25da-ad7b3b9032f9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c59a2e6f47505a26c71264b87fe0c1e8) |
掴んだままDrives(list)のnullとなっている場所にレーザーを当てて離す。 |
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2F4d678d9e-d04f-d83b-1d5e-a28a7cbf2975.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d6469a87272d055a7acb5dfb51ba6564) |
コピーされるとピンクになる。この状態のことを「Drive(ドライブ)されている」と言う |
実践的な使いかた
コンポーネント単体を説明されても「これは何に使えるの」ってなりますが、いくつか楽しい使いかたができます。
- コントローラーの入力をLogiXでドライブさせ、ValueMultiDriverでシェイプキーに書き込む。
- トリガーを押し込むと、目を閉じて、口角を上げる、等ができる。
- 設定したマテリアルの色(明るさ)を複数のマテリアルに書き込む。
- コンテクストメニューのボタンを押すと、服に紋様(Emission)が浮かぶようになる。
これらは一例です。ぜひ皆さんで楽しく使ってください。
![image.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2884654%2Fb76be143-cd1c-ef71-b8a8-efc5a2fb8976.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=379276b68dd1ce48b81bfdade0ba5ee7) |
トリガーの押し込み具合をValueMultiDriver<float>に書き込むLogiX。NeosVRで表情を自力で設定する場合はこのようにLogiXを組むことが多い。 |