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
    • Recent
    • Tags
    • Users
    • Register
    • Login
    1. Maxon Developers Forum
    2. vaishhg
    3. Posts
    V
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 3
    • Groups 0

    Posts

    Recent Best Controversial
    • GetEffectiveRenderData does not return per-take overrides for RDATA_FRAMEFROM / RDATA_FRAMETO

      Dear community,

      I'm facing an issue reading per-take frame range overrides via the Python API. When takes override the frame range on the render data, all methods I've tried return the Main take's frame range instead of the overridden values.

      Environment:

      • Cinema 4D Version: 2025, 2026
      • Operating System: macOS
      • Python Version: 3.11 (Cinema 4D native)

      Issue Description:
      When multiple takes each override the render data's frame range (e.g., Main: 0-6, V: 0-9, E: 0-23, R: 0-13, A: 0-17), reading RDATA_FRAMEFROM/RDATA_FRAMETO always returns the Main take's values (0-6) for every take.

      Steps to Reproduce:

      1. Create a Cinema 4D scene with a Main take (frame range 0-6)
      2. Create child takes (V, E, R, A) and override the render data's frame range on each (e.g., V: 0-9, E: 0-23, R: 0-13, A: 0-17)
      3. Run the following script:
      import c4d
      
      def main():
          doc = c4d.documents.GetActiveDocument()
          take_data = doc.GetTakeData()
          main_take = take_data.GetMainTake()
          fps = doc.GetFps()
      
          takes = [main_take] + main_take.GetChildren()
          for take in takes:
              rd, _ = take.GetEffectiveRenderData(take_data)
              frame_from = rd[c4d.RDATA_FRAMEFROM].GetFrame(fps)
              frame_to = rd[c4d.RDATA_FRAMETO].GetFrame(fps)
              print(f"Take '{take.GetName()}': FRAMEFROM={frame_from}, FRAMETO={frame_to}")
      
      if __name__ == '__main__':
          main()
      
      1. Observe that all takes print FRAMEFROM=0, FRAMETO=6

      Expected Behavior:
      Each take should report its own overridden frame range.

      Actual Behavior:
      All takes return FRAMEFROM=0, FRAMETO=6 (the Main take's range).

      What I've Tried:

      1. take.GetEffectiveRenderData(take_data) — returns 0-6 for all takes
      2. take_data.SetCurrentTake(take) then reading from doc.GetActiveRenderData() — returns 0-6 for all takes
      3. take_data.TakeToDocument(take) then reading from the isolated document's active render data — returns 0-6 for all takes

      Questions:

      1. Is this a bug in the Python API, or is there a different method we should be using to read per-take frame range overrides (RDATA_FRAMEFROM/RDATA_FRAMETO)?
      2. Are there any known workarounds to get the fully resolved render data with all take overrides applied?

      Any guidance would be greatly appreciated. Thank you!

      posted in Cinema 4D SDK 2025 2026 linux
      V
      vaishhg
    • RE: [Cinema 4D/Redshift] Nested Redshift Proxy Files Not Detected by Project Asset Inspector

      Hello,

      Thank you for the detailed explanation. This helps clarify the limitation.

      One follow-up question: We've observed that nested Redshift proxies render correctly at runtime — the renderer successfully resolves and renders the full proxy chain. Given this, is the limitation specifically that the Asset Inspector/SDK cannot detect nested proxy dependencies for asset collection purposes, even though the renderer can resolve them?

      If so, it would be helpful to understand how the renderer discovers these nested dependencies internally, and whether there's any way to access that same resolution logic via the SDK for asset management workflows.

      Thanks again for your support.

      posted in Cinema 4D SDK
      V
      vaishhg
    • [Cinema 4D/Redshift] Nested Redshift Proxy Files Not Detected by Project Asset Inspector

      Dear community,

      I'm facing an issue with nested Redshift proxy files not being detected by Cinema 4D's Project Asset Inspector. When a Redshift proxy file references another Redshift proxy file (proxy-of-proxy), only the first-level proxy is detected, causing incomplete asset collection when saving projects.

      Environment:

      • Cinema 4D Version: 2025, 2026
      • Renderer: Redshift
      • Operating System: Windows, Linux
      • Python Version: 3.11 (Cinema 4D native)

      Issue Description:
      When ProxyA.rs references ProxyB.rs, the Project Asset Inspector only detects ProxyA but fails to discover ProxyB. This results in incomplete project asset collection when using "Save Project with Assets" or when programmatically querying scene dependencies.

      Steps to Reproduce:

      • Create objects in Cinema 4D and export to Redshift proxy (ProxyB.rs)
      • Create new scene, add Redshift proxy object referencing ProxyB.rs
      • Export this setup to another Redshift proxy (ProxyA.rs)
      • Create new scene with Redshift proxy object referencing ProxyA.rs
      • Open Project Asset Inspector (Window > Content Browser > Project Asset Inspector)
      • Observe that only ProxyA.rs is listed, ProxyB.rs is missing

      Expected Behavior:
      The Project Asset Inspector should recursively scan Redshift proxy files to detect nested proxy references and list all dependencies.

      Actual Behavior:
      Only first-level proxy files are detected. Nested proxies are not discovered, resulting in incomplete asset collection when moving projects between workstations.

      SDK Investigation:
      I've been exploring the Cinema 4D SDK to programmatically detect these nested dependencies. Using the SDK, I can access proxy materials and textures:

      def main() -> None:
          doc = c4d.documents.GetActiveDocument()
          objs = doc.GetObjects()
          for obj in objs:
              print(obj[c4d.REDSHIFT_PROXY_MATERIAL_LIST])
              print(obj[c4d.REDSHIFT_PROXY_MATERIAL_TEXTURES])
      

      This successfully retrieves the proxy material and texture lists, showing references like:

      ProxyOfProxyOfProxyTest.c4d:__RSC4D Default Material
      RedshiftProxyTest.c4d:__RSC4D Default Material
      

      Questions:

      • Is there a built-in way to make the Project Asset Inspector recursively detect nested Redshift proxy dependencies?
      • Can c4d.documents.GetAllAssetsNew() be used to discover these nested proxy files?
      • Is there an SDK approach to programmatically traverse the proxy dependency chain and ensure all nested assets are collected?

      Workaround:
      Currently manually copying nested proxy files alongside projects, but this requires knowing which nested dependencies exist beforehand.

      Has anyone implemented a solution for detecting and bundling nested Redshift proxy dependencies? Any guidance would be greatly appreciated.

      Thank you for your assistance.

      posted in Cinema 4D SDK 2025 2026 windows linux
      V
      vaishhg