Substance Automation Toolkitを利用してHDRP向けLOD0テクスチャをLOD1、LOD2に転写するツールを作成した
はじめに
以前に、UnityのHDRP向けのLOD対応のテクスチャを作る手順をブログ記事としてメモしました。 この手順の中では、作成したLOD0のテクスチャをSubstance Designerを利用してLOD1とLOD2に転写していました。この転写の手順が若干複雑で面倒でした。 そこで今回はSubstance Automation Toolkitを利用して手順を簡略化するツールを作成したので紹介します。
- 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
次のようなウィンドウが立ち上がります。
ハイポリと各LODのfbxを指定できます。
LOD1とLOD2に転写する転写元のLOD0のテクスチャを指定できます。 BaseColor、MaskMap、Normalの他に、表面のNormalの生成用にMicroNormalかHeightを追加で指定できます。 LOD0のテクスチャをSubstance Painterから出力する際に、MeshのNormalを除いたSurfaceのMeshをMicroNormalとして出力するか、SurfaceのHeightを出力し、それを指定します。
output sizeはテクスチャサイズの一辺の大きさの2のn乗のnを指定します。 11にしておくと出力サイズは2の11乗で2048x2048になります。
ひととおり項目を設定して「Bake」ボタンを押せばベイクが始まります。
ベイクにはそれなりの時間がかかります……。 ベイクされたテクスチャはOutputのDirectoryで指定したディレクトリの下の各LODのディレクトリに格納されています。
プログラムについて
今回作ったmain.pyのプログラムがとても雑なのでかなりアレですが……。
bake()
関数内ですべてのベイク処理を順番に行っています。
GUIはPythonにくっついてくるtkinterを利用しています。
pysbsの使い方は公式のウェブサイトの他に、次のブログ記事を参考にしました。
Substance Automation Toolkitによる簡単自動化 - もんしょの巣穴ブログ Ver2.0
おわりに
Substance Automation Toolkitを使うことでかんたんにこういったツールが作れて便利です。
アーティストの業務を簡略化するツールを作るのってなんだかテクニカルアーティストみたいでかっこいいですね。 趣味の個人開発なので、アーティストもTAもどちらも自分自身なのですが……。
今回のツールはまだ色々機能が足りていない部分もある気がするので、 このプログラムをそのままつかうというよりも、 あくまで一例として見ていただいて 各自必要に応じてプログラムを作っていただくのがよいかと思います……。