int XFileExporter::DoExport(const TCHAR* name, ExpInterface *ei, Interface *i, BOOL suppressPrompts, DWORD options) { bool showPrompts = suppressPrompts ? false : true; bool exportSelected = (options & SCENE_EXPORT_SELECTED) ? true : false; return SUCCEEDED(ExportScene(name, showPrompts, exportSelected)); }
void Exporter::ProcessScene(const char *file_path) { MStatus status = MS::kSuccess; // [Ur Maya-dokumentationen] // Set everything back to a new file state. status = MFileIO::newFile(true); if (!status) { std::cout << "<Error> MFileIO::newFile()" << std::endl; return; } // [Ur Maya-dokumentationen] // Open the given file, and set the current active file to this file. If there are unsaved changes in the current scene, this operation will fail unless the force flag is set to true. status = MFileIO::open(file_path, NULL, true); if (!status) { std::cout << "<Error> MFileIO::open()" << std::endl; return; } // skapar exportfilerna if (!CreateExportFiles(file_path)) { std::cout << "<Error> CreateExportFiles()" << std::endl; return; } // identifiera och extrahera data fr�n scenen std::cout << "Identifying scene information" << std::endl << std::endl; if (!IdentifyAndExtractScene()) { std::cout << "<Error> IdentifyAndExtractScene()" << std::endl; return; } else { // exportera data till fil std::cout << "Exporting scene information" << std::endl << std::endl; ExportScene(); } scene_.meshes.clear(); scene_.materials.clear(); scene_.cameras.clear(); scene_.blendShapes.clear(); scene_.lights.ambientLights.clear(); scene_.lights.areaLights.clear(); scene_.lights.dirLights.clear(); scene_.lights.spotLights.clear(); scene_.lights.pointLights.clear(); scene_.animations.clear(); scene_.skeleton.clear(); for (int i = 0; i < scene_.sceneGraph.size(); i++) scene_.sceneGraph[i].name.clear(); scene_.sceneGraph.clear(); }
bool SGMExporter::DoExport(const TCHAR *name, ExpInterface *ei, Interface *max_interface) { //log ->AddLog(sb() + "exporting animation to file '" + name + "'"); std::ofstream fileStream(name, std::ios::binary); BinaryWriter *fh = new BinaryWriter(&fileStream); ExportScene(fh); fileStream.close(); delete fh; return true; }
bool SGMExporter::DoExport(const TCHAR *name, ExpInterface *ei, Interface *max_interface) { std::ofstream file(name, std::ios::binary); ExportScene(file); //en od lightings list signature StreamWriter::WriteInt(file, 0); file.close(); return true; }
void ColladaScene::ExportScene(FCDSceneNode * fcdNode /* = 0 */, ColladaSceneNode * node /* = 0 */) { exportSceneLevel++; if (fcdNode == 0)fcdNode = rootFCDNode; if (node == 0)node = rootNode; node->UpdateTransforms(0); for (int i = 0; i < (int)fcdNode->GetInstanceCount(); ++i) { FCDEntityInstance* instance = fcdNode->GetInstance(i); FCDEntity * entity = instance->GetEntity(); if (!entity) continue; fm::string name = entity->GetDaeId(); for (int space = 0; space < exportSceneLevel; ++space) printf(" "); printf(" - instance: %s\n", name.c_str()); ColladaMesh * mesh = FindMeshWithName(name); if (mesh) { ColladaMeshInstance * meshInstance = CreateMeshInstance(mesh, dynamic_cast<FCDGeometryInstance*>(instance), false); //for (int space = 0; space < exportSceneLevel; ++space) // printf(" "); //printf(" - mesh: %s\n", name.c_str()); node->AddMeshInstance(meshInstance); } ColladaLight * light = FindLightWithName(name); if (light) { //for (int space = 0; space < exportSceneLevel; ++space) // printf(" "); //printf(" - light: %s\n", name.c_str()); node->AddLight(light); } ColladaAnimatedMesh * aMesh = FindAnimatedMeshWithName(name); if (aMesh) { FCDControllerInstance * controllerInstance = dynamic_cast<FCDControllerInstance*>(instance); //for (int space = 0; space < exportSceneLevel; ++space) // printf(" "); //printf("- controller instance: %s\n", name.c_str()); if (aMesh->mesh) { ColladaMeshInstance * meshInstance = CreateMeshInstance(aMesh->mesh, dynamic_cast<FCDGeometryInstance*>(instance), true); node->AddMeshInstance(meshInstance); } } ColladaCamera * aCam = FindCameraWithName(name); if (aCam) { node->AddCamera(aCam); } } for (int i = 0; i < (int)fcdNode->GetChildrenCount(); i++) { FCDSceneNode * fcdChildNode = fcdNode->GetChild(i); ColladaSceneNode * childNode = new ColladaSceneNode(this, fcdChildNode); ExportScene(fcdChildNode, childNode); node->AddNode(childNode); } exportSceneLevel--; }
// ************************************************** void menuFunc(int m) { switch(m) { case MENU_TOGGLE_AMBIENT: ToggleAmbient(); break; case MENU_TOGGLE_DIFFUSE: ToggleDiffuse(); break; case MENU_TOGGLE_SPECULAR: ToggleSpecular(); break; case MENU_TOGGLE_REFLECTIONS: ToggleReflections(); break; case MENU_TOGGLE_TRANSPARENCY: ToggleTransparency(); break; case MENU_TOGGLE_TEXTURING: ToggleTexturing(); break; case MENU_TOGGLE_ANTIALIAS: ToggleAntiAliasing(); break; case MENU_TOGGLE_ATTENUATION: ToggleAttenuation(); break; case MENU_ADD_PRIMITIVE: AddRandomPrimitive(); break; case MENU_ADD_LIGHT: AddRandomLight(); break; case MENU_PRESET_1: LoadPresetScene1(); break; case MENU_PRESET_2: LoadPresetScene2(); break; case MENU_PRESET_3: LoadPresetScene3(); break; case MENU_RESET_SCENE: ResetScene(); break; case MENU_EXPORT_SCENE: ExportScene(); break; default: break; } }
// *********************************************************** // custom keyFunc with preset keys void keyFunc(unsigned char ch, int x, int y) { bool bPostRedisplay = false; switch(ch) { case 'q': case 'Q': bPostRedisplay = false; exit(0); break; case '`': cindex = 0; if(cmode == ControlMode_Lights) printf("Now controlling Light 0.\n"); else printf("Now controlling Primitive 0.\n"); break; case '1': cindex = 1; if(cmode == ControlMode_Lights) printf("Now controlling Light 1.\n"); else printf("Now controlling Primitive 1.\n"); break; case '2': cindex = 2; if(cmode == ControlMode_Lights) printf("Now controlling Light 2.\n"); else printf("Now controlling Primitive 2.\n"); break; case '3': cindex = 3; if(cmode == ControlMode_Lights) printf("Now controlling Light 3.\n"); else printf("Now controlling Primitive 3.\n"); break; case '4': cindex = 4; if(cmode == ControlMode_Lights) printf("Now controlling Light 4.\n"); else printf("Now controlling Primitive 4.\n"); break; case '5': cindex = 5; if(cmode == ControlMode_Lights) printf("Now controlling Light 5.\n"); else printf("Now controlling Primitive 5.\n"); break; case '6': cindex = 6; if(cmode == ControlMode_Lights) printf("Now controlling Light 6.\n"); else printf("Now controlling Primitive 6.\n"); break; case '7': LoadPresetScene1(); break; case '8': LoadPresetScene2(); break; case '9': LoadPresetScene3(); break; case 'A': case 'a': ToggleAmbient(); break; case 'S': case 's': ToggleSpecular(); break; case 'D': case 'd': ToggleDiffuse(); break; case 'R': case 'r': ToggleReflections(); break; case 'T': case 't': ToggleTransparency(); break; case 'E': case 'e': ToggleTexturing(); break; case 'J': case 'j': ToggleAntiAliasing(); break; case 'U': case 'u': ToggleAttenuation(); break; case 'L': case 'l': cmode = ControlMode_Lights; printf("Control Mode: LIGHTS.\n"); break; case 'P': case 'p': cmode = ControlMode_Prims; printf("Control Mode: PRIMITIVES.\n"); break; case 'V': case 'v': TryToggleVisibility(); bPostRedisplay = true; break; case 'M': case 'm': TryCycleMaterial(); bPostRedisplay = true; break; case 'X': case 'x': TryCycleTexture(); bPostRedisplay = true; break; // move controlled object left case '[': TryMove(-2.0f, 0.0f, 0.0f); bPostRedisplay = true; break; // move controlled object right case ']': TryMove(2.0f, 0.0f, 0.0f); bPostRedisplay = true; break; // move controlled object down case '-': TryMove(0.0f, -2.0f, 0.0f); bPostRedisplay = true; break; // move controlled object up case '=': TryMove(0.0f, 2.0f, 0.0f); bPostRedisplay = true; break; case ';': TryMove(0.0f, 0.0f, -2.0f); bPostRedisplay = true; break; case '\'': TryMove(0.0f, 0.0f, 2.0f); bPostRedisplay = true; break; case '.': if( scene->DecreaseRayDepth()) printf("Ray depth decreased to %d.\n", scene->GetRayDepth()); else printf("Ray depth already at 1.\n"); bPostRedisplay = true; break; case ',': if( scene->IncreaseRayDepth()) printf("Ray depth increased to %d.\n", scene->GetRayDepth()); else printf("Ray depth already at max.\n"); bPostRedisplay = true; break; case 'B': case 'b': ExportScene(); break; case 'Z': case 'z': ResetScene(); break; case 'O': case 'o': if(cmode == ControlMode_Lights) { AddRandomLight(); } else { AddRandomPrimitive(); } break; default: /* Unrecognized keypress */ return; } if(bPostRedisplay) glutPostRedisplay(); }