NeosVRではじめてのBoxの大きさを変えるLogix

# はじめに
Logix初心者の備忘録です。
Unityはなんとなく触れる程度の知識。

Max(Cycling74)やPureDataやHoudiniやTouchDesignerやUnrealEngineみたいにノードベースのプログラミングができる環境があって、
VR空間でNodeつないで
VRのオブジェクトを制御できるようです。

とりあえずシンプルに
タイマーの変化を利用してBoxの大きさが変化するようなものを作る。

https://twitter.com/tatmos/status/1261270516733579264?s=20

RiftS OculusTouchコントローラ環境です。

# 注意
操作説明がちょっと整理されてないです　すみません。

- 人差し指トリガー　＝　選択　アクション
- 中トリガー　＝　つかむ　グラブ
- スティック押しこみ　＝　セカンダリーアクション　
（DevTooltip時　objectGizmo表示　,LogixTip時　Nodeを出現させる)
- スティック長押しこみ　＝　LogixTip時 選択Nodeを格納　
- Bボタン　＝　リングメニュー表示

# ワールドをつくる
空のシーンを用意したいので、ワールド作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/3d35b962-8a4b-1b8c-580d-4a4f33e240ae.png)

#道具を取り出す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/cbe0995f-2162-7174-2382-041ec92c1aed.png)

Iventory>Essential Tools
からDevToolTip  （世界を創造したり、オブジェクト選択したり加工したりできるツール）
と

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/d1a03d98-7356-0a9f-1da6-9c7540cc6063.png)
LogixTip　（Logixというノードプログラムを操作するツール）

を
ダブルトリガー（素早く右人差し指トリガー2回）して実体化させる。

# Boxをつくる

DevToolTip
右手で触ってダブルトリガーして手に装着します。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/6b26857c-161b-f3b0-8bca-019c3250032f.png)

右手のBボタンからCreate Objectsを選び（レーザーを当ててトリガー）
Boxを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/5beceabd-1a1a-1744-1e85-a884e60a1d35.png)

3D Model > Box と選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/5ef6f43c-e61b-fd74-e552-e5e19a408c8b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/6407dbdc-10cd-52bc-dcf6-c7aa701703f9.png)

Boxができる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/12b389b4-7587-ea28-edb4-80f33e159fa1.png)

# Boxを選択
Boxにレーザーをあてて、右スティックを押し込むと
3Dの軸がでてくる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/3a19f7a4-ecce-2509-8008-a87b73ed00b7.png)



# Inspectorを開く
選択状態で右手BボタンからOpen Inspectorを選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/0b6f8794-0d26-d8de-a1f8-75a4dd850b95.png)

とBoxのHierarchyとInspectorがでてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/ec24035a-8ae6-928a-a675-7c8c7575776f.png)

#Logix Nodeに持ち変える
右手の金色のNodeをダブルトリガーして外します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/4cc3249d-4a09-6959-3be4-e67df0fa1dcd.png)

LogixTipを手に装着します。

# Boxの子にLogixを格納する空オブジェクトを作る
Logixを空間に作ると、シーンのルートにでてくるのであとあと扱いに困るので、先にルートを決めておきます。
Inspectorの右上の★を押すとBox-childができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/ba3328b4-1ee9-05b6-1872-18573f0096ea.png)

そのノードの名前あたりをダブルトリガーで、Inspectorの表示を切り替えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/f94d5a62-872b-2917-33a5-6d8342445175.png)

Inspectorの名前のプロパティをダブルトリガーでキーボードがでてくるので、名前をlogixに書き換えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/fd27ff14-6fb7-7a0c-e163-bb928777609e.png)

hierarchyでlogixにレーザーを当てて、中指トリガーでつかむと　右手コントローラーに青くlogixとUUIDみたいなのが表示されます。　
このつかんだまま　Inspectorのそとへ手を持っていき、Bボタンでメニューを出して
Set Packing Rootを選びトリガー。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/3f50b175-0a8b-66ca-5c70-3261bb027642.png)

これで、後でPackingするときのルートになります。

#Boxからプロパティを引き出す
Boxを緑にして選択状態にし
何もないところでスティックを押し込むと
Boxから線（帯？）がのびた先にパネルがでてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/355de25d-d4cf-2ac1-bd09-b6886460adbf.png)

この中の水色のScaleを変更します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/56a8677d-5e10-8d18-34d1-58e6084a23a3.png)

#Node Browserを開く
logixのオブジェクトの入ったブラウザーで、
右BボタンメニューからOpen logix browserを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/62779123-1a1b-1f40-ba53-328b8ce96488.png)

operetorsをダブルトリガーして中にある![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/9e316ecb-fc29-6f1f-8a12-ca5b5d29c16f.png)

Pack xyzをダブルトリガーし、![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/39ca3405-ab08-357a-562e-6f029c3380d6.png)

右手の表示が変わったら
何もない空間でダブルトリガーするとLogixNodeがでてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/68216048-493d-f411-05d7-c1b42ef6f715.png)


この左側の水色の部分をlogixNodeの先を触れた状態で、トリガーでつかみひっぱりだして![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/da317849-96fa-a083-e983-72e8296430af.png)

スティックを押すと、値の入力フィールドがでてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/84660a68-97bf-5159-6b19-015a57c77b93.png)

# Boxの大きさを変えてみる

3つとも入力をとり出して、上から 3 1 1と設定します。（とりあえず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/2e20866d-5af0-b11d-cb5b-ab2b7b6d8e7a.png)

XYZの右側の水色に触れながらにぎる（トリガーしたまま）、線（帯？）をのばし![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/390314ed-e14f-47ee-68be-182f12bb233c.png)

BoxのプロパティパネルのScaleのあたりではなす（中指トリガーを外す）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/92069b83-72ca-a48d-cb2c-97031e59fe70.png)

と線がつながって、Boxの大きさが変わる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/e49aa827-7981-d0c5-2f0d-be34d9bf287c.png)


# 時間で変化するようにしてみる
時間はたぶんシーンが始まってからの時間でずっと値が増え続けるfloat値のようです。
これを直接つなぐと巨大すぎるBoxになるので、
以下のようなlogixを用意しておきます。

InputからT
Operatorsから%
をとりだしつなぎます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/449ae180-52ad-b95e-9dee-3da4b7edd1e9.png)

大きさが変化します。

# Nodeをしまう

Nodeに触れてスティックを長押しすると　LogixTipに水色のリングがでてきて、全部たまると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/d99806fa-5e86-6895-43cd-b37c6aa25138.png)

収納されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/960ef851-e4a9-b084-24f3-753660d0e17a.png)


# 収納したlogixを展開する

つかんで　Unpack children & connected nodesで　
logixを展開できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96808/c8cc2017-56ff-daa1-ecfe-e425c69408e2.png)


# ちょっとミス

https://twitter.com/tatmos/status/1261296705531600896?s=20

スケールとか変更するオブジェクトの子にlogixを入れてしまうと、
後で展開した時に、logixも変形の影響を受けてしまうので、できれば一つ上に変形とかの影響を受けないオブジェクトを作って、そこにパックした方が良さそうです。


# おわりに
とりあえずBoxの大きさは変えられたというところ

まだよくわからないこと

- 色はどうやって変えるのだろうか（マテリアルの指定とか）
-> ここら https://twitter.com/mikan3134/status/1238682216730783744?s=20

- 音とかのアセットてどうやって指定するのだろうか（鳴らしたい）
- ボタンとかコリジョンエンターとかのシグナルとか
- 手に持ってトリガー引くとかのシグナルとか
- 後から親子関係とか変えるのどうするのだろうか　-> Pack Unpackでlogixは移動できそう。