2015年8月29日土曜日

Drone Space Defenseゲーム開発

Drone Space Defense開発チームがシリコンバレーでのDrone Space Defenseデモ後解散したので今後からは僕がゲーム開発に携わっていきます!
Drone Space Defenese プロトタイプ
ドローンのリアルタイム3Dマッピング

パソコンからのA.R. Drone PS3テレオペレーション
Drone Space Defenseでは今までDrone Space Defenseのプロトタイプ(ゲーム)の開発、ドローンの画像追跡、リアルタイム3Dマッピング、nodejsを使ったwebsocketサーバーの実装、ドローンをPS3で操作できるようにしたり、クラウド構築、ドローンシミュレータの設定をしていました!
 
ゲーム製作を本格的に始めてそろそろ12日目です!  
現在Unityというゲームエンジンで開発を進めています。





Unityボールゲームチュートリアル
Unityサバイバルゲームチュートリアル
Unityサバイバルゲームをブラウザにビルド

5日間はunityのチュートリアルのビデオ2本、ネットのC#で書くUnity入門とC#の並列プログラミング、非同期プログラミング技法の学習をしていました。


6日目はOculus Rift DK2がWindows10で認識されないためwindows8.1のダウングレードを行っていました。

画像処理を使った拡張現実のアセット


C#のOpenCvSharpで画像処理
Virtual Realityとwebカメラと地形データの統合
Drone Space Defense Oculus Rift バージョンのモックアップ
7日目にVRゲーム開発に取り組みました!12時間でunityのアセット調査、C#/Unityでの画像処理の調査・実験、12時間でDrone Space Defense Oculus対応のモックを完成させました。


Unreal Engine Oculus祭りで最新モックとプロトタイプの展示

8日目の午後はG-tune&AMD OcuFes2015夏に参加して他の開発者のVRアプリを楽しみ、夜はUnreal Engine主催のOculus祭り2015でDrone Space DefenseのOculus対応モックとDrone Space Defenseプロトタイプ2Dモニターバージョンの展示を行いました!
leap motion届く。



ゲームセット


VR Planetarium


9日目にはLeap Motionが届きました!Leap Motionは手をコンピュータの世界にもっていくことのできるVirtual Realityのデバイスです。Leap Motion + Oculus Riftのアプリケーションを色々動かしてみました。Leap Motionで広がるDrone Space Defenseの可能性を感じました。

UnityちゃんとJapanese Otaku CityとVR

10-12日目はUnreal Engine Oculus 祭り2015で指摘されたOculus酔いを解消しようとUnityとVRの最適化に取り組みました。Oculus酔いを解消するにはFPSの早さが関係するそうです。今回のモックはオブジェクトが3,4個くらいしかなかったので簡単な最適化を行ったところ75FPS以上出て問題解決なのですが、一般的なVRの最適化技術を習得しようとポリゴン数が多いUnityちゃん、Pocket QueryちゃんとJapanese Otaku City Assetを使ったものでVRのFPSを上げることに取り組みました。Oculus Riftの推奨FPSは75FPSで酔いを軽減するために必要です。
1. ビルドの最適化オプションをすべて適用したら、20FPS前後出た。
2. 光、空の焼きこみ、static/dynamic batching, forward light renderingを適用したがFPSが変わっていない。
Japanese Otaku CityのOcculusion Culling
3. Japanese Otaku City AssetのOcculusion Cullingをしたが重すぎてRAMメモリエラーになったので別のAssetに変更。
4. Occulusion Cullingをしたが、FPSに変化なし。
5.UnityのTarget.FrameRateを75にしたが、変化なし。
Profilerで解析
6. Unity ProfilerとUnity Frame Debuggerで解析を行ったところ、drawcall数が1000以上でshadow renderに最も時間とdrawcallが使われていることが判明(800 drawcallくらい)

7. Lightingのauto設定をすべて解除しすべてマニュアルでlightmapをビルドしたところ、drawcallが500-600減少。

bakeしたunityちゃんとpocket queryちゃん
8. 次の最大のオーバーヘッドはキャラクターのskin mesh rendering. (drawcall が400) mesh bakerを使いすべてのオブジェクト群のskin mesh renderingのdrawcallを10以下に。
快適FPS.

9. CPUは余裕の75FPS越え。GPUも50FPSくらい出るように。現在最大のオーバーヘッドがopaque.forward rendering(10ms)でOculus酔いの問題はOculus DK2の画面のブレだけに。これはOculus Tracking Cameraをつけるとブレが解消できる。 syncの時間はprofilerを閉じるとなくなるので実際は問題ない。
なぜかDraw Callが900.

10.Japanese Otaku City Assetに変更しJapanese Otaku City bake後Occulusion Cullingに成功。すべてのオブジェクトをbakeしたがなぜかDraw Callが900もある。原因はJapanese Otaku Cityのポリゴン数が多くDynamic Batchingをしてしまったため。これを解決するにはCuda Coreのより多いGPUかpolygon数の減少が必要。polygon数を減少させるには外部の3Dモデリングソフトを使用する必要がある。コンピュータグラフィクスを勉強中。
unity in android

AndroidのUnityプロジェクトにも現在挑戦中です!



0 件のコメント: