World Dynamics Cache Buttons



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

    On 03/05/2012 at 10:11, xxxxxxxx wrote:

    I see that FindSceneHook() has been added to R13 so we can set the project settings now.
    I'm converting my C++ project settings code to python. But the only ones I can't figure out how to write are the two Dynamics cache buttons.

    Example:

    import c4d  
    def main() :  
      
      sh = doc.FindSceneHook(180000100)  
      c4d.CallButton(doc,c4d.WORLD_CACHE_BAKE)  #Does not work  
      c4d.CallButton(doc,c4d.WORLD_CACHE_CLEAR) #Does Not work  
        
      c4d.EventAdd()  
      
    if __name__=='__main__':  
      main()
    

    Are these buttons supported?
    If so...How do we execute them?

    -ScottA



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

    On 03/05/2012 at 16:54, xxxxxxxx wrote:

    Never Mind. I managed to figure it out.

    import c4d  
    def main() :  
        
      sh = doc.FindSceneHook(180000100)   
      c4d.plugins.FindPlugin(c4d.PLUGINTYPE_SCENEHOOK)  
      c4d.CallButton(sh, c4d.WORLD_CACHE_BAKE)   #Executes the Bake button  
      c4d.CallButton(sh, c4d.WORLD_CACHE_CLEAR)  #Executes the Clear button  
      c4d.EventAdd()      
        
    if __name__=='__main__':  
      main()
    

    -ScottA



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

    On 04/05/2012 at 05:13, xxxxxxxx wrote:

    eh, sould have looked here first, i have answered the cgtalk post already, but IMHO your first
    example is already almost correct, but you have to pass sh instead of doc. the script won't throw
    an error, as doc a BaseDocument is also a BeseList2D, but CallButton expects the object which
    contains the id passed as the second parameter, so you have to pass sh. it makes no sense to 
    define sh and then not not to use it.

    the same goes for c4d.plugins.FindPlugin(c4d.PLUGINTYPE_SCENEHOOK) (plus this line doesn't 
    really make any sense to me, does this actually return a BaseList2D ?). also EventAdd() isn't 
    necessary in that case.

    shortest form would be :

    c4d.CallButton(doc.FindSceneHook(180000100), c4d.WORLD_CACHE_BAKE)
    


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

    On 04/05/2012 at 08:41, xxxxxxxx wrote:

    Now I can't figure out how to change any of the Key Interpolation settings.

        sh = doc.FindSceneHook(180000100)  
      sh[c4d.TLWORLD_OVERDUB]=True  #Does Nothing!  
      c4d.EventAdd()
    

    -ScottA



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

    On 04/05/2012 at 10:08, xxxxxxxx wrote:

    180000100 is only the id to the MographDynamics hook if i am not mistaken, you have to get the id 
    of the Key Interpolation Tab from the ressource folder i think.

    edit :

    the  c4d console says  for KeyInterpolation :

    [OK] KeyInterpolation
    <c4d.BaseList2D object called 'Key Interpolation/Key Interpolation' with ID 465001535 at 0x10B54050>
    

    i haven't tested / i am not quite sure if this is the correct id to get the hook.



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

    On 04/05/2012 at 11:02, xxxxxxxx wrote:

    Thanks. That is the correct ID#.

    Here's a list of how to change all of the Project Settings:

    ##### Scene Scale & Units options  
      
    import c4d  
      
    def main() :      
      
      pScale = doc[c4d.DOCUMENT_DOCUNIT]    #Get the ProjectScale value  
      value = c4d.UnitScaleData             #Create a UnitScaleData type variable      
      pScale.SetUnitScale(1.0, c4d.DOCUMENT_UNIT_CM) #Change the Scene's scale and measure type settings  
      doc[c4d.DOCUMENT_DOCUNIT]=pScale      #Make the changes happen from memory  
      doc.Message(c4d.MSG_UPDATE)           #Update C4D about the changes  
      c4d.EventAdd()  
      
    if __name__=='__main__':  
      main()  
      
      
      
      
    ##### Project Settings  
      
    #Set up BaseTime so we can use it later on in the attributes  
    fps = doc.GetFps()    
    frame = doc.GetTime().GetFrame(doc.GetFps())  
      
      
    # doc[c4d.DOCUMENT_DOCUNIT]= See above  
    doc[c4d.DOCUMENT_FPS] = 30                           # Sets the FPS attribute  
    doc[c4d.DOCUMENT_TIME]= c4d.BaseTime(0, fps)         # The frame where the scrubber starts   
    doc[c4d.DOCUMENT_MINTIME]= c4d.BaseTime(0, fps)      # The start frame value   
    doc[c4d.DOCUMENT_MAXTIME]= c4d.BaseTime(90, fps)     # The end Frame value   
    doc[c4d.DOCUMENT_LOOPMINTIME]=c4d.BaseTime(0, fps)   # The Preview option Start time  
    doc[c4d.DOCUMENT_LOOPMAXTIME]=c4d.BaseTime(90, fps)  # The Preview option End time  
      
      
    doc[c4d.DOCUMENT_LOD]=1.0                      # Level of Detail          
    doc[c4d.DOCUMENT_RENDERLOD]=False              # Render LOD in Editor  
    doc[c4d.DOCUMENT_USEANIMATION]=True            # Use Animation  
    doc[c4d.DOCUMENT_USEEXPRESSIONS]=True          # Use Expressions  
    doc[c4d.DOCUMENT_USEGENERATORS]=True           # Use Generators  
    doc[c4d.DOCUMENT_USEDEFORMERS]=True            # Use Deformers  
    doc[c4d.DOCUMENT_USEMOTIONSYSTEM]=True         # Use Motion System  
    doc[c4d.DOCUMENT_DEFAULTMATERIAL_TYPE]= 1      # 0=WHITE, 1=GREY-BLUE, 2=USER  
    doc[c4d.DOCUMENT_CLIPPING_PRESET]=1            # 3=TINY, 0=SMALL, 1=MEDIUM, 2=LARGE, 4=HUGE, 5=CUSTOM  
    doc[c4d.DOCUMENT_CLIPPING_PRESET_NEAR]=1.0     # Sets the Near clipping value  
    doc[c4d.DOCUMENT_CLIPPING_PRESET_FAR]=100000.0 # Sets the Far clipping value  
    doc[c4d.DOCUMENT_LINEARWORKFLOW]=True          # Use Linear Workflow  
    doc[c4d.DOCUMENT_COLORPROFILE]=1               # 0=SRGB, 1=LINEAR, 2=DISABLED;  
      
      
      
      
    ///// Info Settings  
      
    doc[c4d.DOCUMENT_INFO_AUTHOR]= ""     //Type your name in here  
    doc[c4d.DOCUMENT_INFO_COPYRIGHT]= ""  //Type your copyright info here  
    doc[c4d.DOCUMENT_INFO_README]= ""    // Type your notes here  
      
      
    ///// Dynamics Settings  
      
    sh = doc.FindSceneHook(180000100)  
    sh[c4d.WORLD_ENABLED]=True  
    sh[c4d.WORLD_DISABLE_DURING_LEAP]=True  
    sh[c4d.WORLD_TIMESCALE]=1.0  
    sh[c4d.WORLD_GRAVITY]=1000.0  
    sh[c4d.WORLD_DENSITY]=1.0  
    c4d.EventAdd()    
      
      
     //CACHE  
      
    fps = doc.GetFps()    
    frame = doc.GetTime().GetFrame(doc.GetFps())  
    sh = doc.FindSceneHook(180000100)  
      
    c4d.CallButton(doc.FindSceneHook(180000100), c4d.WORLD_CACHE_BAKE)   //Executing the Bake dynamics cache buttons  
    c4d.CallButton(doc.FindSceneHook(180000100), c4d.WORLD_CACHE_CLEAR)  //Execute the Clear dynaimcs cache button   
                  
    sh[c4d.WORLD_CACHE_USE]=False  
    sh[c4d.WORLD_CACHE_DISABLE_BAKED_OBJECTS]=False  
    sh[c4d.WORLD_CACHE_USE_TIME]=False  
    sh[c4d.WORLD_CACHE_TIME]=c4d.BaseTime(0, fps)  
    c4d.EventAdd()  
      
      
     //EXPERT  
    sh = doc.FindSceneHook(180000100)  
    sh[c4d.WORLD_MARGIN]=1  
    sh[c4d.WORLD_SCALE]=100  
    sh[c4d.WORLD_CONTACT_RESTITUTION_LIFETIME]=5  
    sh[c4d.WORLD_SEED]=0  
    sh[c4d.WORLD_SUBSTEPS]=5  
    sh[c4d.WORLD_ITERATIONS]=10  
    sh[c4d.WORLD_ERROR_THRESHOLD]=10      
    c4d.EventAdd()  
      
      
      
     //VISUALIZATION  
    sh = doc.FindSceneHook(180000100)  
    sh[c4d.WORLD_VISUALIZE]=False  
    sh[c4d.WORLD_VISUALIZE_SHAPES]=True  
    sh[c4d.WORLD_VISUALIZE_AABBS]=True  
    sh[c4d.WORLD_VISUALIZE_CONTACT_POINTS]=True  
    sh[c4d.WORLD_VISUALIZE_CONSTRAINTS]=True  
    c4d.EventAdd()  
      
      
      //Key Interpolation  
      
    sh = doc.FindSceneHook(465001535)  
    sh[c4d.TLWORLD_OVERDUB]=False  
    sh[c4d.TLWORLD_LOCKV]=False  
    sh[c4d.TLWORLD_AUTO]=True  
    sh[c4d.TLWORLD_LOCKTA]=False  
    sh[c4d.TLWORLD_BREAK]=False  
      
    //Spline types  
    sh[c4d.TLWORLD_INTER]=c4d.TLWORLD_INTER_SP  #Spline type  
    sh[c4d.TLWORLD_INTER]=c4d.TLWORLD_INTER_LI  #linear type  
    sh[c4d.TLWORLD_INTER]=c4d.TLWORLD_INTER_ST  #Step   type  
      
    sh[c4d.TLWORLD_LOCKT]=False  
    sh[c4d.TLWORLD_CLAMP]=True  
    sh[c4d.TLWORLD_LOCKTL]=False  
    sh[c4d.TLWORLD_KEEPVISUALANGLE]=False
    

    -ScottA


Log in to reply