🎨

Blender Principled BSDF と OpenPBR(MaterialX) + USD のメモ

に公開
2025/12/25

対象

Blender 4.5+(4.5 から MaterialX 対応)

Colorspace

OpenPBR では color の colorspace はデフォでは ACEScg である.
Blender 5.0 から ACES 対応されました. https://zenn.dev/syoyo/articles/4bcc0e3f7024d8

ただ, 現状 Blender の bug のようで, USD + MaterialX export では color や texture colorSpace
は Linear Rec.709 の値が出力される...
(USD ファイルには colorspace 情報が出力されないため, 判定ができない)

Blender PrincipledBSDF と OpenPBR のマッピング

概ね一対一に対応する.
ただ base は PrincipledBSDF には weight はない
(1 レイヤーで物質のベースとなる色という概念から. base の割合は metallic などから算出. 一方 OpenPBR では多層レイヤーでそれぞれで weight がある)

Parameters

OpenPBR の定義
https://academysoftwarefoundation.github.io/OpenPBR/#parameterreference

Base + diffuse

base_color(color3)
base_weight(Principled BSDF には無し(1 固定))
base_metalness(Blender Metallic に対応)

base_diffuse_roughness

geometry_normal(norml map)
geometry_tangent

Specular

GGX type の項目は無い

specular_color
specular_ior
specular_roughness
specular_roughness_anisotropy
specular_weight

Coat

coat_darkening
coat_ior
coat_roughness
coat_rougness_anisotropy
coat_weight
geometry_coat_normal
geometry_coat_tangent

Fuzz

Principle BSDF での Sheen に対応

fuzz_color
fuzz_weigfht

Subsurface

subsurface_color
subsurface_radius
subsurface_radius_scale
subsurface_scatter_anisotropy
subsurface_weight

Thin film

thin_film_ior
thin_film_thickness
thin_film_weight
geometry_thin_walled(bool)

Transmission

transmission_color
transmission_depth
transmission_dispersion_abbe_number
transmission_dispersion_scale
transmission_scatter
transmission_scatter_anisotropy
transmission_weight

Opacity

geometry_opacity(float. Blender で Alpha に対応)

ND_texcoord_vector2

primvar reader 設定がなく, デフォルトは Primary UVSet name を見る.

https://github.com/PixarAnimationStudios/OpenUSD/blob/b46f16c7b22a7a6ffa9249ca320571df2a1bc085/pxr/usd/usdMtlx/parser.cpp#L481

Primary UVSet name はデフォは "st" だが, 環境変数で変更可能!

https://github.com/PixarAnimationStudios/OpenUSD/blob/b46f16c7b22a7a6ffa9249ca320571df2a1bc085/pxr/usd/usdMtlx/parser.cpp#L61

ややこしいねぇ.

Discussion