Teachers open the door but You must enter by yourself.

Open Media Lab.
オープンメディアラボ

HTC Vive Pro2 の環境構築

  1. Edit/Project Settings/XR Plugin Management をインストール
  2. XR Plugin Management/OpenXR を選択して、更に Enabled Interaction Profiles の+ボタンを押して HTC Vive Controller Profile を追加
  3. XR Plugin Management/Project Valideation を選択して、更に「Fix All」ボタンを押す。しばらく待つと警告メッセージが消える
  4. Window/Package Manager で XR Inteaction Toolkit をインストール、Samples/Starter Assets をインポート
  5. Edit/Project Settings/Preset Manager/Add Default Preset/Component/XR/XR Controller (Action-based) Filterに“Left”、“Right" PresetにXRI Default Left ControllerとXRI Default Right Controller
  6. Hierarcy に XR/XR Origin (VR) を追加
  7. Assets/Samples/XR Interaction Toolkit/2.x.x/Starter Assets/XRI Default Input Actions.inputactions のInspectorでGenerate C# Classにチェック Applyボタンを押す
  8. コントローラのモデルを表示させたい場合は、LeftHand Controller/Model PrefabにC:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\rendermodels\vr_controller_vive_1_5/vr_controller_vive_1_5.obj

背景となる山を配置

  1. 3個に複製しながらpositionを(-240,0,0),(-240,0,500),(-240,0,1000)に設定
  2. TerrainColliderは不要なのでチェックを外す
  3. VRで確認する

馬をスタート位置に配置

  1. positionを(5,0,300)に設定
  2. XR Origin (VR)をHourseの子に移動positionをリセット
  3. 再生してXR Origin (VR)のポジションを調整し、調整後のpositionの値をコピー
  4. 再生を停止してXR Origin (VR)のポジションのpositionに値をペースト
  5. 再生後、走り始めるアニメーションを設定
  6. VRで確認する

XR Originのパラメータ変更


using Unity.XR.CoreUtils;//追加

void Start(){		
	var xro=GameObject.Find("/XR Origin (XR Rig)");
	var xroCS=xro.GetComponent();
	xroCS.RequestedTrackingOriginMode=XROrigin.TrackingOriginMode.Device;
	xroCS.CameraYOffset=0.5f;
	xro.transform.position=new Vector3(0f,0f,-0.5f);
	xro.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
}

ゲームコントローラの入力を使用するコード


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class Someone : MonoBehaviour
{
	void Awake(){
		XRIDefaultInputActions inputActions=new XRIDefaultInputActions();
		inputActions.Enable();
		inputActions.XRIRightHandInteraction.Activate.performed+=OnActivate;
		inputActions.XRIRightHandInteraction.Activate.started+=OnActivateOn;
		inputActions.XRIRightHandInteraction.Activate.canceled+=OnActivateOff;
		input.XRILeftHandInteraction.Activate.started+=OnSubmitPressed;
		input.XRIRightHandInteraction.Activate.started+=OnSubmitPressed;
	}

	GameObject leftController;
	GameObject rightController;

    void Start(){
		leftController=GameObject.Find("Left Controller");
		rightController=GameObject.Find("Right Controller");
	}

	void Update(){
		transform.position=leftController.transform.position;
		transform.rotation=leftController.transform.rotation;
	}
	
	public void OnActivate(InputAction.CallbackContext context){
		Debug.Log("pressed");
	}
}

This site is powered by Powered by MathJax