Skip to content

Commit fe6189a

Browse files
authored
Merge pull request #9 from ynput/enhancement/create_render_product
2 parents 374d720 + f09cfc6 commit fe6189a

File tree

15 files changed

+1645
-60
lines changed

15 files changed

+1645
-60
lines changed

client/ayon_cinema4d/api/commands.py

Lines changed: 66 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@
44
from ayon_core.pipeline.colorspace import (
55
get_current_context_imageio_config_preset,
66
)
7+
from ayon_core.settings import get_current_project_settings
78
from .lib import (
89
set_resolution_from_entity,
910
set_frame_range_from_entity
1011
)
11-
12+
from .lib_renderproducts import (
13+
find_video_post,
14+
REDSHIFT_RENDER_ENGINE_ID,
15+
set_scene_ocio_config
16+
)
1217
import c4d
1318

1419
log = logging.getLogger(__name__)
1520

16-
REDSHIFT_RENDER_ENGINE_ID = 1036219
17-
1821

1922
def reset_frame_range():
2023
task_entity = get_current_task_entity()
@@ -27,7 +30,10 @@ def reset_resolution():
2730

2831

2932
def reset_colorspace():
30-
ocio_config = get_current_context_imageio_config_preset()
33+
project_settings = get_current_project_settings()
34+
ocio_config = get_current_context_imageio_config_preset(
35+
project_settings=project_settings
36+
)
3137
if not ocio_config:
3238
log.info("No ocio config set.")
3339
return
@@ -37,30 +43,66 @@ def reset_colorspace():
3743
doc[c4d.DOCUMENT_COLOR_MANAGEMENT] = c4d.DOCUMENT_COLOR_MANAGEMENT_OCIO
3844
doc[c4d.DOCUMENT_OCIO_CONFIG] = "$OCIO"
3945

40-
# TODO: Get preferred OCIO settings from project settings
41-
# colorspace: str = "colorspace"
42-
# display: str = "display"
43-
# view: str = "view"
44-
#
45-
# doc[c4d.DOCUMENT_OCIO_RENDER_COLORSPACE] = colorspace
46-
# doc[c4d.DOCUMENT_OCIO_DISPLAY_COLORSPACE] = display
47-
# doc[c4d.DOCUMENT_OCIO_VIEW_TRANSFORM] = view
48-
# doc[c4d.DOCUMENT_OCIO_VIEW_TRANSFORM_THUMBNAILS] = view
49-
#
50-
# # Iterate over the video post to find one matching the render engine.
51-
# render_data = c4d.documents.GetActiveDocument().GetActiveRenderData()
52-
# video_post = render_data.GetFirstVideoPost()
53-
# while video_post:
54-
# # Set redshift render colorspace
55-
# if video_post.CheckType(REDSHIFT_RENDER_ENGINE_ID):
56-
# _set_redshift_colorspace(video_post, colorspace, display, view)
57-
# video_post = video_post.GetNext()
46+
# Set preferred OCIO settings from project settings
47+
workfile = project_settings["cinema4d"]["imageio"]["workfile"]
48+
if workfile["enabled"]:
49+
50+
set_scene_ocio_config(
51+
doc,
52+
config="$OCIO",
53+
display=workfile["display"],
54+
view=workfile["view"],
55+
colorspace=workfile["render"],
56+
thumbnails=workfile["thumbnails"],
57+
)
58+
59+
render_data = doc.GetActiveRenderData()
60+
rs_video_post = find_video_post(render_data, REDSHIFT_RENDER_ENGINE_ID)
61+
if rs_video_post is not None:
62+
_set_redshift_colorspace(
63+
rs_video_post,
64+
render=workfile["render"],
65+
display=workfile["display"],
66+
view=workfile["view"],
67+
)
68+
69+
c4d.EventAdd()
70+
71+
72+
def reset_render_settings():
73+
doc = c4d.documents.GetActiveDocument()
74+
render_data = doc.GetActiveRenderData()
75+
76+
# TODO: Add redshift data if not existing
77+
# Set as active renderer
78+
79+
# Set renderer to Redshift
80+
render_data[c4d.RDATA_RENDERENGINE] = REDSHIFT_RENDER_ENGINE_ID
81+
82+
# Set output filepaths
83+
# Render relatively to the scene
84+
render_path: str = "./renders/cinema4d/$prj/$take/$pass"
85+
render_data[c4d.RDATA_MULTIPASS_FILENAME] = render_path
86+
87+
# Save only multipass
88+
render_data[c4d.RDATA_SAVEIMAGE] = False # do not save regular image
89+
render_data[c4d.RDATA_MULTIPASS_SAVEIMAGE] = True # save multipass
90+
render_data[c4d.RDATA_MULTIPASS_SUFFIX] = True # pass name suffix
91+
render_data[c4d.RDATA_MULTIPASS_ENABLE] = True # enable multi-layer-file
92+
# use the names of the multipass in render settings
93+
render_data[c4d.RDATA_MULTIPASS_USERNAMES] = False
94+
95+
# Set EXR file format
96+
render_data[c4d.RDATA_MULTIPASS_SAVEFORMAT] = c4d.FILTER_EXR
5897

98+
# Trigger update
5999
c4d.EventAdd()
60100

61101

62-
def _set_redshift_colorspace(video_post, colorspace, display, view):
63-
video_post[c4d.REDSHIFT_RENDERER_COLOR_MANAGEMENT_OCIO_RENDERING_COLORSPACE] = colorspace # noqa: E501
102+
def _set_redshift_colorspace(video_post, render, display, view):
103+
# TODO: video_post[REDSHIFT_RENDERER_COLOR_MANAGEMENT_OCIO_CONFIG]?
104+
# TODO: video_post[REDSHIFT_RENDERER_COLOR_MANAGEMENT_OCIO_USE_FILE_RULES]?
105+
video_post[c4d.REDSHIFT_RENDERER_COLOR_MANAGEMENT_OCIO_RENDERING_COLORSPACE] = render # noqa: E501
64106
video_post[c4d.REDSHIFT_RENDERER_COLOR_MANAGEMENT_OCIO_DISPLAY] = display
65107
video_post[c4d.REDSHIFT_RENDERER_COLOR_MANAGEMENT_OCIO_VIEW] = view
66108

client/ayon_cinema4d/api/exporters.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ def render_playblast(filepath,
401401
if frame_end is None:
402402
frame_end = doc.GetMaxTime().GetFrame(doc_fps)
403403

404-
renderdata = doc.GetActiveRenderData().GetData()
404+
renderdata = doc.GetActiveRenderData().GetDataInstance()
405405
previous_render_engine = renderdata[c4d.RDATA_RENDERENGINE]
406406
renderdata[c4d.RDATA_RENDERENGINE] = c4d.RDATA_RENDERENGINE_PREVIEWHARDWARE
407407

0 commit comments

Comments
 (0)