投稿

ラベル(Unity)が付いた投稿を表示しています

[Unity]Meta Quest で部屋のメッシュを使う (SDK v59)

イメージ
Meta Quest 3 + Meta XR Core SDK v59 で部屋のメッシュを使う方法のメモです。 概要 壁や床、バーチャル家具などを扱える Scene Model の機能を使い、特定の種類 (GLOBAL_MESH) のオブジェクトを部屋のメッシュに差し替えます。 手順 v57 からサンプルをコピー v59 には壁や床のサンプルプレハブが入っていません。手でセットアップはできますが、不慣れな場合は v57 からサンプルプレハブを持ってきた方が楽かと思います。 Assets/Oculus/SampleFramework/Usage/SceneManager をコピーしておきます。 手で作るなら以下のページなどに情報があります。日本語だと違う内容になるので、ページ下の言語設定を English(US) にすることをおすすめします。 Use OVRSceneManager - Get Started with Scene: Unity | Oculus Developers Anchor Pivots - Use OVRSceneManager: Unity | Oculus Developers OVRManager の設定 OVRCameraRig > OVRManager の Scene Support を Supported または Required に Passthrough Support を Supported または Required に Enable Passthrough にチェック Use OVRCameraRig and configure permissions - Get Started with Scene: Unity | Oculus Developers OVRSceneManager の配置 OVRSceneManager プレハブをシーンに置きます。 Plane Prefab と Volume Prefab を指定します。 ここまでで、部屋のメッシュ以外の壁や床は使えるようになります。 部屋のメッシュの使用 OVRSceneManager の Prefab Overrides を開いて、GLOBAL_MESH に Global Mesh Renderer Collider プレハブを指定します。 これで部屋のメッ...

Oculus Integration v57 から Meta XR Core SDK v59 への移行メモ

イメージ
v59 以降、従来の Oculus Integration が非推奨になり Meta XR Core SDK が推奨となりました。 Unity Package Manager (UPM): Important Meta XR SDK Release Updates for Unity 以下うちの環境での v57 から v59 への移行作業のメモです。 環境 Unity 2021.3.31f1 Oculus Integration v57 主な使用 Prefab OVRCameraRig OVRInteraction OVRHmd OVRControllers ControllerGrabInteractor ControllerVelocityCalculator OVRHands HandGrabInteractor HandVelocityCalculator Grabbable, GlabInteractable 等 OVRSceneManager URP 手順 おおまかな手順は いったん Unity を終了 Assets/Oculus フォルダを削除 Unity を起動 Meta XR Core SDK をインポート Meta XR Interaction SDK OVR Integration  ã‚’インポート です。 対応 OculusProjectConfig Oculus フォルダを消すので設定は維持されません。Git などでバックアップを取っておいて必要な行だけ戻すと楽です。 OVRCameraRig 引き継がれます。 なおこれに限らず、SDK が Packages 以下に移動した都合、SDK 自体への変更は行いにくくなっています。例えば OVRCameraRig プレハブそのものに変更を加えることはできなくなりました。 余談ですが検索時にうっかり In Assets だと見つからないので In Packages などを使いましょう。 OVRInteraction 引き継がれます。 Missing になる場合、 Meta XR Interaction SDK  ã®æ–¹(OVR Integration がつかない方)をインポートしていないか確認するとよいかもしれません。僕は一度やらかしました。 (ちなみに Meta XR Intera...

cluster ワールドに動画を置く際の Tips

イメージ
cluster のワールドに動画を埋め込んで再生する方法です。Android / iOS / PC 対応。 ……を書こうと思ったのですが、一昨日公式から記事が出ていました!! ワールド内に動画を設置する方法 – Cluster Creators Guide 基本は上記の記事を見てください。VideoPlayer のソースを URL にして、外部から動画をとってきているのがポイントですね。 以下はおまけです。 ローディングを出す 再生開始まで少し時間がかかることがあるので、ローディング画像を出します。 動画と同じアスペクト比の画像を適当にペイントソフトで作って(今回は 1280x720 の動画に対して 640x360 の画像)、下図の感じでインポートします。 新しくマテリアルを作って、下図の設定にして、VideoPlayer に割り当てます。(上記公式の記事では、RenderTexture の作成および同名マテリアルを作っていたところを、これに変えます) (クリックで拡大) 動画容量を小さくする 一例ですが、ffmpeg で以下をやっています。↓を ffmpeg_shrink.bat という名前で保存して、 > ffmpeg_shrink.bat 入力ファイル.mp4 出力ファイル.mp4 640 ←出力時の横幅ピクセル などとします。やっているのは、-crf 28 で品質を下げているのと、解像度の縮小です。 元々 1280x720 で 42MB くらいの動画を、横 1280 のままでも 10MB、横 640 にすると 4MB くらいまで減らせました。 (ffmpeg なにそれの際は ffmpeg インストールなどで検索してください) 誰かが近くにいるときだけ再生する 負荷的に良いかと思ったんですけど、これは意図しない動作をしたのでやめたやつです。 トリガー内のプレイヤー数をカウントして 0 なら止めるやつですが、変なタイミングで Exit イベント来たりするんですよね……あと VideoPlayer のソースが URL だと、オンオフのたびにダウンロードするようなので微妙です。 遠くにいるときは音が聞こえないようにする 動画の音がずっと聞こえるとわずらわしいので、近くだけで聞こえるように VideoPlayer の AudioSource を調整します。 こち...

[Unity]BlendShapeBlink - ブレンドシェイプでまばたき

イメージ
Unity 用のまばたきスクリプトです。 モデルがブレンドシェイプを持っていれば使えます。 任意のゲームオブジェクトにアタッチ Blink Shapes に「まばたき」など、まばたきに使うブレンドシェイプを指定 Skinned Mesh Renderer を指定してから、Index を指定 (複数 Skinned Mesh Renderer をサポートするため、個別指定になっています) Min Weight / Max Weight を指定 (通常 0 - 100) Avoided Shapes に、例えば「笑い」「ウィンク」など、このブレンドシェイプが一定の閾値以上のときは破綻を防ぐためにまばたきを抑制するブレンドシェイプを指定 閾値 Threshold Weight を指定 (0.01 とかでもよいし、多少のブレンドを許容するなら 25 などに調整) コードは以下です。左下のリンクから DL できます。 こちら  MMD4MFaceBlink - MMD4Mecanimでまばたき  ã®ä¸Šä½äº’換になっています。

HTC Vive の音声ミラーをスクリプト制御する (ソーシャルスクリーンのネタバレ対策)

イメージ
HTC Vive を展示等で利用する際、HMD を着けている人が見ている映像 (あるいは第三者視点の映像) をディスプレイに表示する ソーシャルスクリーン は、周囲の人を楽しませ、惹き付けるのに有用なことはよく知られています。 この際、映像と合わせて音声も スピーカー出力 できるとより良いことが多いです。 ヘッドフォンの音声を物理的に分岐する、サーバー/クライアント構成をとり HMD 接続 PC とスピーカー接続 PC を分けるなど、いくつか方法はありますが、SteamVR の設定でも簡単に実現できます。 以下のように、 「設定」 > 「オーディオ」 > 「デバイスにオーディオをミラーする」 でスピーカーを選択するだけで OK です。 さて、 ネタバレ対策 で一部のシーンでソーシャルスクリーンを隠したいことがあると思います。 映像の方は例えば Unity のカメラ制御などで前面に出せばできるので詳細は割愛しますが、音声ミラーも合わせてオンオフしたいので、 オーディオのミラーリングのオンオフ を スクリプト制御 することを考えます。 Unity + SteamVR Plugin 1.1.1 を使っている場合、以下でできました。 (2017/1/15 追記 : SteamVR Plugin 1.2.0 の場合、下記 11 行目、GetString() の引数 "" を削除してください。API が変わっています) GetString() すると、以下のような文字列が取得できます。 "{0.0.0.00000000}.{4bad97d2-1df8-4fdb-bf3b-ccb574d6ff34}" これを SetString() してから Sync() すれば反映されます。 ミラーリングしないときは空文字列です。 上記の文字列はデバイスのプロパティのバス関係の末尾と同じなように見えます。 openvr_api.cs には他にも CVRSettings.SetBool(), SetInt32(), SetFloat(), SetString() と複数のセクション、キーの定義があるので、SteamVR の設定の多くはスクリプト制御できるのではな...

[OculusRift]VRで写真撮ってメールで送るやつ(仮)

イメージ
VR 空間内で見ている景色を、Leap Motion を使って手をファインダーっぽくすることによって撮影し、そのままメールで送るやつを作っていたので今更ながらまとめました。 (2015 年の夏に作って出展したきり放置しており…) 撮影している様子はこちらです。 撮影すると、登録しておいたメールアドレスに写真が届きます。 みなさんが撮ってくれた写真がこちらです! . @udasan_koubou さんのVRで写真撮ってメールで送ってもらった!親指と人さし指で作った構図通りに写真撮って、本当に自分のメールに送ってくれる! レアなユニティちゃんとUnity仮面2ショット! pic.twitter.com/ScXBH26FYB — Somelu (@Somelu01) 2015å¹´8月24日 VRで写真を撮ってメールで送るやつ(ä»®)を体験!夕日とUnity仮面とUnityちゃんを写真に収めました!! #OcuFes pic.twitter.com/JYLP6P2dYD — 懐中時計 (@kaityuudokei100) 2015å¹´8月24日 ウダサンさんのVRで写真をメールで送るやつ(ä»®)の撮影結果。裏でユニティ仮面が走っているんですが、上手くフレームに納められなかったw pic.twitter.com/Gvur0O6jdK — ザバ(ザバイオーネ) (@z_zabaglione) 2015å¹´8月24日 VR で旅行して思い出が残せたりすると楽しそうですね。(これを作っていた 2015/8 はともかく、これを書いている 2016/5 現在、多分そういうアプリもありそうです) 課題はやはり、両手で構えてからタイマーで撮影する方式になっているため、瞬間で撮ることができない点です。音声認識で「ハイ、チーズ」といった方法は考えられますが、Oculus Touch などのボタンで撮影した方が手堅いですね。 手でやるなら、動画にしたり連射してあとから選べるようにすると、タイマーの欠点を補えるかもしれません。 なお、メールは一旦ローカルの HTTP サーバー (BlackJumboDog) に送信し、そこから Gmail を経由して送信元アドレスが Gmail になるようにしています。(一般向け...

ソード&プリンセス (VRロールプレイングアトラクション)

イメージ
ソード&プリンセス は、勇者になりきって姫を守る  VR ロールプレイングアトラクション です。 アトラクション施設様やイベント向けに、販売も行っております。 ギャラリー あらすじ 長きに渡って魔物との攻防を続けてきたある王国では、王家にのみ伝わる 伝説の剣 がありました。 ある日、その 王家の 姫 が魔物にさらわれてしまいます。 勇者 であるあなたはダンジョンの奥で姫を見つけますが、脱出しようとするも敵がそれを阻みます。 姫を 抱きかかえたまま 敵の攻撃に耐えなければならなくなった勇者は、はたして無事に姫を助け出すことができるでしょうか…? 概要 お姫様を、文字通り お姫様抱っこ しながら勇者として実際に体を動かして戦う、VR ロールプレイングアトラクションです。 重さ や 温かさ まで再現された姫を抱え、その表情や声 (CV : 四ッ谷ちとせ 氏) ã‚’間近で感じながら、 熱いストーリー が展開します。 単に敵と戦うだけではない、勇者になる体験をお届けします。 バリエーション 通常版 のほか、クロマキー合成によりパブリックビューイングや SNS 拡散力をより高めた グリーンバック版 、機材を簡略化してより展開しやすくした ライト版 もあります。 スペック プレイ人数 : 1 人 プレイ時間 : 3 分 30 秒 (転換 5 分 30 秒 ~ 6 分) 販売・出展について アトラクション施設導入、イベント出展等のご相談につきましては下記よりお問い合わせください。 Twitter :  @udasan_koubou Mail : 「ハシラス・インディーズ」 レーベルのコンテンツとして 株式会社ハシラス がパブリッシングを行っています。 「ハシラス・インディーズ」とは、株式会社ハシラスが、商業展開が見込める一定水準の従業員主体制作の VR コンテンツについて、パブリッシングや施設導入のサポートを行うプログラムです。 出展情報 超 VR アトラクションズ  in ãƒ‹ã‚³ãƒ‹ã‚³è¶…会議 2016 (2016/4/29-30) Unity VR EXPO Akiba ...

オキュラスARクッキング「女の子にケーキを作ってもらう方法」

イメージ
この記事は  Oculus Rift Advent Calendar 2015 の 20 日目です。 9 日目は shikemokumk 氏の  VR時代のノベルゲーム開発  ã§ã—た。 はじめに 未遂 です。ごく近日中に続きを書きます…。 完遂 しました!(2015/12/24) クリスマスも近いことですし、女の子にケーキを作ってもらおうと思います。 材料 イチゴや生クリームは高いので、安い材料と最先端の技術でコストを抑えてもらいます。 そもそも女の子がいない問題も解決できる完璧なレシピです。 小麦粉 … たくさん 砂糖  … ãã“そこ 卵 … 1 つ 牛乳 … å°‘し バター … ã„い感じに ベーキングパウダー … é©é‡ Oculus Rift DK2 … 1 台 Ovrvision Pro … 1 台 Unity … 5.2.2p2 Oculus Runtime … 0.8.0.0 Oculus Utilities … 0.1.3.0 アセット … å°‘々 作り方 材料を混ぜ合わせて生地を作ります。 クッキングシートで型紙を作ります。 は?マーカーレストラッキング?この懐かしい味わいの良さがわからんのかね?? フライパンに型紙を敷き、生地を流し込んで焼きます。 焼き上がりました!いやダメだこれ… 「明日もう一度この記事に来てください。本当のクリスマスケーキをお見せしますよ」 なにとぞ…。 明日は  junyash 氏です。 作り方(続き) ここから追記です。(2015/12/24) 2 枚目を焼きました。熱や油がフライパンになじんでキレイになりましたが、まだまだですね。 人生、困ったらチョコレートソースを塗れば大体何とかなります。 ここで、あらかじめ用意しておいた OculusRift + Ovrvision Pro の ...

[Unity]いつものコードを10秒速く書く、VisualStudioのコードスニペット(配布あり)

イメージ
この記事は  Unity 2 Advent Calendar 2015 の 8 日目です。 7 日目は @kuriharaan 氏の  AndroidでビルドはもういいRunしたいってとき  ã§ã—た。 はじめに \デーン/ public void Update () { Animator animator = GetComponent<Animator>(); // Update 毎に GetComponent if (animator.GetFloat("speed") > 5.0f) { // string 版 GetFloat animator.SetBool("isRunning", true); // string 版 SetBool } } …はい、心がざわつきますよね!実行コストの点でも、書くのが面倒という点でも、理由がなければこんなコードは書きたくないですね。 よく見かけるのは Start でキャッシュするやつでしょうか。 Animator animator; public void Start () { animator = GetComponent<Animator>(); } 私は初回アクセスでキャッシュするのが好みですが、 Animator _animator; public Animator animator { get { return _animator ? _animator : (_animator = GetComponent<Animator>()); } } いずれにしても、(Animator に限らず) この手のプロパティはよく書くことになるので、楽に書けるようにしたいと思います。 目次 Visual Studio の コードスニペット の 紹介 (知っている方は読み飛ばしてください) 私が使っている コードスニペット の紹介と 配布 (特にプロパティ系) Visual Studio のこと Unity 5.2 あたりから Visual Studio Tools for Unity がインストーラーに含まれるように...

(殴り書き)UnityのVRサポートでパフォーマンスとかプロファイルとか

イメージ
この記事は絵麻さんを養って幸せな家庭を築く氏の OculusRift - +OculusRuntimeでのパフォーマンスお手軽調整手順 - Qiita の Unity VR サポート向けの補足みたいなものです。 環境は Unity 5.2.2p2 + OculusRuntime0.8.0.0 です。 DirectDriverMode が動く人向けです。 VR サポート環境でプロファイラを見ると、CPUの負荷は紫色の Other が、その内訳は OculusWaitForGPU が多くを占めるようになります。 ぱっと見では CPU が 100% 使われているように見えるかもしれませんが、これは CPU での処理が終わって GPU での描画を待っているもので、実際に CPU を使っている時間ではありません。 VR - Major VR Performance Issue: OculusWaitForGPU running on CPU? | Unity Community 紫と紫以外が合わせて13.3ms(1sec/75fps)で済んでいるなら問題なし、紫だけで13.3msを越えていたら GPU 負荷高過ぎ、紫以外で13.3msに近い場合は CPU 負荷高過ぎです。 (図を貼りたい。とりあえず上のフォーラムにあるのでそれを見て下さい) あるフレームについて CPU + GPU で 13.3ms のタイミングで描画できない場合、OculusWaitForGPU は 26.6ms など次のタイミングを待つので、37.5fps になったりします。 あと GPU のプロファイルも環境によっては見られます。GeForceドライバ 358.87 で確認しています。めちゃくちゃ便利です。(プロファイル取るのに追加の負荷がかかりますのでそこは注意) https://twitter.com/udasan_koubou/status/662249462882942976 (出し方は左上の Add Profiler をクリックして選ぶ) プロファイルを見るときはシーンビューは隠しましょう。当然それを描画するのに負荷が相当かかってます。 あとは CPU 負荷がキツくて GPU に余裕がある場合、PlayerSettings にある...

[Unity][OculusRift]VRアトラクションにおける振動ユニットの利用とステレオ化について

イメージ
はじめに VR コンテンツにおいて、触覚等のフィードバックがあると没入感が上がってより楽しくなったりします。 拙作の VR アトラクションでもこれまで扇風機や噴霧器の制御を行ってきましたが、今回新たに振動ユニットも追加してみました。 ( VR フライトアトラクション「見習い空賊と天空の少女」 ) 上記コンテンツでプレイヤーが乗る飛行機は左右に二基のエンジンがあり、振動ユニットを椅子の座面左右に設置してそれぞれ制御することでイメージと近い体感が再現できるのではないか、と考えたことが動機です。 振動ユニットについて 振動ユニットの先行事例については izm 氏のロボット操縦コンテンツ「 めかしむ☆ 」をはじめ多数あり、 利用にあたっても同氏の記事(  VR環境における簡単な振動ユニットの使い方について - izm_11's blog  )を参考にさせて頂いております。 振動ユニットは上記記事で紹介されているのと同じで以下のものです。ひとつ 4,000 円くらいと安価で買えます。 【お一人様2点まで】 スピーカーでは再現しきれない重低音の臨場感を振動で再現 50Wハイパワー振動ユニット ボディソニック トランスデューサ ホームシアター 上海問屋 DN-82305 | 【上海問屋】通販サイト 低音域でよく振動するスピーカーで、機器との接続も音声デバイス扱いになります。 20 Hz ~ 100 Hz 程度の可聴域ギリギリの周波数帯でよく振動するのと、そうでない音を入力すると普通に鳴ってしまうので、通常はサブウーファー用出力などローパスフィルタをかけたソースを入力します。 これを椅子の裏面などに、振動がよく伝わるようネジ止めして使います。 VR での利用とステレオ化 さて、こちらの振動ユニットの通常の用途は、既存の映画やゲーム等に接続するだけで低音があるシーンで振動するというものです。 VR コンテンツでも、普通に使う分にはコンテンツ内で低音を鳴らしておけば、あとはスピーカー/ヘッドフォン出力を分岐した先でサブウーファー出力(1 ch)を取り出し、そこに振動ユニットを接続すれば使えます。 これをステレオ化、すなわち椅子の座面の左右に取り付けてそれぞれ別の振動をさせるとなると、課題がいくつ...

[Unity][OculusRift]高解像度なスクリーンキャプチャをとるやつ

イメージ
ポスター印刷用にディスプレイ解像度以上のスクリーンキャプチャが必要になったので、簡単にできるやつを作りました。 GitHub : udasan/unity-screen-capture 適当なオブジェクトにつける Minimum Width と Minimum Height を指定(デフォルトで A1 縦 72dpi 用) Target Camera を指定 Oculus Rift のカメラだったら View Port Width を 0.5 に変更 Shitf + P で指定パス以下にキャプチャ(キー変更可能) Windows 8.1, Unity 4.6 + Oculus SDK 0.4.1 と 0.5.0.1 の Oculus 用カメラと通常カメラで動作確認しています。 ( Application.CaptureScreenshot の方は、拡大しても粗くなるだけみたい → 再度試したら粗くならないっぽい(2015/6/26, Unity 5.1.1p1 without Oculus SDK)) こちらに大変お世話になりました! : 高画質なスクリーンショットを撮影する - テラシュールブログ メモ : みんなの知識【ちょっと便利帳】 - 用紙サイズのピクセル値一覧 2015/6/26 追記 : Application.CaptureScreenshot について

PlayStationMoveをPCかつネットワーク経由で使えるPSMoveServer

イメージ
PlayStation Move を PC で、かつネットワーク越しで使える PSMoveServer というものを作りました。 概要 PlayStation Move というモーションコントローラーをある PC と接続してサーバーを起動し、同一 PC または他の PC 上の別のアプリケーション(クライアント)から利用できるソフトを作りました。 これを使うと、PlayStation Move を接続するのが困難な Windows 8 や Android(未確認ですが) でも簡単に利用することができます。 また、クライアント側で面倒な実装をしなくても、サーバー側でコントローラーの設定変更、状態の監視などを行えて便利です。 クライアントはとりあえず Unity 用のみ用意しています。 PS Move について PlayStation Move (以下 PS Move) は PS3 用のモーションコントローラーで、加速度、ジャイロ、磁気による姿勢の取得といくつかのボタン操作、バイブレーションが可能です。あと光ります。 また、PlayStation Eye (以下 PS Eye) をはじめとするカメラと組み合わせることで、コントローラーの位置トラッキングも行うことができます。 PlayStation®Move(PS Move) | プレイステーション® オフィシャルサイト 有志の API を使えば PC にも Bluetooth で接続して利用することができます。 PC でモーションコントローラーとして利用可能なデバイスはいくつかありますが、位置トラッキングまで行えるものは限られています。 Leap Motion のツールトラッキングを使う、何らかのモーションコントローラーと Kinect を組み合わせるといった選択肢があり、それぞれに異なる利点がありますが、PS Move + PS Eye の利点は合わせて 6000 円程度と安価なことと比較的安定した姿勢取得、バイブレーションなどが挙げられます。 おそらく最大の弱点は明るい部屋で位置トラッキングの精度が出ないことです。ただ、ここの検証はまだあまりできていません。 PS Move 単体を 3000 円強で無線で姿勢を取得できるデバイスと見てもお得感があり...

[Unity]OculusSDK 0.4.3 メモ

イメージ
OculusSDK 0.4.2 -> 0.4.3 (0.4.3.1) で結構大きな変更があったので情報を集めているところです。 週末のOcuJamに向けて重い腰を上げて 0.4.3.1 (Unity) を試しはじめたところで、まだドキュメントも読んでいません… 以下、いつも以上にひどい内容でお送りします。 とりいそぎ追加でこれを (2014/11/29) #OcuJam 向けに0.4.3.1移行ガイド作ろうと思いましたけど、公式 https://t.co/ez03mstqsP の一番下のUnityIntegration全部と上から二番目のUnityIntegrationGuideのp24~、あとヒストリを見ておけば大体よさそう — ウダサン (@udasan_koubou) 2014, 11月 28 API とか OVRCameraController -> OVRCameraRig 右目/左目が RightEyeAnchor/LeftEyeAnchor に変更 NearClip は各カメラの値がそのまま使われる オーディオリスナが右目から中心 (CenterEyeAnchor) に移動 FollowOrientation がなくなり、標準で親に追従するように オフにする場合は多分親の回転を無視するか親なしで移動だけ追従させる処理を Update/LateUpdate/OnPreRender のどれかあたりでやって、TimeWarp をどうにかする感じになる気がします Follow Orientation in SDK 0.4.3 | Unity Integration | Oculus VR Forums  (途中までしか読んでいないです) Texture 関連 Scale は粗くすると画質とトレードオフでパフォーマンス稼げるみたいな話だったような… Eye Texture のほうは調べないと… OVRPlayerController NeckPosition がなくなった気がします あまり使っていないので調べていません… パフォーマンス まだ情報集まっていませんすみません。 TimeWarp + Extended が良くないとか Mirr...

[Unity]OculusDK2 ポジトラでモデルを動かしたかった話

以前の OculusRift 勉強会 OcuBen で発表したスライドです。 どちらかというと Unity のアニメーションブレンディングの話です。 DK2 ポジトラでモデルを動かし た か っ た … from Udasan

[Unity]uVRAudio:OculusRift用オーディオリスナ

uVRAudio は Unity で OculusRift コンテンツを作る際のオーディオリスナの設定を調整するためのスクリプトです。 主にヘッドセットではなくスピーカーを使う場合に、トラッキングによる移動や回転をしないようにします。 詳細はこちらのスライドをご確認ください。 VR コンテンツ作りに役立つオーディオのはなし from Udasan ダウンロード uVRAudio v0.9.1  for SDK 0.4.3.1 (2014/11/29) uVRAudio v0.9.0  for SDK 0.4.2 (2014/10/25) 使い方 (v0.9.1 for SDK 0.4.3.1) SDK 0.4.3.1 インポート済みプロジェクトに対して、uVRAudio の unitypackage をインポート uVRAudioListener を OVRCameraRig にアタッチ ヘッドフォンなら isHeadphone を true に、スピーカーなら false に (ヘッドフォンのみなら使う意味はもうないです) forwardDirection はおまけです。通常使わなくてよいです Examples のデモについて (見るほどのものではないです) 音がまだ入っていませんすみません。止まってるオブジェクトや動いてるオブジェクトに適当につけてください オーディオとは無関係ですが、DemoManager はプロジェクト初期に放り込んでおくとさんじゅうびょうくらい浮くかもしれません 使い方 (v0.9.0 for SDK 0.4.2) uVRAudioListener を OVRCameraController にアタッチ ヘッドフォンなら isHeadphone を true に、スピーカーなら false に OVRDevice.ResetOrientation() の代わりに uVRAudioListener の ResetOrientaion() を呼ぶ スピーカーの場合は正しい向きを向いてから呼ぶ 補足 (v0.9.0 for SDK 0.4.2) 標準だとオーディオリスナは右目の位置なのを顔の中心に オーディ...

[OculusRIft]DK2でUnityが落ちる問題の対処法

イメージ
OculusRift DK2 の SDK 0.4.0 と Unity で開発時に、"too many threads" というダイアログが出て Unity が落ちてしまう問題の対処法です。 結論としては DK2 を Extend モードにしてメインディスプレイにする ことになります。 ウィンドウが DK2 側に行ってしまい不便ですが、この情報で少し幸せになれました。 DK2な人で拡張モードでウィンドウがDK2側モニタにいっちゃってイライラする時のTIPS Windowsキーを押しながら左右カーソルキーを数回押せばアクティブなウィンドウをメインディスプレイに持ってこれる。 — GOROman (@GOROman) 2014, 8月 2 Game ビューを DK2 で見る場合は、Game ビューを分離して DK2 側に持って行ってがんばって右上の最大化ボタンを押します。fps があまり出ないのと、ウィンドウ枠の分多少表示がずれているかもしれませんが一応見られます。 以下補足です。 私の環境 GALLERIA QF870HE, W indows 8.1, 64bit NVIDIA GeForce GTX 870M + Intel HD Graphics 4600 Optimus はグローバル設定で「高パフォーマンス NVIDIA プロセッサ」 ビデオカードのドライバは最新(NVIDIA : 340.52, Intal : 15.33.22.64.3621) Unity 4.5.2f1 Direct HMD Access from Apps モードは全く映らない 現象 Unity エディタで Oculus の SDK を使うシーンを開いて Play する、または開くだけでも、数秒で "too many threads" というダイアログが出て、OK を押すと Unity が終了する 試したこと Direct モード : NG (映らないし落ちる) DX11 : 落ちないが Game ビューにも映らない Unity の Quality Settings で VSync をオフ : NG OculusConfigUti...

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

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

[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...