概要
簡易的にZBrushで作成したモデルをBlenderでレンダリングするTipsです。
対象
ZBrush内蔵のレンダリング機能はちょっとアレだけど、KeyShotなんて買えないのでBlenderで何とかしたいよと考えている方向けです。
Zbrush
モデルをエクスポート
出力したいサブツールのみを表示して、Zプラグイン>FBXエクスポートインポート
オプションを表示のみに変更し、エクスポートを実行します。
Blender
モデルをインポート
メインメニュー>ファイル>インポート>FBX(.fbx)を実行します。
モデルをエクスポートで出力したFBXファイルを選択しインポートします。
インポート設定でScaleを100に設定します。
もしくはエクスポート時にZbrushのエクスポートのスケールを100にします。
※データフォーマットの関係でスケールが異なるためです。
VertexColorを適用
読み込んだ直後の状態ではZBrushで設定した色がモデルに設定されていません。
ZBrushで設定した色を適用するためにはすべてのメッシュオブジェクトのマテリアルのBaseColorにColorAttributeを割り当てるのですが、サブツールが多いととても面倒です。
手間を省くためスクリプトで実行します。
import bpy
def attachvertexcolor(obj):
if obj is None or obj.type != "MESH":
return
name = obj.data.name
mesh = obj.data
nodes = mesh.materials[name].node_tree.nodes
links = mesh.materials[name].node_tree.links
colorattribute = nodes.new(type='ShaderNodeVertexColor')
shader=nodes.get('Principled BSDF')
links.new(colorattribute.outputs['Color'], shader.inputs['Base Color'])
def main():
if len(bpy.data.collections) > 0:
print('COLLECTIONS')
for col in bpy.data.collections:
if len(col.objects) > 0:
for obj in col.objects:
attachvertexcolor(obj)
else:
print('NO_COLLECTIONS')
if __name__ == "__main__":
main()
メインメニュー>スクリプトを選択し、スクリプトビューを表示します。
上記スクリプトを張り付けて実行します。
シェーディングモードにするとモデルに色がついています。
ライティング
お好みでライティングを設定します。
レンダリング
RenderEngineはデフォルトではEeveeになっていますが、
Eeveeはリアルタイムレンダで処理は高速ですが、Cyclesにするとより繊細なレンダリングが可能です。