見出し画像

TouchDesignerでPLATEAU(プラトー)のテクスチャ付きFBXを読み込む

先日公開された3D都市モデルPLATEAUの3DデータをTouchDesignerで読み込む方法を解説していきます。

LOD2ではモデルにテクスチャがついています。
しかしTouchDesignerでLOD2のFBXを読み込んでもテクスチャは反映されません。
↓ こんな感じ

画像1

読み込んだFBXの中身を見てみると、マテリアルのDiffuseMapに使われているTOPが読み込まれていません。

画像2

このdiffusemap名前の付いたSelectTOPに適当な画像を読み込ませてあげる必要があります。

データをダウンロードしてきた時点ではテクスチャ画像は用意されていません。
しかし、一度TouchDesignerでFBXを読み込むと、FBXファイルがあるフォルダにファイルネーム.fbm というフォルダができ、その中に大量の画像データが生成されます。

ではどの画像を読み込めばいいかというと、上のネットワーク図にもあるようにマテリアルのオペレータの名前がテクスチャの名前になっているので先ほど生成された画像から同じ名前のものを探してきて読み込ませます。

画像3

しかし、FBXの中身はたくさんのオブジェクトで細分化されているため、ひとつひとつ手で読み込んでいくのは現実的ではありません。

そこでFBXの読み込み時に処理を行うことのできるコールバック関数を使用して読み込みを簡略化させていきたいと思います。

まず、なぜか生成された大量の画像を読み込みます。
FBXと同じ階層にtexture_imagesというBaseCOMPを作り、画像をすべて選択してドラッグアンドドロップで読み込ませます。

次にFBXCOMPの下についているCallbackDATを編集します。
ここではFBXインポート時に作られるオペレータに対して処理をすることができます。

def onImport(comp, allOps, newOps):
	for c in allOps:
		if c.name == 'diffusemap':
			tex_name = c.parent().findChildren(type=MAT)[0].name
			textureComp = comp.parent().op('texture_images')
			c.par.top = textureComp.op(tex_name)
		pass
	return

上記のスクリプトをFBXのコールバックに打ち込んだらFBXCOMPのインポートボタンを押して再読み込みしてください。

読み込めましたーー!!

画像4

↓ 一応ファイルも(パスとかは適当に書き換えてください)

さくっと解説とサンプルファイルですが、役に立ったりいいなってなったら投げ銭でもしてくれると嬉しいですーー

ここから先は

0字

¥ 100

ありがとうございます!! 少しでも役に立てたら嬉しいです!