自己紹介
株式会社digitalbigmoのテクニカルサポートの小池@plinecomです。
最近はDeadline Cloud と日々戦っています
これは何?
Deadline Cloudでカスタマーマネージメントフリート(CMF)を動かすと、Blenderのバージョンも当然来ません。
投げてきたBlenderのバージョンを環境変数に入れたいので、いろいろ調べた結果、やっぱりDeadline Cloud Submitterのコードを直接編集するしかない模様。
以下にその方法を記録しておきます。
改造箇所
1つ目のPythonファイルではバージョンを格納する場所を作ります。
template_filling.py
@dataclass
class BlenderSubmitterUISettings:
"""Settings that the submitter UI will use."""
name: str = field(default="Blender Submission", metadata={"sticky": True})
description: str = field(default="", metadata={"sticky": True})
submitter_name: str = field(default="Blender")
renderer_name: str = field(default="cycles", metadata={"sticky": True})
scene_name: str = field(default="Scene", metadata={"sticky": True})
enable_gpu: bool = field(default=False, metadata={"sticky": True})
gpu_device: str = field(default="None", metadata={"sticky": True})
####################
blender_version: str = field(default="Blender", metadata={"sticky": True})
####################
2つ目のPythonファイルではバージョン情報を控えておきます
open_deadline_cloud_dialog.py
def _create_bundle_internal(
widget: SubmitJobToDeadlineDialog,
job_bundle_dir: str,
settings: tf.BlenderSubmitterUISettings,
queue_parameters: list[JobParameter],
asset_references: AssetReferences,
host_requirements: Optional[dict[str, Any]] = None,
purpose: Optional[JobBundlePurpose] = None,
prompt_for_saving=True,
) -> dict[str, Any]:
"""Create and write Deadline job bundle files to the given directory. Also save sticky settings.
The internal variation exists so that the functionality can be accessed without a UI.
Args:
widget: The submitter dialog widget.
job_bundle_dir: The directory to write the job bundle files to.
settings: The job settings.
queue_parameters: The queue parameters.
asset_references: The asset references.
host_requirements: The host requirements. There are only passed if the user has specified custom host requirements in the UI. If "all available worker hosts" are selected, this is None.
purpose: The purpose of the job bundle.
"""
# Make sure the output path used for submission is absolute
settings.output_path = bpy.path.abspath(settings.output_path)
#####################
settings.blender_version = bpy.app.version_string
#####################
# Run sanity checks on submission
sc.run_sanity_checks(settings, prompt_for_saving)
YAMLは二カ所変えます。一カ所目は変数定義
default_blender_template.yaml
specificationVersion: 'jobtemplate-2023-09'
name: Blender Scene Submission
description:
parameterDefinitions:
- name: BlenderFile
type: PATH
objectType: FILE
dataFlow: IN
userInterface:
control: CHOOSE_INPUT_FILE
label: Blender File
fileFilters:
- label: Blender Files
patterns: ["*.blend"]
- label: All Files
patterns: ["*"]
description: The Blender scene file you want to render.
#######################
- name: BlenderVersion
type: STRING
default: "4.5"
######################
2カ所目は控えていた変数を環境変数に登録
default_blender_template.yaml
steps:
- name: RenderBlender
parameterSpace:
taskParameterDefinitions:
- name: Frame
type: INT
range: "{{Param.Frames}}"
stepEnvironments:
- name: Blender
description: Runs Blender in the background.
###############################
variables:
BLENDER_VERSION: "{{Param.BlenderVersion}}"
##############################
script:
embeddedFiles:
- name: initData
filename: init-data.yaml
type: TEXT
data: |
scene_file: {{Param.BlenderFile}}
render_engine: {{Param.RenderEngine}}
gpu_device: {{Param.GPUDevice}}
render_scene: {{Param.RenderScene}}
view_layer: {{Param.ViewLayer}}
output_dir: {{Param.OutputDir}}
output_file_name: {{Param.OutputFileName}}
output_format: {{Param.OutputFormat}}
プルリク書けって?それはそう。 でも、合意形成の議論するの面倒だなーって
宣伝
株式会社digitalbigmoでは、ソフトの開発から、レンダーファームの構築まで手広くお仕事をしています。お困りの際はお気軽にお問い合わせください。相談は無料で承っております。