Projets Simulation

Projet Réalité Virtuelle (IKEA Virtual Planner)

Description

Projet de programmation 3D … a completer

Titre: Développeur de logiciel Senior C++/3D 

Projet (IKEA Virtual Planner): Développé un prototype pour valider la faisabilité du projet 

Application de design d’intérieur de cuisine qui intègre la technologie de la réalité virtuelle (casque 3D) afin d’expérimenter différents scenarios de design et ainsi rendre l’expérience plus réaliste. 

A titre de Développeur de logiciel C++/3D, mon mandat était de développer une application qui permet de convertir modèle 3D de design intérieur, à partir du format propriétaire de la compagnie, vers le format FBX Autodesk (http://www.autodesk.com/products/fbx/overview ). 

Ci-dessous le maillage complet de la cuisine

Maillage complet de la cuisine
  • Analyse du code source (existant) de la compagnie, identifier les parties de code afin d’être en mesure de réutiliser/adapter certains algorithmes; 
  • Mise à niveau de certaines librairies de la compagnie pour le support du projet (débogage, mise au point d’un environnement pour tester et valider le rendu des modeles;);  
  • Programmation d’un algorithme de modélisation 3D qui permet de construire le ‘’scene graph’’ complet dans le nouveau format FBX;  

Ci-dessous un exemple de code pour les differentes parties de la cuisine.

FbxNode* RoomExtract2FbxApp::createRoomStuff(FbxManager* g_SdkManager, FbxScene* pScene)
{
#if _DEBUG
	std::cout << "Creating the Items_Floor (whole cabinet)n";
#endif

	// create room scene graph of the room from AxsCompleteRoom model
	using namespace std;
	using json = nlohmann::json;

	// no attribute represent a group node
	FbxNode* w_roomNode = FbxNode::Create(g_SdkManager, "RoomStuff");
	assert(nullptr == w_roomNode->GetNodeAttribute());

	// 0: index (World container) of RoomStuff
	// m_jsonObject["object"]["children"][0]["children"] -> this is the world
	const unsigned int w_worldIdx = 0; // RoomStuff (FVSLoadItem)
	json::string_t w_roomStuffName = m_jsonObject["object"]["children"][0]["children"][0]["name"];
	assert(std::string("RoomStuff") == w_roomStuffName);

	// room object
	json w_roomStuff = m_jsonObject["object"]["children"][0]["children"][0]; // "RoomStuff"
	json::array_t w_roomArray = w_roomStuff["children"]; // array of all groups of the RoomStuff 

	// call create group
	if (w_roomStuff["children"].is_array()) // first children
	{
		// start from top children node and traverse the to leaf
		createGroup(w_roomStuff["children"], w_roomNode); // positionned at no name 
	}
	return w_roomNode;
}

Pour un aperçu de la technologie, voir les vidéos sur ‘YouTube’ 

Projet Simulateur Chirurgie Assistee Par Ordinateur