Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

3D モデルのインポート

Defold は、glTF 2.0(GL Transmission Format)形式のモデル、スケルトン(skeleton)、アニメーションをサポートしています。3D モデルには .gltf または .glb ファイルを使用します。glTF は、ゲームエンジンやリアルタイムアプリケーションで 3D データの転送と読み込みを行うために設計された現代的な形式です。

Maya、3ds Max、SketchUp、Blender などのツールを使用して、3D モデルを作成したり glTF に変換したりできます。

Blender は、3D モデリング、アニメーション、レンダリングに対応した、高機能で人気のあるプログラムです。Windows、macOS、Linux で動作し、https://www.blender.org から無料で入手できます。

Blender 内のモデル

Defold へのインポート

モデルをインポートするには、.gltf または .glb ファイルを Defold エディターの Assets ペイン にドラッグ&ドロップします。

glTF の保存方法には、主に次の2つがあります。

  • .glb は単一のバイナリファイルです。モデルデータが含まれ、テクスチャ画像がまとめて格納されている場合もあります。モデルを1つのファイルとして移動または保存したい場合に便利です。
  • .gltf はテキストベースの JSON ファイルです。通常は、メッシュデータ用の独立した .bin ファイルと、.png、.jpg、.ktx2 などの独立したテクスチャ画像を参照します。この形式を使う場合は、参照するすべてのファイルをプロジェクトに追加し、相対パスを保持します。

埋め込み画像は、別のアセットに抽出せず、glTF または GLB ファイルから直接使えます。外部の画像ファイルとバッファーファイルは、引き続き相対パスを保持してモデルと一緒にインポートする必要があります。

Defold は、インポートした glTF ファイルの位置とトランスフォームを保持し、インポート時にモデルの中心を自動調整しません。エディターのプレビューとランタイムは、インポートしたトランスフォームを一貫して使います。スキニングまたはボーンの親を持つメッシュは、スケルトンに対するローカルトランスフォームを保持し、リジッドメッシュは、フラット化したワールド配置を保持します。

Model コンポーネントでは、インポートしたシーンから名前付きメッシュを1つ選択できます。Mesh を空にするとシーン全体を使い、上記のトランスフォームを保持します。メッシュを選択すると、glTF ノードのトランスフォームを含まないローカルジオメトリを使うため、Model コンポーネントまたはゲームオブジェクトのトランスフォームで配置します。

古いバージョンの Defold で作成したモデルを再インポートした後に位置や向きが変わった場合は、Blender などの制作ツールでトランスフォームを修正し、.gltf または .glb ファイルを再度エクスポートします。

圧縮ジオメトリ

.gltf と .glb ソースには、Draco または Meshopt で圧縮したジオメトリを含められます。対応する glTF 圧縮拡張は次のとおりです。

圧縮方式 glTF 拡張
Draco KHR_draco_mesh_compression
Meshopt EXT_meshopt_compression と KHR_meshopt_compression

これらの拡張のいずれかを使って glTF 2.0 アセットをエクスポートまたは最適化し、非圧縮モデルと同じ手順でインポートします。外部のバッファーとテクスチャも含め、相対パスを保持してください。通常どおり、インポートしたファイルを Model コンポーネントの Scene に割り当てます。

Defold は、インポート時とビルド時に圧縮ジオメトリをデコードします。生成されたモデルは、Defold の通常のランタイムジオメトリ表現を使います。この対応によって、実行中のエンジンで Draco や Meshopt の圧縮が有効になるわけではなく、ソースファイルが小さくなっても、ゲームのバンドルが小さくなるとは限りません。

インポートしたシーンの確認

Assets ペインで .gltf または .glb ファイルを展開すると、メッシュ、生成されたマテリアル、埋め込み画像を確認できます。シーンを開くと、定義済みのマテリアルとテクスチャを使ったプレビューが表示されます。個々のメッシュを開いてプレビューすることもできます。

ファイル内に公開されるリソースは読み取り専用です。メッシュから編集可能な Model リソースを作るには、メッシュをコピーしてプロジェクトフォルダーに貼り付けます。生成された .model ファイルは、引き続きインポートした glTF または GLB ファイルを参照します。ソースジオメトリや埋め込み画像を変更するには、制作ツールでアセットを編集し、再びエクスポートしてください。

エディタースクリプトでは、editor.resource_children(path) でこれらのリソースを列挙できます。フォルダーと glTF/GLB ファイル内のリソースを再帰的にたどる例は、プロジェクトリソースの走査を参照してください。

KTX2 テクスチャ

モデルのテクスチャには、外部ファイルとして、または .gltf や .glb に埋め込んだ画像として、.ktx2 ソースを使えます。外部ファイルはモデルと一緒にインポートします。埋め込み KTX2 画像は Assets ペインのシーンの下に表示され、マテリアルのテクスチャフィールドに直接、または Auto Fill で割り当てられます。

テクスチャプロファイルは、KTX2 のソース形式を保持するか、設定した出力形式に変換するかを決めます。テクスチャ圧縮が有効な場合、Keep KTX2 Format はソースの符号化形式を保持しますが、画像処理によって再エンコードが必要になることはあります。対象デバイスでの形式の対応状況を確認し、圧縮済みのテクスチャを再圧縮する際の追加の品質低下も考慮してください。KTX2 の入力形式とプレビューを参照してください。

モデルの使用

モデルをインポートしたら、モデルコンポーネントで使用します。

  1. Assets ペインで New... ▸ Model を選択して Model ファイルを作成するか、Add Component ▸ Model を選択してゲームオブジェクト(game object)にモデルコンポーネントを直接追加します。
  2. Scene に、インポートした .gltf または .glb ファイルを設定します。
  3. Auto Fill Model Fields? ダイアログが表示されたら、Auto Fill を選択し、シーンの生成マテリアルと参照テクスチャを割り当てます。既存のマテリアルとテクスチャの割り当ては置き換わります。現在の割り当てを保持するには Keep Current を選びます。新しいシーンの選択は、その場合も反映されます。
  4. シーン全体を使うには Mesh を空にし、特定のローカルジオメトリだけを使うには名前付きメッシュを選択します。メッシュ選択の変更時も同じダイアログが表示されることがあります。メッシュを選択するとそのマテリアルを、選択を解除するとシーン内のすべてのマテリアルを提案します。Keep Current は割り当てを保持し、新しいメッシュ選択を適用します。
  5. アニメーション付きモデルでは、Skeleton に、スケルトンを含む .gltf または .glb ファイルを設定します。メッシュ、スケルトン、アニメーションをまとめてエクスポートした場合は、Scene と同じファイルであることが多いです。
  6. アニメーション用の Animation Set ファイルを作成し、Animations に割り当てます。自動再生させたい場合は Default Animation を設定します。

選択した glTF または GLB ソースがマテリアルを公開する場合、エディターは割り当てを提案します。埋め込み画像と外部画像への参照の両方を解決します。生成されたマテリアルは、組み込みの glTF シェーダーを使います。ライティングと対応するマテリアル効果は、PBR マニュアルを参照してください。

マテリアルとテクスチャの手動割り当て

Keep Current を選択した場合や、カスタムシェーディングが必要な場合は、各 Material に適切なマテリアルを設定します。組み込みの gltf マテリアルは PBR シェーディングを提供します。組み込みの model マテリアルや、独自のマテリアルも利用できます。静的、スキニング、インスタンシング用の種類と要件は、Model マニュアルを参照してください。

各テクスチャを、対応するマテリアルのテクスチャフィールドに割り当てます。Assets ペインの glTF または GLB ファイル内に公開される埋め込み画像、またはプロジェクト内の独立した画像アセットを使えます。複数のサンプラーを持つマテリアルでは、各テクスチャを目的のサンプラーに対応付けます。PBR マニュアルに組み込みの glTF サンプラー名の一覧があります。

glTF へのエクスポート

エクスポートした .gltf または .glb ファイルには、モデルを構成するすべての頂点、辺、面に加え、定義されていれば UV 座標 (テクスチャ画像のどの部分がメッシュの特定の部分に対応するかを示す座標)、スケルトン内のボーン、アニメーションデータが含まれます。

  • ポリゴンメッシュの詳しい説明は、http://en.wikipedia.org/wiki/Polygon_mesh にあります。

  • UV 座標と UV マッピングについては、http://en.wikipedia.org/wiki/UV_mapping で説明されています。

Defold では、エクスポートするアニメーションデータにいくつかの制限があります。

  • 現在、Defold はベイクされたアニメーションのみをサポートしています。アニメーションには、位置、回転、スケールを個別のキーとしてではなく、各キーフレームでアニメーションする各ボーンの行列が必要です。

  • アニメーションの補間には線形補間が使用されます。より高度なカーブ補間を行う場合は、エクスポーターでアニメーションを事前にベイクする必要があります。

要件

モデルをエクスポートする際は、glTF の対応状況がツールやエンジンごとに異なることに注意してください。glTF 2.0 を使い、テクスチャを使うモデルでは正しい UV 座標を設定します。画像は glTF や GLB に埋め込むことも、シーンが参照する独立したファイルに保存することもできます。Defold にインポートする際は、すべての外部画像とバッファーファイルを含めてください。

glTF 形式の完全なサポートを目指していますが、まだ完全には対応していません。 不足している機能がある場合は、Defold のリポジトリで機能リクエストを作成してください。

テクスチャのエクスポート

テクスチャ画像を手動で作成する場合は、Blender から UV 配置をテンプレートとしてエクスポートできます。まず、メッシュとそのすべての頂点を選択します。

すべての頂点を選択

すべての頂点を選択したら、メッシュを展開して UV レイアウトを作成します。

メッシュの展開

続いて、UV レイアウトを、テクスチャとして使用できる画像にエクスポートします。

UV レイアウトのエクスポート

UV レイアウトのエクスポート結果

Blender を使用したエクスポート

Blender の File ▸ Export ▸ glTF 2.0 (.glb/.gltf) を使用してモデルをエクスポートします。

Blender を使用したエクスポート

選択したものだけをエクスポートしたい場合は、エクスポート前に1つまたは複数のオブジェクトを選択し、Selected Objects を有効にします。

Format のオプションから1つ選択します。

  • glTF Binary (.glb) は1つのファイルを作成します。モデルを単一のアセットとして簡単に移動または保存したい場合に使用します。
  • glTF Separate (.gltf + .bin + textures) は、モデルの記述、バイナリデータ、テクスチャをそれぞれ別のファイルとして作成します。テクスチャ画像を編集したり、Defold で個別に割り当てたりしたい場合に使用します。

モデルにアニメーションが含まれる場合は、アニメーションのエクスポートを有効にし、アニメーションがベイクされていることを確認します。モデルにテクスチャを使用する場合は、メッシュが UV 展開されていることと、テクスチャ画像が PNG や JPEG など Defold でインポートできる形式でエクスポートされていることを確認します。

Blender を使用したエクスポート