int MassSpringSystemFromTetMeshConfigFile::GenerateMassSpringSystem(const char * configFilename, MassSpringSystem ** massSpringSystem, MassSpringSystemTetMeshConfiguration * massSpringSystemTetMeshConfiguration) { char tetMeshFilename[4096]; char surfaceMeshFilename[4096]; double density, tensileStiffness, damping; int addGravity; printf("Parsing configuration file %s...\n", configFilename); ConfigFile configFile; configFile.addOption("tetMeshFilename", tetMeshFilename); configFile.addOptionOptional("surfaceMeshFilename", surfaceMeshFilename, "__none"); configFile.addOption("density", &density); configFile.addOption("tensileStiffness", &tensileStiffness); configFile.addOption("damping", &damping); configFile.addOption("addGravity", &addGravity); if (configFile.parseOptions(configFilename) != 0) { printf("Error parsing options.\n"); return 1; } // the config variables have now been loaded with their specified values // informatively print the variables (with assigned values) that were just parsed configFile.printOptions(); TetMesh * tetMesh; try { tetMesh = new TetMesh(tetMeshFilename); } catch(int eCode) { printf("Error: unable to load mesh from %s. Code: %d\n", tetMeshFilename, eCode); return 1; }; printf("Tet mesh loaded.\n"); MassSpringSystemFromTetMesh massSpringSystemFromTetMesh; int code = massSpringSystemFromTetMesh.GenerateMassSpringSystem(tetMesh, massSpringSystem, density, tensileStiffness, damping, addGravity); delete(tetMesh); if (massSpringSystemTetMeshConfiguration != NULL) { massSpringSystemTetMeshConfiguration->tetMeshFilename = DuplicateString(tetMeshFilename); massSpringSystemTetMeshConfiguration->surfaceMeshFilename = DuplicateString(surfaceMeshFilename); massSpringSystemTetMeshConfiguration->density = density; massSpringSystemTetMeshConfiguration->tensileStiffness = tensileStiffness; massSpringSystemTetMeshConfiguration->damping = damping; massSpringSystemTetMeshConfiguration->addGravity = addGravity; } return code; }
Lighting::Lighting(const char * configFilename) { if (glGetError() != GL_NO_ERROR) printf("Warning: error in the OpenGL state at the beginning of lighting constructor.\n"); ConfigFile configFile; configFile.addOptionOptional("globalAmbientIntensity", &ambientIntensity, 0.0f); configFile.addOptionOptional("localViewer", &localViewer, true); configFile.addOptionOptional("twoSidedLighting", &twoSidedLighting, false); configFile.addOptionOptional("enableAmbientTerm", &enableAmbientTerm, true); configFile.addOptionOptional("enableDiffuseTerm", &enableDiffuseTerm, true); configFile.addOptionOptional("enableSpecularTerm", &enableSpecularTerm, true); for(int light=0; light<8; light++) { char lightCh = '0' + light; char optionName[128]; sprintf(optionName, "lightEnabled_%c", lightCh); configFile.addOptionOptional(optionName, &lightEnabled[light], false); sprintf(optionName, "position_%c_X", lightCh); configFile.addOptionOptional(optionName, &lightPosition[4*light+0], 0.0f); sprintf(optionName, "position_%c_Y", lightCh); configFile.addOptionOptional(optionName, &lightPosition[4*light+1], 0.0f); sprintf(optionName, "position_%c_Z", lightCh); configFile.addOptionOptional(optionName, &lightPosition[4*light+2], 0.0f); sprintf(optionName, "position_%c_DIR", lightCh); configFile.addOptionOptional(optionName, &lightPosition[4*light+3], 1.0f); sprintf(optionName, "lightIntensity_%c", lightCh); configFile.addOptionOptional(optionName, &lightIntensity[light], 1.0f); } if (configFile.parseOptions(configFilename) != 0) throw 1; //configFile.printOptions(); #define TURNONLIGHT(i)\ if(lightEnabled[i])\ glEnable(GL_LIGHT##i);\ else\ glDisable(GL_LIGHT##i);\ TURNONLIGHT(0); TURNONLIGHT(1); TURNONLIGHT(2); TURNONLIGHT(3); TURNONLIGHT(4); TURNONLIGHT(5); TURNONLIGHT(6); TURNONLIGHT(7); if (glGetError() != GL_NO_ERROR) printf("Warning: error in the OpenGL state in the Lighting constructor.\n"); for(int light=0; light<8; light++) { if(!lightEnabled[light]) continue; if (enableAmbientTerm) { lKa[light*4+0] = lKa[light*4+1] = lKa[light*4+2] = lightIntensity[light]; } else { lKa[light*4+0] = lKa[light*4+1] = lKa[light*4+2] = 0.0f; } if (enableDiffuseTerm) { lKd[light*4+0] = lKd[light*4+1] = lKd[light*4+2] = lightIntensity[light]; } else { lKd[light*4+0] = lKd[light*4+1] = lKd[light*4+2] = 0.0f; } if (enableSpecularTerm) { lKs[light*4+0] = lKs[light*4+1] = lKs[light*4+2] = lightIntensity[light]; } else { lKs[light*4+0] = lKs[light*4+1] = lKs[light*4+2] = 0.0f; } // set alpha to 1.0 lKa[light*4+3] = lKd[light*4+3] = lKs[light*4+3] = 1.0; } GLfloat aGa[] = { ambientIntensity, ambientIntensity, ambientIntensity, 1.0 }; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, aGa); glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, localViewer); glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, twoSidedLighting); }
void initConfigurations() { ConfigFile configFile; // specify the entries of the config file configFile.addOptionOptional("windowWidth",&windowWidth,800); configFile.addOptionOptional("windowHeight",&windowHeight,800); configFile.addOption("deformableObjectFilename",deformableObjectFilename); configFile.addOptionOptional("modesFilename",modesFilename,"__none"); configFile.addOptionOptional("cubicPolynomialFilename",cubicPolynomialFilename,"__none"); configFile.addOption("dampingMassCoef",&dampingMassCoef); configFile.addOption("dampingStiffnessCoef",&dampingStiffnessCoef); configFile.addOptionOptional("plasticThreshold", &plasticThreshold, plasticThreshold); configFile.addOption("deformableObjectCompliance",&deformableObjectCompliance); configFile.addOption("frequencyScaling",&frequencyScaling); configFile.addOptionOptional("cameraRadius",&cameraRadius,17.5); configFile.addOptionOptional("focusPositionX",&focusPositionX,0.0); configFile.addOptionOptional("focusPositionY",&focusPositionY,0.0); configFile.addOptionOptional("focusPositionZ",&focusPositionZ,0.0); configFile.addOptionOptional("cameraLongitude",&cameraLongitude,-60.0); configFile.addOptionOptional("cameraLattitude",&cameraLattitude,20.0); configFile.addOptionOptional("renderWireframe",&renderWireframe,1); configFile.addOptionOptional("extraSceneGeometry",extraSceneGeometryFilename,"__none"); configFile.addOptionOptional("enableTextures",&enableTextures,enableTextures); configFile.addOptionOptional("backgroundColor",backgroundColorString, backgroundColorString); string lightingConfigFilenameDefault = configFilesDir + "default.lighting"; configFile.addOptionOptional("lightingConfigFilename",lightingConfigFilename, (char*) lightingConfigFilenameDefault.c_str()); configFile.addOptionOptional("substepsPerTimeStep", &substepsPerTimeStep, substepsPerTimeStep); configFile.addOptionOptional("renderOnGPU", &renderOnGPU, 1); // parse the configuration file if (configFile.parseOptions((char*)configFilename.c_str()) != 0) { printf("Error: unable to load the configuration file.\n"); exit(1); } // the config variables have now been loaded with their specified values // informatively print the variables (with assigned values) that were just parsed configFile.printOptions(); }