Unityはゲームを作成する際に非常に優秀なエンジンで、ボタンやテキストなどのUI・プレハブが基本的にそろっています。
各国のゲーム会社が使用していて、「ポケモンGo」や「原神」、「Among Us」など様々な大ヒットゲームが開発されました。
しかしながら、同じ開発エンジンを使用しているのに、自分がこれらゲームを再現しようとしても困難なことでしょう。
それは、経験不足という観点もありますが、アニメーションや素材(3Dモデル、背景・ステージ、キャラクター)、演出が十分でないため、クオリティの低い陳腐なゲームとなり彼らプロが作ったゲームと差が生まれてしまいます。
本記事では、3Dモデルを自分で自作(モデリング)してその素材をUnityにインポートします。
- Unityで質の高いゲームを作りたい
- Blenderの3DモデルをUnityにインポートしたい
- Blenderの使い方を知りたい
3Dモデル作成ソフト
3Dモデルの作成と聞くとやはりデザインの学校を卒業し、業務を何年も積んだその道のプロがやることというイメージがあるかと思います。
しかし今は、作成ソフトが普及したことで「3Dモデルを作りたい」という軽い気持ちでも誰も高品質な素材を作成できます。
本記事では、無料と有料のソフトを紹介します。
無料だから使い物にならないというわけではありません。むしろ完全無料の方がネットや書籍に情報が網羅されていてビジネスにも使えるほどのクオリティーの素材を作成できます。
無料ソフト
無料ソフトの代表的なものは次の通りです。
使用者も多く情報の網羅性が高いので、第一歩としてお勧めです。
Blender
Blender(ブレンダー)は、利用者が多く、数多のプロが愛用しています。
私自身、3DモデルをUnityで動かしたいと思ったとき、Blenderを知りました。独学で1時間半ほどで本記事で取り上げるチェスのポーンを作成、Unityに導入、操作までできました。
Blenderはオープンソースのソフトウェアです。
できることは主に表にまとめるようなものがあります。
モデリング | 敵・味方などのキャラクター、建物、乗り物、ステージなどを作成 |
アニメーション | モデリングした素材に動きを付けて、アニメーションを付与 |
シミュレーション | アニメーション(球と壁の衝突)でどのような影響があるか、演出 |
ライティング | 照明による光や影の生成、その他。色や質感を付与 |
動画編集 | アニメーションとして書き出した動画に音楽の付与や動画を繋ぎ合わせる |
その他、Blenderでは色々なことができますが、市場を拡大しているAR/VRは、ゲームエンジンの使用やプログラミングが必要なのでできません。
前述したように初心者から上級者、プロまで幅広く利用しているので、書籍やネット記事、Youtubeで多くの情報が公開されていますので、独学が可能です。
さらに、日本語にも対応しているので、言語の壁はありません。
しかしながら、Blenderは非常に負荷がかかるソフトですので、PCがフリーズしてしまうことがあります。
特に、アニメーション操作、物理演算をすると重負荷がかかります。
Unityと同様で、メモリは最低でも16GBは必要です。(16GBならフリーズせずに動作可能)
16GBのPCを買うという選択肢もありますが、CPUのグレードも上がり、非常に価格が上がってしまいます。
おすすめは、メモリ8GBのパソコンに8GBのメモリを増設することです。
増設は、誰でもできるので、ぜひ自分で試してみてください。
ProBuilder
ProBuilderは、Unity搭載の3Dモデル作成ソフトです。
Blenderは、Unityと操作性が異なるので、何度も間違えます。
しかし、Unityを愛用していれば、ProBuilderの操作は非常にやりやすく、挫折しにくいでしょう。
Unreal Engine
Unreal Engineは、Unityと同じように有名なゲームエンジンです。
Unityがダウンロード数に応じてロイヤリティを払うように改定した、通称「Unity税」の騒動の中で、Unreal Engineに移行するべきと脚光を浴びて注目度はさらに高まっています。
※現在は、Unity税は見直されています。
プログラミング不要でゲームが作成という点でも非常に注目度が高いゲームエンジンで、3Dモデル作成もできます。
Vroid Studio
Vroid Studioは、pixivが運営する3Dの人型アバターを作成できるソフトで、WindowsやMacだけではなく、iPadでも作成できます。
プリセットを使用してモデルを作成できて、初めてでも作成可能で、キャラクター素体を自由にカスタマイズできるので、専門性も高いです。
有料ソフト
導入費用はかかりますが、前述した無料ソフトは、維持が困難な場合は改定して有料化することも考えられますし、無料だとツールに制限がかかります。
有料だけど、優秀なソフトを早いうちからプロが使うツールを導入すると、時代に左右されずにキャリアを積むことができます。
MAYA
MAYAは、キャラクター、背景、エフェクトなどほぼすべてのモデリングが可能です。
ゲーム会社の中で有名企業が導入しており、CMや映画などでも使用されています。
ただし、プログラミングのスキルが必要なので注意が必要です。
3dsMax
3Dモデリングとレンダリングが特徴的で、広大なゲーム世界の創造やVR体験の表現に最適です。
また、また、アニメーションCGやエフェクトなどの作成はプラグインでできて非常に豊富にあるのでお勧めです。
おすすめはBlender
これらすべての3Dモデル作成ソフトでBlenderに軍配が上がります。
非常に操作性が高く、またUnityとの相性も良いです。
ここまで優秀なのに無償でモデリングできるので、使わない理由はないでしょう。
ただし、機能が多すぎて理解しきれず、挫折することが考えられます。
基本的に、自分が作りたいものを見つけて、それを制作している教材を本やネット(おすすめはYouTube)で探してください。
そして、そこで使用した機能を少しずつ使っていけば挫折することなく完成します。
思い通りのゲームが作れない
Unityでゲーム開発しているけど完成しない。
技術的な壁や知識不足が原因で、思い描いたゲームを実現するのは難しいです。
しかし、Udemyは動画で実践的なゲーム開発を解説していて、
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで学習できます。
Unityの機能を網羅したいや作りたいゲームがある人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を3つ紹介します。
ビックセール開催中(10月11日まで)
対象のコースが1500円から(最大95%OFF)
Unityのはじめの一歩としておすすめ。開発例に物理挙動やアニメーションを使用しているので、今後の開発が円滑になる。
トランプを題材にした講座。カードゲームやボードゲーム開発に応用可能
UnityエンジンのインストールやC#の文法に加えて、App StoreとGoogle Playにゲームをリリース方法を解説。
容量不足を解消
Unityのプロジェクトは1.5GB~3.5GBと大きく、クリエイターはHDD・SSD増設が必要です。
価格 | 耐久性 | 静音性 | 読み書き | サイズ | |
HDD | 低 | 低 | 低 | 遅 | 大 |
SSD | 高 | 高 | 高 | 速 | 小 |
注目点は、HDDは安価だけど壊れやすい。SSDは丈夫だけど高価。
したがって、データの持ち運びをしない場合はHDD、持ち運びする場合はSSDがおすすめです。
- 据え置きHDD
- 外付けSDD
- 内蔵SSD
ぜひ、あなたのクリエイティブな作業環境に兼ね備えたストレージをお役立てください。
Unityに3Dモデルインポート
Unityに3Dモデルをインポートするには、初めにBlenderで素材をエクスポート(出力)して、そのあとにUnityに導入します。
Unityで対応しているファイル形式は引用に示した通りです。
Blenderでは、「.fbx」形式で出力できますので、作成したマテリアルのエクスポートをしていきます。
Unity は .fbx、.dae (Collada)、.3DS、.dxf、.obj、.skp ファイルを読み込むことができます。3D ファイルのエクスポートに関しては、3D モデリングソフトウェアのドキュメントを参照してください。
3D アプリケーションからモデルをインポートする方法-Unity
Blender側の操作
Exportしたい素材を選択してください。(オレンジ色の囲いが選択されていることを示しています。)
その後、上部から「File>Export>FBX(.fbx)」を選択してください。
出力するときは、「Transform」の数値を必ず確認してください。この数値がずれていると当たり判定がおかしくなったり、変な方向を向いたりとゲームのバグにつながります。
Locationを0m、Rotationを0°、Scaleを1になっているかXYZの3方向で設定してください。
Exportする前にObjectTypesに追加の選択が必要になります。
現在は、1つしか選択されていません。
これの選択が不十分な場合、出力した3DモデルはUnityの画面で表示がされません。
したがって、ObjectTypesの項目を追加してください。
自分の素材にどれを選べばいいか分からない場合は、基本的に全て選べば大丈夫です。
項目をクリックしても各々しか選択できませんので、「Shift」を押しながら左クリックして選択してください。
ここまで出来たら、「Export FBX」を選択して出力して下さい。
Unity側の操作
出力したFBXファイルをAssetsウィンドウにドラッグ&ドロップして導入してください。
失敗例とは異なり、サムネイルが出力した3Dモデルになっています。
AssetsウィンドウからHierarchyウィンドウに素材をアタッチしてください。
これにて、3DモデルをUnityに導入できました。
付録.3Dモデル動作
3Dモデルには基本的に動作が必要なので、付与していきます。
現在は、オンラインゲームが主流です。
PUNアセットを使えば、サーバーを立てずにマルチプレイができます。
よくUnityを開発していて、プレハブ(ゲームオブジェクト)が壁や床をすり抜けてしまうということがありますが、「Rigidbody」と「Box Collider」の設定をしていないのが原因です。
Assetsウィンドウで対象のモデルを選択し、Inspectorウィンドウの下部にある「Add Component」から「Physics」を選択してください。
そこから「Rigidbody」と「Box Collider」をアタッチして下さい。
Rigidbodyは、物理演算をゲームオブジェクトに付与させる機能です。重力を付与するために必要です。項目から「Use Gravity」にチェックを入れてください。
Rigidbody を使うと、ゲームオブジェクト を物理特性によって制御する事ができるようになります。リジッドボディに力やトルクを加えると、オブジェクトをリアリスティックに動かすことができます。重力の影響を加えたり、スクリプトを使って力を与えたり、NVIDIA PhysX 物理エンジンを通して他のオブジェクトと相互作用させるためには、ゲームオブジェクトにリジッドボディを加える必要があります。
Rigidbody – Unity マニュアル
床や壁のすり抜けは、Box Colliderによって制御します。
Box Collider (ボックスコライダー) は立方体をした基本的なコライダーです。
Box Collider – Unity マニュアル
Box Colliderのデメリット
Box Colliderは、名前の通り箱の中にオブジェクトを入れて、その箱に接触すると衝突することになります。
故に、細くなっているところでも枠内に入っていれば、接触という判定になります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class collision : MonoBehaviour
{
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player"))
{
Debug.Log("接触");
}
}
}
このスクリプトを3Dモデルにアタッチして、棒にPlayerタグを付けます。
示したように接触していないにも関わらず、アタリ判定が出てきてしまいます。
したがって、厳密な接触判定を必要するゲームが必要であれば、Box Colliderの使用は控えてください。
まとめ
Unityは、各国のゲーム会社が使用していて、大ヒットゲームが開発されました。
しかし、同じ開発エンジンを使用しているのに、自分がゲームを作ると陳腐なものになる。
それは、経験不足によるアニメーションや素材、演出の不十分が原因で、クオリティの低くプロが作ったゲームと差が生まれてしまいます。
したがって、質の高いゲームには、素材は大切です。
現代は3Dモデルを作成ソフトが普及したことで誰も高品質なものを作成できます。
その中でもBlenderは無料であり非常に操作性が高く、またUnityとの相性も良いです。(FBXファイル)
ただし、機能が多すぎて理解しきれず、挫折することが考えられます。
Blenderでの出力は「File>Export>FBX(.fbx)」を選択してください。
ゲームバグにならないように「Transform」の数値をLocationを0m、Rotationを0°、Scaleを1になっているか確認してください。
Exportする前にObjectTypesに追加の選択が必要になります。
これの選択が不十分な場合、出力した3DモデルはUnityの画面で表示がされません。
ObjectTypesの項目を「Shift」を押しながら左クリックして全て追加してください。
出力したFBXファイルをAssetウィンドウにドラッグ&ドロップして、3DモデルをUnityに導入してください。
3Dモデルを扱うときは、「Rigidbody」と「Box Collider」を使用してください。