code VR

Unity×VR(3)

スポンサーリンク

//tips

//VR酔

パソコンからデータをアップロードするためにoculusをいじっている中で、新しくリリースされたアプリもダウンロードして、いくつかやってみた。

その中で、視覚に頼るVR体験で発生するデメリットを感じたので記載していく。

VRアプリの種類は以前よりも豊富になり、アバターの視点で、アバターになりきって操作できるものも出てきていた。

このアバターの操作方法が曲者で、VRデバイスを被って、体を動かさないまま、左右のVRコントローラでアバターを回転運動させ視点を変えていると、ひどいVR酔に襲われるのである。

これは乗り物酔いなどと同じく、視覚情報と耳の三半規管の情報を脳が取得して、回転運動を知覚しているにもかかわらず、VRの一人称運動とリアルの操作者の運動状態にギャップができ、視覚と三半規管の情報の整合性が取れず、脳が混乱して、ひどく酔った状態になるのである。

現状ではVRの世界の体の動きとリアルの自分の動きを連動させることで、そのデメリットを隠しているが、屋内でVRデバイスを被って動き回るのは、VRデバイスの重さや家具との衝突などの問題からかなり不便である。

VRの一つの理想系とされている、VRのキャラクター目線で様々な運動を行うには、この視覚情報と三半規管の情報ギャップを解決しなければならないように感じる。

VRデバイスに脳への情報伝達を書き換える電波装置を組み込むか、薬により、違和感をなくすのか、視覚情報に頼らず、目を閉じたまま思考で操作できるようになるのかなどができないと、VR酔の苦痛に耐えてまで使用する一般ユーザーは少ないように思われる。

VRデバイスの醍醐味が現れるこの分野でVR酔という壁があることは、ゲームなどのエンターテイメントを目的とするVRデバイス普及にはかなりのマイナスであることが窺える。PCの方が便利に快適にできるので。

VRアプリを制作する際も、どのデバイス向けアプリなのかを事前に定義しておくことが重要になりそう。ひとまずVRデバイスを用いた使用用途よりもPCやスマフォを利用するVRコンテンツ制作に軸足をおくことにする。

//Ethanに人工知能を与える

VRデバイスへの出力に拘らず、VRコンテンツの作成を進めていく。

今回はEthanをAI搭載のキャラクターとして運用していく。これはAI付きのEthanがstandard assetsのprefabに組み込まれているので、シーンにドロップするだけで良い。

ここからは、AIに付随する、どのように動くかを決めるNavMeshAgentと、歩いていく先を決めるAICharacterControlスクリプトを調整していくことになる。

まずは空オブジェクトでwalktargetを作成。それをEthanのインスペクター内にあるAICharacterControlのtargetにドロップ。

これにより向かう方向は指定できたが、指示を行わないとEthanはまだ動くことはできない。

動くことができる地表をNavMeshで定義する必要がある。

定義に含めたい、地面と四角と丸のインスペクターからstaticにチェックを入れ、選択されたオブジェクトがナビメッシュのベーキング処理に含まれるようにする。

window→AI→Navigationで表示されるインスペクターのBake項目でBakeボタンをクリックする。

するとNavMeshでとして定義された部分が青色表示される。

これでEthanを動かしてみる。

ここからさらにEthanをランダムに動かしていく方法を考えていく。

Ethanの動きはAICharacterControlのtargetにより定められるので、targetにスクリプトを追加することでEthanの動きを不規則にしていく。

WalkTargetに下記のスクリプトを追加した。

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

public class RandomPosition : MonoBehaviour
{
void Start()
{
StartCoroutine(RePositionWithDelay());
}

IEnumerator RePositionWithDelay()
{
while (true)
{
SetRandomPosition();
yield return new WaitForSeconds(1);
}
}

void SetRandomPosition()
{
float x = Random.Range(-5.0f, 5.0f);
float z = Random.Range(-5.0f, 5.0f);
Debug.Log("X,Z:" + x.ToString("F2") + "," + z.ToString("F2"));
transform.position = new Vector3(x, 0.0f, z);
}
}

Random.Rangeの範囲はplaneの大きさが10×10であるからこの値に設定しており、SetRandomPositionでtargetの位置のランダム生成、RePositionWithDelayでwhile (true)、つまり、ゲームが実行され続ける限り、ターゲット位置のランダム生成とWaitForSecondsで指定された移動可能秒数での移動をループさせ続ける。

Ethanの動きの動きが早すぎるのでもう少し遅くしてみる。

EthanインスペクターのNavMeshAgentのsteeringの値(speed, angular speed,acceleration)を調整できる。

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-code, VR
-,

Copyright© BUSINESS HACKER , 2020 All Rights Reserved Powered by AFFINGER5.