しお茶工場

ゲームと生きもの、と抹茶が好き。主にUnityについて。お絵描きやモデリングもします。

Unityのアニメーションファイル読み込みについて

今回はMayaからUnityにアニメーションデータを送ろうと思います。

なのですが、いまいちそのフロー(何のデータがなにがどうなってUnityで使えるようになるのか)がわからなかったので、リファレンスを読みながら理解していこうと思います。

 

参考にしたサイトは以下になります。

Maya からオブジェクトをインポート - Unityマニュアル

外部ソースのアニメーション - Unityマニュアル

[Unity] Mayaからアニメーション付きでFBXファイルをエクスポートするときにコンストレインが壊れる: ものづくりログ

 

アニメーションファイル読み込みの際のキーポイントはこちら。

  1. .mbファイル、または.maファイルをAssetフォルダに置くだけで読み込んでくれる。
  2. 読み込めるデータは6種類
    1 位置・回転・スケールのあるすべてのノード
    2 頂点色メッシュ・法線・UVセット(2つまで)
    3 テクスチャ・マテリアル
    4 アニメーション FK & IK
    5 ボーンベースアニメーション
    6 ブレンドシェイプ
  3. ブレンドシェイプの書き出しには設定が必要(後術)
  4. インポートにはMayaのインストール、あるいはFBX エクスポートによる.fbxファイルへの変更が必要
  5. Mayaファイルのインポートの時、バックグラウンドでMayaが動いている
  6. シーンをシンプルに SceneにはUnityで必要なオブジェクトだけを配置して書き出し
  7. ポリゴンのみ使える(パッチ、NURBSなどは変換が必要)
  8. ノードが煩雑になってうまく読み込めない場合はMayaでヒストリを削除
  9. アニメーションを正しくベイクするためには少なくとも1つのキーを設定

なるほどなるほど。Mayaでのコンストレインが使えなかったり、ヒストリが影響して上手くうごかなかったりするわけですね。

 

Unityのチュートリアルゲームからプログラムの上手い書き方を学ぶ

どうもこんにちは。前回の投稿から2週間ぶりで済みました。

下書きから手を付けずにいたら前回の投稿から100日以上経ってました、ひえ〜…。 

---

今回は、Unityでゲームプログラムを書く時の方針についてまとめようと思います。

 

最近、自主制作でゲームのプログラミングを書いているのですが、

最初の方はいいんです。

「とりあえずこの物体置いておこう」「こいつにこの挙動付けたいからスクリプト貼り付けて機能付けよう」「動いたやん」「やったぜ」

という具合です。

 

しかし、内容が複雑化してくるとそうはいきません。

「こいつの動きを付けるためにあっちのオグジェクトの値を取ってきて…またGetComponentか…」「まとめて消したいけど位置がバラバラ過ぎて検索できん」

などと悩むことになり、頭がこんがらがってオーバーヒートします。

 

はてに、コードを書く気力がなくなってしまいます。(私はさっき今まで書いていたコードが読みづらすぎてキレて全部コメントアウトしました。)

 

このままではコードの進捗どころか、ゲームの完成も危ういです。ピンチ!

 

そんな状況を打破するため、プログラミングコーディングやデザインパターンの本を読んでみたのですが…

内容が抽象的でコーディングの経験が浅いマンにとってはイメージすることが難しく感じました。(経験がある人だと「ああ、あの時ああすればよかったのか!」となるのですが、経験ないと「あの時」が思い浮かばないのですよね…。)

 

ということで、良い例をお手本にすることにしました。

 

良い例ってどこにあるんだ??

Unityはゲーム制作に使っている人も多いし、アセットストアには色んなゲームがあるので候補は数多くあるのですが、

今回はUnityの公式提供Asset「Tanks! Tutorial https://www.assetstore.unity3d.com/jp/#!/content/46209

を参考にすることにしました。

(実はこのAssetは某ゲーム会社に1dayインターンに行ったときにも用いられていたゲームです。)

ゲームエンジンを作っているからには、ゲームも相当作っている人がいるはずですよね。そういう意味でも、参考になる知見を得られると思い、チョイスしてみました。

 

前置きが長くなりましたが、ここから、コードを読んでみて「上手い!」「天才か」と思った点を挙げていきたいと思います。

 

ちなみにゲームの概要としては、

2Pプレイで戦車(Tank)が2台あり、移動して弾を発射して相手のHPを削って倒し、決められた回数先取した方が勝利です。

 

まず、スクリプトの数

スクリプトの数が多すぎても少なすぎても複雑になります。

Tanks!で使われていたスクリプトのそれの概要は以下の通りでした。

 

カメラ系

  • CameraControl

マネージャー系

  • GameManager
  • TankManager

シェル系

  • ShellExplosion

タンク系

  • TankHealth
  • TankMovement
  • TankShooting

UI系

  • UIDirectionControl

の5ジャンル計8個のスクリプトで構成されています。

 

---

 

下書きではここまで書かれていました。根気のなさを感じる…。

気を引き締めて、記事の続きを書こうと思います。

 

今見たら説明できることが増えてるのかなと思うので、

一旦この記事を投稿して、追加で記事を書きます。

 

頑張ります。

Unity開発環境

初回投稿から2ヶ月近く経とうとしています。ご無沙汰です。

 

今回はUnityの開発環境についてまとめようと思います。

一応研究で3Dモデルを弄るためにUnityを使ったり、ゲーム制作でUnityを使っているので、その際に構築したUnityの設定についてまとめます。自分の忘備録でもあります。

 

(前菜)フォルダ

私は自分のユーザフォルダ(uco)の直下に uco/Programs/GAMES/ほげほげ

という形で入れています。ちょっと微妙ですかね…。改善策はいつでも募集中なのでよかったらコメントください。

 

エディタ

私はUnityの開発用エディタにAtomを使っています。Githubさんが提供して下さっている誰でも知ってるアトム

atom.io

です。

現在入れているパッケージからUnityのコーディングに関係ありそうなものをまとめました。

  • omnisharp-atom:Monoが使えるようになります。

  • atom-beautifyC#だけでなく色んな言語のコードをいい感じにインデントしてくれます。

  • file-icons:ファイルにアイコンを付けてくれる。metaデータまでUnityアイコンを付けてくれるので見やすくて便利。

  • minimap:画面右のスクローラー側にコードを俯瞰できるミニマップを表示してくれます。Sublime Textチックにできる。

その他にも色々便利なパッケージがありますが、それに関しては他の記事を見た方が参考になると思うので、必要に応じてぐぐってください。

見てると

  • プロジェクト管理
  • Git管理
  • 色の表示
  • ターミナル系
  • パス補完

などが出てきますが、ファイルの管理や色の設定に関しては基本的にUnity側でやった方が便利だし、バージョン管理はUnity Collaborate(ベータ版・後述)の機能を使っているので、Atomはパッケージを入れすぎると重くなるという噂もあり、ひとまず必要最小限だけ入れています。

あとは、Atomの設定で

  • インデント
  • タブ(ソフト・ハード)
  • ラップ(ソフト・ハード)、折り返し文字数
  • フォントサイズ
  • テーマ

辺りがイジれるので、好みで設定を変えるといい感じになります。

アセット構成

Unityプロジェクトの中のAssets以下の構成です。

  • Scene(.unityファイル)
  • Script(.csファイル)
  • Prefab(プレハブのGameobject)
  • Material(Materialたち)
  • その他パッケージ(JOKERとか)

今のところはとてもシンプルです。

まだ画像等の素材が揃っていないので、今後imagesとか増えるかも。

 

バージョン管理

バージョン管理というとGitとかSubversionとかありますが、UnityさんがCollaborateという機能を開発しているので、ベータ版ですがこれを使います。

たまにログインや同期が上手くいかなかったり、再起動しないと上手くアップロードできないときもありますが、基本的にはとてもいい感じに同期してくれます。

やり方に関しては公式ページの解説を見た方が早いと思うのでそちらを見てください。

unity3d.com

簡単に言うと、

  1. プロジェクト作る
  2. アカウント作ってプロジェクトを登録
  3. Collaborate使用設定
  4. メルアドで共同開発者を招待
  5. 素材をアップロード
  6. コメントを追加しながらデータをやりとり
  7. 過去の状態にも戻れる

みたいな感じで、ポチポチするだけでファイルを共有できてしまう便利サービスです。

データ構成が複雑なUnityプロジェクトを、Gitみたく.gitignoreを設定することなく簡単に共有させてくれるんですね…。誰かが更新したら通知も来るし、Unity開発で協働しているならいいのではないでしょうか。

個人でもファイルバックアップとか進捗管理にはよさそうですね。

 

おわりに

コーディング前に整えた環境についてはこんな感じです。

ちょっと簡単ですし、もっと知らない情報とか役立つ情報もあるかもですが、今のとこは不便していないです。何かお役立ち情報あればぜひ教えてください。

 

記事更新も頑張りまする。

 

はじめに

本日をもって某大学の大学院生になりました。

υco(うしお)と申します。

 

大学生活の中で、実に様々な知識を得たのですが、

これを発信する場が無く、自分の中でも情報を整理しきれていないと感じたため、この度ブログにしたためようという魂胆です。

 

本ブログでは、自分の趣味・創作・技術的な内容についてまとめたいと思います。

以下、現時点での興味範囲です。

〜趣味〜

任天堂ハードばかり遊んでいたのでプレステ系はあまり詳しくないです。勉強したい。

生き物や自然科学が好きなのはポケモン好きの延長です。

 

〜創作〜

  • イラスト(Photoshop, SAI, CLIP STUDIO PAINT
  • Illustrator
  • ゲーム制作(企画、キャラデザ、プログラミング、仕様設計)
  • 企画・団体運営(気が付いたら団体・グループを運営する立場になっていた経験が多々)
  • 映像編集(Premiere Pro, After Effects
  • 音声編集(Audition)
  • Adobe系のソフト全般

Ibis Paintに最近手を出しました。

常日頃何かを想像(妄想)しながら生きているのですが、出力する能力が足りない。

 

〜技術〜

この他、Java, Javascript, Unreal Engine, OpenCV辺りにも興味あり。勉強したい。

 

情報共有また情報整理の場として、本ブログを活用します。

よろしくお願い致します。