(この記事の使用環境: Unity5.5.0f3 Personal、Windows10、SteamVR Plugin 1.2.0、VRTK3.0.1)


今回はVR用アセット「VRTK」に収められているスクリプト「VRTK_BezierPointer」の概要を説明します。VR空間で曲線を描くポインタービームを発します。

■ VRTK_BezierPointer は VRTK_BasePointer を継承しています。
 SnapCrab_NoName_2017-1-31_15-25-51_No-00

■公式サイトの解説

まずは公式サイトによる解説。これで用が足りる方は以下を読む必要はありません。
VRTK_BezierPointer · VRTK - Virtual Reality Toolkit

以下、公式サイトの解説をざっくりと直訳または意訳したもの+若干の補足です。誤り等があれば指摘してもらえると大変ありがたいです。また、イベントおよびメソッドについての解説は省略していますので、それらは公式サイトを参照願います。

■概要

  • VRTK_BezierPointer スクリプトは、それがアタッチされたオブジェクトの端から、地面上の点(任意の高さ)に曲線を描く。
  • 様々な高さのオブジェクトを超えて終端をユーザーが見ることができないオブジェクトの上にカーブさせることができるため、(そのことにおいて)シンプルレーザーポインターよりも便利。
  • レーザービームはデフォルトではコントローラーのタッチパッドを押すことにより作動する。そのイベントは AliasPointer イベントをリッスンするので、VRTK_ControllerEvents スクリプトの PointerToggleButton パラメータを変更することにより、ポインターをトグル(On / Off)するボタンを変更することができる。
  • ベジエ曲線の生成コードは VRTK/Scripts/Internal/VRTK_CurveGenerator.cs にあるスクリプトに置かれている。これは Catlike Coding のチュートリアルとコードから強くインスパイアされたものである。(※ と、VRTK公式が述べています) 

■インスペクタのパラメータ

  • Pointer Length: ポインタービームが前方に映し出される長さであり、基本的には原点から指し示すことのできる距離
  • Pointer Density: ビームベジェ曲線でレンダリングするアイテムの数。高い数値は、レンダリングされたオブジェクトの数が多くなるためにゲームのパフォーマンスに悪影響を及ぼす可能性が高い。
  • Beam Curve Offset: まっすぐに指してもビームが滑らかな曲線を生成するために、ビームに適用する高さオフセットの量。
  • Beam Height Limit Angle: 曲線カーブの高さを制限するまでの原点からの最大角度。角度を低く設定すると、ビームが空高く投影されて曲がりくねるのを防ぐ。
  • Rescale Pointer Tracer: ベジエ曲線の長さに応じて、各ポインタートレーサー要素をリスケールする。
  • Show Pointer Cursor: ビーム終端の接地した場所にカーソルを表示する。これはビーム終端の場所の高さを見るのに便利。(デフォルトでは有効になっているが)この項目でカーソルを消すことができる。
  • Pointer Cursor Radius: ポインターカーソルのサイズ。この数値はベジエ曲線ビーム内のオブジェクトのサイズにも影響する。この半径を大きくすると、ベジエ曲線のオブジェクトも大きくなる。
  • Pointer Cursor Match Target Rotation: この値が true なら、ターゲット面の角度と一致するようにポインタカーソルを回転させる。この値が false なら、ポインターカーソルは常に水平になる。(※デフォルトでは false)
  • Custom Pointer Tracer: ビームトレーサーとして、デフォルトのSphereの代わりにカスタムゲームオブジェクトを適用する。カスタムゲームオブジェクトはアタッチされたゲームオブジェクトの回転と一致する。
  • Custom Pointer Cursor: ここで指定したゲームオブジェクトをデフォルトの平らなCylinderの代わりにポインターカーソルとして適用することができる。
  • Valid Teleport Location Object: テレポートが許可されている場所を指し示したときだけ表示されるカスタムゲームオブジェクトを適用する(マテリアルは変更されない)
 SnapCrab_NoName_2017-1-31_15-20-11_No-00

■関連するExamples

関連するExamplesについての解説記事です。
  • Example 036_Controller_CustomCompoundPointer
      (今後執筆予定)

■VRTKのセットアップ方法および関連スクリプトの解説

VRTKのセットアップ方法および関連するスクリプトについての解説記事です。

今回は以上です。