カスタム ランドスケープ インポータの作成

ランドスケープ インポート フォーマットをプラグインで新規作成する方法

Choose your operating system:

Windows

macOS

Linux

プラグインを書き出して、ランドスケープ データのインポート用に独自のハイトマップおよびウェイトマップを作成することができます。プラグインによって、ファイルからデータがインポートされるだけでなく、エンジンに新規フォーマットが追加されます。

カスタム インポーターの書き出し

  • インポーターを新規作成するためには、プラグインが ILandscapeHeightmapFileFormat および ILandscapeWeightmapFileFormat を実装するオブジェクトのインスタンスを作成し、これらのオブジェクトをそれぞれ ILandscapeEditorModulemodule::RegisterHeightmapFileFormat ILandscapeEditorModulemodule::RegisterWeightmapFileFormat で登録する必要があります。

  • プラグインの ILandscapeHeightmapFileFormat インターフェースが次の関数をオーバーライドすることが必要です。

    1. const FLandscapeFileTypeInfo& GetInfo() const :このクラスを処理するファイル タイプ、そしてエクスポート処理のサポート有無を示す型の情報を返します。

    2. FLandscapeHeightmapInfo Validate(const TCHAR* HeightmapFilename) const - 名前のついたファイルを承認、またはエラーコードとメッセージをつけて却下します。

    3. FLandscapeHeightmapImportData Import(const TCHAR* HeightmapFilename, FLandscapeFileResolution ExpectedResolution) const - 実際にファイルをインポートします。

    4. void Export(const TCHAR* HeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const - エクスポートできる形式であれば、エクスポートします ( GetInfo からの戻り値を参照)。コンパイルにオーバーライドを必要としない唯一の関数です。ただし、オーバーライドせずに呼び出すと、 check を呼び出します。

    5. (Destructor) - このインターフェースを実装するクラスは、インターフェース クラスへのポインタによって削除されるので、仮想ディストラクタを使用します。

  • 戻り値の型が若干違いますが、 ILandscapeWeightmapFileFormat インターフェースを実装している状態とほぼ同じです。

    1. const FLandscapeFileTypeInfo& GetInfo() const - このクラスを処理するファイル タイプがどれか、そしてエクスポート処理をサポートしているかどうかを表示する型情報を返します。

    2. FLandscapeWeightmapInfo Validate(const TCHAR* WeightmapFilename) const - 名前のついたファイルを承認、またはエラーコードとメッセージをつけて却下します。

    3. FLandscapeWeightmapImportData Import(const TCHAR* WeightmapFilename, FLandscapeFileResolution ExpectedResolution) const - 実際にファイルをインポートします。

    4. void Export(const TCHAR* WeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const - エクスポートできる形式であれば、エクスポートします ( GetInfo からの戻り値を参照)。コンパイルにオーバーライドを必要としない唯一の関数です。ただし、オーバーライドせずに呼び出すと、 check を呼び出します。

    5. (Destructor) - このインターフェースを実装するクラスは、インターフェース クラスへのポインタによって削除されるので、仮想ディストラクタを使用します。

  • 詳細とサンプルについては、 LandscapeFileFormatInterfaces.h のインターフェース、 LandscapeFileFormatPng.cpp LandscapeFileFormatPng.h の.PNG 実装、 LandscapeFileFormatRaw.cpp LandscapeFileFormatRaw.h の .RAW 実装をご覧ください。このコードはすべて、エンジンの LandscapeEditor モジュールに入っています。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル