Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Caveはゲームエンジンであり、あなたのアイデアを実際のビデオゲームに変えることができます。これは、すべてをまとめたり、レベルデザイン、インターフェース、ロジックを作成したりするための手段です。しかし、テクスチャ、3Dモデル、アニメーション、音、音楽などの実際のアート制作には、専門的なツールを使用することをお勧めします。3D用のBlender、3Ds Max、Maya、Sketchup、画像加工用のAdobe Photoshop、GIMP、Krita、音声用のAudacityなどです。もちろん、この目的のために他の外部ツールを使用しても構いません。ここで重要なのは:

ほとんどのゲームはエンジンの外で作成されたコンテンツを使用します。

Caveも例外ではありません。これは、ファイルをエンジンにインポートする必要があることを意味しており、どのように そして何が 良いおよび悪い実践 であるかを理解することが重要です。インポートは、これらのファイルをCaveに取り込み、プロジェクトの一部にするステップです。

このレッスンでは、初心者向けのインポートワークフローを紹介します。

あなたは学びます:

  • Caveがインポートできるファイルの種類。
  • インポートされたファイルがCave内でどのようになるか。
  • 簡単な初回インポートが巨大なアセットパックよりも優れている理由。
  • モデルインポートがどのように複数のアセットタイプを生成できるか。
  • インポート後に確認するべきこと。

目標は、外部ファイルがCaveアセットになるときに何が起こるかを理解する手助けをすることです。

インポートできるものは?

Caveは、いくつかの種類の外部コンテンツをインポートできます。

インポートされたファイルタイプ 変換されるもの
画像(様々な形式) テクスチャアセット。
OGGオーディオ オーディオアセット。
TTFフォント フォントアセット。
.cavePkg ファイル インポートされたCaveアセットパッケージ。
3Dモデル メッシュ、マテリアル、テクスチャ、アーマチュア、アニメーション、およびファイルに応じたテンプレート。

インポート後、これらのファイルは Asset Browser 内のCaveアセットになります。

つまり、それらはシーン、マテリアル、エンティティ、エンティティテンプレート、UI、オーディオシステム、スクリプト、ロジックなど、すべての場所で使用可能です!インポートされたファイルはもはやディスク上の単なるファイルではありません。Caveが参照、保存、整理、再利用できるプロジェクトコンテンツに変わります。

Caveは独自のフォーマットを使用します

Caveに任意のファイル(画像、テクスチャ、オーディオ、3Dモデルなど)をインポートすると、そのアセットはCave Engineの独自でカスタムフォーマット変換されます。これは、この内部フォーマットがパース(解析)を行う速度が非常に速いことから重要です。エンジンは、ゲームに可能な限り最高のパフォーマンスを提供するために多くの内部最適化やキャッシュ処理を自動的に実行します。

> これらはすべて内部で行われる処理なので心配する必要はありませんが、このプロセスが発生し、あなたにどのように影響するか(そしてそれがなぜ良いのか)を理解することは不可欠です。

例えば、.png画像ファイルをCaveにインポートすると、最終ゲームで実際のpngファイルは使用されません。それは、エンジンにドロップするとすぐに迅速な変換プロセスを経て、代わりにCaveのフォーマットが使用されます。同じことが、オーディオや3Dモデルをインポートする際にも発生します。この情報は3Dアセットにとって特に重要です。Caveは生のDCCフォーマット(.fbx.obj.glbなど)を使用しません。これらをインポートすることはできますが、エンジンのフォーマットに変換されます。

このプロセスが発生する理由は、これらのフォーマットは人気がありますが、fbxpngのようなものをゲームにパース(解析)することはコストがかかり、パフォーマンスに影響を与える可能性があるからです。したがって、Caveは必要なデータ(メッシュ、マテリアル、アニメーション、テクスチャなど)を抽出し、それをエンジンのフォーマットに変換して保存します。

これには3つの重要な意味があります:

  • あなたのゲームは速く動作しディスク上で小さくなります
  • アセットインポートは破壊的です:CaveはあなたのRAWアセットのオリジナル参照を保持しないため、外部で変更を加えた場合は再度インポートする必要があります。
  • 一部の機能は利用できない可能性があります:一部のアセットフォーマットはサポートされていますが、このフォーマット内の一部機能はCaveによってサポートされていない場合があります。この場合は通知され、インポートプロセスに含まれることはありません。

インポートプロセスについて理解したので、これを学びましょう。


画像のドラッグアンドドロップによるインポート

画像はアセットブラウザにドラッグすることでインポートできます。

Caveは、以下のような一般的な画像形式をサポートしています。

  • PNG。
  • JPGおよびJPEG。
  • TGA。
  • BMP。
  • HDR。
  • PSD。
  • PNM。
  • GIF。
  • PIC。
  • DDS。

インポートされた画像はTexture Assetsとなり、マテリアル、UI要素、スカイ設定、画像データを必要とする他のシステムで使用できます。例えば、テクスチャは岩のマテリアルのカラー マップ、UIのアイコン、またはシーンのためのスカイボックス画像になるかもしれません。

最初のテストとして、シンプルにしましょう:1つのテクスチャをインポートし、それをマテリアルに割り当て、そのマテリアルをシーン内のメッシュに置き、結果を3D Viewで確認します。

オーディオファイルのインポート

オーディオもプロジェクトにドラッグすることでインポートできます。現在、CaveはOGGオーディオファイルをインポートします。別の形式のオーディオがある場合は、インポート前にOGGに変換してください。この変換のためのオンラインツールも見つかりますが、私たちはオーディオをoggに保存しやすく、非常に使いやすい無料のソフトウェアAudacityをお勧めします。

OGGファイルは、Xiph.Org Foundationによって開発された無料のオープンソースマルチメディアコンテナフォーマットです。主に高品質デジタルオーディオをストリーミングおよび保存するために使用されており、従来のMP3よりも小さなファイルサイズでより良い音質を実現することが多いです。参照

インポートされたオーディオは、エンジン内の任意の場所で使用可能なオーディオアセットになります。例えば、オーディオプレイヤーコンポーネント、ロジックブリック、またはPythonコードを通じて呼び出すことができます。例:

cave.playSound("My Audio File")

良い初回オーディオインポートは短く、テストしやすいものです:

  • コインピックアップ。
  • ボタンクリック。
  • ドアの開閉。
  • シンプルな環境ループ。
  • ゲームのサウンドトラックの音楽。

フォントとCaveパッケージのインポート

CaveはTTFフォントファイルをインポートできます。TTF(TrueType Font)は、Appleによって最初に開発され、その後Microsoftに採用され、現在使用されている標準フォーマットの1つとなっているフォントファイルフォーマットです。

フォントは主に UI Element Componentによって使用され、ゲームのHUD、テキスト、メニュー、ボタン、字幕、クレジット、ダイアログインターフェースなどを作成することができます。フォントの選択は、シンプルなメニューでも大きな違いを生むことがあります。

Caveパッケージのインポート

Caveはまた、.cavePkgファイルをインポートできます。Caveパッケージは、別のプロジェクトに持ち込むことができるCaveアセットのパッケージです。

アセットブラウザに移動し、フォルダまたはファイルを右クリックすると、それをCaveパッケージとしてエクスポートできるようになります。パッケージをエクスポートすると、後で他のプロジェクトにインポートすることができます。これは、異なるプロジェクト全体で一般的なロジックを共有するために非常に便利です。パッケージをエクスポートするときは、右クリックしたフォルダまたはアセットの中にあるものだけが含まれることに注意してください。そのため、例えば、一連のテクスチャを使用するマテリアルをエクスポートする場合は、すべてをフォルダにまとめてからそのフォルダをエクスポートすることが重要です。そうでなければ、マテリアルだけをインポートした場合、テクスチャは含まれません。

CaveEngineのアセットブラウザにCaveパッケージをドラッグアンドドロップすると、それがインポートされ、エクスポートされた元のファイル構造が既存のプロジェクトに再作成されます。再利用可能なアセットを共有したり、新しいプロジェクトにデフォルトコンテンツを持ち込んだり、異なるプロジェクト間でプロジェクトの部分を移動したりするのに再び非常に便利です。


3Dモデルのインポート

これで、3Dゲームエンジンの最も重要な部分の一つ、3Dモデルのインポートに到達しました。Caveはassimpを使用して、幅広い3Dモデルフォーマットをサポートしており、モデルインポーターを介してインポートできます。

これにより、インポーターを通じて複数のモデルフォーマットがサポートされますが、FBXがCaveに推奨される主なフォーマットです

モデルインポートは、同時に複数のアセットタイプを生成できます:

  • メッシュ。
  • マテリアル。
  • テクスチャ。
  • アーマチュア。
  • アニメーション。
  • エンティティテンプレート。

正確な結果は元のファイルに依存します。

シンプルなクレートモデルは、メッシュ、マテリアル、テクスチャ、およびテンプレートを生成するだけかもしれません。アニメーションキャラクターは、メッシュ、アーマチュア、アニメーション、マテリアル、テクスチャ、およびより複雑なテンプレートを生成する場合があります。

推奨される最初のインポート

最初のインポートテスト用に、シンプルでクリーンなアセットを使用してください。Kenney Asset Packs (CC0)は、通常、整理が行き届いており、軽量で理解しやすいため、初心者に優しい選択肢です。さらに、Quaternius Assets (CC0)やブラウザのFAB Asset Storeも確認することができます。

良い最初のインポートは、クレートや岩、低ポリゴンの木、シンプルな建物、キャラクターなどです。巨大なキャラクターパックや大きな環境ファイルから始めることは避けてください。シンプルなアセットは、Caveが作成するもの、どの設定が重要か、インポートされたコンテンツがアセットブラウザにどのように表示されるかを理解するのが容易になります。その後、より複雑なセットアップに移行できます。

モデルをインポートする手順

アセット(FBXなど)をCaveのアセットブラウザにドラッグアンドドロップすると、以下のようなウィンドウが表示されます:

image.png

複数のファイルを一度にドラッグアンドドロップすることができ、ファイルごとにタブが作成されます。各タブについてインポートしたいアセットを選択できるようになります。これにより、どのアセットタイプが認識され、Caveインポータによって変換されたかを示します。また、どのアセットをインポートしたりしなかったりするかを個別に選択したり、ファイル名を適宜変更したりできます。インポートされたアセット名は後で変更することもできます。

上部、各ファイルタブの前に 2つのグローバルオプション(資産インポートごと)があります:

  • 設定は、インポートされた資産のためにサブフォルダーを作成するかどうか、またはエンジンによって生成されるエンティティテンプレートに物理を自動的に生成するかどうかを選択できます。
  • また、フィルターオプションもあり、これは多数の資産やノードをインポートする際に便利です。ファイル内の特定のもの、例えばメッシュにのみ関心がある場合に役立ちます。

基本的なモデルインポートは通常次のようになります:

  1. アセットブラウザーでフォルダーを作成または選択します。
  2. モデルファイルをそのフォルダーにドラッグします。
  3. Caveがファイルを解析するのを待ちます。
  4. インポートオプションを確認します。
  5. インポートすべき生成された資産を選択します。
  6. 必要に応じてインポートスケールを調整します。
  7. インポートを確認します。
  8. アセットブラウザーで生成されたアセットを確認します。

インポートオプションは、生成されたアセットを種類ごとにグループ化して表示できます。

これにより、盲目的にすべてを受け入れるのではなく、何をインポートすべきかを決定できます。モデルファイルには、実際に必要なデータ以上のものが含まれている場合があるため、これは便利です。

重要なヒント:

何百もの資産やKenneyやQuaterniusアセットパックのようなアセットパックをダウンロードしている場合、それらのパックは通常、オブジェクトごとに異なるFBXファイルを持っており、各FBXファイル内には、これらのすべての資産で使用されるマテリアルのコピーや、時にはテクスチャのコピーが含まれています。

もし、同じマテリアルのコピーを含むすべての資産をドラッグ&ドロップした場合、Caveは、予想通り、すべてのコピーもインポートします。これにより、プロジェクトに不要なデータが生成され、最終的にゲームのパフォーマンスが非効率になります。これはエンジンの fault ではなく、単に各FBXファイルにマテリアルのコピーがあるからです。

この場合のベストプラクティスは、まず1つのFBXファイルをエンジンにインポートし、そのファイルの中身を確認し、その中のマテリアルを確認することです。この最初のファイルがインポートされ、マテリアルがプロジェクトに取り込まれたら、他のすべてをインポートします。フィルターを使用して、マテリアルとテクスチャのインポートを無効にします。最初のファイルのためにすでにエンジンによってインポートされたからです。次に、インポートボタンを押すと、Caveは既にインポートされたマテリアルを名前で探し、それを使用します。

インポートされたメッシュの理解

インポートされたモデルは、1つのメッシュまたは多くのメッシュを生成することがあります。これは、元のDCCツールでモデルが構築された方法に依存します。

例えば:

ソースモデル 可能なインポート結果
シンプルなクレート 1つのメッシュ、1つのマテリアル、1つのエンティティテンプレート。
部品が分かれたオブジェクト 複数のメッシュとマテリアル、1つのエンティティテンプレート。
アニメーションキャラクター メッシュ、アーマチュア、アニメーション、1つのエンティティテンプレート。

インポート後は、生成されたメッシュ資産と生成されたエンティティテンプレートを確認します。

すべてのインポートで、エンティティテンプレートが生成されます

エンティティテンプレートは、あなたがDCCツール(Blenderなど)で構築したシーンの設定を再現しようとします。つまり、モデリングソフトウェアでレイアウトを作成し、オブジェクトを特定の場所に配置するなどした場合、それはエンティティテンプレートとしてそこに存在します。通常、生のエンティティテンプレートは使用しませんが、オブジェクトをシーンにドラッグしてすぐに識別したり、テンプレートを使用せずにローカルにしてCaveで編集を開始するのに便利です。

アセットをインポートしたら、共通の問題を確認してください:

  • オブジェクトが小さすぎますか?
  • 大きすぎますか?
  • 回転が不正確ですか?
  • 予想外の方法で分割されましたか?
  • 生成されたテンプレートは正しいですか?

アセットをレベル全体で使用する前に、これらの問題をすぐにキャッチする方が良いです。

インポートしたアセットに問題が見つかった場合、Blenderや他のDCCを開いて、適切かどうかを確認する価値があります。また、アセットメッシュをCaveにインポートする前に三角形分割することをお勧めします

重要: 3DモデルをCaveにインポートすると、facesを自動的に三角形分割しようとします。ただし、時には三角形分割の誤りが生じ、3Dモデルに「穴」ができたり、不適切に作成されたfacesが発生することがあります。これを避けるために、DCCモデリングツールを使用して、自分でfacesを三角形分割することを常にお勧めします。


マテリアルとテクスチャの理解

インポートされたモデルは、マテリアルやテクスチャも生成することがあります。

マテリアルは、表面の見た目を制御します。テクスチャは、マテリアルが使用する画像データを提供します。

インポート後は、必ずマテリアルを確認してください:

  • アルベドテクスチャは割り当てられていますか?
  • ノーマルマップは正しく割り当てられていますか?
  • ラフネスやメタリックマップはインポートされていますか?
  • ビューポートでマテリアルは正しく見えますか?

インポートは便利ですが、魔法ではありません。

インポート後にマテリアルを調整するのが通常です。たとえば、ラフネスを調整したり、欠落しているテクスチャを修正したり、ゲームのビジュアルスタイルに適したマテリアル設定を選択したりする必要があります。

マルチマテリアルメッシュ

Caveでは、1つのメッシュは1つのマテリアルを使用します。DCCツール内でオブジェクトが複数のマテリアルを使用している場合、Caveではそれを複数のメッシュとして表現します。

1つのエンティティは、複数のメッシュコンポーネントを持つことができるため、最終的なオブジェクトはシーン内で同じように見えることができます。構造はただ異なるだけです:

複数のマテリアルを持つオブジェクト
  マテリアルAを使用するメッシュコンポーネント
  マテリアルBを使用するメッシュコンポーネント
  マテリアルCを使用するメッシュコンポーネント

これにより、Caveはクリーンな1メッシュ対1マテリアルの関係を持ちながら、複雑なインポートオブジェクトを正しく表示できます。

Caveの動作方法によると、マルチマテリアルメッシュをプロジェクトにインポートすると、アセットブラウザーでメッシュが異なる部分に分割されます**。しかし、Caveは、すべてのメッシュを結合したエンティティテンプレートを作成しようとします。

インポートされたエンティティテンプレート

モデルをインポートすると、Caveは元のセットアップを表すエンティティテンプレートを作成します。このテンプレートは、設定をできるだけ保持するために便利です。

例えば、インポートされた建物は次のようになり得ます:

  • 複数のメッシュアセット。
  • 複数のマテリアルアセット。
  • テクスチャアセット。
  • 各部分を組み合わせる1つのエンティティテンプレート。

そのテンプレートは、通常、シーンにドラッグするのが最も簡単なアセットです。

インポートされたオブジェクトがテンプレートとして正しく見える場合、それを他のCaveテンプレートと同じように再利用できます。目標は、それらのアセットをシーンに持ち込み、プレイ可能な空間に変えることです。

基本的なインポートのヒント

インポートをクリーンに保つ:

  • モデルにはFBXを優先します。
  • 事前にfacesを三角形分割します。
  • オーディオにはOGGを使用します。
  • アセット名は読みやすくします。
  • スペースやPascalCaseを持つ名前を好みます。
  • 整理されたフォルダーにインポートします。
  • インポートスケールを確認します。
  • 生成されたマテリアルを検査します。
  • ビューポートでインポートされたテンプレートをテストします。
  • インポート後に保存します。

インポートは開発の正常な一部です。

小さなステップで行い、結果をチェックしてから、さらに構築を続けます。クリーンなインポートワークフローは、プロジェクトがより多くのカスタムコンテンツを使用し始めるときに多くの時間を節約します。