本日はBlender枠です。
〇環境
・Windows11PC
・Blender4.1
〇レンダリング設定の確認と変更
筆者は現在学生向けに3DCGの指導をしている中でBlenderの指導もしており、提出物などを支持することもありますが、よく「レンダリングが終わりません」、「影の設定がおかしくなりました」という学生からの声を聴きます。
見てみたらデバイスがCPUでレンダリングしていたりCycles or Eeveeでサンプリング数など
〇レンダーエンジンの取得とコードによる変更
Renderエンジンはbpy.context.scene.render.engineによって取得できます。
https://docs.blender.org/api/current/bpy.types.RenderSettings.html#bpy.types.RenderSettings
レンダーエンジンを変更するためにはこの値を書き換えます。
次のようになります。
import bpy
# 現在のレンダーエンジンの取得
current_engine = bpy.context.scene.render.engine
# 現在のレンダーエンジンを表示
print(f"現在のレンダーエンジンは: {current_engine}")
# EeveeであればCyclesに切り替える
if current_engine == 'BLENDER_EEVEE':
bpy.context.scene.render.engine = 'CYCLES'
print("レンダーエンジンをEeveeからCyclesに変更しました。")
else:
print("レンダーエンジンはEeveeではありません。変更は行いません。")
これによってスクリプトからCyclesにかえることができました。

次にデバイスを変えていきます。 GPUを搭載しているPCでは一般的にCPUではなくGPU演算によるレンダリングを使用します。
これはcycles.deviceに代入します。
bpy.context.scene.cycles.device = 'GPU' bpy.context.preferences.addons['cycles'].preferences.compute_device_type = 'CUDA' #bpy.context.preferences.addons['cycles'].preferences.compute_device_type = 'OPTIX' (OptiXにしたい場合)
これによってGPU演算をOptiXで使用する設定が適応されます。
〇サンプリング数を設定
次にサンプリング数を設定していきます。
コードとしては次のようになります。
bpy.context.scene.cycles.samples = 128 # レンダー時のサンプリング数 bpy.context.scene.cycles.preview_samples = 64 # ビューポートのサンプリング数
これによってサンプリング数を設定できます。

〇間接照明
筆者は間接照明の値を0に設定しています。
これはCyclesで間接照明によってシーン全体が明るくなることを期待してますがこちらもPythonで設定可能です。
# ライトパス設定:間接照明の制限を0に設定 bpy.context.scene.cycles.sample_clamp_indirect = 0.0 # サンプリング数の設定 bpy.context.scene.cycles.samples = 128 # レンダー時のサンプリング数 bpy.context.scene.cycles.preview_samples = 64 # ビューポートのサンプリング数

このようにbpy.context.scene.cyclesを使用することでレンダリング設定を一括で設定できます。
例えばプリセットとして保存しておいていくつかから動的に設定するなどの使い方が考えられそうです。
本日は以上です。
〇コード全文
# ライトパス設定:間接照明の制限を0に設定 bpy.context.scene.cycles.sample_clamp_indirect = 0.0 # サンプリング数の設定 bpy.context.scene.cycles.samples = 128 # レンダー時のサンプリング数 bpy.context.scene.cycles.preview_samples = 64 # ビューポートのサンプリング数