VR、ゲーム制作、プログラミング。Unity とか Oculus Rift とか。

2015年12月20日日曜日

オキュラス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 の AR コンテンツを取り出します。
イチゴ、生クリーム、女の子はこちらに入っています。

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

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

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

完成

これで女の子にケーキを作ってもらう準備が整いました!

なお、僕はここまでの料理をすでに女の子 (リアルよめ氏) にやってもらっています。何かのご参考になればと思います。

それでは完成品をどうぞ!


まとめ

あえてマーカーを使うことで、何か出るぞ感が演出できるのは面白いのではないかと思います。

Gear VR やスマホ HMD との相性もよさそうです。

マーカーは焼き目でつけるよりも、白地にココアパウダーのステンシルの方がいいと思います。
背景は真っ白でなくてもよく、マーカーも色がついていてもよいので、抹茶でも可です。

量産するなら焼き印を作るのもよいですね。

VR 推しのカフェさんや、VR イベントのお土産、VR  テーマパークのフードメニューにどうですか!!!(営業)


クレジット

ソフト

動画

調理
  • リアルよめ 氏

ユニティちゃんライセンス
このコンテンツは、『ユニティちゃんライセンス』で提供されています。

2015年12月8日火曜日

[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 連携ができるようになりました。

確認していませんが Visual Studio Community 自体も Unity のインストーラでも入れられるようになったとの話もあるようです。

もしこれをお読みの方が MonoDevelop を使っていて、しかし MonoDevelop を愛してまではいないようでしたら、この記事を読むのをやめて Visual Studio をインストールしてみるのに時間を使うのがオススメです。画面を左右に割って 2 つのスクリプトを見比べたり、Ctrl + Shift + M or Q でよく使う Unity の関数を一瞬で入力できますよ!(雑な説明)

コードスニペットとは

こういやつです。


例えば upropc + TAB キー 2 回以下が出るようにできます。

Component _target;
public Component target
{
    get { return _target ? _target : (_target = GetComponent<Component>()); }
}

この Component と target は置換できるようになっているので、さらに TAB を押してから Component を Animator に、target (1 箇所で OK) を animator に書き換えれば終わりです。


詳しく知りたい方は公式の コード スニペット - MSDN - Microsoft をどうぞ。

デフォルトで定義済みのスニペットは Visual C# のコード スニペット - MSDN - Microsoft に載っています。

自分でスニペットを作りたい方は以下が参考になります。残念ながら GUI でスニペットを作成できる公式の Snippetizer は Visual Studio 2013 でしか動きませんでしたが、2013 で作って 2015 に持ってくることはできます。xml ですので、1 つ拾ってきて編集してもよいと思います。

 コードスニペットをVisual Studio拡張機能として広く配布しよう - Build Insider

Unity 用コードスニペット

ダウンロード :


インストール :
  1. Visual Studio を開く
  2. ツール > コードスニペットマネージャー
  3. 言語を C# に変更
  4. My Code Snippet を選択
  5. フォルダパスをコピーしてエクスプローラーで開く
  6. ダウンロードした .snippet ファイルを全てそこにコピー



使い方 :
  1. ソースコード上で upropc 等のショートカットを入力し、TAB キーを 2 回押す (または右クリックからスニペットを挿入)
  2. 置換する箇所を書き換え

簡単な紹介 :

ショートカット主なメソッド等
upropcComponent.GetComponent
upropccComponent.GetComponentInChildren
upropcpComponent.GetComponentInParent
upropcx上記以外用 (Transform.Find 等お好きに)
upropgcObject.FindObjectOfType (シーン全体から)
upropgtGameObject.FindWithTag (シーン全体から)
apropbAnimator.GetBool / SetBool
apropfAnimator.GetFloat / SetFloat
apropiAnimator.GetInteger / SetInteger


9 日目は trapezoid 氏です。