たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

VR空間に線を描いたり、消したり

VR空間に線を描いたり、部分的に消したりするやつ、自分なりにやってみました。

TrailRendererを使えば線を引くのは簡単にできるけれど、一度描いた線は部分的に消せません!!
んじゃ、一度じゃなくって複数描けば良いんじゃね?
ってことで、適当な距離進んだら一度線を切って、またすぐ線を描けるようにしてみました。

これが1つの線分
f:id:takoyakiroom:20180210140918j:plain
SphereColliderとTrailRendererを持っていて、SphereColliderに「Eraser」がぶつかったら、オブジェクトを消すようにする。

ペンの動きに沿って、どんどん繋げていくと一本の線に見える!
(よく見ると繋ぎ目で切れているのがわかるが、そんなの気にしない)
f:id:takoyakiroom:20180210140937j:plain

以上!
完成したのがこちら、コントローラの制御にはVRTKを使用しています。

ペン本体

f:id:takoyakiroom:20180210142000j:plain
コントローラで掴める、トリガーボタンを検知できるようにする

ペン先

f:id:takoyakiroom:20180210142004j:plain
今の色がわかるようにする為の飾り

ペン先の先っちょ

f:id:takoyakiroom:20180210142008j:plain
ここに線を吐き出していくスクリプトをアタッチ

実際に線を引く時は、「Instantiate」でこいつの複製を作成しています。
f:id:takoyakiroom:20180210143852j:plain
SphereColliderとTrailRenderer
TrailRendererの「Time」は長めに、Tagには「Pen」と設定しときました
f:id:takoyakiroom:20180210145153j:plain

ペンのスクリプト


消すやつのスクリプト


部分的に線を消すことが出来ました

f:id:takoyakiroom:20180210150309j:plain

なお、Colliderがあるのは線の端っこなので、消す時に違和感を覚えます。
ペンの通った場所を覚えておいて、Colliderの位置を線の中間に移動させるとかしたら良いかも。

3Dも2Dも

これだけじゃつまらないので、空間にもホワイトボードにも描けるペンを作ってみたよ

VRで空間にもホワイトボードに描けるペン

ホワイトボードへの描画にはInkPainterを使わせていただきました~