Substance Automation Toolkitを利用してHDRP向けLOD0テクスチャをLOD1、LOD2に転写するツールを作成した

はじめに

以前に、UnityのHDRP向けのLOD対応のテクスチャを作る手順をブログ記事としてメモしました。 この手順の中では、作成したLOD0のテクスチャをSubstance Designerを利用してLOD1とLOD2に転写していました。この転写の手順が若干複雑で面倒でした。 そこで今回はSubstance Automation Toolkitを利用して手順を簡略化するツールを作成したので紹介します。

2020 01 17 15 39 31

  • HDRP: 7.1.7
  • Python: 3.8.1
  • Substance Automation Toolkit: 2019.2.3

Substance Automation Toolkitのインストール

SubstanceのダウンロードページからSubstance Automation Toolkitをインストールします。

その後、インストールパスのC:\Program Files\Allegorithmic\Substance Automation Toolkit\Python API\Pysbs-2019.2.3_install.batを実行します。 実行にはPythonのパスが通っている必要があります。

Windows以外の場合はpipを使ってインストールする感じでしょうか。

無事インストールできていれば、Pythonからimport pysbsができるようになっているはずです。

HDRP-LOD-Texture-Bakerの使い方

GitHubから好きな場所にクローンします。

https://github.com/MatchaChoco010/HDRP-LOD-Texture-Baker

クローンしたディレクトリに移動して次のコマンドを実行します。

$ python main.py

次のようなウィンドウが立ち上がります。

2020 01 17 15 22 45

ハイポリと各LODのfbxを指定できます。

LOD1とLOD2に転写する転写元のLOD0のテクスチャを指定できます。 BaseColor、MaskMap、Normalの他に、表面のNormalの生成用にMicroNormalかHeightを追加で指定できます。 LOD0のテクスチャをSubstance Painterから出力する際に、MeshのNormalを除いたSurfaceのMeshをMicroNormalとして出力するか、SurfaceのHeightを出力し、それを指定します。

2020 01 17 15 30 31

output sizeはテクスチャサイズの一辺の大きさの2のn乗のnを指定します。 11にしておくと出力サイズは2の11乗で2048x2048になります。

ひととおり項目を設定して「Bake」ボタンを押せばベイクが始まります。

2020 01 17 15 34 44

ベイクにはそれなりの時間がかかります……。 ベイクされたテクスチャはOutputのDirectoryで指定したディレクトリの下の各LODのディレクトリに格納されています。

2020 01 17 15 50 09

プログラムについて

今回作ったmain.pyのプログラムがとても雑なのでかなりアレですが……。 bake()関数内ですべてのベイク処理を順番に行っています。

GUIはPythonにくっついてくるtkinterを利用しています。

pysbsの使い方は公式のウェブサイトの他に、次のブログ記事を参考にしました。

Substance Automation Toolkitによる簡単自動化 - もんしょの巣穴ブログ Ver2.0

おわりに

Substance Automation Toolkitを使うことでかんたんにこういったツールが作れて便利です。

アーティストの業務を簡略化するツールを作るのってなんだかテクニカルアーティストみたいでかっこいいですね。 趣味の個人開発なので、アーティストもTAもどちらも自分自身なのですが……。

今回のツールはまだ色々機能が足りていない部分もある気がするので、 このプログラムをそのままつかうというよりも、 あくまで一例として見ていただいて 各自必要に応じてプログラムを作っていただくのがよいかと思います……。