Document Project Settings



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

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

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

    ---------
    Here is the list of all the project settings so users can quickly look them up if needed:

    //Reference files:  
    //DOCUMENTSETTINGS_GENERAL:General settings: See ddoc.h.  
    //DOCUMENTSETTINGS_MODELING:Modeler settings: See MDATA_Options and toolsnapping.h.  
    //DOCUMENTSETTINGS_TOOLS: See Tool settings  
      
      
      
      
    //// Scene Scale & Units optoptions  
      
    BaseContainer *bc = doc->GetSettingsInstance(DOCUMENTSETTINGS_DOCUMENT);  
    UnitScaleData *usd = (UnitScaleData* )bc->GetCustomDataType(DOCUMENT_DOCUNIT, CUSTOMDATATYPE_UNITSCALE);  
    if (!usd) return FALSE;  
      
    usd->SetUnitScale(1.0, DOCUMENT_UNIT_CM);// SceneScale & Units options = DOCUMENT_UNIT_UNDEF, DOCUMENT_UNIT_KM, DOCUMENT_UNIT_M, DOCUMENT_UNIT_CM,  
                                           //DOCUMENT_UNIT_MM, DOCUMENT_UNIT_MICRO, DOCUMENT_UNIT_MILE, DOCUMENT_UNIT_YARD,DOCUMENT_UNIT_FOOT, DOCUMENT_UNIT_INCH  
    bc->SetData(DOCUMENT_DOCUNIT, GeData(CUSTOMDATATYPE_UNITSCALE, *usd));  
    doc->Message(MSG_UPDATE);                 
    EventAdd();  
      
      
      
    //// Project Settings  
      
    //First set up BaseTime so we can use it later on in the attributes  
    BaseTime time = doc->GetTime(); // assigns the basetime class to a variable  
    Real fps = doc->GetFps();       // Gets the frames per second value  
    Real frame = time.GetFrame(fps);// The current frame the slider is on  
      
    doc->SetParameter(DOCUMENT_FPS, GeData(30), DESCFLAGS_SET_0);               // Sets the FPS attribute  
    doc->SetParameter(DOCUMENT_TIME, GeData(BaseTime(0, fps)), DESCFLAGS_SET_0); // The frame where the scrubber starts   
    doc->SetParameter(DOCUMENT_MINTIME, GeData(BaseTime(0, fps)), DESCFLAGS_SET_0);//The start frame value   
    doc->SetParameter(DOCUMENT_MAXTIME, GeData(BaseTime(90, fps)), DESCFLAGS_SET_0);//The end Frame value   
    doc->SetParameter(DOCUMENT_LOOPMINTIME, GeData(BaseTime(0, fps)), DESCFLAGS_SET_0);//The Preview option Start time  
    doc->SetParameter(DOCUMENT_LOOPMAXTIME, GeData(BaseTime(90, fps)), DESCFLAGS_SET_0);//The Preview option End time  
    doc->SetParameter(DOCUMENT_LOD, GeData(1.0), DESCFLAGS_SET_0);            // Level of Detail          
    doc->SetParameter(DOCUMENT_RENDERLOD, GeData(FALSE), DESCFLAGS_SET_0);    // Render LOD in Editor  
    doc->SetParameter(DOCUMENT_USEANIMATION, GeData(TRUE), DESCFLAGS_SET_0);  // Use Animation  
    doc->SetParameter(DOCUMENT_USEEXPRESSIONS, GeData(TRUE), DESCFLAGS_SET_0);// Use Expressions  
    doc->SetParameter(DOCUMENT_USEGENERATORS, GeData(TRUE), DESCFLAGS_SET_0); // Use Generators  
    doc->SetParameter(DOCUMENT_USEDEFORMERS, GeData(TRUE), DESCFLAGS_SET_0);  // Use Deformers  
    doc->SetParameter(DOCUMENT_USEMOTIONSYSTEM, GeData(TRUE), DESCFLAGS_SET_0); // Use Motion System  
    doc->SetParameter(DOCUMENT_DEFAULTMATERIAL_TYPE, GeData(1), DESCFLAGS_SET_0);// 0=WHITE, 1=GREY-BLUE, 2=USER  
    doc->SetParameter(DOCUMENT_CLIPPING_PRESET, GeData(1), DESCFLAGS_SET_0); // 3=TINY, 0=SMALL, 1=MEDIUM, 2=LARGE, 4=HUGE, 5=CUSTOM  
    doc->SetParameter(DOCUMENT_CLIPPING_PRESET_NEAR, GeData(1.0), DESCFLAGS_SET_0); //Sets the Near clipping value  
    doc->SetParameter(DOCUMENT_CLIPPING_PRESET_FAR, GeData(100000.0), DESCFLAGS_SET_0); //Sets the Far clipping value  
    doc->SetParameter(DOCUMENT_LINEARWORKFLOW, GeData(TRUE), DESCFLAGS_SET_0); // Use Linear Workflow  
    doc->SetParameter(DOCUMENT_COLORPROFILE, GeData(1), DESCFLAGS_SET_0);//  0=SRGB, 1=LINEAR, 2=DISABLED;  
    EventAdd();  
      
      
      
      
    ///// Info Settings  
      
    doc->SetParameter(DOCUMENT_INFO_AUTHOR, GeData(""), DESCFLAGS_SET_0);    //Type your name in here  
    doc->SetParameter(DOCUMENT_INFO_COPYRIGHT, GeData(""), DESCFLAGS_SET_0); //Type your copyright info here  
    doc->SetParameter(DOCUMENT_INFO_README, GeData(""), DESCFLAGS_SET_0);   // Type your notes here  
    EventAdd();  
      
      
      
      
      
    //// Dynamics Settings  
    //Make sure to use this include:  
    #include "../../modules/dynamics2/res/description/dynworldobject.h"  
      
     //GENERAL  
    BaseSceneHook *sh = doc->FindSceneHook(180000100);  
    if (!sh) return FALSE;  
      
    sh->SetParameter(DescID(WORLD_ENABLED), GeData(TRUE), DESCFLAGS_SET_0);            // Enabled  
    sh->SetParameter(DescID(WORLD_DISABLE_DURING_LEAP), GeData(TRUE), DESCFLAGS_SET_0);// Disable on Skip Frame  
    sh->SetParameter(DescID(WORLD_TIMESCALE), GeData(BaseTime(0, fps)), DESCFLAGS_SET_0);// Time Scale          
    sh->SetParameter(DescID(WORLD_GRAVITY), GeData(1000.0), DESCFLAGS_SET_0);          // Gravity value      
    sh->SetParameter(DescID(WORLD_DENSITY), GeData(1.0), DESCFLAGS_SET_0);             // Density value  
    EventAdd();  
      
      
     //CACHE  
    BaseSceneHook *sh = doc->FindSceneHook(180000100);  
    if (!sh) return FALSE;  
      
    sh->SetParameter(DescID(WORLD_CACHE_BAKE), GeData(1.0), DESCFLAGS_SET_0);                    //...See Button code below  
    sh->SetParameter(DescID(WORLD_CACHE_CLEAR), GeData(1.0), DESCFLAGS_SET_0);                   //...See Button code below  
    sh->SetParameter(DescID(WORLD_CACHE_USE), GeData(FALSE), DESCFLAGS_SET_0);                   //Use cached data  
    sh->SetParameter(DescID(WORLD_CACHE_DISABLE_BAKED_OBJECTS), GeData(FALSE), DESCFLAGS_SET_0); //Disable cached objects  
    sh->SetParameter(DescID(WORLD_CACHE_USE_TIME), GeData(FALSE), DESCFLAGS_SET_0);              //Use time stops to control cached playback  
    sh->SetParameter(DescID(WORLD_CACHE_TIME), GeData(BaseTime(0, fps)), DESCFLAGS_SET_0);       //time stops frame value  
    EventAdd();  
      
      
     //EXPERT  
    BaseSceneHook *sh = doc->FindSceneHook(180000100);  
    if (!sh) return FALSE;  
      
    sh->SetParameter(DescID(WORLD_MARGIN), GeData(1.0), DESCFLAGS_SET_0);                        //Collision Margin  
    sh->SetParameter(DescID(WORLD_SCALE), GeData(1.0), DESCFLAGS_SET_0);                        // Scale  
    sh->SetParameter(DescID(WORLD_CONTACT_RESTITUTION_LIFETIME), GeData(5.0), DESCFLAGS_SET_0); // Resting Contact  
    sh->SetParameter(DescID(WORLD_SEED), GeData(0.0), DESCFLAGS_SET_0);                         // Random Seed  
    sh->SetParameter(DescID(WORLD_SUBSTEPS), GeData(5.0), DESCFLAGS_SET_0);                     // Steps per frame  
    sh->SetParameter(DescID(WORLD_ITERATIONS), GeData(10.0), DESCFLAGS_SET_0);                  // Max Iterations per step   
    sh->SetParameter(DescID(WORLD_ERROR_THRESHOLD), GeData(10.0), DESCFLAGS_SET_0);             // Error threshold  
    EventAdd();   
      
      
      
     //VISUALIZATION  
    BaseSceneHook *sh = doc->FindSceneHook(180000100);  
    if (!sh) return FALSE;  
      
    sh->SetParameter(DescID(WORLD_VISUALIZE), GeData(FALSE), DESCFLAGS_SET_0);               // Enable  
    sh->SetParameter(DescID(WORLD_VISUALIZE_SHAPES), GeData(TRUE), DESCFLAGS_SET_0);         // Collision Shapes  
    sh->SetParameter(DescID(WORLD_VISUALIZE_AABBS), GeData(TRUE), DESCFLAGS_SET_0);          // Bounding Boxes  
    sh->SetParameter(DescID(WORLD_VISUALIZE_CONTACT_POINTS), GeData(TRUE), DESCFLAGS_SET_0); // Contact Points  
    sh->SetParameter(DescID(WORLD_VISUALIZE_CONSTRAINTS), GeData(TRUE), DESCFLAGS_SET_0);    // Connectors  
    EventAdd();  
      
      
      
      
    // Execute Dynamics Cache Button  
      
    BaseSceneHook *sh = doc->FindSceneHook(180000100);  
    if (!sh) return FALSE;  
      
    BaseContainer msg(BFM_ACTION);  
    msg.SetLong(BFM_ACTION_ID, 1440);  
    msg.SetLong(BFM_ACTION_VALUE, TRUE);  
      
    DescriptionCommand dc;  
    dc.id = DescID(DescLevel(WORLD_CACHE_BAKE, DTYPE_BUTTON, sh->GetType()));  
    DescriptionCheckUpdate du;  
    du.doc = doc;  
    du.descid = &dc.id;  
    du.drawflags = 0;  
      
    sh->Message(MSG_DESCRIPTION_COMMAND, (void* )&dc);  
    sh->Message(MSG_DESCRIPTION_CHECKUPDATE, (void* )&du);  
    EventAdd();  
      
      
      
      
    // Execute Dynamics Clear Cache Button  
      
    BaseSceneHook *sh = doc->FindSceneHook(180000100);  
    if (!sh) return FALSE;  
      
    BaseContainer msg(BFM_ACTION);  
    msg.SetLong(BFM_ACTION_ID, 1440);  
    msg.SetLong(BFM_ACTION_VALUE, TRUE);  
      
    DescriptionCommand dc;  
    dc.id = DescID(DescLevel(WORLD_CACHE_CLEAR, DTYPE_BUTTON, sh->GetType()));  
    DescriptionCheckUpdate du;  
    du.doc = doc;  
    du.descid = &dc.id;  
    du.drawflags = 0;  
      
    sh->Message(MSG_DESCRIPTION_COMMAND, (void* )&dc);  
    sh->Message(MSG_DESCRIPTION_CHECKUPDATE, (void* )&du);  
    EventAdd();
    

    -ScottA



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

    On 09/06/2011 at 13:14, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    But I'm having trouble with the document scale & Unit's attributes.
    If someone can tell me how to edit those settings.

    Since R12 CINEMA supports true units which required each document to have a unit scale. Its data type is UnitScaleData. Please check the docs for a detailed description.

    cheers,
    Matthias



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

    On 09/06/2011 at 16:43, xxxxxxxx wrote:

    The SDK does a good job explaining the methods and their parameters.
    But it assumes that the reader knows how to construct the correct path to the proper owner of these methods(in this case the document).

    Here's my crude attempt:

    #include "customgui_unitscale.h"  
      UnitScaleData *data;   
      data->SetUnitScale(1, DOCUMENT_UNIT_KM);       
      doc->SetParameter(DescID(DOCUMENT_DOCUNIT), GeData(data), DESCFLAGS_SET_0); //<--This is definitely wrong 
    

    I'm still not very good at understanding the SDK yet.
    I'm hoping if I get enough examples under my belt. I will get to a point where I can use it much better.

    -ScottA



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

    On 10/06/2011 at 02:08, xxxxxxxx wrote:

    You can set custom data like this:

      
    BaseContainer *bc = doc->GetSettingsInstance(DOCUMENTSETTINGS_DOCUMENT);  
      
    UnitScaleData *usd = (UnitScaleData* )bc->GetCustomDataType(DOCUMENT_DOCUNIT, CUSTOMDATATYPE_UNITSCALE);  
    if (!usd) return FALSE;  
      
    usd->SetUnitScale(10.0, DOCUMENT_UNIT_KM);  
      
    bc->SetData(DOCUMENT_DOCUNIT, GeData(CUSTOMDATATYPE_UNITSCALE, *usd));  
      
    doc->Message(MSG_UPDATE);  
      
    EventAdd();  
    

    cheers,
    Matthias



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

    On 10/06/2011 at 07:25, xxxxxxxx wrote:

    Thank you sir.🍺
    I added it to the list. Now it should be complete.

    -ScottA


Log in to reply