3Dの第一歩、Blenderを活用してひとつ先の未来へ
はじめに
「経済とは、武器を持たない殺し合いである」誰かがそんなことを言っていた気がする。
皆さん、こんにちは。株式会社メンバーズ XRブースターカンパニー(以下、XRB)のスーパーたけちゃんマンです。
今回、このような機会を頂き、海千山千のエンジニアが集うメンバーズにおいて、どのような記事を書こうかと思案したのであります。考えあぐねた末に、最も素直に、私の得意な分野について少しお付き合い頂きたいと思います。
それは「3Dモデルの作り方と、その活用」についてです。
私が所属するXRBは、読んで字のごとくXRを扱っていますので、かく言う私もゲームのキャラクター製作を多く請け負ってきましたし、ゲーム開発の精鋭エンジニアが集まっており、3Dを扱うタスクには慣れ親しんでいます。
とは言え、これは当カンパニーだけに留まる話ではなく、現在はUnityやUnreal Engine等の無料から使い始められるゲームエンジンの出現・隆盛や、WebGLの発展など異なる界隈に身を置かれる方々にとっても、興味・関心の的となる分野ではないでしょうか。
今回は3Dモデルの製作とその活用について熱い論評をさせていただくと共に、無料で使える統合型3DCGソフト「Blender」についてご紹介していきます。
Blenderとは?
「Blender」とは何か。詳細を省いてご説明すれば、それは「CGをつくるツール」ということになります。
例えば、UI/UXデザインをするためにFigmaを活用するように、スクリプトを記述するためにAtomやVSCodeを利用するように、CGをつくるためにBlenderを使用するのです。
Blenderは度重なる紆余曲折の日々を経ながらも、長きに渡り無料で豊富な機能を提供し続けている稀有な存在です。無料と聞いて「安かろう悪かろう」と思われた方もいらっしゃるでしょうが、その機能面での発展は、近年では大手のゲーム会社が矢継ぎ早にBlenderへ乗り換えているほどです。
そんなBlenderは、豊富な機能を有しており、箇条書きに列挙するだけでも以下のようなものがあります。
- 3Dモデリング(CGでキャラクターやモノをつくること)
- テクスチャリング・テクスチャペイント
- キャラクターアニメーション
- モーショントラッキング・オブジェクトトラッキング
- コンポジット
- 動画編集
※以前はゲームエンジンも積んでいました。どんだけ機能モリモリやねん。笑
一体なんのことじゃらほい。そう思われた方も多いかと思いますが、実は皆さんの日々の業務や日頃の楽しみに活かせる機能が詰まっているのです。
その活用例を併せて、列挙させていただきたいと思います。
▼Blenderの活用例
- 3DモデルとJavaScriptを活用して立体的な3Dウェブサイトを作成した。
- BlenderとUnityを活用して3DFPSゲーム※1を開発した。
- BlenderとAfterEffectsを活用したVFX※2で短編映画を作成した。
※1FPSゲーム:ファーストパーソンシューティングゲーム。
※2VFX:映画やテレビドラマなどの映像作品において、現実には見られない画面効果を実現するための技術。
このように記述すると、Blenderで何ができるのかをより身近に感じていただけるのではないでしょうか。
次章からは、そんなBlenderを如何にして活用していくのか。
その具体的な手法をご紹介していきたいと思います。
BlenderとUnityでゲームを作成
まずは、BlenderとUnityで簡単なゲームを作成していきましょう。
ゲームコンセプトとしては、「お爺ちゃんが街を歩きながら、お婆ちゃんが入院する病院を探す」「クリアタイムとアイテム獲得数を競う」というレースゲームとして作成していきます。
Unityの設定方法やより高度な内容については、XRB生駒さんが執筆された記事「初心者でもわかるUnity入門 part1」を参考にしていただければと思います。
登場するキャラクター、キャラクターを動かすアニメーションはBlenderで作成し、Unityにそれらをインポートし、C#で制御していきます。
3Dモデルの作成
早速Blenderを開きましょう。
Blenderのアイコンをクリックして、起動させると中央にシンプルな立方体が現れ、それを囲んで様々なインターフェースが配置されています。
細かい手順は省きますが(YouTube等にゴロゴロチュートリアルがあがっているので、そちらをご覧ください)、立方体のような単純な形状から、デザインに沿ってフォルムを整えていき、画像のようなお爺ちゃんの3Dモデルを作成しました。
このままでも素敵なお爺ちゃんではありますが、3DCGではアーマチュアと呼ばれる関節を作成した3Dモデルに紐づけしてあげないと動かないので、アーマチュアを作成し、お爺ちゃんモデルに紐づけします。
これでお爺ちゃんを、好きなポージング・好きなアニメーションで動かすことができます。
更に素敵なお爺ちゃんになりました。
(※この工程は、どのようなモデルでも共通なので、特にお爺ちゃんにこだわる必要はありません)
更にゲームで使用するアニメーションを作成していきます。
アニメーションの作成には色々な方法がありますが、今回はタイムラインにキーフレームを打つ、手組みでアニメーションを作成していきます。
事前にリストアップしておいた「使用予定のアニメーション」を一通り作成したところで、お爺ちゃんをFBX(Filmbox)形式でエクスポートし、更にUnityにインポートしていきます。
お爺ちゃんをUnityでセットアップ
ここからは、Unityの操作画面となります。
「Unityで、俺感じるぜインフィニティー!YO!チェケラッチョ」
1フロウかましたところで、早速Unityで製作を進めていきたいと思います。
まずは、UnityのAssetフォルダ内に先ほど作成した3Dモデルをドラッグ&ドロップします。ドラッグ&ドロップしただけでは、マテリアルやテクスチャが反映されないままなので、テクスチャもインポートし、マテリアルを設定します。
マテリアルを設定すると、お爺ちゃん3Dモデルが良い感じになりました。
続いてUnityでアニメーションを管理する「Animator Controller」を作成し、Blenderで作成したアニメーションをドラッグ&ドロップします。
各種アニメーターをノードでつなぎ、アニメーション遷移を作成していきます。
このままだと、1つのアニメーションが終了すると次のアニメーションに自動遷移されてしまうので、各アニメーションに遷移イベントとしてTriggerやFloatを追加していきます。
Triggerは、スクリプトで街頭のTriggerがセットされたらアニメーションが遷移し、Floatは0から1の間で浮動小数点が動き、1になると完全にアニメーションが遷移します。
Animator Controllerの設定が完了したら、お爺ちゃんモデルにドラッグ&ドロップで、Animator Controllerコンポーネントをセットします。これでPlayボタンを押すと、お爺ちゃんがアニメーションで動くようになっていることがわかりますね!
お爺ちゃんを動かそう
続いては、お待ちかね。スクリプトを記述していきましょう。
Projectフォルダ内Assetフォルダの中に、「Scripts」というフォルダを作成し、フォルダ内を左クリック。「新規>Script>C#Script」からスクリプトを作成します。
名前は「PlayerController」とします。
PlayerControllerスクリプトをダブルクリックし、任意のスクリプトエディターを開きます。
今回はPCの十字キーでお爺ちゃんモデルが動き、動きに応じて歩行アニメーションするスクリプトを記述しました。
これで方向キーボタンを押すことで、お爺ちゃんモデルを動かすことができます!
おわりに
今回は、Blenderで作成した3DモデルをUnityで動かす手順についてご紹介しました!
楽しんでいただけたでしょうか?
少しでも面白そうと思ったあなたはXR好きの素質あり✨
Blenderでオリジナルのキャラクターや空間を作成してみるもよし、Unityでそのキャラクターを動かしてゲームを開発するもよしです。
是非、あなたの頭の中にある、もしくはスケッチブックに眠っているイマジネーションをBlenderとUnityで描き出してみてくださいね。
それでは、最後に一句。
「我ながら 10年続けた ブレンダー 流石俺だわ ぶれんなあ。」
お後がよろしいようで。
この記事を書いた人
関連記事
- React Redux: 毎回新しい参照を返す select...
Daisuke Yamamura
- 画像のカラー抽出を頑張った話。
狩野真毅