60 lines
2.7 KiB
Python
60 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
import hashlib
|
|
import json
|
|
import pathlib
|
|
import sys
|
|
|
|
import bpy
|
|
|
|
|
|
WASM_SHA256 = "25bc1e286fd3b72c2c7c082b85a29b2d0bb109588a6dc0de5be94fcdc37cc88c"
|
|
|
|
|
|
def digest(value):
|
|
return hashlib.sha256(value.encode("utf-8") if isinstance(value, str) else value).hexdigest()
|
|
|
|
|
|
def main(output):
|
|
bpy.ops.wm.read_factory_settings(use_empty=True)
|
|
scene = bpy.context.scene
|
|
scene.name = "WBV2P5003ServerJobScene"
|
|
scene.render.engine = "BLENDER_EEVEE"
|
|
scene.render.resolution_x = 32
|
|
scene.render.resolution_y = 32
|
|
scene.render.resolution_percentage = 100
|
|
scene.render.image_settings.file_format = "PNG"
|
|
scene.render.image_settings.color_mode = "RGBA"
|
|
scene.render.image_settings.color_depth = "8"
|
|
bpy.ops.mesh.primitive_cube_add(size=2, location=(0, 0, 0))
|
|
cube = bpy.context.object
|
|
cube.name = "WBV2P5003ServerCube"
|
|
cube.data.name = "WBV2P5003ServerMesh"
|
|
material = bpy.data.materials.new("WBV2P5003ServerMaterial")
|
|
material.diffuse_color = (0.2, 0.55, 0.9, 1)
|
|
cube.data.materials.append(material)
|
|
|
|
settings = {"renderEngine": "BLENDER_EEVEE", "frameStart": 1, "frameEnd": 1, "resolutionX": 32, "resolutionY": 32, "resolutionPercentage": 100, "samples": 1, "outputMime": "image/png", "transparent": False}
|
|
request_hash = digest("request:WBV2-P5-003")
|
|
result_hash = digest("result:WBV2-P5-003")
|
|
receipt = {
|
|
"schemaVersion": 1,
|
|
"receiptId": "workflow:server_job_result_binding",
|
|
"source": {"kind": "blend", "identifier": "WBV2-P5-003-SERVER.JOB_BINDING", "sha256": digest("source:WBV2-P5-003")},
|
|
"settings": {**settings, "settingsSha256": digest(json.dumps(settings, sort_keys=True, separators=(",", ":")))},
|
|
"build": {"version": "5.2.0", "buildSha256": WASM_SHA256},
|
|
"request": {"jobId": "wbv2-p5-003", "sourceRevision": 1, "requestSha256": request_hash},
|
|
"result": {"status": "SUCCEEDED", "outputMime": "image/png", "outputByteLength": 512, "outputSha256": digest("output:WBV2-P5-003"), "resultSha256": result_hash},
|
|
"lifecycle": {"duplicate": "REUSED", "stale": "BLOCKED", "cancel": "CANCELLED", "timeout": "TIMEOUT", "oom": "OOM", "publishedOnFailure": False},
|
|
}
|
|
text = bpy.data.texts.new("WBV2-P5-003-ServerJobBindingReceipt")
|
|
text.write(json.dumps(receipt, sort_keys=True, separators=(",", ":")))
|
|
scene.frame_set(1)
|
|
bpy.ops.wm.save_as_mainfile(filepath=str(pathlib.Path(output).resolve()), check_existing=False, compress=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
arguments = sys.argv[sys.argv.index("--") + 1 :]
|
|
if len(arguments) != 1:
|
|
raise SystemExit("usage: blender -b --factory-startup --python WBV2-P5-003.py -- OUTPUT")
|
|
main(arguments[0])
|