Drone Space Defense開発チームがシリコンバレーでのDrone Space Defenseデモ後解散したので今後からは僕がゲーム開発に携わっていきます!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA5inK48CKXkXy7-hwU-skpSnQeu5k9v7V-09cTMPsGp_iVbJDFhQZRqMOFyTk-dV77HJJf35k8gJV-rhGW9tSi0Eqa0RSeay0aahRTJy10PWf74OT1VV-oBUsTru5AbTsBzjAUT8zcGwI/s320/dsd-2d.jpg) |
Drone Space Defenese プロトタイプ |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9X_A9-k-SiAPaP-FED2HElcwAOixFvNJo6y_LcMTGBqepUuNj9lXHlZ4hw69lm54oBqL7Tsl2nJRyVFCIPQrkeRZBDaKKlIHNdAYz-EncV4nVhS8uzVY8_JUtQUUu8si3GPhRByYY9nUb/s320/realtime-3d-mapping.jpg) |
ドローンのリアルタイム3Dマッピング |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQdadM7GMIyCREV9QTcwV01BRKt7_Gke6Pylwp7cNPSp2qIxsVXLAe_UkRtpH4b5TnjeYag2DR1qfoxA6kSkha56-r_fPLm7-34YIIszXEj9zg0xzuqJl_r4rrze75gV66d09hl7GEm3St/s320/drone-ps3-teleop.jpg) |
パソコンからのA.R. Drone PS3テレオペレーション |
Drone Space Defenseでは今までDrone Space Defenseのプロトタイプ(ゲーム)の開発、ドローンの画像追跡、リアルタイム3Dマッピング、nodejsを使ったwebsocketサーバーの実装、ドローンをPS3で操作できるようにしたり、クラウド構築、ドローンシミュレータの設定をしていました!
ゲーム製作を本格的に始めてそろそろ12日目です!
現在Unityというゲームエンジンで開発を進めています。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQlo4lJA0nsbShUmVMYXGqauV0XGOWMGjU1klSeKPaLRcKEGmqPqxU6eIyiCc-xY3VQnvpq5VqMZy4ycs9AD6HUmkvesKXR4HSc6PGYZWbL5-q5ddrwpRY50ohT_FqAvfZnp7ZLyVKD43W/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252822%2529.png) |
Unityボールゲームチュートリアル |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhirYUtEbNQgBm5VHeglrY8Vhh8Wq3GUAz7ihB47T-2IK5VFxA0_H_ArKyGaiHuNIsFw-ocwFhgNtzZptfEI5sm-MGHsmo8hQ6zNxVxrASen_zU6bQfMqjM6jq-E6h5-Q6fzHHcG8rOWfen/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252832%2529.png) |
Unityサバイバルゲームチュートリアル |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQVQy4CNVsCGw5_OP-JdTSj1V8csAtD77rSB4YFIHVn08OEjcWrG9h10OC5YDPW3_Eqc3a2Gq3qSxVUacKWBDqix7JQTLGUEL9ae3GWncV7z1S1hsVcYrETNRMCG-n9SYSn_NKjsZwKsAQ/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252834%2529.png) |
Unityサバイバルゲームをブラウザにビルド |
5日間はunityのチュートリアルのビデオ2本、ネットのC#で書くUnity入門とC#の並列プログラミング、非同期プログラミング技法の学習をしていました。
6日目はOculus Rift DK2がWindows10で認識されないためwindows8.1のダウングレードを行っていました。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg73IJp56qFV4mE10yyn7P8t06YnW3poiw1aMBsLkKpOdEbqmeq34V_Ui3L1YAWt0dKGK0IQQwguiI24uJ5a7Lo3Faqq94FedgKIRhNv0xCmPRNtObPsLXgLKR3mFpOLXGJpbUByR3pavMz/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252846%2529.png) |
画像処理を使った拡張現実のアセット |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6DNovGUSWOlgDWRb8fY410maRoTuPh42IpomlbmiL_jA65D0HN_JRpS4s4RRb9akKRsS32C6NJTFFjgxC0c1KirtkmfeQ3H0e3ZRFKszx3jfjfN1nN-ijgYrhXB_LJ0SR-tPUgpHfFOUy/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252848%2529.png) |
C#のOpenCvSharpで画像処理 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQYUOwUOZtkXF0DUIut7CmiCSGC6aTTfxReQfUclMmSC_53eBJHKtvPzMdl6mj1IcBH9JZeaVso_jfp8IELrY2SViTmZs7SnHEP8lf06WIiUsFW9LfPcV1roLlNj9OLZ0Yo6c3PTaZqIJz/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252853%2529.png) |
Virtual Realityとwebカメラと地形データの統合 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGbkO9jUMlqgzxzT_7HU-JaZG08O1TZWYSYqO1hsEKTWgLvQMKAL5NtlYCU4qyNDcgE2yJqa6eTRP6bdv8OA-9dPFyK17I6rDG5hmQeLDc0-Vn1cP0eIo3P0dr_y26siFtPCMCmUzwrWq_/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252865%2529.png) |
Drone Space Defense Oculus Rift バージョンのモックアップ |
7日目にVRゲーム開発に取り組みました!12時間でunityのアセット調査、C#/Unityでの画像処理の調査・実験、12時間でDrone Space Defense Oculus対応のモックを完成させました。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifEaC9lqfTGd1CE-9-qWCe75aqGc7-iwXvwi0uJad3c9OZgVVFk7QSz1b3G4TZGwXRUSD2zFX9AJgcagYvO_88bwPBs76waaAaqXwNLkbEPhKyF_bMDYfAIc8-cyHD5sR_dUL3-IBGmipH/s320/dsd-new.jpg) |
Unreal Engine Oculus祭りで最新モックとプロトタイプの展示 |
8日目の午後はG-tune&AMD OcuFes2015夏に参加して他の開発者のVRアプリを楽しみ、夜はUnreal Engine主催のOculus祭り2015でDrone Space DefenseのOculus対応モックとDrone Space Defenseプロトタイプ2Dモニターバージョンの展示を行いました!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1Cnhiww_pq6nqzFrmBIyJ9j1cnQqx1oPHRvOG7GPlMT6vjITqArv5CRdG7TX7ZglIJxhq7ZocoWhH1spT_hkwOUXb_4qtqtXpHMFYT6pVYoGIUlc3MAOYI3entv53gWE2Ji0WWWfGcgU_/s320/leap_motion.jpg) |
leap motion届く。 |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi44v-PIFqAEHC1Gi30qnLbacLsbStPW86QsCb20o4RPNLTUVZvBKNA2pCslk-AgqUMqZLr6afOG7ZP2Ld0suV2wlboaF7WnMp4Ft9qtUKbvzqmJcIUR0il1QkyIHEvDYjTsQIK7qqv6PrW/s320/leap_motion_set.jpg) |
ゲームセット |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzR4mG6bteHz30WQB8pWSNKqsno51XQ3Y7IUbOs2lMaNmTS8hxu4rKfMG_WwP1ngcpTV85pQG3S6dv3LJZN0-mHPfASEZcA0wThEoLy88L1ptxpL9ry90kRpIfIBkDvDtjuH1ViwV49OpP/s320/leap_motion_planetarium.png) |
VR Planetarium |
9日目にはLeap Motionが届きました!Leap Motionは手をコンピュータの世界にもっていくことのできるVirtual Realityのデバイスです。Leap Motion + Oculus Riftのアプリケーションを色々動かしてみました。Leap Motionで広がるDrone Space Defenseの可能性を感じました。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHv0ySOtF-toBwkALON3Zahf4SLTyH38idEvcJtgqLH2wk8ObkQSghxMOEqLF18gVG6WVN05_G5-7TcwOHZ3ZXBnBIEdQjk04WzthURACBDkcLBzyX4zqiWPvg9_-htbyx5qWnv_uUQuQS/s320/unity_chan_and_ZENRIN.png) |
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が変わっていない。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFUxG3Jgp6DX8gffDjSgrxbPLMSEiu2mFY0UNoplw-pQdPeexBoj_ZMuW-54UVC439coZHMgElE7Pdg_zUMvWblm6ty5bzC9J2bJwRBXdoTC1aDvbVnka30GxrlpC09HAiWtJgheTylKMG/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252891%2529.png) |
Japanese Otaku CityのOcculusion Culling |
3. Japanese Otaku City AssetのOcculusion Cullingをしたが重すぎてRAMメモリエラーになったので別のAssetに変更。
4. Occulusion Cullingをしたが、FPSに変化なし。
5.UnityのTarget.FrameRateを75にしたが、変化なし。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzkKN0ccc7ATgrHZ1ue0_skIf1Pj__Wca3bGo6x8HxQYRKmbVLV8jm1JsfubNJabVv95FV0-ONcKSiTBwUfACUbZa0W_s752h0IsnvcfKaRkiSok6XD0z8TiXnZ2QqmG1uyx2nZnefMu7u/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%252897%2529.png) |
Profilerで解析 |
6. Unity ProfilerとUnity Frame Debuggerで解析を行ったところ、drawcall数が1000以上でshadow renderに最も時間とdrawcallが使われていることが判明(800 drawcallくらい)
7. Lightingのauto設定をすべて解除しすべてマニュアルでlightmapをビルドしたところ、drawcallが500-600減少。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkF3IIzAytMYEEHIMygjdwVDgJ3h7opDJWa8qf0oKKw3BWHPYtDGVetEs_ewNzTWd6-3TARXJEEF8t-WWaIvc8Ee7UCB5MXrA-kfbSUieKK03IuE5BGG2Vo-TDLXPoMEdzhrTaZSj5YnHA/s320/unity_baked.png) |
bakeしたunityちゃんとpocket queryちゃん |
8. 次の最大のオーバーヘッドはキャラクターのskin mesh rendering. (drawcall が400) mesh bakerを使いすべてのオブジェクト群のskin mesh renderingのdrawcallを10以下に。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic9x2xVbQw1mi8us35asaLX5jqg9iUBdM40v58GNuogTIqB-ZWbhnJdvtQ17AzjGj5-Y8SEx1J3BZDjH-Nt9ppVHvg5sk8IFM4qWld02MxC3NQcKxU67Tnav2ZLY3hsbVuBFX6JhAMfpCZ/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%2528113%2529.png) |
快適FPS. |
9. CPUは余裕の75FPS越え。GPUも50FPSくらい出るように。現在最大のオーバーヘッドがopaque.forward rendering(10ms)でOculus酔いの問題はOculus DK2の画面のブレだけに。これはOculus Tracking Cameraをつけるとブレが解消できる。 syncの時間はprofilerを閉じるとなくなるので実際は問題ない。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9Yo3kgWcK3uD3PtWgJiKicoEUctHubfhhawEWYasEs2kajS_wPv8FccxgD-Gnt0SfVLJgvniKdIvQCVYGP_i83y7QyXzhcUFhwIgdhcaZTn0cR_WCRd0FoXghcxYVskzQMUg5pU4-s_yi/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+%2528119%2529.png) |
なぜか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モデリングソフトを使用する必要がある。コンピュータグラフィクスを勉強中。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHdlR6AGoHeu_yeA8ejdyCXQfpt7Tm0YZmBNRt_aFpNh88uAUYc8nse0hJofmy7Hg7Y-LEd6N4QnodszWJKyKuGSUSrU-kmvZz3W52bUgjqqV8P7Dy4W8f08lUxaCBrgUd_oe8oiqZrQ3w/s320/unity_android.jpg) |
unity in android |
AndroidのUnityプロジェクトにも現在挑戦中です!