1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Deadline Cloudで、環境変数にBlenderのバージョンを入れたかった

1
Posted at

自己紹介

株式会社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では、ソフトの開発から、レンダーファームの構築まで手広くお仕事をしています。お困りの際はお気軽にお問い合わせください。相談は無料で承っております。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?