環境
- Windows
- Adobe Substance 3D Painter 10.1.2
PythonとJavaScriptのどちらを選択するべきか?
Substance 3D Painter APIはJavaScriptとPythonの2言語に対応しています。
ただし、完全に互換性があるわけではありません。
ではどちらを選択するべきかという話ですが、 下記の観点からPythonをおすすめします。
デバッグのしやすさ
Substance 3D PainterにはPythonに対応したコンソールはありますが、JavaScriptに対応したコンソールはありません。
ただし、10.1.2現在ではPythonに関しても1行ずつしか実行できないため扱いやすさについてはやや難があります。
API の更新状況
Python APIに関しては更新が続いていますが、JavaScript APIに関しては8.3.0以降 更新が止まっています。今後、更新が入る可能性はもちろんありますが、10.1.2時点では目立った更新がありません。
別言語のコード評価
Substance 3D Painter APIの厄介な点として、JavaScript APIにしか存在しないAPI (shaderなど) とPython API にしか存在しないAPI (layerstackなど) があります。
ただし、Python API については js モジュールがあり、JavaScript コードを評価して実行できるためこの問題に対処できます。
一方、JavaScript APIではPython APIのコードを評価する手段がないため、Python API に比べてできることに制限があります。
返り値
JavaScript APIでは戻り値が文字列のケースが多く取得できる情報も限定的ですが、 Python APIではオブジェクトを返します。
例えば サンプルデータの PreviewSphere
に対して環境マップのリソース情報を取得する処理では下記のような結果になります。
alg.display.getEnvironmentResource();
// 戻り値は文字列
// resource://starter_assets/Glazed Patio?version=19588866ffc0ba91e0e23edf27a0abae89691e87.image
substance_painter.display.get_environment_resource()
# 戻り値はResourceID
# ResourceID(context='starter_assets', name='Glazed Patio', version='19588866ffc0ba91e0e23edf27a0abae89691e87.image')