2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Interchangeを使って特定のフォルダにインポートしたテクスチャ設定をカスタマイズする

Last updated at Posted at 2025-12-12

はじめに

この記事は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を選択してアセットを作成します。
image.png
名前は適当にCustomTexturePipelineとします。

プロジェクト設定のInterchangeを編集する

次に作成したCustomTexturePipelineアセットをプロジェクト設定のInterchangeを開きます。
ContentImportSettingsのツリーから、Pipeline Stacksを開きTexturesのPipelinesに作成したCustomTexturePipelineアセットを追加します。

image.png

CustomTexturePipelineのノードを実装する

CustomTexturePipelineのBlueprintを開きFunctionsのOverrideから ScriptedExecutePipeline ノードを実装します。

image.png

こんな感じのノードになります。
image.png

まず任意のフォルダにインポートされてるかを、ContentBasePathから判定しています。
次にBaseNodeContainerノードから GetNodes を呼び出して全インポートアセットを対象にします。ClassNode には InterchanteTexture2DFactoryNode を指定します。
後はCast To InterchangeTexture2DFactoryNode にキャストしたノードから SetCustom***系の関数を呼び出していきます。
SetCustomComporessionSettingsのAttributeValueはByteの直指定になっていて、BC7の圧縮指定にするため11を入力しています。
image.png

注意点

一度インポートした後のアセットで、Reimportを実行してもノードは実行されるが再設定されませんでした。
検証中にReimportを行ってノードは実行されるが設定が変わらず、結構悩みました。
今回サンプル読み解いていない箇所に対応方法があるのかもしれません。

終わりに

Interchangeを使ってのインポート時のカスタマイズいかかでしたか?
アセットインポート後の設定忘れで思った動作にならなくて変なバグに悩まされるといったことはあります。
アセットの規約を決めたら自動化できるところは自動化していきたいですね。

サンプルではフォルダーの自動生成も行っています。
アセットの命名ルールからインポート先を自動的に決める、命名規則違反でインポートさせない等色々高度な制御をしていけそうですね。
Interchangeに付いての記事が増えてくれると嬉しいです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?