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

    Team Render Questions [SOLVED]

    SDK Help
    0
    3
    275
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      On 19/11/2015 at 06:29, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   16+ 
      Platform:   Windows  ; Mac  ;  Mac OSX  ; 
      Language(s) :     C++  ;

      ---------
      ok, killed that other thread again because I noticed that if I first call "Save Project with all assets" and then do the team rendering it works fine. I was under the assumption that calling Team Render to PV would automatically call an asset saving into a temporary folder or something like that. Apparently that's not the case.

      Anyway, I have another question. When I Team Render to the Picture Viewer with 2 machines, I noticed that if one machine finishes its frame range and is assigned a new range, that there is a pre-roll stage of all previous frames.

      So if it is assigned frames 75-90, my scene hook::Execute function is called for all 74 previous frames.
      How can I detect these pre-roll frames so I can tell my scene hook not to do anything? Alternatively knowing the frame range itself would already do.

      Thanks!

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 20/11/2015 at 04:19, xxxxxxxx wrote:

        Hello,

        actually, prerolling in this Team Render context is no different than prerolling in any other context. When you render locally a frame or frame sequence that does not start with frame 0, it will preroll. It seems there are not special flags or anything else given to the Execute() function to indicate this this is a preroll call.

        To get the assigned frame range on a client you have to send a message to the server requesting that range. This can look like this:

          
        NetRenderDocumentContext* context = doc->GetNetRenderDocumentContext();  
        if(context)  
        {  
         BaseContainer msg(MSG_NETRENDER_ANIMATION_RANGE), result;  
         msg.SetUuid(CONTAINER_JOBUUID, context->_renderJob->GetUuid());  
                   
          if(NetGeSyncMessage(context->_service, context->_renderJob->GetServerUuid(), msg, result) == MESSAGERESULT_OK)  
          {  
              if(result.GetBool(CONTAINER_RANGE_AVAILABLE))  
              {  
                  const Int32 rangeStart = result.GetInt32(CONTAINER_RANGE_FROM);  
                  const Int32 rangeEnd = result.GetInt32(CONTAINER_RANGE_TO);  
          
                  GePrint("Range: " + String::IntToString(rangeStart) + ":" + String::IntToString(rangeEnd));  
              }  
          }  
        }  
        

        best wishes,
        Sebastian

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 20/11/2015 at 10:26, xxxxxxxx wrote:

          Thank you Sebastian! It would have taken me quite some time to figure out this one on my own. Also it helps me diving into the net lib conceptually.

          Cheers

          1 Reply Last reply Reply Quote 0
          • First post
            Last post