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