モデルの取り込み方法
nodecゲームエディタを使用して、3Dモデルを取り込む方法を説明します。
環境
このチュートリアルでは、以下の環境を想定しています。
手順
1. 3Dモデルファイルを用意する
読み込みたい3Dモデルデータを用意します。
内部では、読み込みにassimp
ライブラリを使用しており、多くの3Dモデルデータ形式(obj
, stl
, fbx
等)に対応しています。
今回は、blenderで作成しfbxファイルに出力したシンプルな立方体を例に使います。
2. エディタから3Dモデルファイルを取り込む
ゲームを立ち上げて、エディタウィンドウを開きます。
3Dモデルの読み込みには、Asset Importer
エディタウィンドウを使用します。
Source Path
に用意したモデルファイルへの絶対パスを入力します。
例: "C:/<path-to-model>/cube.fbx"
/
を使用してくださいパスの区切りにはスラッシュ/
を使用します。
Windowsで使われるバックスラッシュ\
には対応しません。
Import
ボタンを押します。
モデルファイルが読み込まれ、ゲームシーンに配置するまでの設定を行っていきます。
- 項目説明
- Resources
読み込んだ3Dモデルデータに含まれるリソース群。
Mesh, Materialが含まれます。
- Resource Name Prefix
読み込んだモデル内のリソースは、それぞれファイルとして保存されます。出力されるファイルのディレクトリを指定します。
ディレクトリには、アプリとして使用しているリソースディレクトリ下のパスを指定します。今回の例では、
org.nodec.hello-nodec-game/models/cube/
とします。出力先のパスが存在しているか確認してください出力先のパスが存在しているか確認してください。
出力先のパスが存在しない場合、エラーが発生します。
- Mesh
モデルに含まれるメッシュデータ。
- Source
読み込み時のメッシュ名。
- Target
保存するときのメッシュ名。ほかのTarget名と重複しないようにしてください。
- Material
モデルに含まれるマテリアルデータ。
- Target Path
保存するときのマテリアル名。ほかのTarget名と重複しないようにしてください。
- Scene Export
ゲームシーンに配置するための設定。
- Export
ボタンを押すと、上記のリソースデータがファイルとして保存され、読み込んだモデルがゲームシーンに配置されます。
上記の設定を行い、Export
ボタンを押します。モデルデータ内のリソースがファイルとして保存され、モデルがゲームシーン上に配置されます。
今回の例では、以下のようなファイルが出力されます。
org.nodec.hello-nodec-game/models/cube/
Cube##mesh-0.mesh
Material.material
また、シーン上に新しくエンティティが追加されます。今回の例では、以下のようなエンティティが追加されます。
RootNode
Cube
Light
Camera
おそらく、Cubeが表示されていないと思います。このような場合、以下のような原因があります。
- オブジェクトのスケールが極端に大きいか小さい
- マテリアルの設定が適切でない
まず、オブジェクトのスケールを確認します。Cube
エンティティを選択し、アタッチされているコンポーネントからLocal Transform
の詳細を開きます。Scaleの項目が100, 100, 100
になっており、極端に大きいことがわかります。Scaleを1, 1, 1
に変更します。
Cubeが表示されましたが、ライトの当たり方がおかしいです。これは、マテリアルの設定が適切でないためです。サンプルプロジェクトでは、Deffered Renderingを使用していますが、出力されるマテリアルファイルはForward Rendering用のものになっています。そのため、ライトの当たり方がおかしくなっています。のちの項目で、適切なマテリアルを設定していきます。このワークフローの改善は、今後の課題とします。
3. 適切なマテリアルを設定する
サンプルプロジェクトでは、Deffered Renderingを使用していますが、出力されるマテリアルファイルはForward Rendering用のものになっています。そのため、ライトの当たり方がおかしくなっています。レンダリングされるためには、適切なマテリアルを設定する必要があります。
Cube
エンティティを選択し、アタッチされているコンポーネントからMeshRenderer
の詳細を開きます。
Materials
の項目に出力されたマテリアルファイルが表示されています。今回の例では、org.nodec.hello-nodec-game/models/cube/Material.material
です。
今回、このマテリアルファイルを設定していきます。
エディタウィンドウから、Material Editor
を開きます。Target
欄に設定対象のマテリアルファイルorg.nodec.hello-nodec-game/models/cube/Material.material
を指定します。入力後、Enterを押すと、マテリアルの設定項目が表示されます。
今回Shader
をorg.nodec.game-engine/shaders/pbr-defer
を指定します。入力後、Enterを押し確定します。そうすると、正しくCubeが表示されました。
Material Editor
のSave
ボタンを押すと、マテリアルファイルが保存されます。
このようなマテリアルの設定は、ほかにも以下の場合に必要となります。
- テクスチャの指定
モデルファイルでテクスチャが使用されている場合、手動でテクスチャファイルをリソースフォルダ内の配置し、マテリアルの設定からテクスチャを指定する必要があります。このワークフローの改善は、今後の課題とします。