Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login
    1. Maxon Developers Forum
    2. karthikbp
    3. Posts
    K
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 11
    • Best 0
    • Controversial 0
    • Groups 0

    Posts made by karthikbp

    • RE: Bundle fonts with Cinema 4D submissions

      Hey @ferdinand ,

      Sorry for the late replies.

      You can only answer these with end user support and the beta community.

      I will do that. Although I haven't used the beta community yet, I'll post the same question there to better understand what the recommended workflows are right now.

      you would either have to limit the feature to 2024+ clients

      That's good enough for us. Our plugin officially supports only the latest versions of 2024 and 2025.

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Bundle fonts with Cinema 4D submissions

      Hi @ferdinand ,

      Thanks for your support so far. I should be able to go forward from here.

      I do have a question though. Is there a reason why the flag "ASSETDATA_FLAG_WITHFONTS" does not appear in the docs? https://developers.maxon.net/docs/py/2025_3_1/modules/c4d.documents/index.html#c4d.documents.GetAllAssetsNew

      The users of our plugin generally have Cinema 4D 2024 and 2025 installed. Will there be any issues using this flag? I tried running the script that you shared above on 2024 and that seemed to work as well so I assume there are no issues on that front.

      Thanks,
      Karthik

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Bundle fonts with Cinema 4D submissions

      Hi @ferdinand,

      Thanks so much for your responses and sharing the code above. I really appreciate it! But our plugin users still want to have completed renders.

      Which leads me to wonder if we can convert all the text objects into editable before submission through code? I was thinking of something like this:

      • check if there is a custom font in the scene (this should be possible with the code that you just shared)
      • find all the text objects in the scene
      • convert it to the editable state just before submitting to the render farm (similar to what happens when we select the Text and press 'C')

      Is this approach feasible? Are there downsides for it, would animations stop working with this approach when the object turns into several different objects?

      The article mentioned that if we need to keep the text objects "procedural" we need to install the fonts.

      What does "procedural" mean in this context?

      Thanks again

      posted in Cinema 4D SDK
      K
      karthikbp
    • Bundle fonts with Cinema 4D submissions

      Dear community,

      I'm facing an issue with custom fonts when rendering on a render farm. Is there a way to bundle fonts with a scene so that Cinema 4D automatically uses these bundled fonts when rendering on a render farm?

      I have already reviewed the official documentation: https://support.maxon.net/hc/en-us/articles/1500006439721-Why-don-t-fonts-look-correct-on-machines-rendered-with-Team-Render-but-appear-correct-when-rendered-locally. However, making the text editable (as suggested in the article) is not an acceptable solution for our plugin users.

      Is the following approach possible through the Cinema 4D SDK?

      • Get the location of the fonts used in the scene (Could c4d.documents.GetAllAssetsNew() help with this?)
      • Bundle these fonts with the scene file
      • And then we could:
        • Get Cinema 4D to recognize and use the bundled font while rendering?
        • Or at least install the now bundled font on the render node and then uninstall the font once it's done rendering?

      Has anyone implemented a similar solution or can provide guidance on whether this approach is feasible?

      Thank you for your assistance.

      posted in Cinema 4D SDK python 2025 2024
      K
      karthikbp
    • RE: Path mapping in Cinema 4D using Redshift does not work

      Hi @ferdinand ,

      We are starting to run here in circles. Please consider applying for MRD as lined out here and via chat.

      I think that makes sense. I'll apply for MRD right away.

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Path mapping in Cinema 4D using Redshift does not work

      Hi @ferdinand ,

      when for a pyro sim we render the first frame isolated on a node, then it is black unless we do this

      Yup. We only saw an improvement for Pyro scenes at our end. Other scenes work correctly even without adding the doc.ExecutePasses line.

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Path mapping in Cinema 4D using Redshift does not work

      Hi @ferdinand ,

      Firstly, I would like to thank you for your help so far and we have now been able to get successful renders. Let me try replying to your previous response.

      I am pretty sure that you have hardcoded paths in your PYRO_OBJECT_CACHE_PATHS parameters as explained above, which will break when you just move the scene, explaining the output

      Yup. I think I forgot to mention this in my previous post but I've been using relative paths while submitting. To get relative paths, we have been using "Window" > "Project Asset Inspector" and then clicking on all the assets and "Localize Filenames". Also we have been saving the scenes with "Save Project with Assets"

      The reason your script is doing what it is doing is because that scene does not have its passes executed (among other things - caches built) when you loaded it from disk.

      Thanking you for sharing this. Adding doc.ExecutePasses(None, True, True, True, c4d.BUILDFLAGS_NONE) seems to have fixed the issue for us and we are able to get successful renders.

      But I've a question. Can we add ExecutePasses before rendering any Cinema 4D scene file? I've not experienced issues so far after adding this line but I'd like to know your thoughts as well if adding this line for even still images (i.e. single frame) has any drawbacks?

      There is also the oddity that Pyro considers frame zero not part of the animation, i.e., you must nudge Pyro to frame 1 for it to start building its caches and therefore in this case also asset messages.

      I've a question about this. What are the drawbacks of not adding doc.SetTime(c4d.BaseTime(1, 30)) ? I've seen that even without adding the line the renders have been successful.

      As mentioned before, you should also use ASSETDATA_FLAG_MULTIPLEUSE and your node material handling is completely wrong (at least form what I saw on GitHub). Both can lead to incorrect renderings.

      Yup. We will be reworking our code to just use relative paths for assets or using the "Save Project with Assets" as you suggested so that we don't need to apply specific path mapping.

      PS: I have resent your validation mail to the e-mail handle your account is bound to.

      Thanks, I've verified the email now.

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Path mapping in Cinema 4D using Redshift does not work

      Hi @ferdinand ,

      Thanks for your input so far. I think we are getting really close and I thank you for your patience.

      Please verify your account.

      I never got an email from Maxon to verify my email for some reason. Is it possible to send that email again? Or is there a way to request to send the email again?

      Please provide reproducible data, e.g., a scene that shows the issue you are having.

      Sorry, it took me a while to figure out a way to provide some reproducible script and data. Here are the steps that I take to reproduce the issue that I face.

      1. I use the "Pyro Voxel" scene from the Cinema 4D asset browser.

      2. I run the following script (the script that you shared for the Burning Pan scene)

      import c4d
      import os
      
      doc: c4d.documents.BaseDocument # The active document
      
      def main() -> None:
          """Called by Cinema 4D when the script is being executed.
          """
          print("===================")
          #scene_file = "/insert/path/to/scene/file/pyro_voxel.c4d"
      
          #doc = c4d.documents.LoadDocument(scene_file, c4d.SCENEFILTER_OBJECTS | c4d.SCENEFILTER_MATERIALS)
          asset_list = []
      
          asset_data: list[dict] = []
          val = c4d.documents.GetAllAssetsNew(doc, False, "", c4d.ASSETDATA_FLAG_NONE, asset_data)
          for item in asset_data:
              print(os.path.split(item.get("filename", ""))[-1])
      
          print ("Done.")
          print("===========")
      
      
      if __name__ == '__main__':
          main()
      
      1. This gives me the output
      ===================
      pyro_voxel.c4d
      Pyro_Voxel_v2_0001.vdb
      Pyro_Voxel_v2_0002.vdb
      Pyro_Voxel_v2_0003.vdb
      Pyro_Voxel_v2_0004.vdb
      Pyro_Voxel_v2_0005.vdb
      Pyro_Voxel_v2_0006.vdb
      Pyro_Voxel_v2_0007.vdb
      Pyro_Voxel_v2_0008.vdb
      Pyro_Voxel_v2_0009.vdb
      Pyro_Voxel_v2_0010.vdb
      Pyro_Voxel_v2_0011.vdb
      Pyro_Voxel_v2_0012.vdb
      Pyro_Voxel_v2_0013.vdb
      Pyro_Voxel_v2_0014.vdb
      Pyro_Voxel_v2_0015.vdb
      Pyro_Voxel_v2_0016.vdb
      Pyro_Voxel_v2_0017.vdb
      Pyro_Voxel_v2_0018.vdb
      Pyro_Voxel_v2_0019.vdb
      Pyro_Voxel_v2_0020.vdb
      Pyro_Voxel_v2_0021.vdb
      Pyro_Voxel_v2_0022.vdb
      Pyro_Voxel_v2_0023.vdb
      Pyro_Voxel_v2_0024.vdb
      Pyro_Voxel_v2_0025.vdb
      Pyro_Voxel_v2_0026.vdb
      Pyro_Voxel_v2_0027.vdb
      Pyro_Voxel_v2_0028.vdb
      Pyro_Voxel_v2_0029.vdb
      Pyro_Voxel_v2_0030.vdb
      Pyro_Voxel_v2_0031.vdb
      Pyro_Voxel_v2_0032.vdb
      Pyro_Voxel_v2_0033.vdb
      Pyro_Voxel_v2_0034.vdb
      Pyro_Voxel_v2_0035.vdb
      Pyro_Voxel_v2_0036.vdb
      Pyro_Voxel_v2_0037.vdb
      Pyro_Voxel_v2_0038.vdb
      Pyro_Voxel_v2_0039.vdb
      Pyro_Voxel_v2_0040.vdb
      Pyro_Voxel_v2_0041.vdb
      Pyro_Voxel_v2_0042.vdb
      Pyro_Voxel_v2_0043.vdb
      Pyro_Voxel_v2_0044.vdb
      Pyro_Voxel_v2_0045.vdb
      Pyro_Voxel_v2_0046.vdb
      Pyro_Voxel_v2_0047.vdb
      Pyro_Voxel_v2_0048.vdb
      Pyro_Voxel_v2_0049.vdb
      Pyro_Voxel_v2_0050.vdb
      Pyro_Voxel_v2_0051.vdb
      Pyro_Voxel_v2_0052.vdb
      Pyro_Voxel_v2_0053.vdb
      Pyro_Voxel_v2_0054.vdb
      Pyro_Voxel_v2_0055.vdb
      Pyro_Voxel_v2_0056.vdb
      Pyro_Voxel_v2_0057.vdb
      Pyro_Voxel_v2_0058.vdb
      Pyro_Voxel_v2_0059.vdb
      Pyro_Voxel_v2_0060.vdb
      Pyro_Voxel_v2_0061.vdb
      Pyro_Voxel_v2_0062.vdb
      Pyro_Voxel_v2_0063.vdb
      Pyro_Voxel_v2_0064.vdb
      Pyro_Voxel_v2_0065.vdb
      Pyro_Voxel_v2_0066.vdb
      Pyro_Voxel_v2_0067.vdb
      Pyro_Voxel_v2_0068.vdb
      Pyro_Voxel_v2_0069.vdb
      Pyro_Voxel_v2_0070.vdb
      Pyro_Voxel_v2_0071.vdb
      Pyro_Voxel_v2_0072.vdb
      Pyro_Voxel_v2_0073.vdb
      Pyro_Voxel_v2_0074.vdb
      Pyro_Voxel_v2_0075.vdb
      Pyro_Voxel_v2_0076.vdb
      Pyro_Voxel_v2_0077.vdb
      Pyro_Voxel_v2_0078.vdb
      Pyro_Voxel_v2_0079.vdb
      Pyro_Voxel_v2_0080.vdb
      Pyro_Voxel_v2_0081.vdb
      Pyro_Voxel_v2_0082.vdb
      Pyro_Voxel_v2_0083.vdb
      Pyro_Voxel_v2_0084.vdb
      Pyro_Voxel_v2_0085.vdb
      Pyro_Voxel_v2_0086.vdb
      Pyro_Voxel_v2_0087.vdb
      Pyro_Voxel_v2_0088.vdb
      Pyro_Voxel_v2_0089.vdb
      Pyro_Voxel_v2_0090.vdb
      Pyro_Voxel_v2_0091.vdb
      Pyro_Voxel_v2_0092.vdb
      Pyro_Voxel_v2_0093.vdb
      Pyro_Voxel_v2_0094.vdb
      Pyro_Voxel_v2_0095.vdb
      Pyro_Voxel_v2_0096.vdb
      Pyro_Voxel_v2_0097.vdb
      Pyro_Voxel_v2_0098.vdb
      Pyro_Voxel_v2_0099.vdb
      Pyro_Voxel_v2_0100.vdb
      Pyro_Voxel_v2_0101.vdb
      Pyro_Voxel_v2_0102.vdb
      Pyro_Voxel_v2_0103.vdb
      Pyro_Voxel_v2_0104.vdb
      Pyro_Voxel_v2_0105.vdb
      Pyro_Voxel_v2_0106.vdb
      Pyro_Voxel_v2_0107.vdb
      Pyro_Voxel_v2_0108.vdb
      Pyro_Voxel_v2_0109.vdb
      Pyro_Voxel_v2_0110.vdb
      Pyro_Voxel_v2_0111.vdb
      Pyro_Voxel_v2_0112.vdb
      Pyro_Voxel_v2_0113.vdb
      Pyro_Voxel_v2_0114.vdb
      Pyro_Voxel_v2_0115.vdb
      Pyro_Voxel_v2_0116.vdb
      Pyro_Voxel_v2_0117.vdb
      Pyro_Voxel_v2_0118.vdb
      Pyro_Voxel_v2_0119.vdb
      Pyro_Voxel_v2_0120.vdb
      Pyro_Voxel_v2_0121.vdb
      Pyro_Voxel_v2_0122.vdb
      Pyro_Voxel_v2_0123.vdb
      Pyro_Voxel_v2_0124.vdb
      Pyro_Voxel_v2_0125.vdb
      Pyro_Voxel_v2_0126.vdb
      Pyro_Voxel_v2_0127.vdb
      Pyro_Voxel_v2_0128.vdb
      Pyro_Voxel_v2_0129.vdb
      Pyro_Voxel_v2_0130.vdb
      Pyro_Voxel_v2_0131.vdb
      Pyro_Voxel_v2_0132.vdb
      Pyro_Voxel_v2_0133.vdb
      Pyro_Voxel_v2_0134.vdb
      Pyro_Voxel_v2_0135.vdb
      Pyro_Voxel_v2_0136.vdb
      Pyro_Voxel_v2_0137.vdb
      Pyro_Voxel_v2_0138.vdb
      Pyro_Voxel_v2_0139.vdb
      Pyro_Voxel_v2_0140.vdb
      Pyro_Voxel_v2_0141.vdb
      Pyro_Voxel_v2_0142.vdb
      Pyro_Voxel_v2_0143.vdb
      Pyro_Voxel_v2_0144.vdb
      Pyro_Voxel_v2_0145.vdb
      Pyro_Voxel_v2_0146.vdb
      Pyro_Voxel_v2_0147.vdb
      Pyro_Voxel_v2_0148.vdb
      Pyro_Voxel_v2_0149.vdb
      Pyro_Voxel_v2_0150.vdb
      Pyro_Voxel_v2_0151.vdb
      Pyro_Voxel_v2_0152.vdb
      Pyro_Voxel_v2_0153.vdb
      Pyro_Voxel_v2_0154.vdb
      Pyro_Voxel_v2_0155.vdb
      Pyro_Voxel_v2_0156.vdb
      Pyro_Voxel_v2_0157.vdb
      Pyro_Voxel_v2_0158.vdb
      Pyro_Voxel_v2_0159.vdb
      Pyro_Voxel_v2_0160.vdb
      Pyro_Voxel_v2_0161.vdb
      Pyro_Voxel_v2_0162.vdb
      Pyro_Voxel_v2_0163.vdb
      Pyro_Voxel_v2_0164.vdb
      Pyro_Voxel_v2_0165.vdb
      Pyro_Voxel_v2_0166.vdb
      Pyro_Voxel_v2_0167.vdb
      Pyro_Voxel_v2_0168.vdb
      Pyro_Voxel_v2_0169.vdb
      Pyro_Voxel_v2_0170.vdb
      Pyro_Voxel_v2_0171.vdb
      Pyro_Voxel_v2_0172.vdb
      Pyro_Voxel_v2_0173.vdb
      Pyro_Voxel_v2_0174.vdb
      Pyro_Voxel_v2_0175.vdb
      Pyro_Voxel_v2_0176.vdb
      Pyro_Voxel_v2_0177.vdb
      Pyro_Voxel_v2_0178.vdb
      Pyro_Voxel_v2_0179.vdb
      Pyro_Voxel_v2_0180.vdb
      ydr_minimalist_hdr.hdr
      Done.
      ===========
      
      1. Now uncomment the scene_file and doc lines and then run the command again. I get something like
      ===================
      pyro_voxel.c4d
      Pyro_Voxel_v2_0001.vdb
      ydr_minimalist_hdr.hdr
      Done.
      ===========
      

      Notice that it only has 1 cache file and I believe that the issue is that we are not loading the document with all its caches correctly which leads to the blank renders.
      Maybe something to do with LoadDocument? Am I missing some flag that will get all the assets including the caches (I've tried multiple flags but haven't had much success)?

      We use the LoadDocument function to set the scene file to render over here: https://github.com/aws-deadline/deadline-cloud-for-cinema-4d/blob/mainline/src/deadline/cinema4d_adaptor/Cinema4DClient/cinema4d_handler.py#L299-L319

      Any help with fixing this would be really helpful.

      Thanks,
      Karthik

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Path mapping in Cinema 4D using Redshift does not work

      Hi @ferdinand ,

      Thanks for your response, I was not able to able to respond sooner as I was working on a different issue.

      Here's the script that we used to print all the assets in the c4d scene file based off the scripts that you shared previously.

              import mxutils
              for element in mxutils.RecurseGraph(doc, True, True, True):
                  # Now we iterate over its description to find parameters of DTYPE_FILENAME.
                  data: c4d.BaseContainer
                  pid: c4d.DescID
                  for data, pid, _ in element.GetDescription(c4d.DESCFLAGS_GET_NONE):
                      # Get data type of the last component of the DescID and then check if it is a filename.
                      dtype: int = pid[pid.GetDepth() - 1].dtype
                      if dtype == c4d.DTYPE_FILENAME:
                          print(f"Found path parameter with the label '{data[c4d.DESC_NAME]}' and value "
                              f"'{element[pid]}' in node '{element}'.")
              asset_data: list[dict] = []
              c4d.documents.GetAllAssetsNew(doc, False, "", c4d.ASSETDATA_FLAG_NONE, asset_data)
              for item in asset_data:
                  print(os.path.split(item.get("filename", ""))[-1])
      

      And here's the output that we get while running it locally.

      Found path parameter with the label 'Relative Path' and value 'tex' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 18149079616>'.
      Found path parameter with the label 'OpenColorIO Config' and value '$(DEFAULT)' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 18149079616>'.
      Found path parameter with the label 'Project Path' and value '/Users/my_user_name/Desktop/Pyro scene' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 18149079616>'.
      Found path parameter with the label 'Project Name' and value 'Pyro Voxel.c4d' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 18149079616>'.
      Found path parameter with the label 'File Path' and value '/Users/my_user_name/Desktop/Pyro scene/Pyro Voxel.c4d' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 18149079616>'.
      Found path parameter with the label 'File' and value '' in node '<c4d.BaseObject object called RS Camera/RS Camera with ID 1057516 at 18444390464>'.
      Found path parameter with the label 'Template Filename' and value '$prj_$frame.vdb' in node '<c4d.BaseObject object called Pyro Output/Pyro Output with ID 1059580 at 18448677568>'.
      Found path parameter with the label 'Filename' and value '/Users/my_user_name/Desktop/Pyro scene/vol/Pyro_Voxel_v1_0001.vdb' in node '<c4d.BaseObject object called Pyro Output/Volume Loader with ID 1039866 at 18444442432>'.
      Found path parameter with the label 'File' and value './$prj/$prj' in node '<c4d.documents.RenderData object called My Render Setting/My Render Setting with ID 110304 at 18464012096>'.
      Found path parameter with the label 'File' and value '' in node '<c4d.documents.RenderData object called My Render Setting/My Render Setting with ID 110304 at 18464012096>'.
      Found path parameter with the label 'OpenColorIO Configuration' and value '$OCIO' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 18440927424>'.
      Found path parameter with the label 'File' and value './Redshift/irradiance_map_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 18440927424>'.
      Found path parameter with the label 'File' and value './Redshift/irradiance_pointcloud_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 18440927424>'.
      Found path parameter with the label 'File' and value './Redshift/photon_map_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 18440927424>'.
      Found path parameter with the label 'Base Filename' and value '$prj_AOV' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 18440927424>'.
      Found path parameter with the label 'File' and value './Redshift/subsurface_scattering_map_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 18440927424>'.
      Found path parameter with the label 'File' and value '' in node '<c4d.documents.BaseVideoPost object called RS Post-Effects/RS Post-Effects with ID 1040189 at 18440910144>'.
      Pyro Voxel.c4d
      file_80aa35ed1bf4db09~.hdr?name=ydr_minimalist_hdr.hdr&db=MaxonAssets.db (assets.maxon.net)
      Pyro_Voxel_v1_0001.vdb
      Pyro_Voxel_v1_0002.vdb
      ...
      Pyro_Voxel_v1_0180.vdb
      

      Here's the output that we get on a rendering machine on the same c4d scene file.

      Found path parameter with the label 'Relative Path' and value 'tex' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 2363282316352>'.
      Found path parameter with the label 'OpenColorIO Config' and value '$OCIO' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 2363282316352>'.
      Found path parameter with the label 'Project Path' and value 'C:\Sessions\session-e5c2\assetroot-3751\Users\my_user_id\Desktop\Pyro scene' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 2363282316352>'.
      Found path parameter with the label 'Project Name' and value 'Pyro Voxel.c4d' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 2363282316352>'.
      Found path parameter with the label 'File Path' and value 'C:\Sessions\session-e5c2\assetroot-3751\Users\my_user_id\Desktop\Pyro scene\Pyro Voxel.c4d' in node '<c4d.documents.BaseDocument object called  with ID 110059 at 2363282316352>'.
      Found path parameter with the label 'File' and value '' in node '<c4d.BaseObject object called RS Camera/RS Camera with ID 1057516 at 2363337280832>'.
      Found path parameter with the label 'Template Filename' and value '$prj_$frame.vdb' in node '<c4d.BaseObject object called Pyro Output/Pyro Output with ID 1059580 at 2363336803648>'.
      Found path parameter with the label 'File' and value 'C:\Sessions\session-e5c2\assetroot-3751\Users\my_user_id\Desktop\Pyro scene\Pyro_Voxel\Pyro_Voxel' in node '<c4d.documents.RenderData object called My Render Setting/My Render Setting with ID 110304 at 2363320759104>'.
      Found path parameter with the label 'File' and value 'C:\Sessions\session-e5c2\assetroot-3751\Users\my_user_id\Desktop\Pyro scene' in node '<c4d.documents.RenderData object called My Render Setting/My Render Setting with ID 110304 at 2363320759104>'.
      Found path parameter with the label 'OpenColorIO Configuration' and value '$OCIO' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 2363328343872>'.
      Found path parameter with the label 'File' and value './Redshift/irradiance_map_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 2363328343872>'.
      Found path parameter with the label 'File' and value './Redshift/irradiance_pointcloud_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 2363328343872>'.
      Found path parameter with the label 'File' and value './Redshift/photon_map_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 2363328343872>'.
      Found path parameter with the label 'Base Filename' and value '$prj_AOV' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 2363328343872>'.
      Found path parameter with the label 'File' and value './Redshift/subsurface_scattering_map_auto.$frame.rsmap' in node '<c4d.documents.BaseVideoPost object called Redshift/Redshift with ID 1036219 at 2363328343872>'.
      Found path parameter with the label 'File' and value '' in node '<c4d.documents.BaseVideoPost object called RS Post-Effects/RS Post-Effects with ID 1040189 at 2363328329536>'.
      Pyro Voxel.c4d
      file_80aa35ed1bf4db09~.hdr?name=ydr_minimalist_hdr.hdr&db=MaxonAssets.db (assets.maxon.net)
      Pyro_Voxel_v1_0001.vdb
      

      The main difference that we could notice is that somehow the rendering machine did not have the following line (pyro output/volume loader was missing)

      Found path parameter with the label 'Filename' and value '/Users/my_user_name/Desktop/Pyro scene/vol/Pyro_Voxel_v1_0001.vdb' in node '<c4d.BaseObject object called Pyro Output/Volume Loader with ID 1039866 at 18444442432>'.
      

      While submitting, we used relative paths and it still ended up giving us blank renders. Unfortunately, I'm not sure how I can share a reproducible for a rendering worker node (Let us know if we can setup a online video call so that we can share the issue that we are currently facing)

      We're relatively new to Cinema 4D's internals, so any documentation or resources you could provide to help us better understand these issues would be greatly appreciated. šŸ™‚

      posted in Cinema 4D SDK
      K
      karthikbp
    • RE: Path mapping in Cinema 4D using Redshift does not work

      Thanks for your response!

      Please do this within the next fourteen days (until 02/06/2025), otherwise we will rename it.

      Sorry about that. I'm not sure how the username got set to that and unfortunately I'm unable to change it. Can you guys change it for me to "karthikbp"?

      Your request is unfortunately very ambiguous, as you lack the reproducibility aspect lined out in Support Procedures: How to Ask Questions.

      I appreciate you sharing the article on how to ask questions properly.

      To provide some context, at Deadline Cloud, we help customers submit their rendering workloads to AWS. Our solution (https://github.com/aws-deadline/deadline-cloud-for-cinema-4d) translates paths in a scene so that rendering machines can find all elements and render successfully. For instance, we map a local path like "D:\Path_to_local_my_file\tex\my_texture.bmp" to a remote path like "C:\path_to_my_remote_file\tex\my_texture.bmp" using a function called map_path. We developed this approach based on this forum post: https://developers.maxon.net/forum/topic/14388/change-textures-path-from-getallassetnew-in-the-new-node-editor/

      We've encountered an issue with scenes like the Pyro Voxel scene in the Cinema 4D asset browser. When we cache the Pyro Output beforehand and submit, the renders come out completely black. This only happens with pre-cached scenes; uncached scenes render as expected. We suspect this is because the rendering machine can't locate the cache. I plan to create a separate forum post about this specific issue.

      For the more general path mapping issue, in this forum post, you describe that:

      Supporting all possible node spaces and all possible nodes for Redshift could be quite a bit of work

      Given this context, I'm wondering if there's a simpler way to configure Cinema 4D for path mapping in remote rendering workloads. Ideally, we're looking for a generic solution that doesn't require mapping each path individually. We've explored using environment variables for Redshift (https://help.maxon.net/r3d/maya/en-us/Content/html/Redshift+Environment+Variables.html), but it didn't work for us. Is there an environment variable or configuration file where we can set general path mapping rules?

      posted in Cinema 4D SDK
      K
      karthikbp
    • Path mapping in Cinema 4D using Redshift does not work

      We're experiencing issues with path mapping in Cinema 4D scenes using Redshift when rendering on DeadlineCloud. Specifically, certain attachments, caches, and globalized path names aren't being correctly path mapped.

      Currently, we're using "c4d.documents.GetAllAssetsNew()" to identify assets and then applying specialized handling for different asset types (shaders, objects, video posts, and materials). Our implementation can be viewed here: https://github.com/aws-deadline/deadline-cloud-for-cinema-4d/blob/mainline/src/deadline/cinema4d_adaptor/Cinema4DClient/cinema4d_handler.py#L55-L109

      We have also tried using the environment variable : REDSHIFT_PATHOVERRIDE_FILE and that has also not worked for us. Here's how we tried to use it: https://github.com/joel-wong-aws/deadline-cloud-for-cinema-4d/blob/vdb_mapping/src/deadline/cinema4d_adaptor/Cinema4DAdaptor/adaptor.py#L105-L158

      Despite our efforts, some assets aren't being properly remapped, particularly:
      • Certain Redshift cache files
      • Assets with globalized path names
      • Some attachments that aren't captured by GetAllAssetsNew()

      Could you advise on:

      1. The recommended approach for comprehensive path mapping in Cinema 4D + Redshift on DeadlineCloud?
      2. Any Redshift-specific considerations we should be aware of?

      We appreciate any guidance you can provide.

      posted in Cinema 4D SDK python 2025
      K
      karthikbp