投稿

[OculusRift]素人がVRソフトを展示しながら考えた、没入体験中の説明のしかたについて

イメージ
OculusRift をはじめとするヘッドマウントディスプレイを使った体験の操作方法等を説明するとき、体験者には画面以外の現実世界が見えないことによる難しさがあります。 さらに、ヘッドフォンを併用する場合には外の音声も聞こえづらくなるため、より難しさが上がります。 また、より高い没入感を実現するためには、コンテンツ内容に合った形での説明が望ましいと考えられます。 本記事では、このように 視覚、聴覚に制約 のある中で、 没入感を損なわない説明 のしかたについて思うところを書いていきます。 筆者について 素人です。 OculusRift の体験会 Ocufes  で何度かコンテンツを展示し、百名以上の方に目の前で体験いただきました。本記事はほぼこの経験によってのみ書かれたもので、専門的な知識は含まれません。 筆者のコンテンツについて 少し宣伝になってしまいますが、具体例として使うために説明させてください。 見習い空賊と天空の少女  という、映画のような世界で主人公の少年になって少女を救出しに行くフライトアトラクションです。 体験者は OculusRift とヘッドフォンを装着し、背もたれのない椅子に座ります。 VR 空間の中では、体験者は飛行機の後部座席に座っており、序盤~中盤は船長の操縦により少女のいる塔を目指すフライトを体験します(下図左)。 終盤では、少女をキャッチするために上図のような姿勢を体験者が実際にとる必要があり、半回転して後ろを向いた上で足の間から前を見るような動作を行います(下図右)。 操作および操作説明に関係する点をまとめると以下になります。 OculusRift 体験が初めての方を主に想定 操作は少なくし、マウス、キーボード等の入力デバイスは使わない 飛行機の操縦も自動で、進行に必要な操作は終盤の姿勢変更のみ おまけとして、特定の場所を注視するとリアクションが返る 展示等で説明員がいる状況を想定 ただし、操作説明的には個人でもプレイ可能なものを目指している 展示に限っているのは周辺機材が特殊なことと、お借りした MMD モデル/ステージの都合、またオマージュ色が濃い内容のため 座ってのプレイを想定 現実の...

[OculusRift]見習い空賊と天空の少女

イメージ
「見習い空賊と天空の少女」は、映画のような世界で主人公の少年になって少女を救出しに行く没入型フライトアトラクションです。 ゴーグルに見立てた最新のヘッドマウントディスプレイ OculusRift を身に付け、子供の頃に誰もが一度は憧れた映画のように、飛行機に乗り込み少女の待つ塔へと向かいます。 クライマックスで少女を助け出すには、飛行機の後ろから身を乗り出す「あの姿勢」をリアルでも取らなくてはいけません。あなたは、無事に彼女を助け出すことができるでしょうか? ギャラリー 【ニコニコ動画】【VR】すり抜けながらかっさらってみた『見習い空賊と天空の少女』 ( モバイル表示 / YouTube ) ※ネタバレあり 体験者の様子 ※ネタバレ控え目、旧バージョン、HMD 同期ズレは別撮りのため 「4 秒で支度しな!」 風を切って進みます 「…どこ見てるんだい」 「パズお!」「シーたん!」 プレイ時間はたった 2 分ほどですが、テーマパークのストーリーライドのような展開にインタラクション性をプラスした本作で、これまでにないアトラクション体験をお楽しみいただけるのではないかと思います。 出展情報 超 Ocufes in ニコニコ超会議 3 (2014/4/26-27) Ocufes in 豊橋  (2014/6/1) Ocufes in 六本木 (2014/6/24) Ocufes in DCExpo 2014 @日本科学未来館 (2014/10/26) 東京オッキューランド(仮)  in ニコニコ超会議 2015 (2015/4/25, 26) 都内某社エントランス (2015/7/30) G-Tune × AMD OcuFes 2015夏  (2015/8/24) その他 VR 関連のイベント、勉強会などに出没します メディア情報 ニコニコ超会議3は「Oculus Rift」祭りでした――護衛艦「しまかぜ」からミクさんと添い寝まで総ざらい! - ねとらぼ 「誰でも、どこでもできる」自分の街で Oculus Rift の体験会をー Ocufes in 豊橋レポート - もぐらゲームス クレジッ...

[Unity]iTweenでのパス移動を使う前に知っておいた方がいいこと

Unity で位置や回転などを簡単にアニメーションさせることができるアセット  iTween  はよく知られています。 iTween ではパスに沿っての移動もできるのですが、ハードに使うにはあまり向いていない面もあるので事前に知っておくといいかもしれません。 良い点 そこそこいい感じにポイント間のカーブを描いてくれる ただし接線は編集できないので、完全に意図通りにするのは難しい easing オプションがけっこう豊富 進行方向に向くように回転するオプション orienttopath がある 困った点 速度の調整が非常に困難 speed または time パラメータがあるものの、ポイント間の直線距離に依存する=2点間は近いが生成されたカーブは長い場合に意図通りにならない(ただしうろ覚えです) パス移動中に変更できない カーブの接線が変更できないため、一度カーブした後に特に完全な直線を作るのは難しい 前後 2 点までしか影響を受けないようなので、一応点を増やせば直線を作れるが、その前後がふくらんだりする問題の調整に追われる 複数のパスを滑らかに接続するのが非常に困難 movetopath オプションを使えば線はつながるが、滑らかなカーブにはならない すでに終了している Tween に対して iTween.Stop() すると例外が発生することがある onComplete を使ってフラグ管理できなくもないが面倒 とりあえず try-catch しておけばスクリプトの停止は避けられる iTweenPath  でパスはエディタ上で編集できるが、あとで調整はしにくい これは  [Unity]iTweenでパスの編集を便利にする  で対処するスクリプトを公開しています 上記を知った上でツールの選択をされるのがよいと思います。

[Unity]uState : スクリプトベースのステートマシン

イメージ
uState は Unity 用のスクリプトベースなステートマシンです。 ダウンロード uState v0.9.1 過去のバージョン uState v0.9.0 概要 スクリプトの記述を前提としたステートマシンです。 基本 1 ステート 1 ファイル。100% スクリプトだけでも記述可能 パラメータ、遷移条件、各状態での動作などは自由に記述可能 継承による一部改変が容易 といった色気のなさを特徴としています。 使い方 - はじめに 以下、慣れないうちは Examples/00_Common/Scripts にある TemplateStateMachine.cs と TemplateState.cs をコピーして編集するのがおすすめです。 また、ある程度 C# スクリプトを書くことに慣れた方であれば、これらのファイルやパッケージ内のサンプルを眺めながら以下の説明を読んでいただいた方が理解が早いかもしれません。 使い方 - ステートマシンとステートの作成 ステートマシン作成 新しい C# スクリプトを作成し、uStateMachine を継承する public class MyStateMachine : uStateMachine 作成したスクリプトを適当なオブジェクトに追加する ステート作成 まず、後の利便性のため、ベースとなるスクリプトを作成しておく 新しい C# スクリプトを作成し、uStateGeneric<MyStateMachine> を継承する public abstract class MyStateBase : uStateGeneric<MyStateMachine> 実際に利用するステートを作成する 新しい C# スクリプトを作成し、MyStateBase を継承する public class MyState1 : MyStateBase MyStateMachine を追加したオブジェクトに子オブジェクトを作成し、MyState1 を追加する インスペクタなどから、MyState1 の State Name を適宜設定する 初期ステートの設定 MyStateMachine の Default...

[Unity]iTweenでパスの編集を便利にする

イメージ
Unity で手軽にパス移動できるアセットとして、 iTween  とそのパスをエディタ上で編集できる iTweenPath は広く知られています。 が、iTweenPath は 中間点の挿入/削除 、 パス全体の平行移動/回転/拡大縮小 が実質ほぼ不可能で調整がかなり厳しいので、できるやつを書きました。 WayPoint for iTween (GitHub) 使い方はざっくりと、 iTween を入れる。iTweenPath は不要 WayPointPath.cs をつけたオブジェクトを親にする。pathName を適当に決める WayPoint.cs をつけたオブジェクトを子にする。親の head をこのオブジェクトにする WayPoint.cs をつけたオブジェクトを複製する。さきほどのオブジェクトの next をこのオブジェクトにする パス移動は WayPointAgentSample.cs を参考に です。 エディタ拡張まで作りこんでいないので最初の手動連結はちょっと面倒ですが、あとで楽になると思います。 …iTween も結構クセが強くて、使い込むと色々ハマるので、そのあたりも気が向いたら書こうかなあと。

[OculusRift]Nekolus : バーチャルリアリティで猫と遊ぶ

イメージ
OculusRift で猫と遊べる、Nekolus (ねこらす) を公開しています。 >>>  Download (for Windows) from Oculus VR Share  DK2 対応 <<< >>>  Download (for Windows) from BowlRoll  DK2 対応 <<< &lt;a href="http://www.nicovideo.jp/watch/sm23491007"&gt;【ニコニコ動画】バーチャルリアリティでぬっこぬこにされてみた&lt;/a&gt; 気ままに歩き回ったり ボールを投げると拾ってきたり 猫じゃらしにむらがったり 増えたり します。 マンション住まいだったり、仕事で日中世話できなかったり、好きなのに猫アレルギーだったりしても大丈夫! 手軽にプレイできるようにということで、どこにでもあるマウス操作です。といってもクリックだけでポインタは不要。またはキーボードでも可です。 クレジット [モデル] Cu Cat  (Ts-Time) Free Furniture Props  (Vertex Studio) Round Carpet  (Olof Hagelin) Speeping bed  (Vertex Studio) [BGM] Ferne Welt (Piro 氏) [neko] [SE] フリー素材 -SpiderWorks-  [猫1, 猫2] [ツール] Unity   (ユニティ・テクノロジーズ) VRGUI   (boone188) 2014/05/06 : 動画追加、クレジット追加 2014/06/09 : クレジット追加 2014/07/12 : Oculus VR Share のリンク追加 2014/07/17 : Oculus VR Share 上でのタイトルを "Nekolus - Cats in the Rift" に変更したことに伴い、リンク先 ...

[Unity]OculusRiftでモデルの首をスクリプトで動かせないときの対処

イメージ
OculusRift でプレイヤーモデルの首を動かしたいのにうまく動かない、というときのための対処法です。 基本的にプレイヤーモデルの顔はカメラに映りませんが、カメラを目の位置=顔の中心からずれた位置に設置している場合、OculusRift の回転に合わせて顔も回転させておかないと、上を向いたときに髪の毛が映ったり頭の中が見えたりしてしまいます。 (モデルは Mukilus でお借りした Tda 式ミク さんと hzeo 式 KAITO  さん) カメラが顔の中心ではないため NearClip では対処しづらく、特に借り物のモデルでは顔だけを非表示にするのは難しいと思います。 そこで顔は表示させたまま首を動かし、カメラとモデルの目の位置が合っている状態を維持しようと考えるのですが、普通にやると初めは以下のような問題にぶつかるのではないかと思います。 OculusRift のカメラの Rotation をモデルの首に代入するスクリプトを作成し、単体では正しく動く モデルにメカニムアニメーションを適用すると、アニメーションによって首が制御されスクリプトがうまく動かない これについては、まずは以下のサイトなどを参考に、アニメーション側で首ボーンを動かさないように設定できるか試してみるのがよいと思います。 MMD for Unity を使って Oculus 用アプリを作ってみた - 凹みTips メカ徒然日記 OculusRift+Unity失敗 解決事例 主にカメラ しかし、自分のケースでは上記がうまく行かなかった(アニメーション側のマスク設定で、首のチェックを外せなかった)ため、以下のようなちょっと強引な方法で解決しました。 画像のように、 アバターの Head にモデルの Neck を関連付けることでモデルの Head をメカニム制御対象外として、スクリプトではモデルの Head を回転させる という方法です。 トライ&エラーの上でのいわゆる dirty hack のため、詳細はあまり書いても仕方がないですが、 アバターの Head は必須 アバターの Head を正しく設定したまま Neck だけ外し、スクリプトで Neck を制御するのはうまく行かない といったことを挙げてお...