Camera matrix during animation



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

    On 26/08/2012 at 11:53, xxxxxxxx wrote:

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

    ---------
    Hi,

    I'm trying to get the inverse camera matrix of the render basedraw for an animation export. I step through the animation keys of the active camera object:

      
    doc->SetTime(bt); // Set Time to key->GetTime();   
    doc->ExecutePasses(NULL, TRUE, TRUE, TRUE, BUILDFLAGS_0);        
    EventAdd(); // don't know whether that's required in this case   
    BaseDraw *bd = doc->GetRenderBaseDraw();   
    Matrix m = bd->GetMi();   
    ...   
    

    The matrix won't change during animation. It keeps the values from the first frame! Do I have to send another kind of update message?

    If I use the inverted global matrix of the camera object, it works, but I would prefer to use the matrix from the render basedraw.



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

    On 01/09/2012 at 13:29, xxxxxxxx wrote:

    I dunno if this will help or not, but after the EventAdd(), add this:

      
      DrawViews(DRAWFLAGS_FORCEFULLREDRAW | DRAWFLAGS_NO_THREAD, NULL);    // force completion of cache rebuild  
    

    ...I use that sequence of calls when I'm dealing with animating the document.



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

    On 01/09/2012 at 13:32, xxxxxxxx wrote:

    ...more specifically, I have a 'version compatibility' routine that I call...

      
    //-------------------------------------------------------------  
    // cmpAnimateDocument()  
    //-------------------------------------------------------------  
    void cmpAnimateDocument(BaseDocument *pDoc, const BaseTime& frameTime)  
    {  
    //    StopAllThreads();  
      pDoc->SetTime(frameTime);  
      
    #ifdef _R12_SDK_  
      pDoc->ExecutePasses(NULL, TRUE, TRUE, TRUE, BUILDFLAGS_0);  
    #elif _R11p5_SDK_  
      pDoc->ExecutePasses(NULL, TRUE, TRUE, TRUE);  
    #else  
      pDoc->AnimateDocument(NULL, TRUE, TRUE);  
    #endif  
      EventAdd();  
    #ifdef _R12_SDK_  
      DrawViews(DRAWFLAGS_FORCEFULLREDRAW | DRAWFLAGS_NO_THREAD, NULL);    // force completion of cache rebuild  
    #elif _R10p1_SDK_  
      DrawViews(DA_FORCEFULLREDRAW | DA_NO_THREAD, NULL);  
    #else  
      DrawViews(DA_FORCEFULLREDRAW);  
    #endif  
    }  
    


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

    On 02/09/2012 at 13:41, xxxxxxxx wrote:

    OK, thanks. I'll try it tomorrow. But I dont't want the editor windows being redrawed since it's called very often.


Log in to reply