投稿

2015の投稿を表示しています

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

イメージ
この記事は Oculus Rift Advent Calendar 2015 の 20 日目です。

9 日目は shikemokumk 氏の VR時代のノベルゲーム開発 でした。

はじめに 未遂です。ごく近日中に続きを書きます…。

完遂しました!(2015/12/24)

クリスマスも近いことですし、女の子にケーキを作ってもらおうと思います。



材料

イチゴや生クリームは高いので、安い材料と最先端の技術でコストを抑えてもらいます。
そもそも女の子がいない問題も解決できる完璧なレシピです。

小麦粉 … たくさん砂糖  … そこそこ卵 … 1 つ牛乳 … 少しバター … いい感じにベーキングパウダー … 適量Oculus Rift DK2 … 1 台Ovrvision Pro … 1 台Unity … 5.2.2p2Oculus Runtime … 0.8.0.0Oculus Utilities … 0.1.3.0アセット … 少々
作り方
材料を混ぜ合わせて生地を作ります。



クッキングシートで型紙を作ります。
は?マーカーレストラッキング?この懐かしい味わいの良さがわからんのかね??



フライパンに型紙を敷き、生地を流し込んで焼きます。



焼き上がりました!いやダメだこれ…

「明日もう一度この記事に来てください。本当のクリスマスケーキをお見せしますよ」 なにとぞ…。

明日は junyash 氏です。

作り方(続き) ここから追記です。(2015/12/24)



2 枚目を焼きました。熱や油がフライパンになじんでキレイになりましたが、まだまだですね。



人生、困ったらチョコレートソースを塗れば大体何とかなります。


ここで、あらかじめ用意しておいた OculusRift + Ovrvision Pro の AR コンテンツを取り出します。
イチゴ、生クリーム、女の子はこちらに入っています。

Ovrvision Pro は VR HMD 向けのステレオカメラで、カメラを自分の目にできるデバイスです。

凹み氏の VR 向け高性能ステレオカメラの Ovrvision Pro を手に入れたので詳しく調べてみた - 凹みTips に詳しく書かれていますので、僕が書くことは何もありません!

あ、Ovrvision Pro の動作が不安定なときは電源付きの USB 3.0 ハブに挿すといいかもしれない…

[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 がインストーラーに含まれるようになり、手動で何もしなくても Visual Studio 連携ができるようになりました。
確認して…

(殴り書き)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 にある GPU Skinning のチェックを入れるのも手です。空いてる G…

[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)を取り出し、そこに振動ユニットを接続すれば使えます。

これをステレオ化、すなわち椅子の座面の左右に取り付けてそれぞれ別の振動をさせるとなると、課題がいくつか発生します。

基本的な方針としては、左右の振動ユニットをそのまま音声出力の LR に割り当て…

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

イメージ
ポスター印刷用にディスプレイ解像度以上のスクリーンキャプチャが必要になったので、簡単にできるやつを作りました。
GitHub : udasan/unity-screen-capture




適当なオブジェクトにつけるMinimum WidthMinimum Height を指定(デフォルトで A1 縦 72dpi 用)Target Camera を指定Oculus Rift のカメラだったら View Port Width0.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 円強で無線で姿勢を取得できるデバイスと見てもお得感があります。

Move.me について PS Move をネットワーク越しで…