커스텀 랜드스케이프 임포터 만들기

플러그인을 통해 새로운 랜드스케이프 임포트 포맷을 만드는 방법을 안내합니다.

Choose your operating system:

Windows

macOS

Linux

랜드스케이프 데이터를 임포트하기 위한 자체 하이트맵 및 웨이트맵 포맷을 만들려면 플러그인을 작성해야 합니다. 작성한 플러그인을 통해 새로운 포맷을 엔진에 추가하고 파일에서 데이터를 임포트할 수 있습니다.

커스텀 임포터 작성하기

  • 새 임포터를 만들려면, 플러그인에서 ILandscapeHeightmapFileFormatILandscapeWeightmapFileFormat 을 구현하는 오브젝트의 인스턴스를 생성하고, 이러한 오브젝트를 각각 ILandscapeEditorModulemodule::RegisterHeightmapFileFormatILandscapeEditorModulemodule::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.cppLandscapeFileFormatPng.h 의 .PNG 구현, LandscapeFileFormatRaw.cppLandscapeFileFormatRaw.h 의 .RAW 구현을 참고하면 됩니다. 이 모든 코드는 엔진의 LandscapeEditor 모듈에 있습니다.