// Load a mesh from a .x file. public void LoadMesh() { // Load the mesh. ExtendedMaterial[] exmaterials = null; try { //m_Mesh = Mesh.FromFile(this.sName, MeshFlags.Managed, m_Device, out exmaterials); //System.Windows.Forms.MessageBox.Show("FullPath: "+this.fullPath); Object3d obj = this; //System.Windows.Forms.MessageBox.Show("obj.path: " + obj.getPath() + ". name: " + obj.getName() + ". type: " + obj.getObjType(), "Object3d.LoadMesh"); //System.Windows.Forms.MessageBox.Show("name: " + obj.getName(), "Object3d.LoadMesh"); if (!File.Exists(fullPath)) { throw new FileNotFoundException(); } m_Mesh = Mesh.FromFile(this.fullPath, MeshFlags.Managed, m_Device, out exmaterials); //m_Mesh = Mesh.FromFile(this.sName, MeshFlags.Managed, m_Device, out exmaterials); } catch (Exception x) {// System.Windows.Forms.MessageBox.Show(x.ToString()); } // Load the textures and materials. m_Textures = new Texture[exmaterials.Length]; m_Materials = new Material[exmaterials.Length]; for (int i = 0; i < exmaterials.Length; i++) { string texture_file = exmaterials[i].TextureFilename; if (texture_file != null) { Debug.WriteLine("Texture " + i + ": " + texture_file); if (texture_file.Length > 0) { try { m_Textures[i] = TextureLoader.FromFile(m_Device, Path.GetDirectoryName(fullPath) + texture_file); } catch { Debug.WriteLine("*********************"); Debug.WriteLine("Error loading texture " + texture_file); } } } else { Debug.WriteLine("Texture " + i + ": " + "<null>"); } m_Materials[i] = exmaterials[i].Material3D; m_Materials[i].Ambient = m_Materials[i].Diffuse; } // Save the number of subsets. m_NumSubSets = m_Materials.Length; }
public static Object3d GetByID(int id) { Object3d ret = null; try { ret = Manager.XMLResourceManager.XML3dObject.GetById(id); } catch (System.IO.FileNotFoundException) { return(null); } catch (Exception x) {// System.Windows.Forms.MessageBox.Show(x.ToString()); } return(ret); }
public frm_Add3dObject(Control paretn,Etape step,Object3d lastObj) { InitializeComponent(); this.pParetn = paretn; btn_DrawObject.Enabled = false; grpbx_Manipulation.Enabled = false; this.Step = step; this.LastObj = lastObj; //this._Operation = operation; //if (this._Operation == Operation.AddNew) { //MessageBox.Show("Step.Name: "+this.Step.getName(),"frm_AddP=Object.Constructor"); if (LastObj != null) number = LastObj.getNb() + 1; if (this.Step != null) { lbl_StepName.Text = "Etape: "+this.Step.getName(); //MessageBox.Show("frm_AddStep.RenderForm.Objects.count: " + RenderForm.Objects.Count.ToString()); if (RenderForm.Objects != null && RenderForm.Objects.Count > 0) { foreach (Object3d obj in RenderForm.Objects) { //Fill the list box of the created objects. { lstbx_Objects.Items.Add(obj); //obj.LoadMesh(); //lstbx_Objets.Items.Add(file_info); tabControl1.SelectedIndex = 0; } } } //---------------------------------- } else MessageBox.Show("Step null","frm_AddObject.Constructor"); } //else { } }
public void removeObjects3d(Object3d object3d) { object3d.setStep(null);; objects3d.Remove(object3d); }
public void addObject3d(Object3d object3d) { object3d.setStep(this); objects3d.Add(object3d); }
/// <summary> /// Search for an obj data using its id. /// </summary> /// <param name="id">The id of the targeted obj.</param> /// <returns></returns> public static Object3d GetById(int id) { /* On déclare et on crée une instance des variables nécéssaires pour la recherche */ Object3d obj = new Object3d(); try { string rslt = Helper.service.LoadFile("objet3d.xml").ToString(); StreamWriter sw = new StreamWriter(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); sw.Write(rslt); sw.Close(); //XPathDocument XPathDocu = new XPathDocument((Stream)Helper.service.LoadFile("Experts.xml")); XPathDocument XPathDocu = new XPathDocument(System.Windows.Forms.Application.StartupPath + "\\temp.xml"); XPathNavigator Navigator; XPathNodeIterator Nodes; /* On crée un navigateur */ Navigator = XPathDocu.CreateNavigator(); /* On crée ici l'expression XPath de recherche d'obj à partir du login */ string ExpXPath = "//objet[@id='" + id + "']"; /* On lance la recherche */ Nodes = Navigator.Select(Navigator.Compile(ExpXPath)); /* On vérifie si la recherche a été fructueuse */ if (Nodes.Count != 0) { Nodes.MoveNext(); // NOTE: Necéssaire pour se placer sur le noeud recherché /* Encodage des données dans la classe Object3d */ obj.setId(id); obj.setName(Path.GetFileNameWithoutExtension(Nodes.Current.GetAttribute("nom", ""))); obj.setType(Nodes.Current.GetAttribute("type", "")); //System.Windows.Forms.MessageBox.Show("obj.type: " + Nodes.Current.GetAttribute("type", ""),"XML3dObject.GetById"); } /* Si aucun obj n'a été trouvé */ else { obj = null; } } catch (System.IO.FileNotFoundException x) { } catch (Exception x) { System.Windows.Forms.MessageBox.Show(x.ToString()); } /* Renvoi de toutes les données dans une instance de la classe "Client" */ return obj; }
private static void getObjectTransformation_(XPathNodeIterator Nodes, Object3d obj) { Nodes.Current.MoveToFollowing(XPathNodeType.Element);//Move to first position //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current: " + Nodes.Current.Name); float posx = (float)Convert.ToDouble(Nodes.Current.GetAttribute("x", "")) * XMLStep.translateFactor; //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current.getattrib: " + Nodes.Current.GetAttribute("x", "")+" "+posx); float posz = (float)Convert.ToDouble(Nodes.Current.GetAttribute("y", "")) * XMLStep.translateFactor; float posy = (float)Convert.ToDouble(Nodes.Current.GetAttribute("z", "")) * XMLStep.translateFactor * XMLStep.zFactor; //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.posx: " + posx); obj.setPosition(new Microsoft.DirectX.Vector3(posx, posy, posz)); Nodes.Current.MoveToFollowing(XPathNodeType.Element);//Move to first rotation //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current: " + Nodes.Current.Name); float rotx = (float)Convert.ToDouble(Nodes.Current.GetAttribute("x", "")) * (-1); float rotz = (float)Convert.ToDouble(Nodes.Current.GetAttribute("y", "")) * (-1); float roty = (float)Convert.ToDouble(Nodes.Current.GetAttribute("z", "")); System.Windows.Forms.MessageBox.Show("Befor: Y: " + roty + " Z: " + rotz); float angle = (float)Convert.ToDouble(Nodes.Current.GetAttribute("angle", "")); obj.setRotation(new Microsoft.DirectX.Vector3(Helper.DegreesToRadians(rotx * angle), Helper.DegreesToRadians(roty * angle), Helper.DegreesToRadians(rotz * angle))); Nodes.Current.MoveToFollowing(XPathNodeType.Element);//Move to first scale //System.Windows.Forms.MessageBox.Show("XMLObject3D.getObjectTransformation.current: " + Nodes.Current.Name); float sclx = (float)Convert.ToDouble(Nodes.Current.GetAttribute("x", "")) / XMLStep.scaleFactor; float scly = (float)Convert.ToDouble(Nodes.Current.GetAttribute("y", "")) / XMLStep.scaleFactor; float sclz = (float)Convert.ToDouble(Nodes.Current.GetAttribute("z", "")) / XMLStep.scaleFactor; obj.setScale(new Microsoft.DirectX.Vector3(sclx, scly, sclz)); //Move back to the parent so the invoker of this methode can continue from where it started. Nodes.Current.MoveToParent(); }
public void removeObjects3d(Object3d object3d) { object3d.setStep(null); ; objects3d.Remove(object3d); }
private void btn_DrawObject_Click(object sender, EventArgs e) { ListBox listbox = ((ListBox)tabControl1.SelectedTab.GetChildAtPoint(new Point(0, 0))); ObjForListView model = (ObjForListView)(listbox.SelectedItem); if (model != null) { Vector3 scale = new Vector3(1f,1f,1f); switch (model.Name) { case "droid": scale = new Vector3(0.085f, 0.085f, 0.085f); break; case "miku": scale = new Vector3(0.35f, 0.35f, 0.35f); break; case "tournevis": scale = new Vector3(7.7f, 7.7f, 7.7f); break; case "flecheVerte": scale = new Vector3(0.88f, 0.88f, 0.88f); break; case "box": scale = new Vector3(20f, 20f, 20f); break; } Object3d obj3d = new Object3d(Convert.ToInt32(model.Id), model.Name, model.Type, new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0, 0, 0), scale, RenderForm.m_Device); obj3d.setNb(this.number); try { obj3d.LoadMesh(); } catch (FileNotFoundException) { string str = "Le modèle " + obj3d.getName() + " n'existe pas dans le chemain " + obj3d.getPath(); MessageBox.Show(this, str, "Message d'erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); } RenderForm.Objects.Add(obj3d); lstbx_Objects.Items.Add(model); tabControl1.SelectedIndex = 0; if (lstbx_Objects.Items.Count > 0) { lstbx_Objects.SelectedIndex = lstbx_Objects.Items.Count - 1; lstbx_Objects_Click(null, EventArgs.Empty); } btn_RemoveObject.Enabled = true; } }