投稿

[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 を調整します。 こち...

ビー玉を Looking Glass に入れるころがりうむを ELF-SR1 でも作った話

イメージ
これは ELFちゃん(ELF-SR1) Advent Calendar 2020 - Adventar  の 9 日目です。 ELF-SR1 をお借りする機会に恵まれたので、これを作りました。 ELF-SR1 でもビー玉からころがりあんが生まれました。キュウ! #ELFSR1 pic.twitter.com/liOiGQ2pDS — ころがりあん(ころがりうむ公式) (@korogarium) December 8, 2020 これは Looking Glass で作ったこちらを元にしています。 ビー玉から生まれるふしぎな「ころがりあん」のすみか、『ころがりうむ』です。キュウ pic.twitter.com/JMxBBTYuiB — ころがりあん(ころがりうむ公式) (@korogarium) August 31, 2020 Looking Glass と ELF-SR1 はどちらも裸眼立体視ディスプレイですが、性質には少し違いがあり、向いているコンテンツもいくらか異なります。 とはいえせっかくなので ELF-SR1 ではどうなるのか作ってみることにします。 やったこと とりあえず 開発者ガイド をぜんぶ読みました。シーンのデザインガイドラインなどが日本語で簡潔にまとまっているのですぐ読めてよいですね。 部屋をこの箱を目安に配置調整していきます。 (画像は https://www.sony.net/Products/Developer-Spatial-Reality-display/jp/develop/Design/Scene.html より) 箱に納めたほうが「多くの人に見やすく自然」とのことですが、奥行きはちょっと多めにとることにしました。奥が割ときれいに描画できるのも ELF-SR1 のいいところですね。奥に窓をつけて遠景の山でも表示したら、もっと良さを引き出せたかもしれません。 今回はプロトみたいなものなので、ダンボールで筐体をやっていきます。50 万円とのコントラストが絶妙ですね。はじめ天井は手前いっぱいまで作りましたが、下方向のトラッキングに影響が出すぎたのと画面がだいぶ見えなくなって惜しかったので切りました。左側のトラッキングを煙突下パーツがまだ遮っているので、今後があれば改良します。 左右の三角の鏡面は、この場合は不自然なの...

白黒イラストを 3D プリントしてコインやキーホルダーを作る方法

イメージ
これはなに こういう白黒イラストから こういうコインをプリントする方法です。 イラストはリアル嫁氏が描いたものです。 (キャラクターはカービィ、サンド、ピカチュウをお借りしています。カエルは完全オリジナルのけろぴっぴですが、けろっぴをリスペクトしているとのことです。) 白黒イラストのプリントのすすめ 「お父さんの部屋にあるなんか高い機械で、揺らすと怒られるやつ」、それが 3D プリンタです。 これでは旗色がわるいので、ここはひとつ「ぼく / わたしにも使える楽しいやつ」になってもらいます。 モデリングを覚えてもらうのはハードルが高いかもしれませんが、イラストならすぐです。 上の元絵はデジタルで描いてくれましたが、紙とマジックでも大丈夫です。仕上がりが不安ならこっそり白黒 2 値化してあげましょう。 線が細くなりすぎないようにだけ気を付けてもらうとよいと思います。 導入当初からこの活動を行っていた甲斐もあってか、家庭内通貨の製造依頼は嫁氏の方から来ました。ヤッター 方法 FlashPrint だけ使う方法 FlashForge のプリンタ用スライスソフト FlashPrint ( https://flashforge.co.jp/support/ ) は、グレースケール画像からモデルを作ってくれる機能があります。 STL や OBJ を吐けるので FlashForge のプリンタ以外でも問題なく使えると思います。(うちは Adventure3 を使っています。) バージョン 4.2.0 現在、ロード > 画像を選択するだけで OK です。 完成です!もう何も書くことはないですね。 ……コイン状にしなくてもよければ実際もう完成で、とてもお手軽です。 コイン状にしようとすると、ベースの厚さを 0mm にできないうえ、画像の周囲を透明にしても黒と判断されてしまうため、一手間必要です。 画像の中にグレーを流してやり(周囲は透明でなく白です)、 ベースの厚み + 0.1mm くらいの Z 平面でカットし、 下の板を捨てれば今度こそ完成です。 かんたん! あと 2 種類方法があるのですが……元絵が白黒(グレースケールでなく 2 値)ならこれが一番おすすめの方法なので、飛ばしてしまっても大丈夫です。 FlashPrint + Blender を使う方法 元絵にグレーを流さずに...

VR コンテンツ開発ガイド 2018 書いていました

VR コンテンツ開発ガイド 2018 という本を書いて…いました。いまは 2019 年です。 当時ブログの方には何も投稿していなかったのですが、一年ぶりに振り返ったツイートの連投をこちらにまとめておきます。 VRコンテンツ開発ガイド 2018の発売からちょうど一年ですね。2019 は出ていないみたいですし、この機会に感想とか差分とかぶら下げていこうと思います。あ、Kindle Unlimited化していますね! https://t.co/Gg1dIs8ywA — ウダサンド (@udasan_koubou) August 28, 2019 こちら共著で、著者ごとに章が分かれており完全に独立して読めます。個人的オススメは1章のHMDの光学系の話と、6章のVRのサウンドの話です。この本を手に取られる方の多くに刺さりそうな、汎用的・専門的・すぐに活かせる内容になっていると思います。 — ウダサンド (@udasan_koubou) August 28, 2019 僕の5章は、VRコンテンツのデザインTIPSです。前半ではHMDや入力デバイス、プレイエリアの広さやマルチプレイなどの基本的な技術的要素について…ではなく、そのメリットや制約を挙げて、それによってVRでどういうコンテンツが作れるかにフォーカスしました。 — ウダサンド (@udasan_koubou) August 28, 2019 …これ、たぶんタイトル流し読みすると「あー知ってる」ってなると思うのですが、わりと普通の文章にメリットとか何ができるかの話を書いているので、もしお読みになる際にはお付き合いいただけるとうれしいです。 — ウダサンド (@udasan_koubou) August 28, 2019 後半は、デザインの要素や考え方を書いています。コンセプト、体験の長さ、キャラクター、操作、移動方法、空間設計、マルチプレイ…などなど、ハシラスや個人で作ってきたコンテンツやお気に入りのコンテンツを例に解説しています。 — ウダサンド (@udasan_koubou) August 28, 2019 こちら、何か書きませんかと @korinVR さんにお声がけいただいて、はじめは書くことないかなとも思ったのですが、携わってリ...

UnDebuggAble ritTAi-chaN

イメージ
かわいいアバターになれるだけの実験的なソフト UnDebuggAble ritTAi-chaN (うだたん) を Oculus Store のアルファチャンネルで公開しました。 Oculus Touch の親指スティックで感情 (表情) を無段階に操作できます リップシンクにも感情がかかります 目と口の感情は Touch 左右別々にも操作できるので複雑な表情もできます 手でハートを作るとハートが出ます Touch 親指の感情は、ラッセルの円環モデルを参考に 2 次元マップしています。 テストをご希望の方は、Oculus ID に紐づくメールアドレスを Twitter の DM で @udasan_koubou にお知らせください。 詳細な操作方法はソフトの Details に記載しています。(位置調整や親指スティックの割り当て変更など) うだたんの話 ~ VR アバターで自撮りする話 from Udasan 上記のスライドに実装面の少し詳しい話を書いています。 モーメント うだたんメイキング うだたんになってしまった人々 クレジット ニコニ立体ちゃん  (株式会社ドワンゴ) Final IK  (RootMotion) MMD4Mecanim  (Nora 氏) MikuMikuDance  (樋口優 氏) Classic Picture Frame  (Vertex Studio) 2017/11/20 : モーメント追加

[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でまばたき  の上位互換になっています。

VR の移動方式を集めてみた (家庭用編)

VR コンテンツの移動方式を集めてみました。 家庭用編ということで、標準的な部屋と機材でできるものに限っています。 なお、観測範囲は Oculus, Vive のメジャーコンテンツや OcuFes 等のコンテンツが主です。 随時追記予定です。 テレポート テレポート先を指定して瞬時に移動します。 Farlands 視線と Oculus Remote のボタンにより、任意のテレポート先とテレポート後の向きを指定できます。また、神視点からのテレポートもできます。 視線をテレポート先の地面に合わせ、ボタンを押したままにしている間テレポート後の向きを視線の差分で操作でき、ボタンを離すとテレポートします。テレポート時にはごく短時間の黒フェードが入っているように感じます。 Bullet Train Oculus Touch から出るレーザーで、あらかじめ設定されたテレポートポイントを選択してテレポートできます。 ABXY ボタンを押し続けるとレーザーが出ます。レーザーは通常直進しますが、近くのテレポートポイントに吸い寄せられます。ボタンを離すとテレポートします。テレポート後の向きはポイントごとにあらかじめ決まっています。テレポート時には白フラッシュが入ります。テレポートポイントの吸い寄せ時は音と振動が入ります。テレポートポイントは特徴的な位置に設定されているほか、アイテムおよび敵の近くにもあります。テレポートポイントは通常非表示で、レーザーを出している間のみ表示されます。レーザーを出している間、ゲームはスローになります。 Robo Recall Oculus Touch から出るレーザーで、任意のテレポート先とテレポート後の向きを指定できます。 アナログスティックをどちらかに倒すとレーザーが出ます。レーザーは直進後に弧を描いて落ちます。アナログスティックの方向でテレポート後の向きを操作できます。スティックを離すとテレポートします。テレポート時にはやや長めの白フラッシュが入ります。レーザーを出したときやポイントが一定量動いたとき、テレポート後の向きを変更したとき、テレポートできない点を指した際などは音や振動が入ります。レーザーを出している間、ゲームはスローになります。 超高速移動 移動先を指定...

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