第3回 UnityのためのCGとか勉強会に行ってきました

第3回 UnityのためのCGとか勉強会 : ATNDに行ってきました。12月に初心者向けのUnity勉強会に行ってきました - kanonjiの日記でUnity入門したけど、その後なんだかんだと忙しくて、全然Unity出来てなかったので、もうちょっと準備して行きたかったな。

感想

基本的にもくもく会的に、それぞれが自分の学習や作業をする感じだったけど、割とテンポよく学習出来ました。近くに座っていた方にちょっと教えてもらったり出来たので助かりました。紙コップタイプの自販機があって、眠くなったらコーヒー飲めるのが良かった。しかも好みの酸味のないタイプ。

スクリプト

まだスクリプトを書いた事が無かったので、まずは簡単なスクリプトを書いてみました。https://docs.google.com/viewer?url=http%3A%2F%2Fgp-portal.jp%2Fmaterial%2FrefMaterial%2F2255_Unity_document01.pdfの28ページからを参考にしました。

SendMessage('fooMethod');

スクリプト中からファンクションを呼び出すにはSendMessage("ファンクション名")と記述します

という記述があったけど、JavaScriptな訳だし普通にsomeFunction();で呼び出しできました。
読ましてもらった本によると、SendMessage()は複数のGameObjectに実装された関数*1を呼び出せるらしいです。プレーヤーが倒された時の処理が複数のGameObjectに実装されている場合の為だとか。Facadeパターンなのかな?

有限状態機械

http://www5f.biglobe.ne.jp/~kenmo/program/ai/fsm/fsm.html
ゲームのスクリプトを書く為に、有限状態機械*2の考え方が必要だとか。検索して調べてみると、どうやら有限状態機械って、ただ変数に状態入れて、それをif文とかswitch文とかで分岐して処理を書くだけの事だったらしい。すごそうな名前にだまされた感があります。

あと、コルーチンの考え方とかも必要っぽい。最近Pythonのyieldについてのとこでも見かけた単語だけど、やっぱりyieldが出てきた。ただ、Pythonのはコルーチンに似ているって説明だったから、微妙に違うのかな。コルーチンに関してはあまりあれこれ手を広げると混乱しそうなので、そのうち調べたい。

スクリプト書いたもの

http://dl.dropbox.com/u/254750/20120107_try01_first/20120107_try01_first.html

空のGameObjectをスポーンポイントとして、1秒おきに球を生成するだけです。もうちょっと意味のありそうな動きにすれば良かったかもだけど、なんか飛び跳ねるのが面白かったのでそのまま。

Blender

一応、勉強会はUnityじゃなくってUnityで使う為のCGの勉強会なので、スクリプトは早々に切り上げてBlenderを使ってみました。

FBXのエクスポートとUnityへのインポート

折角なのでBlenderのモデルをUnityで使うという事を試してみます。どうやらFBXという形式でエクスポートするのがいいらしいんですが、割とすんなりはいかないっぽい。
まず、Blender 2.5 alpha0がインストール済みだったので、それを使ってみたらFBXエクスポートがどうも動かない。操作は出来るけど、エクスポート先に何もデータが生成されない。なんか当日blender.orgが落ちてて困ったけど、GoogleキャッシュからミラーのURLを拾ってBlender 2.61を入れました。

http://forum.unity3d.com/threads/52870-Blender-FBX-animation-questions-for-Unity.

どうも、Blenderでアニメーションまで作って、それをFBXでエクスポートしてUnityに読み込ませると、アニメーションがうまくインポート出来ないといったトラブルが多いらしい。その中で、書いてあったのが.blendファイルを直接Unityで読み込むと良いとか。とりあえずFBXでうまくいったので試さなかったけど、今後ハマるかもしれないのでメモ。

Autodesk FBX Converter

http://usa.autodesk.com/adsk/servlet/pc/item?id=10775855&siteID=123112

ちゃんとしたFBXがエクスポート出来てるかを確認するには、Autodesk FBX Converterで開いてみるのがいいらしい。FBXがAutodeskからのデータ形式らしいので、Autodeskのツールで確認するのが確実です。

BlenderからUnityにインポートしたもの

http://dl.dropbox.com/u/254750/20120107_try01_second/20120107_try01_second.html

一応Blenderで歩くアニメーションを設定して、それをFBXでエクスポート。Unityにインポートしたものです。歩くといっても、かなりお粗末なアニメーションですが。

モデルは、アノマロかりんとうさんのを使わせてもらいました。ありがとうございます。どうもテクスチャーの一部が反映されてなかったりと、うまくいかなかった部分もあるっぽいけど、とりあえずUnityにインポートしてビルドする練習するには問題なしということで。

次回

次はまた1ヶ月後くらいにやりたいと言っていたので、また参加したいです。

*1:というかメソッド?

*2:オートマトン