はじめに
この記事はUnrealEngineアドベントカレンダー2025 シリーズ3 Interchangeを使ってみた。です。
UnrealEngineでテクスチャをインポートするたび、テクスチャアセットを開いてポチポチとテクスチャ設定を変更しつづけてきたのですが、Interchangeというのも用意されているので一回使ってみようとやってみました。
検証環境は UnrealEngine5.7.1 になります。
Interchangeってなんだ?というのは 公式サイトに解説がありますので御覧ください
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/interchange-framework-in-unreal-engine
インターチェンジ フレームワーク は Unreal Engine のインポートとエクスポートのフレームワークです。ファイル形式に依存せず、非同期であり、カスタマイズ可能、そしてランタイムで使用することができます。
アセットをインポートする手順についてもドキュメントがあります。
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/importing-assets-using-interchange-in-unreal-engine
公式サンプル
Import Customization with Interchange というチュートリアルが公開されていて、これを見るとFBX、USD、glTF、テクスチャ、その他ファイルについてのInterchangeを使ったカスタマイズが紹介されています。
Demo Projectが公開されているのでダウンロードして中身を見ましょう。
C++,Blueprint,Pythonそれぞれの方法が書いてあるので読み解けば、どうすればいいのかはわかるようになると思います。
今回やりたいこと
Interchangeを使って、特定のフォルダにインポートしたテクスチャの圧縮設定をカスタマイズする。
これを実現する方法を調べていきます。
サンプルを読みながらやってみた
公式ドキュメントやインターネット上の記事を読んでも3DモデルのFBXをインポートする時の情報が多く、単純にテクスチャをインポートする時のカスタマイズは中々見当たりませんでした。
公式サンプルにはテクスチャそのもののインポートをカスタマイズする手順があったのでこれを読み解いてやっていきます
Blueprintを使ってInterchangePipelineアセットを作る
まずContentフォルダ内で右クリックからInterchange→Interchange Blueprint Pipelineを選択してアセットを作成します。

名前は適当にCustomTexturePipelineとします。
プロジェクト設定のInterchangeを編集する
次に作成したCustomTexturePipelineアセットをプロジェクト設定のInterchangeを開きます。
ContentImportSettingsのツリーから、Pipeline Stacksを開きTexturesのPipelinesに作成したCustomTexturePipelineアセットを追加します。
CustomTexturePipelineのノードを実装する
CustomTexturePipelineのBlueprintを開きFunctionsのOverrideから ScriptedExecutePipeline ノードを実装します。
まず任意のフォルダにインポートされてるかを、ContentBasePathから判定しています。
次にBaseNodeContainerノードから GetNodes を呼び出して全インポートアセットを対象にします。ClassNode には InterchanteTexture2DFactoryNode を指定します。
後はCast To InterchangeTexture2DFactoryNode にキャストしたノードから SetCustom***系の関数を呼び出していきます。
SetCustomComporessionSettingsのAttributeValueはByteの直指定になっていて、BC7の圧縮指定にするため11を入力しています。

注意点
一度インポートした後のアセットで、Reimportを実行してもノードは実行されるが再設定されませんでした。
検証中にReimportを行ってノードは実行されるが設定が変わらず、結構悩みました。
今回サンプル読み解いていない箇所に対応方法があるのかもしれません。
終わりに
Interchangeを使ってのインポート時のカスタマイズいかかでしたか?
アセットインポート後の設定忘れで思った動作にならなくて変なバグに悩まされるといったことはあります。
アセットの規約を決めたら自動化できるところは自動化していきたいですね。
サンプルではフォルダーの自動生成も行っています。
アセットの命名ルールからインポート先を自動的に決める、命名規則違反でインポートさせない等色々高度な制御をしていけそうですね。
Interchangeに付いての記事が増えてくれると嬉しいです。


