2014/11現在のDK2設定、バージョン違い等の最適解情報まとめ

概要

OculusRift DK2が発売され、多くの人の手元に届いています。
これからOculusコンテンツを作ろう!と思ったときにSDKバージョンが幾つもあって、お勧めPCも色々あって、どれを選べば良いのかみたいな目安があると、便利かなと思い、調べてみました。
僕の思い込み等が入っている可能性もあるので、ツッコミや質問等、お気付きの点がありましたらtwitter

https://twitter.com/izm

に連絡いただけると嬉しいです。そしてMacは詳しくないので、Windows限定です。(Radeonも詳しくないんで教えてください)

  • デモ、開発用PC別のインストールすべきSDKバージョン
  • Unityの設定
  • どのくらい"VRとして"パフォーマンスが出ているかの確認

と言う内容です。

まず、OculusRift DK2自体のセットアップやファームウェアアップデート等については

を上から順に見ていくと、おそらく初期不良じゃなければ動くはずです。

SDK等の選び方

Unityのバージョンは4.5.2か4.5.5が推奨です。4.5.3-4.5.4は強く非推奨です。
また4.6beta,5.0betaも余程事情が無い限り勧めません。詳しい人なら大丈夫です。
DK2のファームウェアは以下のおすすめOVRSDKバージョンの最新版に合わせるのが無難です。

後述のOVRSDK0.4.2と0.4.3.1の使い分けで

  • OVRSDK0.4.2→Unity4.5.2
  • OVRSDK0.4.3.1→Unity4.5.5

がOculusVRが動作を確認した組み合わせなので、Unityのバージョンもそれぞれに合わせておく事を推奨します。

また、Windows7ではAeroを無効化出来ますが、検証したところメリット(ExtendMode時のPostPresentの値が減らせる等)は確認出来ませんでした。一方でAeroを無効化するとjadderが増えます。よって
Windows7はAero Onが現時点での推奨環境です。

Optimusノート

市場に出ている99%のGeforceGPUが載ったゲーミングノートPCがこれです。GeforceIntelGPUを両方使えるやつです。
このPCを使う場合、前提条件として「小まめにシステムイメージまるごとをバックアップする」ことを強く推奨します。具体的には隔週ごとにバックアップを取るくらいでも間違いではないです。
なぜならOculusランタイムとOptimusノートは相性が悪く、TLを見ている限りかなりの確率でブルースクリーンを繰り返して起動しない状態に陥る為です。
このタイプのPCはOVRSDK 0.4.2一択です。 0.4.3以降だと相性問題が更に悪化するためです。

また、ブルースクリーンを繰り返して起動しなくなった場合、セーフモード起動→GPUドライバのアンインストール→通常起動→GPUドライバの再インストールで復活する事もあるので、試す価値はあります。

このPCはExtendモードでしか動作しません。 稀に当たり個体だとDirectモードが動くようです
[補足] RazerBladeの当たり機種だと動く個体も存在しています。RazerBladeはOculusVR社内にOptimusのテスト環境用に使われているからでしょうか…

[補足の補足] 11/25現在、有志によるDirectModeの動作検証が進んでいます。

OculusSDK Optimus検証メモ

キルロボブログ: G-Tune i790でのOculus Runtime 0.4.3 動作検証

G-TUNEというかClevo製ベアボーンのOEM個体については0.4.3.1(Oculus Runtime 0.4.3)においてDirectModeが動く可能性が高いです。
その際、Windows7の方がWindows8.1よりも動作状況が良い場合が多いです。(おそらく8.1でのマルチGPU周りの追加機能が悪さをしている状態)

また、GeforceDriverは344.75が比較的安定しているので、アップデートを推奨します。

オンボードGPU搭載機種

個人的にはパフォーマンスが出ない為、あまりお勧めではないです。可能ならPCのアップグレードを推奨します。
描画負荷が相当に低いコンテンツなら、大丈夫です。 OVRSDK0.4.2か0.4.3.1をお勧めします。 Directモードが動きます。Directモードでデモしましょう。

それ以外(GPUの載ったデスクトップPC)

MacBookPro(Geforce)、MSI GT72等の一部ノートPC、SLIノートも便宜上ここに入ります。
現時点での最適解なPC群です。

最適なパフォーマンスを出すならOVRSDK0.4.3.1をお勧めします。
過去のノウハウを使う可能性があるならOVRSDK0.4.2も次善の手です。(例えばFinalIKでポジトラと自キャラを合わせる、OVRCameraControllerを書き換える等)
Directモードでデモしましょう。

Unityの設定

力尽きました。後で追記します…
まずはビルドしたらDirectToRift.exeで起動する事とか、UnityをDX11モードで起動するべきかとか、VSyncはUnityでオフにするかオンにするかとか、0.4.3以降だとScreenScaleを変えてパフォーマンス稼げるとか、maxFovをケチってしまうと微妙にパフォーマンスが稼げるとか色々あるんですが、うまく書ける自信がありません…

VRパフォーマンスの検証

まずは前提として「75FPSをキープ出来るようにコンテンツを作る」ようにしないと、この項はほとんど無意味です。
パフォーマンスチューニングは大変ですが、頑張るしかありません。
本題です。基本的な話をすると
最適な設定をしたDirectモード>いい加減な設定をしたDirectモード>(越えられない壁)>最適な設定をしたExtendモード>いい加減な設定をしたExtendモード

の順にVR体験は変わってきます。大事なのは「Directモード、Extendモードそれぞれに、設定最適化の余地がある」 と言う事です。
この設定が最適かどうかを検証する手段を以下に書きます。

Directモードで動くPC

動作確認するPCにインストールしたOVRSDKのバージョンに対応したovr_sdk_win_0.x.yをダウンロードして
Oculus World DemoのショートカットをダブルクリックしてTuscanyDemoを起動します。

f:id:izm_11:20141118232337p:plain

Directモードで起動したらスペースキーを押してプロファイル画面を出し、スクリーンショットを撮ります。ここで理想的な数値例を以下に挙げます。(協力:野生の男さん)

注目すべきは「PostPresent」の値で、これはSDK0.4.3以降で最適なGPUドライバ設定を行うと0ms-0.2ms程度に収まるはずです。 0.4.2以前、あるいはGPUドライバの設定(トリプルバッファリング等)に不備があると10ms以上の値が出ます。 例えば0.4.2では頑張っても以下のような値になります(10msくらい)。

f:id:izm_11:20141118232222p:plain

また、いい加減な設定だとPostPresentが40ms以上になる事もあります。そうなっていた場合は非常に設定が悪いので要設定確認です。GPUドライバの色々な設定を変えてこの値が小さくなるように試行錯誤するべきです。

VisionProcは通常無視できるくらい(<1ms)の値になっているはずです。

(この辺りの数値の理屈、解説はOculusRift DK2 Advent Calender記事で行う予定です)

Extendモードでしか動かないPC

つらいです…

  • 75Hzモードで動かすためにDK2をプライマリモニタ(メインディスプレイ)にしましょう。(Unity4.5.2は必須。4.5.5だと不要かもしれない) Dismon http://dualmonitortool.sourceforge.net/dismon.html をデスクトップに置いておくと、切り替えが楽です。
  • そもそも絶望的に75FPSのパフォーマンスが出ない場合は、ディスプレイモードを60Hzにしましょう。多少マシになります。
  • Optimus環境におけるPostPresentの数値目標は50ms程度

Unity5.0beta+OVRSDK0.4.3.1+OculusRuntime0.4.3において、ExtendモードでもPostPresentの値が取得できました。
少なくとも僕の環境(Optimusノート)においてTimeWarp 60ms程度、PostPresent 50ms程度が発生しており、これは要するにDirectモードに比べてExtendモードは3フレームの遅延が起きていることを示します。これはつらい…

Geforceの場合の推奨設定を藤宮ケイさんから教えてもらいました。下記を参考に!

最後に

これからも最新SDKでドンドンとVRパフォーマンスが高まっていくはずなので、ワクワクですね!
最適な設定で良いVR体験を!!

Kinect v2をOculusRiftと組み合わせてデモをする際のノウハウと知見

概要

Kinect v2は現時点で椅子に座った体験者の頭と手の位置を取得するだけなら、安価なセンサ類の中では一番安定していると個人的には思っています。 単純なヘッドトラッキングだけならOculusRiftDK2のカメラがあれば何とかなりますが、他の関節も取得したい場合は、こういったデバイスを併用することになります。

OculusRiftと併用して展示する機会が何度かあったので、その際に分かった事を書きます。

Kinect v2 Unity Integrationは重い

OculusRift DK2は75FPS環境が推奨されていて、Unityで制作したコンテンツを安価なPCで75FPSを出すためには色々なチューニングをしています。
しかしKinect v2 Unity IntegrationのパッケージをUnityに読み込み、関節の位置だけを取得する(つまり、描画負荷はほとんど無い)コンテンツを作って、Kinect 未接続時に75FPSギリギリのシーンに対してKinectを接続すると65FPS程度まで速度が低下しました。 まだ定量的には計測していませんが、特にCPU及びGPUが非力なノートPC環境でのデモを行う場合は、Kinectの分の負荷増加を考慮してパフォーマンスに余裕があるコンテンツを作ることが望ましいと思います。

座りっぱなしの人は検出されにくい

椅子に座って首を回すくらいしか動きが無い体験者を、Kinect v2は人だと検出しにくいです。
そして体験者の背後で覗き込む人や、後ろを通りすぎる他の人をKinectが検出してしまって、ゲーム内のキャラクター位置があらぬ方向に吹っ飛んでしまってアアアッ!!!となります。

これに対しては、ある程度椅子に座った後に動きを要求するか、椅子に座る前に体験する人をトラッキングしていることを確認してからの方が望ましいです。

人検出は万能ではない

椅子に座っている体験者の様子を覗き込む人がいると、二人分の点群が合体して、頭と腕と足がありえないポーズになることがあります。
これはv2のSDKで特に顕著で、v1の時はもうちょっとうまく分離できていたような記憶があります。
こんな時は、「一度Kinectのカメラを手で覆ってから戻す」なんてことをやりがちですが、前述の「座りっぱなしの体験者はKinectで検出されにくい」と言うのと併せてリカバリー不能になる事が多いです。
そんな時は落ち着いて覗き込んでいる人に事情を説明してしゃがんでもらう、離れてもらうなどしてもらいましょう。 進入禁止エリアを物理的にテープを床に貼る、カーテンで区切るなどの対処が許される展示なら、検討する価値があります。

プレビューを使おう

上で挙げたような問題に対処するために、技術者がもし貼り付いていられる展示であれば、別窓でKinectが今誰を検知しているかをプレビューしておくと、便利です。
Kinect SDK browserの中に入っているサンプルの「Body Basic WPF等が低負荷でおすすめです。
(Kinect Studioのpreviewを使うと詳細情報が取得できるんですが、割と重いソフトであること。Kinectのマイク入力を拾って、エコーがかかった外部の音が体験者のヘッドホンに入ってしまう。などの問題点があるので、Body Basicが良いと思います)

また、Kinect v2の人認識は複数ソフトウェアでデータは共有しているので、デモの開始前にこのプレビュー画面を見ながら、体験予定者が検知されていなければ、立ったり座ったり、手を動かしてもらいましょう。Kinectに検知させてから座ってもらい、OculusRiftを被せると、スムーズな体験を提供できると思います。

プログラム上で出来る事

  • 一番距離が近い人を体験者と見なす だけでは大抵失敗する
  • このエリア内にいる中で一番近い人、みたいな区切りをすると比較的安全
  • しかし人検知は万能ではないので、技術者張り付きではない環境では、一定の事故は起きる。遊びなら諦めましょう。お仕事だったら…大変ですね!!

VR環境における簡単な振動ユニットの使い方について

概要

VR環境での視覚、聴覚だけではなく、他の感覚もユーザに呈示すると没入感が高まる事が広く知られています。
たとえばOculusRiftでジェットコースター系のデモをするときに扇風機を使うと怖さが増える等です。
今回僕は乗り物(ロボット)に乗るVRシステムを作成し、その過程で振動ユニットを使いました。体験者からのヒアリングで、結構いい感じだったと言われたので使い方を少し書きます。

振動ユニットとは

太鼓やバスドラム等は生音で聴くと体が振動します。また2.1ch環境のサブウーファーもブルブル震えます。今回話す振動ユニットと言うのは大雑把に言うと可聴音は出ないサブウーファーを椅子などに張り付けて、低音が流れた時に振動させる。と言う物です。

基本原理はスピーカーと同じなので、雑に言うとワット数が高いほどパワーがあります。 今回は上海問屋の振動ユニットを使いましたが、他の類似製品でも基本的には同じです。

【上海問屋】通販サイト | 【お一人様2点まで】 スピーカーでは再現しきれない重低音の臨場感を振動で再現 50Wハイパワー振動ユニット ボディソニック トランスデューサ ホームシアター 上海問屋 DN-82305 [★]

(うーん、実はこの製品、安価でパワーあってイチオシだったのですが、完売してしまいました…OEM元は新しい型を売ってるので、また上海問屋さんで扱ってほしい…)

接続設定

普通は例えば5.1ch環境のサブウーファーに追加して振動ユニットを付けたりする訳ですが、VR環境の為に多少配線を変えます。

  • 体験者はヘッドホンで音を聞く(適切な音量)
  • 振動ユニットは、なるべく大きく振動させる

と言うのが目指すところになります。 適当にPCの根本から分岐させて

1.ヘッドホン側は音量を小さく出来る様に
2.振動ユニット側は音量を大きく出来る様に

しています。以下に雑な配線例を図示します

f:id:izm_11:20141013214856p:plain

展示で使う際のノウハウ

  • 例示したLepai LP-168HAはサブウーファーのカットオフ周波数フィルタが効かないので、人の話し声とかでもブルブル震えてしまう。もっと良い選択肢があるはず。
  • 椅子は座面のクッション性が良いと、振動を吸収してしまう。今回は小学校の椅子と言う、座面が木の板で、直接振動が届くような物を使っています。
  • 背もたれより座面に設置する方が効果が高い。
  • 家でデバッグする時、階下の住人に怒られないようにする。

大事なこと

振動ユニットは、乗り物系コンテンツなら、ポン付けノンコーディングで「没入感を足す」(正確には「ただの椅子に座ってる感覚を打ち消す」)という効果があります。

例えばOculusのジェットコースターデモの風を足す時、「速度に応じた風量の変化がない」「風量が現実より少ない小さな扇風機」であっても、結構効果がありました。つまりこの手の視覚や聴覚以外の感覚は多少いい加減でも結構ちゃんと効果があります(そこから完全再現するまでは、凄く大変ですが)

どんどん変なデバイスとか使って遊んでいきましょう!

HMD用の実写全周囲映像のストーリー仕立てにおける視線誘導等のノウハウ例

概要

先日、OculusRift向けのストーリー仕立ての全周囲映像を体験する機会がありました。

「OS☆U」があなただけに超絶接近!? http://vr-360.net/osu/

f:id:izm_11:20141010003147p:plain

これは多人数アイドルグループが自分に向かって自己紹介というか、お喋りを小芝居をしながら行う、というもので、言うならば映像のバイノーラル録音みたいなものです。 この手の実写360度映像は、少し前だとプロ用機材で3桁万円から、という感じだったのが最近GoProをサイコロ状に6台マウントする( http://freedom360.us/ )、と言う価格破壊ソリューションが登場しました。また、タイミング良くOculusRiftと言う没入感が高く安価なHMDも出たことで、今年に入って結構色々な人が作っています。

例えばバイクや、サーフィンなど、普段一人称視点では中々体験することが無い事を、(首を振ったら対応した絵が出てくる)一人称視点で見ることが出来るのは、想像以上に楽しいものです。具体的には、この記事を書いている時も、「見る」と言う言葉より「体験する」と言う言葉を使いたくなる ような感じです。

そして、この手の360度実写映像コンテンツを作る上では、その機材特性上、注意すべき点が色々あります。 今回僕が体験した「OS☆U」があなただけに超絶接近!?というコンテンツは、相当良く作られていて、実に良かったので感想と言うか技術的な凄い!と言う点を書いておこうと思います。もしこれから体験する方がいたら、若干ネタバレになってしまうかもしれないですが、ご容赦ください。

多人数が登場する実写全周囲コンテンツで、ちゃんと作られてるものは、現時点ではあまり多くないので、非常に楽しい経験でした。

直近では10/11-10/12の豊橋ぽぷかる歩行者天国 ( http://npo-honokuni.jp/popcal/ ) で体験できるようなので、お近くの人は是非!とお勧めします。以下ぐだぐだと感想。

注視点の設計

人間の視野角は、ざっと水平160度くらいです。そのうち、注視点というか注目(脳みそのピントが合う)出来る視野角は広めに見積もって45度くらいしかありません。
このため360度映像を用意しても、常に200度分以上の映像を「見ることが出来ない」と言う問題があります。なので何も考えずにコンテンツを作ってしまうと、体験者が大事なシーンを見逃してしまう事が起こります。
例えばバイクに乗る、サーフィンをする、と言う様なコンテンツでは、普通に作ると進行方向に注目が行くようになっています。
一方でカメラ視点が動かない(つまり、教室の中の定点シーンみたいなもの)場合は、体験者に「出来ればどこを見て欲しいか」のサインを送ってやる必要があります。極端な事を言うと、もし体験者が壁の時計をずっと見ていたら、視界は時計だけ、音だけ話し声が聞こえる、みたいな感じになる訳です。

自己紹介シーンの注視点設計

このコンテンツでは冒頭から1分程度の間は、常に喋っているのは一人(と言うか、一方向)だけになっています。また、一人が話し終わった時に、自然な演技でもって次に喋る人の方を向かせる演出が入っています(例えば、喋り終わったタイミングで次の人の位置を指を指し示す、あるいは喋ってた人を注視していたら、視界の端くらいに見える所で派手なアクションや動きを起こす等)
これによって、初めて見る人にとっては自然な形で「右見て、正面見て、左見て」のような、首振りを伴う全周囲映像体験の醍醐味を最初の一分で教えることが出来ています。
ストーリー上の話をすると、多数のアイドルに「振り回されている感じ」を受けました。なかなか普段体験できることではないので、印象に残ります。

撮影場所

また、撮影場所の妙味もあります。部屋の隅で撮影すると、例えば部屋の隅の近くにある四角い窓枠などに全周囲映像の広角歪みが顕在化するため違和感が起きます。
なので部屋の隅からは離れた場所にカメラが置かれています。また、真後ろ90度分はちょっとしたお立ち台と言うかステージになっていて、映像が始まった瞬間に「ああ、この後ろはクライマックスとか大切な場面で使う為のステージだな」「ということは、しばらくはこの真後ろで何かが起きてて見逃す心配はないので、残り270度分を気にしていれば良いな」と舞台装置から理解できます。
全周囲映像を一回限りで見る時に一番体験者が気にするのが「大切な場面の見落とし」なので、その危険性が少ない事をさりげなく呈示する、良い撮影場所でした。

スティッチング位置周辺を避けた立ち位置

GoPro等の広角カメラは、カメラの中央は解像感が高いのですが、周辺部は荒い絵になってしまいます。また、周辺部は隣のカメラの絵との繋ぎあわせを行うので、繋ぎ目付近が変な絵になってしまう危険性も有ります。 カメラ自体が動き回る場合は、こういった問題は諦めてしまうか、複数テイクを取って良いところだけをうまく使うしかないですが、今回は定点カメラなので、アイドルの人が立つ場所はこういったカメラの繋ぎ目を避けているようでした。これは事前に立ち入り禁止場所をうまく説明していたのだろうと予想します。
この、カメラの繋ぎ目を避けた立ち位置には副次的な効果もあって、全周囲映像なので見たい方向にちゃんと首を振って見る、と言う動作を行わせる為にも効果を発揮しています。
このあたりを狙ってやっているのだとすれば、コンテ書いたり現場で指揮を取った人は、相当に分かっている人です。

後半の注視点設計

前半のシーンは注視点が一本道になるように設計されていましたが、後半は自分を取り囲むような感じでOSUの人が配置されるシーンがありました。 これは、誰に注目するか(推しメン)と言うのを体験者が「選ぶ」みたいな感じになるので、一本道の動画コンテンツにも関わらず、インタラクションを感じられるような仕組み。
残念ながら僕は推しに相当する人はいなかったので、グルグル見回していました。
コンテンツとして「アイドルに振り回される→アイドルを主体的に選ぶ」みたいな感じで前半と後半の構成が対になっていることにも注目です。 技術的には自然な形で「全周囲映像のチュートリアル→実践」になっている事が印象に残っています。

嗅覚

オペレータの方が適切な香り(いいにおいだった!!!)の香水を含ませたハンカチを手動で動かして、嗅覚呈示を行っていました。原始的な方法ですが、嗅覚は何もないのと、少しでもそれっぽい匂いがするのは全然没入感が違うので、うまい方法だなあと思います。 シーン転換が頻繁にあると、呈示する匂いのリフレッシュ(一度無臭にして、別の匂いを呈示するの、結構大変なシステム)などが問題になるのですが、今回のコンテンツは場面転換が無いこともあって、導入しやすそうでした。

その他

  • GoPro6台のスティッチング、自動だけだと辛い場所出てくるので場合によっては手動で修正してるようです。
  • 再生するPC、かなり再生負荷が高そうです。
  • ステレオ視ではないですが、意外と立体感を感じます。
  • 登場人物が一人のようですが、こちらのKAYACさんの同種の取り組みも気になります

渋谷でオキュラスを使って女子高生とデートする時のコツとは?【INTERVIEW】|ニュース|面白法人カヤック

クレジットとか

株式会社ジャミン( @_horinouchi )
http://vr-360.net/osu/
関係者の方々、ありがとうございました!

Unity本いっぱい出てるので、お勧め本を難易度別に並べてみる

世の中にUnity情報が山ほどあって、素晴らしいです。
分からない事があっても、ググるだけでピンポイントなブログの記事やstack overflowが出てきたりします。素晴らしい。
ただ、技術に対する体系だった学習に技術書を読むのは、とても良いと思うので、読んだことある本を難しさ順に並べてみます。
ここに出ていない本は読んでいないか、読んでオススメしかねる本だったので、お勧め本があれば教えてください。

2016年版を書きました izm-11.hatenablog.com

Unityって何?レベル

まずは本を買うより先にドットインストールのUnity講座を見ましょう。
お金を払って本を買うのはその後で良いのです。

http://dotinstall.com/lessons/basic_unity

個人的には、最初から本を買って「お金払ったんだし、やるか…」と言う気持ちにするメソッドを良く使うのですが、Unityの場合GUIの操作が結構色々あるので、取っ付きの意味でも、動画形式はお勧めです。
余談ですが、ドットインストールと後述のひよこ本育ちのUnity使いはUnityのレイアウトがデフォルトが多くて、うさぎのバンナム本育ちのUnity使いは2by3レイアウトが多い印象あります。

ここに無料と有料の壁

とりあえず何かゲーム作ってみようかなレベル

Unity4入門 最新開発環境による簡単3Dゲーム制作

Unity4入門 最新開発環境による簡単3Dゲーム制作

一冊目として大人気なのがひよこ本。これは、プログラミング自体が初めて、みたいな人にも勧めやすいです。
ただ、ひよこ本はスクリプトがUnityScriptで書かれているので、プログラミングしたことがある、と言う方はC#で書かれた別の初心者向けの本を読むのも良いと思います。(この条件に当てはまる本をご存知の方、教えてください!→良い本があったので追記)

見てわかるUnityゲーム制作超入門

これもちゃんと書かれている本なので、ひよこ本と同じくらいオススメなんですが、残念ながらこれもUnityScript…
プログラム、(何の言語でも良いので)勉強したことはあるよ。と言う場合は、ひよこ本よりこちらの方が良いような気はします。

自分はプログラマ気質だ、と言う人向け

見てわかるUnity4 C#超入門

UnityScriptではなく、C#から始める入門向けオススメ本です。
言語の違いを気にするタイプのプログラマ気質の人に刺さると思います。まずインストールの解説の後、キューブや地形やライトの設置より前に C# とは何か、mono develop 操作、足し算引き算の表示、GameObjectとComponentのUnityというシステムの解説などがあって、中々面白い切り口。
最終的な成果物のレベルはひよこ本等と同じですが、「何か訳分からないけど書いて有る通りマウスをポチポチ操作したら出来た!」みたいなのが気持ち悪いプログラマ畑の人にとって、非常に良い参考書になりそうです。

ここにC#とUnityScriptの壁

で、もうちょっとちゃんとしたゲームを一個作ってみたい

ここは選択肢が多いです。ちゃんと複数のアニメーションを遷移する人型の自キャラがいて、敵が居て、3Dで…みたいなアレです。
ここまでは「ああ、Unityね、ちょっと触ったことあるよ」と言う感じで、ここから先は「ゲーム作ったことあるよ」と言う感じでしょうか。
ここからはC#で書かれた本が多く出ているので、UnityScript育ちの人も、このタイミングでC#を覚える事が多いイメージ。
この段階で、本を辿って一本のゲームを完成させるぞ、と言うタイプの本を読むのが、早期習得に便利です。
本屋さんに行って、自分の興味ある分野のゲームを一本作るUnity本を探して買って、頑張って読む。がオススメですが、一応僕のオススメを書きます。

一昔前なら、バンナム本の

Unityではじめるゲームづくり

Unityではじめるゲームづくり (DVD付) (ゲープロシリーズ)

Unityではじめるゲームづくり (DVD付) (ゲープロシリーズ)

が一押しでした。コラムの品質の高さもあって、同時期に出たUnity本より頭一つ抜けていると思います。

ただ、いかんせん少し出版時期が古い(mecanim非対応、そしてこれもUnityScript…)ので、

Unityで作るスマートフォン3Dゲーム開発講座

Unityで作るスマートフォン3Dゲーム開発講座 Unity4対応 (Smart Game Developer)

Unityで作るスマートフォン3Dゲーム開発講座 Unity4対応 (Smart Game Developer)

がお勧めかもしれません。 この本はタイトルにスマフォと銘打っていますが、別にスマホ向けに限らずとも読める、丁寧に手順が書かれている真面目な本です。

少々難易度が上がりますが、

モンハンみたいなゲーム作ってみたい

みたいな人には

Unityゲーム開発 オンライン3Dアクションゲームの作り方

Unityゲーム開発 オンライン3Dアクションゲームの作り方

Unityゲーム開発 オンライン3Dアクションゲームの作り方

がネットワーク対戦も、アセットや有料サービスを使わずに、Unity自前で構築する手段が書かれていて好感が持てます。濃度としてはバンナムうさぎ本の1.5倍速で話が進んで、最後の1/3がネットワーク対応と、2Dゲームの付録と言った感じです。
(p294のタイトル「Unityの"オーティオ"機能を学ぼう」と言う誤字には脱力しますが…でも良い本です!)

ネットやスマフォとかじゃなくて、ゲームの作り方自体をだな…

という人には、最近出た

ゲーム作りのはじめかた Unityで覚える企画からレベルデザインまで

ゲーム作りのはじめかた Unityで覚える企画からレベルデザインまで

ゲーム作りのはじめかた Unityで覚える企画からレベルデザインまで

が、チャラい見た目とは裏腹に、ゲーム制作特有の、「面白さを作る」事に対して類書の中で白眉であると思います。

ここから、個別tipsや、中級向け

あのゲームでやってたあの処理ってUnityではどうやるの?

と言う感じのノウハウ集がそろそろ必要になってきます。いわゆるオライリーのhogehogeクックブックです。

技術サイド

技術特化では、
Unity実践技術大全

Unity実践技術大全 (GAME DEVELOPER BOOKS)

Unity実践技術大全 (GAME DEVELOPER BOOKS)

がお勧めです。何が素晴らしいかと言うと、Tips集的にも十分な品質ですが、日本語で無料アセットを実際使った解説が山ほど(100ページ以上)乗っていて、大急ぎでプロトをでっち上げるときに、この本が手元にあると数時間浮きます。紙の本をペラペラめくるの、Unityのアセットストア検索より大分速いです!
これだけで元が取れます。(まあ、本音を言うとお試しで買いにくい有料アセットの紹介も同じくらいして欲しいところではあります。)

プランナーサイド

対して、こちらはプランナーサイドからの本。
ミニゲームをペライチの企画書から、ゲーム開発している人がどう考えてゲームにして、コードに落とし込むか、と言う思考を追体験出来るのが

ゲームの作り方 Unityで覚える遊びのアルゴリズム

ゲームの作り方 Unityで覚える遊びのアルゴリズム

ゲームの作り方 Unityで覚える遊びのアルゴリズム

です。将棋とか囲碁で言う所の、定石集じゃなくて、「プロ棋士が書いた自戦記」みたいなものです。このゲーム開発者の思考を追う事は、blogとかでは中々出てこない話です。
「Unityを勉強したい」ではなく「自分でゲームを作りたい」人には、強くお勧めします。細部まで一度読み通すと、Tips集的にも、もちろん使えます。

上級向け

最早ここからは、個別に必要な事を調べたり書いたり、と言うのが多くなるので、本ではあまり出てこないです。
とは言え、この段階の一歩手前まで、ステップごとの技術書が「日本語で」揃う、と言うのは、凄い状態です。Unity人気ですねえ…

番外編(ゲームエンジンはチャラいからちょっと…)

C++を学びましょう。 そして以下の順に読んで、完全に理解したなら、Unityが滅んだ後の世界でも、ご飯が食べられそうです。

(すごく易しい) ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

(本物のC++ゲームプログラミング、大変惜しいが絶版) ゲームコーディング・コンプリート 一流になるためのゲームプログラミング

ゲームコーディング・コンプリート 一流になるためのゲームプログラミング (Professional game programming)

ゲームコーディング・コンプリート 一流になるためのゲームプログラミング (Professional game programming)

もう一冊、蛇足ではありますが、
実例で学ぶゲーム3D数学

実例で学ぶゲーム3D数学

実例で学ぶゲーム3D数学

を、お勧めしたいです。高校で習うベクトル、行列演算、大学で習う線形代数が、最高効率のプログラム言語で実装されていく過程を読んで試すと、血肉となって生きます。

この3冊は、僕の人生の方向付けを変えた技術書なので、余談ですが紹介でした。