以下の内容はhttps://redhologerbera.hatenablog.com/entry/2024/08/19/230454より取得しました。


Blender4.1でPythonを使用してレンダリング設定を書き換える。

本日は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  # ビューポートのサンプリング数



以上の内容はhttps://redhologerbera.hatenablog.com/entry/2024/08/19/230454より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14