44from ayon_core .pipeline .colorspace import (
55 get_current_context_imageio_config_preset ,
66)
7+ from ayon_core .settings import get_current_project_settings
78from .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+ )
1217import c4d
1318
1419log = logging .getLogger (__name__ )
1520
16- REDSHIFT_RENDER_ENGINE_ID = 1036219
17-
1821
1922def reset_frame_range ():
2023 task_entity = get_current_task_entity ()
@@ -27,7 +30,10 @@ def reset_resolution():
2730
2831
2932def 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
0 commit comments