// //ORIGINAL LINE: MeshPtr realizeMesh(const string& name ="") public MeshPtr realizeMesh(string name) { //Mogre.SceneManager smgr = Root.Singleton.GetSceneManagerIterator().Current; Mogre.SceneManagerEnumerator.SceneManagerIterator item = Root.Singleton.GetSceneManagerIterator(); item.MoveNext(); Mogre.SceneManager smgr = item.Current; item.Dispose(); ManualObject manual = smgr.CreateManualObject(name); //for (List<Shape>.Enumerator it = mShapes.GetEnumerator(); it.MoveNext(); ++it) foreach (var it in mShapes) { manual.Begin("BaseWhiteNoLighting", RenderOperation.OperationTypes.OT_LINE_STRIP); it._appendToManualObject(manual); manual.End(); } MeshPtr mesh = null;// MeshManager.Singleton.CreateManual(Guid.NewGuid().ToString("N"), "General"); //new MeshPtr(); if (name == "") { mesh = manual.ConvertToMesh(Utils.getName("mutishape_procedural_")); } else { mesh = manual.ConvertToMesh(name); } smgr.DestroyManualObject(manual); return(mesh); }
public MeshPtr LoadStaticBrfMeshIntoOgre(SceneManager sceneManager, MBBrfMesh brfMesh, int frame = 0) { //Convert Vertex and Faces to Ogre Mesh Format if (brfMesh == null) { return(null); } if (meshes.ContainsKey(brfMesh.Name)) { return(meshes[brfMesh.Name]); } ManualObject mo = sceneManager.CreateManualObject(brfMesh.Name + "-" + Guid.NewGuid().ToString()); mo.Begin(brfMesh.Material); int np = 0, nv = 0; for (int i = 0; i < brfMesh.Frames[frame].pos.Count; i++) { mo.Position( brfMesh.Frames[frame].pos[i].x, brfMesh.Frames[frame].pos[i].y, brfMesh.Frames[frame].pos[i].z ); np++; } for (int i = 0; i < brfMesh.Frames[frame].norm.Count; i++) { mo.Normal( -brfMesh.Frames[frame].norm[i].x, brfMesh.Frames[frame].norm[i].y, brfMesh.Frames[frame].norm[i].z ); mo.TextureCoord( brfMesh.Vertex[i].ta.X, brfMesh.Vertex[i].ta.Y ); nv++; } for (int i = 0; i < brfMesh.Faces.Count; i++) { for (int j = 0; j < 3; j++) { mo.Triangle( (uint)(brfMesh.Vertex[brfMesh.Faces[i].index[j]].index + 1 + cp), (uint)(brfMesh.Faces[i].index[j] + 1 + cv), (uint)(brfMesh.Faces[i].index[j] + 1 + cv) ); } } mo.End(); cp += np; cv += nv; return(mo.ConvertToMesh(brfMesh.Name + "-" + Guid.NewGuid().ToString())); }
public MeshPtr getCube(string cubeName) { manualObj = mSceneMgr.CreateManualObject("maualObjQuad"); manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list // ---- Vertex Buffer ---- manualObj.Position(new Vector3(-1000, 0, 1000)); // --- Vertex 0 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Position(new Vector3(1000, 0, 1000)); // --- Vertex 1 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Position(new Vector3(1000, 0, -1000)); // --- Vertex 2 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Position(new Vector3(-1000, 0, -1000 0)); // --- Vertex 3 --- manualObj.TextureCoord(new Vector2(1, 1)); // ---- Index Buffer ---- // --- Triangle 0 --- manualObj.Index(0); manualObj.Index(1); manualObj.Index(2); // --- Triangle 1 --- manualObj.Index(1); manualObj.Index(3); manualObj.Index(2); manualObj.End(); // Closes the manual objet return(manualObj.ConvertToMesh("Floor")); // Prepares the data to be sent to the GPU }
/// <summary> /// This private method defines the vertex and index buffers of a quad as a triangle list. /// </summary> private MeshPtr Quad() { manualObj = mSceneMgr.CreateManualObject("maualObjQuad"); manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list // ---- Vertex Buffer ---- manualObj.Position(new Vector3(5, 5, 0)); // --- Vertex 0 --- manualObj.Position(new Vector3(-5, 5, 0)); // --- Vertex 1 --- manualObj.Position(new Vector3(5, -5, 0)); // --- Vertex 2 --- manualObj.Position(new Vector3(-5, -5, 0)); // --- Vertex 3 --- // ---- Index Buffer ---- // --- Triangle 0 --- manualObj.Index(0); manualObj.Index(1); manualObj.Index(2); // --- Triangle 1 --- manualObj.Index(1); manualObj.Index(3); manualObj.Index(2); manualObj.End(); // Closes the manual objet return(manualObj.ConvertToMesh("Quad")); // Prepares the data to be sent to the GPU }
void CreateGrassMesh() { const float width = 25; const float height = 30; Vector3 vec = new Vector3(width / 2, 0, 0); ManualObject obj = _sceneManager.CreateManualObject("GrassObject"); Quaternion quat = new Quaternion(new Degree(60), Vector3.UNIT_Y); obj.Begin("Examples/GrassBlades", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); for (uint i = 0; i < 3; ++i) { obj.Position(-vec.x, height, -vec.z); obj.TextureCoord(0, 0); obj.Position(vec.x, height, vec.z); obj.TextureCoord(1, 0); obj.Position(-vec.x, 0, -vec.z); obj.TextureCoord(0, 1); obj.Position(vec.x, 0, vec.z); obj.TextureCoord(1, 1); uint offset = 4 * i; obj.Triangle(offset, offset + 3, offset + 1); obj.Triangle(offset, offset + 2, offset + 3); vec = quat * vec; } obj.End(); obj.ConvertToMesh("grass"); _sceneManager.DestroyManualObject(obj); }
private void createSphere(string strName, float r, SceneManager sceneMgr, int nRings = 16, int nSegments = 16) { ManualObject manual = sceneMgr.CreateManualObject(strName); manual.Begin("BaseWhiteNoLighting", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); float fDeltaRingAngle = (Mogre.Math.PI / nRings); float fDeltaSegAngle = (2 * Mogre.Math.PI / nSegments); ushort wVerticeIndex = 0; // Generate the group of rings for the sphere for (int ring = 0; ring <= nRings; ring++) { float r0 = r * Mogre.Math.Sin(ring * fDeltaRingAngle); float y0 = r * Mogre.Math.Cos(ring * fDeltaRingAngle); // Generate the group of segments for the current ring for (int seg = 0; seg <= nSegments; seg++) { float x0 = r0 * Mogre.Math.Sin(seg * fDeltaSegAngle); float z0 = r0 * Mogre.Math.Cos(seg * fDeltaSegAngle); // Add one vertex to the strip which makes up the sphere manual.Position(x0, y0, z0); manual.Normal(new Mogre.Vector3(x0, y0, z0).NormalisedCopy); manual.TextureCoord((float)seg / (float)nSegments, (float)ring / (float)nRings); if (ring != nRings) { // each vertex (except the last) has six indicies pointing to it manual.Index((uint)(wVerticeIndex + nSegments + 1)); manual.Index(wVerticeIndex); manual.Index((uint)(wVerticeIndex + nSegments)); manual.Index((uint)(wVerticeIndex + nSegments + 1)); manual.Index((uint)(wVerticeIndex + 1)); manual.Index(wVerticeIndex); wVerticeIndex++; } } ; // end for seg } // end for ring manual.End(); MeshPtr mesh = manual.ConvertToMesh(strName); mesh._setBounds(new AxisAlignedBox(new Mogre.Vector3(-r, -r, -r), new Mogre.Vector3(r, r, r)), false); mesh._setBoundingSphereRadius(r); ushort src, dest; if (!mesh.SuggestTangentVectorBuildParams(VertexElementSemantic.VES_TANGENT, out src, out dest)) { mesh.BuildTangentVectors(VertexElementSemantic.VES_TANGENT, src, dest); } }
public MeshPtr buildMesh(string name, string group) { System.Diagnostics.Debug.Assert(!string.IsNullOrEmpty(name)); if (string.IsNullOrEmpty(name)) { name = Utils.getName("debugrender_procedural"); } //SceneManager sceneMgr = Root.Singleton.GetSceneManagerIterator().Current; Mogre.SceneManagerEnumerator.SceneManagerIterator item = Root.Singleton.GetSceneManagerIterator(); item.MoveNext(); Mogre.SceneManager sceneMgr = item.Current; item.Dispose(); ManualObject mo = buildManualObject(); MeshPtr mesh = mo.ConvertToMesh(name, group); sceneMgr.DestroyManualObject(mo); return(mesh); }
public static void generateFace() { string defaultMaterial = "Default"; ManualObject block = new ManualObject("frontFace"); block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); block.Position(new Vector3(0, 0, 0)); block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[0]); block.Position(new Vector3(0, Cst.CUBE_SIDE, 0)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[0]); block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[0]); block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[0]); block.Quad(3, 2, 1, 0); block.End(); block.ConvertToMesh("frontFace"); block = new ManualObject("underFace"); block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); block.Position(new Vector3(0, 0, 0)); block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[1]); block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[1]); block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[1]); block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[1]); block.Quad(0, 1, 2, 3); block.End(); block.ConvertToMesh("underFace"); block = new ManualObject("rightFace"); block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[2]); block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE)); block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[2]); block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[2]); block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[2]); block.Quad(0, 1, 2, 3); block.End(); block.ConvertToMesh("rightFace"); block = new ManualObject("upperFace"); block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0)); block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[3]); block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[3]); block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[3]); block.Position(new Vector3(0, Cst.CUBE_SIDE, 0)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[3]); block.Quad(0, 1, 2, 3); block.End(); block.ConvertToMesh("upperFace"); block = new ManualObject("leftFace"); block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); block.Position(new Vector3(0, 0, 0)); block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[4]); block.Position(new Vector3(0, Cst.CUBE_SIDE, 0)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[4]); block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[4]); block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[4]); block.Quad(0, 1, 2, 3); block.End(); block.ConvertToMesh("leftFace"); block = new ManualObject("backFace"); block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE)); block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[5]); block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[5]); block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[5]); block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[5]); block.Quad(0, 1, 2, 3); block.End(); block.ConvertToMesh("backFace"); }
/// <summary> /// The vertexs for the walls around the edge of the arena are defined, and placed into the buffer to create the walls. /// </summary> private void BoundaryCubes() { manualObj = mSceneMgr.CreateManualObject("a"); manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list // ---- Vertex Buffer ---- manualObj.Position(new Vector3(500, 45, -500)); //SW // --- Vertex 0 --- manualObj.Position(new Vector3(-500, 45, -500)); //SE // --- Vertex 1 --- manualObj.Position(new Vector3(500, 0, -500)); //SW // --- Vertex 2 --- manualObj.Position(new Vector3(-500, 0, -500)); //SE // --- Vertex 3 --- manualObj.Position(new Vector3(500, 45, 500)); //NW // --- Vertex 4 --- manualObj.Position(new Vector3(-500, 45, 500)); //NE // --- Vertex 5 --- manualObj.Position(new Vector3(500, 0, 500)); //NW // --- Vertex 6 --- manualObj.Position(new Vector3(-500, 0, 500)); //NE // --- Vertex 7 --- // ---- Index Buffer ---- //south wall // --- Triangle 0 --- manualObj.Index(0); manualObj.Index(1); manualObj.Index(2); // --- Triangle 1 --- manualObj.Index(1); manualObj.Index(3); manualObj.Index(2); //north wall // --- Triangle 2 --- manualObj.Index(6); manualObj.Index(5); manualObj.Index(4); // --- Triangle 3 --- manualObj.Index(6); manualObj.Index(7); manualObj.Index(5); //east wall // --- Triangle 4 --- manualObj.Index(7); manualObj.Index(3); manualObj.Index(5); // --- Triangle 5 --- manualObj.Index(3); manualObj.Index(1); manualObj.Index(5); //west wall // --- Triangle 6 --- manualObj.Index(4); manualObj.Index(2); manualObj.Index(6); // --- Triangle 7 --- manualObj.Index(4); //NWT manualObj.Index(0); //SWT manualObj.Index(2); //SWB manualObj.End(); // Closes the manual objet //return manualObj.ConvertToMesh("Quad"); manualObj.ConvertToMesh("Quad"); boundaryEntity = mSceneMgr.CreateEntity("maualObjQuad", "Quad"); boundaryEntity.SetMaterialName("Ground"); }
public DebugRenderable( Node parent ) { _parent = parent; string materialName = "Axiom/Debug/AxesMat"; _material = (Material)MaterialManager.Instance[ materialName ]; if ( _material == null ) { _material = (Material)MaterialManager.Instance.Create( materialName, ResourceGroupManager.InternalResourceGroupName ); Pass p = _material.GetTechnique( 0 ).GetPass( 0 ); p.LightingEnabled = false; //TODO: p.PolygonModeOverrideable = false; p.VertexColorTracking = TrackVertexColor.Ambient; p.SetSceneBlending( SceneBlendType.TransparentAlpha ); p.CullingMode = CullingMode.None; p.DepthWrite = false; } string meshName = "Axiom/Debug/AxesMesh"; _mesh = MeshManager.Instance[ meshName ]; if ( _mesh == null ) { ManualObject mo = new ManualObject( "tmp" ); mo.Begin( Material.Name, OperationType.TriangleList ); /* 3 axes, each made up of 2 of these (base plane = XY) * .------------|\ * '------------|/ */ mo.EstimateVertexCount( 7 * 2 * 3 ); mo.EstimateIndexCount( 3 * 2 * 3 ); Quaternion[] quat = new Quaternion[ 6 ]; ColorEx[] col = new ColorEx[ 3 ]; // x-axis quat[ 0 ] = Quaternion.Identity; quat[ 1 ] = Quaternion.FromAxes( Vector3.UnitX, Vector3.NegativeUnitZ, Vector3.UnitY ); col[ 0 ] = ColorEx.Red; col[ 0 ].a = 0.8f; // y-axis quat[ 2 ] = Quaternion.FromAxes( Vector3.UnitY, Vector3.NegativeUnitX, Vector3.UnitZ ); quat[ 3 ] = Quaternion.FromAxes( Vector3.UnitY, Vector3.UnitZ, Vector3.UnitX ); col[ 1 ] = ColorEx.Green; col[ 1 ].a = 0.8f; // z-axis quat[ 4 ] = Quaternion.FromAxes( Vector3.UnitZ, Vector3.UnitY, Vector3.NegativeUnitX ); quat[ 5 ] = Quaternion.FromAxes( Vector3.UnitZ, Vector3.UnitX, Vector3.UnitY ); col[ 2 ] = ColorEx.Blue; col[ 2 ].a = 0.8f; Vector3[] basepos = new Vector3[ 7 ] { // stalk new Vector3(0f, 0.05f, 0f), new Vector3(0f, -0.05f, 0f), new Vector3(0.7f, -0.05f, 0f), new Vector3(0.7f, 0.05f, 0f), // head new Vector3(0.7f, -0.15f, 0f), new Vector3(1f, 0f, 0f), new Vector3(0.7f, 0.15f, 0f) }; // vertices // 6 arrows for ( int i = 0; i < 6; ++i ) { // 7 points for ( int p = 0; p < 7; ++p ) { Vector3 pos = quat[ i ] * basepos[ p ]; mo.Position( pos ); mo.Color( col[ i / 2 ] ); } } // indices // 6 arrows for ( int i = 0; i < 6; ++i ) { ushort baseIndex = (ushort)( i * 7 ); mo.Triangle( (ushort)( baseIndex + 0 ), (ushort)( baseIndex + 1 ), (ushort)( baseIndex + 2 ) ); mo.Triangle( (ushort)( baseIndex + 0 ), (ushort)( baseIndex + 2 ), (ushort)( baseIndex + 3 ) ); mo.Triangle( (ushort)( baseIndex + 4 ), (ushort)( baseIndex + 5 ), (ushort)( baseIndex + 6 ) ); } mo.End(); _mesh = mo.ConvertToMesh( meshName, ResourceGroupManager.InternalResourceGroupName ); } }
public void InitMogre() { //----------------------------------------------------- // 1 enter ogre //----------------------------------------------------- root = new Root(); //----------------------------------------------------- // 2 configure resource paths //----------------------------------------------------- ConfigFile cf = new ConfigFile(); cf.Load("resources.cfg", "\t:=", true); // Go through all sections & settings in the file ConfigFile.SectionIterator seci = cf.GetSectionIterator(); String secName, typeName, archName; // Normally we would use the foreach syntax, which enumerates the values, but in this case we need CurrentKey too; while (seci.MoveNext()) { secName = seci.CurrentKey; ConfigFile.SettingsMultiMap settings = seci.Current; foreach (KeyValuePair <string, string> pair in settings) { typeName = pair.Key; archName = pair.Value; ResourceGroupManager.Singleton.AddResourceLocation(archName, typeName, secName); } } //----------------------------------------------------- // 3 Configures the application and creates the window //----------------------------------------------------- bool foundit = false; foreach (RenderSystem rs in root.GetAvailableRenderers()) { root.RenderSystem = rs; String rname = root.RenderSystem.Name; if (rname == "Direct3D9 Rendering Subsystem") { foundit = true; break; } } if (!foundit) { return; //we didn't find it... Raise exception? } //we found it, we might as well use it! root.RenderSystem.SetConfigOption("Full Screen", "No"); root.RenderSystem.SetConfigOption("Video Mode", "640 x 480 @ 32-bit colour"); root.Initialise(false); NameValuePairList misc = new NameValuePairList(); misc["externalWindowHandle"] = hWnd.ToString(); window = root.CreateRenderWindow("Simple Mogre Form Window", 0, 0, false, misc); ResourceGroupManager.Singleton.InitialiseAllResourceGroups(); //----------------------------------------------------- // 4 Create the SceneManager // // ST_GENERIC = octree // ST_EXTERIOR_CLOSE = simple terrain // ST_EXTERIOR_FAR = nature terrain (depreciated) // ST_EXTERIOR_REAL_FAR = paging landscape // ST_INTERIOR = Quake3 BSP //----------------------------------------------------- sceneMgr = root.CreateSceneManager(SceneType.ST_GENERIC, "SceneMgr"); sceneMgr.AmbientLight = new ColourValue(1f, 1f, 1f); //----------------------------------------------------- // 5 Create the camera //----------------------------------------------------- camera = sceneMgr.CreateCamera("SimpleCamera"); camera.Position = new Vector3(400f, 0f, 0f); // Look back along -Z camera.LookAt(new Vector3(-1f, 0f, 0f)); camera.NearClipDistance = 5; viewport = window.AddViewport(camera); viewport.BackgroundColour = new ColourValue(0.0f, 0.0f, 0.0f, 1.0f); material = MaterialManager.Singleton.Create("front", "General"); material.GetTechnique(0).GetPass(0).CreateTextureUnitState("snow3.jpg"); material = MaterialManager.Singleton.Create("other", "General"); material.GetTechnique(0).GetPass(0).CreateTextureUnitState("snow.jpg"); material = MaterialManager.Singleton.Create("back", "General"); material.GetTechnique(0).GetPass(0).CreateTextureUnitState("back2.jpg"); Vector3 moveVector3 = new Vector3(0f, -60f, 110f); for (int i = 0; i < cubeCount; i++) { Cube cube = new Cube(); cube.CubeName = "cube" + i.ToString(); cube.BuildCube("front", ref sceneMgr); ManualObject manual = sceneMgr.GetManualObject(cube.CubeName); manual.ConvertToMesh("cubeMesh" + i.ToString()); Entity ent = sceneMgr.CreateEntity("box" + i.ToString(), "cubeMesh" + i.ToString()); SceneNode node = sceneMgr.RootSceneNode.CreateChildSceneNode("boxNode" + i.ToString()); ent.CastShadows = true; node.AttachObject(ent); float y = i * (Cube.cubeHeight + 10) + moveVector3.y; node.Position = new Vector3(0f, y, moveVector3.z); } Plane plane = new Plane(); plane.BuildPlane("back", ref sceneMgr); ManualObject manualPlane = sceneMgr.GetManualObject(plane.PlaneName); manualPlane.ConvertToMesh("planeMesh"); Entity planeEntity = sceneMgr.CreateEntity("planeEntity", "planeMesh"); SceneNode planeNode = sceneMgr.RootSceneNode.CreateChildSceneNode("planeNode"); planeNode.AttachObject(planeEntity); }
public MeshPtr getCube(string cubeName, string materialName, float width, float height, float depth) { cube = mSceneMgr.CreateManualObject(cubeName + "_ManObj"); cube.Begin(materialName, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // --- Fills the Vertex buffer and define the texture coordinates for each vertex --- //--- Vertex 0 --- cube.Position(new Vector3(.5f * width, .5f * height, .5f * depth)); cube.TextureCoord(new Vector2(0, 0)); //--- Vertex 1 --- cube.Position(new Vector3(.5f * width, -.5f * height, .5f * depth)); cube.TextureCoord(new Vector2(1, 0)); //--- Vertex 2 --- cube.Position(new Vector3(.5f * width, .5f * height, -.5f * depth)); cube.TextureCoord(new Vector2(0, 1)); //--- Vertex 3 --- cube.Position(new Vector3(.5f * width, -.5f * height, -.5f * depth)); cube.TextureCoord(new Vector2(1, 1)); //--- Vertex 4 --- cube.Position(new Vector3(-.5f * width, .5f * height, .5f * depth)); cube.TextureCoord(new Vector2(0, 0)); //--- Vertex 5 --- cube.Position(new Vector3(-.5f * width, -.5f * height, .5f * depth)); cube.TextureCoord(new Vector2(1, 0)); //--- Vertex 6 --- cube.Position(new Vector3(-.5f * width, .5f * height, -.5f * depth)); cube.TextureCoord(new Vector2(0, 1)); //--- Vertex 7 --- cube.Position(new Vector3(-.5f * width, -.5f * height, -.5f * depth)); cube.TextureCoord(new Vector2(1, 1)); // --- Fills the Index Buffer --- //--------Face 1---------- cube.Index(0); cube.Index(1); cube.Index(2); cube.Index(2); cube.Index(1); cube.Index(3); //--------Face 2---------- cube.Index(4); cube.Index(6); cube.Index(5); cube.Index(6); cube.Index(7); cube.Index(5); //--------Face 3---------- cube.Index(0); cube.Index(4); cube.Index(1); cube.Index(1); cube.Index(4); cube.Index(5); //--------Face 4---------- cube.Index(0); cube.Index(6); cube.Index(4); cube.Index(0); cube.Index(2); cube.Index(6); //--------Face 5---------- cube.Index(6); cube.Index(2); cube.Index(3); cube.Index(6); cube.Index(3); cube.Index(7); //--------Face 5---------- cube.Index(3); cube.Index(1); cube.Index(7); cube.Index(1); cube.Index(5); cube.Index(7); cube.End(); return(cube.ConvertToMesh(cubeName)); }
/// <summary> /// This private method defines the vertex and index buffers of a quad as a triangle list. /// </summary> private MeshPtr Quad() { manualObj = mSceneMgr.CreateManualObject("maualObjQuad"); manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list // ---- Vertex Buffer ---- manualObj.Position(new Vector3(5, 5, 0)); // --- Vertex 0 --- manualObj.Position(new Vector3(-5, 5, 0)); // --- Vertex 1 --- manualObj.Position(new Vector3(5, -5, 0)); // --- Vertex 2 --- manualObj.Position(new Vector3(-5, -5, 0)); // --- Vertex 3 --- // ---- Index Buffer ---- // --- Triangle 0 --- manualObj.Index(0); manualObj.Index(1); manualObj.Index(2); // --- Triangle 1 --- manualObj.Index(1); manualObj.Index(3); manualObj.Index(2); manualObj.End(); // Closes the manual objet return manualObj.ConvertToMesh("Quad"); // Prepares the data to be sent to the GPU }
/// <summary> /// This method contructs the mesh for the cube /// </summary> /// <param name="cubeName"></param> /// <returns>cubeMesh object</returns> public MeshPtr getCube(string cubeName) { // Console.Write("getCube: "+count); manualObj = mSceneMgr.CreateManualObject("manualObjQuad" + count); manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list // ---- Vertex Buffer ---- manualObj.Position(new Vector3(30, 30, 0)); // --- Vertex 0 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, 30, 0)); // --- Vertex 1 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, -30, 0)); // --- Vertex 2 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, -30, 0)); // --- Vertex 3 --- manualObj.TextureCoord(new Vector2(1, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, 30, -60)); // --- Vertex 4 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, -30, -60)); // --- Vertex 5 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, 30, -60)); // --- Vertex 6 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, -30, -60)); // --- Vertex 7 --- manualObj.TextureCoord(new Vector2(1, 1)); manualObj.Normal(1, 1, 1); // ---- Index Buffer ---- // --- Triangle 0 --- manualObj.Index(0); manualObj.Index(1); manualObj.Index(2); // --- Triangle 1 --- manualObj.Index(1); manualObj.Index(3); manualObj.Index(2); // --- Triangle 8 --- manualObj.Index(4); manualObj.Index(5); manualObj.Index(6); // --- Triangle 9 --- manualObj.Index(5); manualObj.Index(7); manualObj.Index(6); manualObj.Position(new Vector3(30, 30, -60)); // --- Vertex 8 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, 30, 0)); // --- Vertex 9 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, -30, -60)); // --- Vertex 10 --- manualObj.TextureCoord(new Vector2(1, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, -30, 0)); // --- Vertex 11 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, 30, 0)); // --- Vertex 12 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, 30, -60)); // --- Vertex 13 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, -30, 0)); // ---Vertex 14 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, -30, -60)); // ---Vertex 15 --- manualObj.TextureCoord(new Vector2(1, 1)); manualObj.Normal(1, 1, 1); // ---Triangle 12-- - manualObj.Index(8); manualObj.Index(9); manualObj.Index(10); // ---Triangle 13-- - manualObj.Index(9); manualObj.Index(11); manualObj.Index(10); // ---Triangle 14-- - manualObj.Index(12); manualObj.Index(13); manualObj.Index(14); // ---Triangle 15-- - manualObj.Index(13); manualObj.Index(15); manualObj.Index(14); manualObj.Position(new Vector3(30, 30, -60)); // --- Vertex 16 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, 30, -60)); // --- Vertex 17 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, 30, 0)); // --- Vertex 18 --- manualObj.TextureCoord(new Vector2(1, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, 30, 0)); // --- Vertex 19 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, -30, 0)); // --- Vertex 20 --- manualObj.TextureCoord(new Vector2(0, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, -30, 0)); // --- Vertex 21 --- manualObj.TextureCoord(new Vector2(0, 1)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(30, -30, -60)); // ---Vertex 22 --- manualObj.TextureCoord(new Vector2(1, 0)); manualObj.Normal(1, 1, 1); manualObj.Position(new Vector3(-30, -30, -60)); // ---Vertex 23 --- manualObj.TextureCoord(new Vector2(1, 1)); manualObj.Normal(1, 1, 1); // ---Triangle 12-- - manualObj.Index(16); manualObj.Index(17); manualObj.Index(18); // ---Triangle 13-- - manualObj.Index(17); manualObj.Index(19); manualObj.Index(18); // ---Triangle 14-- - manualObj.Index(20); manualObj.Index(21); manualObj.Index(22); // ---Triangle 15-- - manualObj.Index(21); manualObj.Index(23); manualObj.Index(22); manualObj.End(); // Closes the manual objet return(manualObj.ConvertToMesh(cubeName)); // Prepares the data to be sent to the GPU }
public MeshPtr LoadWorldMap(string worldMapID, SceneManager sceneManager, MBWorldMap worldMap, bool faceted = false) { //Convert Vertex and Faces to Ogre Mesh Format if (worldMap == null) { return(null); } if (meshes.ContainsKey(worldMapID)) { return(meshes[worldMapID]); } ManualObject worldMapTerrain = sceneManager.CreateManualObject("WORLDMAP-MANUAL-OBJECT-" + worldMapID); worldMapTerrain.Begin("", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); calculateNormal(worldMapTerrain, worldMap); for (int i = 0; i < worldMap.Faces.Count; i++) { int vindex1 = worldMap.Faces[i].indexFirst; int vindex2 = worldMap.Faces[i].indexSecond; int vindex3 = worldMap.Faces[i].indexThird; float[] vnindex1 = worldMap.fcn[i]; float[] vnindex2 = worldMap.fcn[i]; float[] vnindex3 = worldMap.fcn[i]; worldMapTerrain.Position( worldMap.Vertics[vindex1].x, worldMap.Vertics[vindex1].z, worldMap.Vertics[vindex1].y ); worldMapTerrain.Normal(vnindex1[0], vnindex1[1], vnindex1[2]); worldMapTerrain.Colour(worldMap.Color[worldMap.Faces[i].TerrainType]); worldMapTerrain.Position( worldMap.Vertics[vindex2].x, worldMap.Vertics[vindex2].z, worldMap.Vertics[vindex2].y ); worldMapTerrain.Normal(vnindex2[0], vnindex2[1], vnindex2[2]); worldMapTerrain.Colour(worldMap.Color[worldMap.Faces[i].TerrainType]); worldMapTerrain.Position( worldMap.Vertics[vindex3].x, worldMap.Vertics[vindex3].z, worldMap.Vertics[vindex3].y ); worldMapTerrain.Normal(vnindex3[0], vnindex3[1], vnindex3[2]); worldMapTerrain.Colour(worldMap.Color[worldMap.Faces[i].TerrainType]); worldMapTerrain.Triangle( (uint)(vindex1), (uint)(vindex2), (uint)(vindex3) ); } worldMapTerrain.End(); var mesh = worldMapTerrain.ConvertToMesh("WORLDMAP-" + worldMapID); meshes.Add(worldMapID, mesh); return(mesh); }
public MeshPtr getCube(string cubeName, string materialName, float width, float height, float depth) { manual = mSceneMgr.CreateManualObject(cubeName + "_ManObj"); manual.Begin(materialName, RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // --- Fills the Vertex buffer and define the texture coordinates for each vertex --- //--- Vertex 0 --- v0 = new Vector3(.5f * width, .5f * height, .5f * depth); manual.Position(v0); //Texture coordinates here! manual.TextureCoord(new Vector2(0, 0)); //--- Vertex 1 --- v1 = new Vector3(.5f * width, -.5f * height, .5f * depth); manual.Position(v1); //Texture coordinates here! manual.TextureCoord(new Vector2(1, 0)); //--- Vertex 2 --- v2 = new Vector3(.5f * width, .5f * height, -.5f * depth); manual.Position(v2); //Texture coordinates here! manual.TextureCoord(new Vector2(0, 1)); //--- Vertex 3 --- v3 = new Vector3(.5f * width, -.5f * height, -.5f * depth); manual.Position(v3); //Texture coordinates here! manual.TextureCoord(new Vector2(1, 1)); //--- Vertex 4 --- v4 = new Vector3(-.5f * width, .5f * height, .5f * depth); manual.Position(v4); //Texture coordinates here! manual.TextureCoord(new Vector2(0, 0)); //--- Vertex 5 --- v5 = new Vector3(-.5f * width, -.5f * height, .5f * depth); manual.Position(v5); //Texture coordinates here! manual.TextureCoord(new Vector2(-1, 0)); //--- Vertex 6 --- v6 = new Vector3(-.5f * width, .5f * height, -.5f * depth); manual.Position(v6); //Texture coordinates here! manual.TextureCoord(new Vector2(0, -1)); //--- Vertex 7 --- v7 = new Vector3(-.5f * width, -.5f * height, -.5f * depth); manual.Position(v7); //Texture coordinates here! manual.TextureCoord(new Vector2(-1, -1)); // --- Fills the Index Buffer --- //--------Face 1---------- manual.Index(2); manual.Index(1); manual.Index(0); manual.Index(3); manual.Index(1); manual.Index(2); //--------Face 2---------- manual.Index(5); manual.Index(6); manual.Index(4); manual.Index(5); manual.Index(7); manual.Index(6); //--------Face 3---------- manual.Index(1); manual.Index(4); manual.Index(0); manual.Index(5); manual.Index(4); manual.Index(1); ////--------Face 4---------- //manual.Index(0); //manual.Index(6); //manual.Index(4); //manual.Index(0); //manual.Index(2); //manual.Index(6); //--------Face 5---------- manual.Index(3); manual.Index(2); manual.Index(6); manual.Index(7); manual.Index(3); manual.Index(6); //--------Face 6---------- //manual.Index(3); //manual.Index(1); //manual.Index(7); //manual.Index(1); //manual.Index(5); //manual.Index(7); manual.End(); return(manual.ConvertToMesh(cubeName)); }
///private MeshPtr Quad() public MeshPtr Quad() { cube = mSceneMgr.CreateManualObject("fieldQuad"); cube.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); cube.Position(new Vector3(20f, 20f, 20f)); // Vector 0 cube.TextureCoord(new Vector2(0, 0)); cube.Position(new Vector3(20f, -20f, 20f)); // Vector 1 cube.TextureCoord(new Vector2(1, 0)); cube.Position(new Vector3(20f, 20f, -20f)); // Vector 2 cube.TextureCoord(new Vector2(0, 1)); cube.Position(new Vector3(20f, -20f, -20f)); // Vector 3 cube.TextureCoord(new Vector2(1, 1)); cube.Position(new Vector3(-20f, 20f, 20f)); // Vector 4 cube.TextureCoord(new Vector2(0, 0)); cube.Position(new Vector3(-20f, -20f, 20f)); // Vector 5 cube.TextureCoord(new Vector2(0, 1)); cube.Position(new Vector3(-20f, 20f, -20f)); // Vector 6 cube.TextureCoord(new Vector2(1, 0)); cube.Position(new Vector3(-20f, -20f, -20f)); // Vector 7 cube.TextureCoord(new Vector2(1, 1)); // Index Buffer // Triangle 0 cube.Index(0); cube.Index(1); cube.Index(2); // Triangle 1 cube.Index(2); cube.Index(1); cube.Index(3); // Triangle 2 cube.Index(4); cube.Index(6); cube.Index(5); // Triangle 3 cube.Index(6); cube.Index(7); cube.Index(5); // Triangle 4 cube.Index(0); cube.Index(4); cube.Index(1); // Triangle 5 cube.Index(1); cube.Index(4); cube.Index(5); // Triangle 6 cube.Index(0); cube.Index(6); cube.Index(4); // Triangle 7 cube.Index(0); cube.Index(2); cube.Index(6); // Triangle 8 cube.Index(6); cube.Index(2); cube.Index(3); // Triangle 9 cube.Index(6); cube.Index(3); cube.Index(7); // Triangle 9 cube.Index(3); cube.Index(1); cube.Index(7); cube.Index(1); cube.Index(5); cube.Index(7); cube.End(); return(cube.ConvertToMesh("Quad")); }