本日は Blender2.8 の小ネタ枠です。
Blender2.8でベイクする際にサンプリング数を減らして高速化する手順を記事にします。
ベイク時のサンプリング数
例えば以下のような単色のディフューズをテクスチャにベイクします。
デフォルトの設定(CPU実行)でベイクを実行した場合、10秒ほど時間がかかりました。
このようなノイズの少ないベイクの場合、デフォルト設定ではサンプリング数が多すぎて無駄な時間がかかってしまいます。
[レンダー]タブを開き、[サンプリング]パネルの[レンダー]の[サンプリング数]を 1 に変更します。
すると、1秒もかからずベイクが完了しました。
ベイク結果も全く問題ありません。
pythonスクリプト例
本処理を python スクリプトで記述した例を以下に示します。
# 現在選択中のオブジェクトからアクティブオブジェクトへカラー情報をベイクする def bake_diffuse_coloronly(): """現在選択中のオブジェクトからアクティブオブジェクトへカラー情報をベイクする """ # レンダリングエンジンを CYCLES に切り替える bpy.context.scene.render.engine = 'CYCLES' # GPUの設定を行う bpy.data.scenes["Scene"].cycles.device = 'GPU' # CUDAを選択する bpy.context.preferences.addons['cycles'].preferences.compute_device_type = 'CUDA' # デバイスの一覧を取得する for devices in bpy.context.preferences.addons['cycles'].preferences.get_devices(): for device in devices: # デバイスタイプがCUDAならば利用対象とする if device.type == 'CUDA': print("利用可能なGPUを検出しました:" + device.name) device.use = True # render.bake の設定項目を予め設定する bake_setting = bpy.context.scene.render.bake # ベイクの影響から直接照明を無効化する bake_setting.use_pass_direct = False # ベイクの影響から間接照明を無効化する bake_setting.use_pass_indirect = False # ベイクの影響からカラーを有効化する bake_setting.use_pass_color = True # [選択->アクティブ]のベイクを有効化する bake_setting.use_selected_to_active = True # レイの距離を 0.001 (近距離)に設定する bake_setting.cage_extrusion = 0.01 # サンプリング数を減らす bpy.data.scenes["Scene"].cycles.samples = 1 # サンプリング数を減らす(ビューポートの場合) bpy.data.scenes["Scene"].cycles.preview_samples = 1 # ディフューズタイプのベイクを実行する # ベイクの種類 # ('COMBINED', 'AO', 'SHADOW', 'NORMAL', 'UV', 'ROUGHNESS', # 'EMIT', 'ENVIRONMENT', 'DIFFUSE', 'GLOSSY', 'TRANSMISSION') # (render.bake 以外の設定は引数で指定する必要あり) bpy.ops.object.bake(type='DIFFUSE', margin=16) return