この記事は「NeosVR Advent Calendar 2021」の1日目です。
Hello NeosVR!
NeosVRでいろんなものを自由に作れるようになりたいけど、その方法が全然わからん。
そう思ったこと、一度はありますよね。 この記事を読めば簡単にできちゃいますよ *1
時間がなく、推敲する時間がなかったので大分雑になってますが大目に見てください。
気が向いたら清書します。
対象
プログラムを少しでも齧ったことのある人。
非プログラマ向けの内容は体力があれば書こうと思います。
何を知ればいいの?
だいたいこの要素を知ってたらよい。
(詳しい話をすると「それは違うよ」ってなるかもしれないが、はじめは考えなくて良いと思うので説明を省略)
- 処理の順番・Neos特有の処理
- 条件分岐
- 繰り返し
- 値の取得
- 値の設定
- 値の保存
- モノの複製
(9. 便利なノード) *3
処理の順番・Neos特有の処理について
大半は左から右に処理は進むと考えればヨシ。
出力される値は基本的に複数に分けることがでできる。
ボタンを押したら実行するとか、そいう処理はパルスを使う。
パルスは複数に分岐できない。
パルスが出た瞬間しか値を出さないノードがある。
そもそもパルスって何よっていう本質を知りたい場合は下記の記事を見るとよくわかる。
条件分岐について
条件分岐とは 何かしらの入力に対して何かしらの処理を行い、その結果で処理に違いを持たせるということ。
簡単なものだと、スイッチも条件分岐の一種だ。
Onの時は電気がついて、Offの時は電気が切れる。これも条件分岐の一種と考えることが出来る。
実際のノード
TrueとFalseを判定して値を分ける。
TrueとFalseを判定して処理を分ける。
繰り返し
この処理何回もやりたい!ってときがたまにある。
そういう時は繰り返し。
実際のノード
For
While
無限ループについて
Neosは内部でループできる回数が決まっている。
無限ループするとノードが赤くなり、エラーとなる。
値の取得
手段1
Logix ToolTipのモードをinterfaceモードにして 欲しいSlotをつかんでセカンダリを押すと interfaceノードと呼ばれる値をとるための板が出てくる。
ここから伸ばせば値がとれる。
コンポーネントの値も同様
手段2
特定の要素は特定のノードを経由してとることもできる。
手段3
DynamicField
詳しくは れにうむさんの記事を参照のこと
記事の最後にある2フレーム問題は解決したらしい?
個人的にはこれが一番おすすめ。
値の設定
手段1
interfaceノードに直接つないであげる方法(Drive)
手段2
値を書き込んであげる方法(Write)
手段3
WriteDynamicValiable
値の保存
手段1
レジスターというノードがある。これに対してWriteしてあげると値が保存することが出来る。
手段2
DynamicValueValiable
モノの複製
Duplicate Slotを使う
なので先ほどのWriteなどを使ってあげてSlot情報を保存したりする。(同じパルス内で処理される場合は不要
だいたいこのあたりが出来たら後はノードを把握するだけ・・・のはず