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();
}
Beispiel #3
0
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;
}
Beispiel #5
0
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--;
}
Beispiel #6
0
// **************************************************
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;
      
  }
  
}
Beispiel #7
0
// ***********************************************************
// 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();
    
}