Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    Meshsequence Exporter

    PYTHON Development
    0
    8
    1.1k
    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

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 24/06/2011 at 01:03, xxxxxxxx wrote:

      I want to export a meshsequence of an animation. If I set the documenttime to a specific frame e.g. frame 5 and export the document, then cinema always export the mesh of frame 0.

      Here ars some code snippets:

      minFrame = 0
      maxFrame = 10
      while minFrame <= maxFrame :
        doc.SetTime(c4d.BaseTime(minFrame, fps))

      filepathSuffix = filepath + "_" + str(minFrame) + "." + suffix
        c4d.documents.SaveDocument(doc, filepathSuffix, c4d.SAVEDOCUMENTFLAGS_0, format)

      minFrame = minFrame + 1

      How can I export the mesh of the frame, the playhead is?

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

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 24/06/2011 at 06:18, xxxxxxxx wrote:

        In that code you set the time to frame 0, so it's starting there.
        Set it to start at current frame and set a useful last frame as well,
        like doc maxtime or loop maxtime.

        Cheers
        Lennart

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

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 24/06/2011 at 06:58, xxxxxxxx wrote:

          In the while-loop I increment the variable "minFrame".

          If I set the minTime and maxTime of the document, cinema exports in every loopcycle the mesh of frame 0

          Here is my code:

          while minFrame <= maxFrame :;
            doc.SetMinTime(c4d.BaseTime(minFrame, fps))
            doc.SetMaxTime(c4d.BaseTime(minFrame + 1, fps))
            doc.SetTime(c4d.BaseTime(minFrame, fps))

          filepathSuffix = filepath + "_" + str(minFrame) + "." + suffix
            c4d.documents.SaveDocument(doc, filepathSuffix, c4d.SAVEDOCUMENTFLAGS_0, format)

          minFrame = minFrame + 1

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

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 24/06/2011 at 07:22, xxxxxxxx wrote:

            In Py docs look for "Document Caching" , last in c4d.documents.BaseDocument section.
            There's a set up for running the scene, just add your save part in it.

            Cheers
            Lennart

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

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 27/06/2011 at 01:41, xxxxxxxx wrote:

              Hi Lennard,

              thank you for youre post.

              I insert the GeSyncMessage methode to my code, but it has no impact on the results. Cinema exports the mesh of frame 0 to all of the exported files.

              Here is the code:

              fps = float(doc.GetFps())

              minTime = doc.GetMinTime()
                minFrame = int(minTime.Get() * fps)

              maxTime = doc.GetMaxTime()
                maxFrame = int(maxTime.Get() * fps)

              doc.SetTime(minTime)

              while minFrame <= maxFrame :
                    c4d.StatusSetBar(100 / maxFrame * minFrame)
                    doc.SetTime(c4d.BaseTime(minFrame, fps))
                    c4d.GeSyncMessage(c4d.EVMSG_TIMECHANGED)

              filepathSuffix = filepath + "_" + str(minFrame) + "." + suffix
                    c4d.documents.SaveDocument(doc, filepathSuffix, c4d.SAVEDOCUMENTFLAGS_0, format)

              minFrame = minFrame + 1
               
                c4d.StatusClear()
                c4d.EventAdd(c4d.EVENT_ANIMATE)

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

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 27/06/2011 at 08:18, xxxxxxxx wrote:

                Marcel, do look at the "Document Cache" example closer and
                you'll see that you need the DrawViews for anything to happen.

                I do recommend using it as is as it works as expected.
                Add your save part in it where stated and you're all set.

                Cheers
                Lennart

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

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 27/06/2011 at 08:50, xxxxxxxx wrote:

                  You can see the parts put into it here,
                  saving the selected object to a c4d file series.
                  Look up the different functions in Py docs to see what they do.
                  The .zfill() function is from http://docs.python.org

                  Cheers
                  Lennart

                    
                  # Save Selected Object To FileSeries   
                    
                  import c4d   
                  from c4d import documents, storage   
                    
                    
                  def BrowseDoc(doc,tofile) :   
                      """ Pass the document you want to run the time through"""   
                    
                      ctime = doc.GetTime() #save current time   
                    
                      fps = doc.GetFps()   
                      start = doc.GetMinTime().GetFrame(fps) #set min time   
                      until = doc.GetMaxTime().GetFrame(fps)   
                    
                      for f in xrange(start, until) :   
                          c4d.StatusSetBar(100*(f-start)/(until-start))   
                          doc.SetTime(c4d.BaseTime(f, fps))   
                          c4d.DrawViews(c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW|c4d.DRAWFLAGS_NO_THREAD|c4d.DRAWFLAGS_NO_REDUCTION|c4d.DRAWFLAGS_STATICBREAK)   
                    
                          # do your caching here. 'f' is the current frame   
                          objdoc = documents.IsolateObjects(doc,[doc.GetActiveObject()])   
                          tofile = tofile+'_'+str(f).zfill(5)+'.c4d'   
                          c4d.documents.SaveDocument(objdoc,tofile,c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST,c4d.FORMAT_C4DEXPORT)   
                    
                    
                          c4d.GeSyncMessage(c4d.EVMSG_TIMECHANGED) #update timeline   
                    
                    
                      doc.SetTime(ctime) #set time back   
                      c4d.EventAdd(c4d.EVENT_ANIMATE)   
                      c4d.StatusClear()   
                    
                  def main() :   
                      if doc.GetActiveObject() is None:# Single Object not selected   
                          return False   
                      tofile = c4d.storage.SaveDialog(c4d.FILESELECTTYPE_ANYTHING)   
                      if tofile:   
                          BrowseDoc(doc,tofile)   
                    
                    
                  if __name__=='__main__':   
                      main()   
                  
                  1 Reply Last reply Reply Quote 0
                  • H
                    Helper
                    last edited by

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 29/06/2011 at 00:28, xxxxxxxx wrote:

                    Hi Lennart,

                    it works. Thank you so much.

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