예제 #1
0
        public void setCubeVtxes(short sz)
        {
            x -= sz;
            X += sz;
            y -= sz;
            Y += sz;
            z -= sz;
            Z += sz;

            cubeVtxes[0] = new CubeVertex(x, y, z);
            cubeVtxes[1] = new CubeVertex(x, Y, z);
            cubeVtxes[2] = new CubeVertex(X, y, z);
            cubeVtxes[3] = new CubeVertex(X, Y, z);
            cubeVtxes[4] = new CubeVertex(x, y, Z);
            cubeVtxes[5] = new CubeVertex(x, Y, Z);
            cubeVtxes[6] = new CubeVertex(X, y, Z);
            cubeVtxes[7] = new CubeVertex(X, Y, Z);
        }
예제 #2
0
		/// <summary>
		/// Add services :
		/// </summary>
		protected override void Initialize ()
		{
			base.Initialize();

			constBuffer = new ConstantBuffer(GraphicsDevice, typeof(CBData));

			LoadContent();
			Reloading += (s, e) => LoadContent();

			GetService<Camera>().FreeCamPosition = new Vector3Fusion(0, 12, 21);
						
			//	fill vertex buffer for cube:
			Vector4Fusion color = new Vector4Fusion(Vector3Fusion.Zero, 1);
			Fusion.Mathematics.Vector2 texcoord = Fusion.Mathematics.Vector2.Zero;

			// back face
			var v0 = new CubeVertex { Position = new Vector3Fusion(-0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord };
			var v1 = new CubeVertex { Position = new Vector3Fusion(-0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord };
			var v2 = new CubeVertex { Position = new Vector3Fusion(-0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord };
			var v3 = new CubeVertex { Position = new Vector3Fusion(-0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord };

			// front
			var v4 = new CubeVertex { Position = new Vector3Fusion(0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord };
			var v5 = new CubeVertex { Position = new Vector3Fusion(0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord };
			var v6 = new CubeVertex { Position = new Vector3Fusion(0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord };
			var v7 = new CubeVertex { Position = new Vector3Fusion(0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord };

			// left
			var v8 = new CubeVertex { Position = new Vector3Fusion(-0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord };
			var v9 = new CubeVertex { Position = new Vector3Fusion(0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord };
			var v10 = new CubeVertex { Position = new Vector3Fusion(0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord };
			var v11 = new CubeVertex { Position = new Vector3Fusion(-0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord };

			// right
			var v12 = new CubeVertex { Position = new Vector3Fusion(-0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord };
			var v13 = new CubeVertex { Position = new Vector3Fusion(0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord };
			var v14 = new CubeVertex { Position = new Vector3Fusion(0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord };
			var v15 = new CubeVertex { Position = new Vector3Fusion(-0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord };

			// top
			var v16 = new CubeVertex { Position = new Vector3Fusion(0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord };
			var v17 = new CubeVertex { Position = new Vector3Fusion(0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord };
			var v18 = new CubeVertex { Position = new Vector3Fusion(-0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord };
			var v19 = new CubeVertex { Position = new Vector3Fusion(-0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord };

			// bottom
			var v20 = new CubeVertex { Position = new Vector3Fusion(0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord };
			var v21 = new CubeVertex { Position = new Vector3Fusion(0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord };
			var v22 = new CubeVertex { Position = new Vector3Fusion(-0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord };
			var v23 = new CubeVertex { Position = new Vector3Fusion(-0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord };

			data = new CubeVertex[] { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23 };
			vb.SetData(data, 0, 24);

			// fill the index buffer
			var index = new int[] { 3, 1, 0,	// back
									3, 2, 1,
									4, 5, 7,	// front
									7, 5, 6,
									8, 9, 11,	// left
									11, 9, 10,
									14, 13, 12,	// right
									14, 12, 15,
									19, 16, 17,	// top
									19, 17, 18,
									20, 23, 22,	// bottom
									20, 22, 21};
			ib.SetData(index);
		}
예제 #3
0
    public static bool Generate(float size, out Mesh _mesh)
    {
        const int VERTICES_COUNT = 8;

        float halfSize = size * 0.5f;

        // vertex
        CubeVertex[] vertices = new CubeVertex[VERTICES_COUNT];
        vertices[0].pos = new Vector3(-halfSize, -halfSize, -halfSize);
        vertices[1].pos = new Vector3(-halfSize, halfSize, -halfSize);
        vertices[2].pos = new Vector3(halfSize, halfSize, -halfSize);
        vertices[3].pos = new Vector3(halfSize, -halfSize, -halfSize);
        vertices[4].pos = new Vector3(-halfSize, -halfSize, halfSize);
        vertices[5].pos = new Vector3(-halfSize, halfSize, halfSize);
        vertices[6].pos = new Vector3(halfSize, halfSize, halfSize);
        vertices[7].pos = new Vector3(halfSize, -halfSize, halfSize);

        for (int i = 0; i < VERTICES_COUNT; ++i)
        {
            vertices[i].normal = Vector3.Normalize(vertices[i].pos);
        }

        // index
        ushort[] indices = new ushort[] {
            0, 1, 2,
            2, 3, 0,
            0, 4, 5,
            5, 1, 0,
            2, 6, 7,
            7, 3, 2,
            7, 6, 5,
            5, 4, 7,
            1, 5, 6,
            6, 2, 1,
            4, 0, 3,
            3, 7, 4
        };

        MeshUpdateFlags flag = MeshUpdateFlags.Default;

        VertexAttributeDescriptor[] layouts = new VertexAttributeDescriptor[]
        {
            new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3),
            new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float32, 3),
        };

        _mesh = new Mesh();

        // 宣告 index buffer 結構
        _mesh.SetIndexBufferParams(indices.Length, IndexFormat.UInt16);

        // 宣告 vertex buffer 結構
        _mesh.SetVertexBufferParams(VERTICES_COUNT, layouts);

        _mesh.SetVertexBufferData(vertices, 0, 0, VERTICES_COUNT, 0, flag);
        _mesh.SetIndexBufferData(indices, 0, 0, indices.Length, flag);

        // 設定 Mesh Topologiy
        SubMeshDescriptor desc = new SubMeshDescriptor(0, indices.Length, MeshTopology.Triangles);

        _mesh.SetSubMesh(0, desc, flag);

        return(true);
    }
예제 #4
0
        public SimpleCube(Color4 color)
        {
            m_VertexBufferLayoutKind = new VertexBufferLayoutKind[4];
            
            m_Vertices = new CubeVertex[36];

            //Fläche, die nach vorne!
            m_Vertices[0] = new CubeVertex(new Vector3(-1.0f, -1.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), color);
            m_Vertices[1] = new CubeVertex(new Vector3(1.0f, -1.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[2] = new CubeVertex(new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(0.0f, 1.0f, 1.0f), color);

            m_Vertices[3] = new CubeVertex(new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(0.0f, 1.0f, 1.0f), color);
            m_Vertices[4] = new CubeVertex(new Vector3(1.0f, -1.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[5] = new CubeVertex(new Vector3(1.0f, 1.0f, 1.0f), new Vector3(0.0f, 0.0f, 1.0f), new Vector3(1.0f, 1.0f, 1.0f), color);

            //Fläche, die nach rechts zeigt!
            m_Vertices[6] = new CubeVertex(new Vector3(1.0f, -1.0f, 1.0f), new Vector3(1.0f, 0.0f, 0.0f), new Vector3(0.0f, 0.0f, 1.0f), color);
            m_Vertices[7] = new CubeVertex(new Vector3(1.0f, -1.0f, -1.0f), new Vector3(1.0f, 0.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[8] = new CubeVertex(new Vector3(1.0f, 1.0f, 1.0f), new Vector3(1.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);

            m_Vertices[9] = new CubeVertex(new Vector3(1.0f, 1.0f, 1.0f), new Vector3(1.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);
            m_Vertices[10] = new CubeVertex(new Vector3(1.0f, -1.0f, -1.0f), new Vector3(1.0f, 0.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[11] = new CubeVertex(new Vector3(1.0f, 1.0f, -1.0f), new Vector3(1.0f, 0.0f, 0.0f), new Vector3(1.0f, 1.0f, 1.0f), color);

            //Fläche, die nach hinten zeigt!
            m_Vertices[12] = new CubeVertex(new Vector3(-1.0f, -1.0f, -1.0f), new Vector3(0.0f, 0.0f, -1.0f), new Vector3(0.0f, 0.0f, 1.0f), color);
            m_Vertices[13] = new CubeVertex(new Vector3(1.0f, -1.0f, -1.0f), new Vector3(0.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[14] = new CubeVertex(new Vector3(-1.0f, 1.0f, -1.0f), new Vector3(0.0f, 0.0f, -1.0f), new Vector3(0.0f, 1.0f, 1.0f), color);

            m_Vertices[15] = new CubeVertex(new Vector3(-1.0f, 1.0f, -1.0f), new Vector3(0.0f, 0.0f, -1.0f), new Vector3(0.0f, 1.0f, 1.0f), color);
            m_Vertices[16] = new CubeVertex(new Vector3(1.0f, -1.0f, -1.0f), new Vector3(0.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[17] = new CubeVertex(new Vector3(1.0f, 1.0f, -1.0f), new Vector3(0.0f, 0.0f, -1.0f), new Vector3(1.0f, 1.0f, 1.0f), color);

            //Fläche, die nach links zeigt!
            m_Vertices[18] = new CubeVertex(new Vector3(-1.0f, -1.0f, 1.0f), new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(0.0f, 0.0f, 1.0f), color);
            m_Vertices[19] = new CubeVertex(new Vector3(-1.0f, -1.0f, -1.0f), new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[20] = new CubeVertex(new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);

            m_Vertices[21] = new CubeVertex(new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);
            m_Vertices[22] = new CubeVertex(new Vector3(-1.0f, -1.0f, -1.0f), new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[23] = new CubeVertex(new Vector3(-1.0f, 1.0f, -1.0f), new Vector3(-1.0f, 0.0f, 0.0f), new Vector3(1.0f, 1.0f, 1.0f), color);

            //Fläche, die nach unten zeigt
            m_Vertices[24] = new CubeVertex(new Vector3(-1.0f, -1.0f, -1.0f), new Vector3(0.0f, -1.0f, 0.0f), new Vector3(0.0f, 0.0f, 1.0f), color);
            m_Vertices[25] = new CubeVertex(new Vector3(1.0f, -1.0f, -1.0f), new Vector3(0.0f, -1.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[26] = new CubeVertex(new Vector3(-1.0f, -1.0f, 1.0f), new Vector3(0.0f, -1.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);

            m_Vertices[27] = new CubeVertex(new Vector3(-1.0f, -1.0f, 1.0f), new Vector3(0.0f, -1.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);
            m_Vertices[28] = new CubeVertex(new Vector3(1.0f, -1.0f, -1.0f), new Vector3(0.0f, -1.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[29] = new CubeVertex(new Vector3(1.0f, -1.0f, 1.0f), new Vector3(0.0f, -1.0f, 0.0f), new Vector3(1.0f, 1.0f, 1.0f), color);

            //Fläche die nach oben zeigt!
            m_Vertices[30] = new CubeVertex(new Vector3(-1.0f, 1.0f, -1.0f), new Vector3(0.0f, 1.0f, 0.0f), new Vector3(0.0f, 0.0f, 1.0f), color);
            m_Vertices[31] = new CubeVertex(new Vector3(1.0f, 1.0f, -1.0f), new Vector3(0.0f, 1.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[32] = new CubeVertex(new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(0.0f, 1.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);

            m_Vertices[33] = new CubeVertex(new Vector3(-1.0f, 1.0f, 1.0f), new Vector3(0.0f, 1.0f, 0.0f), new Vector3(0.0f, 1.0f, 1.0f), color);
            m_Vertices[34] = new CubeVertex(new Vector3(1.0f, 1.0f, -1.0f), new Vector3(0.0f, 1.0f, 0.0f), new Vector3(1.0f, 0.0f, 1.0f), color);
            m_Vertices[35] = new CubeVertex(new Vector3(1.0f, 1.0f, 1.0f), new Vector3(0.0f, 1.0f, 0.0f), new Vector3(1.0f, 1.0f, 1.0f), color);
        }
예제 #5
0
        /// <summary>
        /// Add services :
        /// </summary>
        protected override void Initialize()
        {
            base.Initialize();

            constBuffer = new ConstantBuffer(GraphicsDevice, typeof(CBData));

            LoadContent();
            Reloading += (s, e) => LoadContent();

            GetService <Camera>().FreeCamPosition = new Vector3Fusion(0, 12, 21);

            //	fill vertex buffer for cube:
            Vector4Fusion color = new Vector4Fusion(Vector3Fusion.Zero, 1);

            Fusion.Mathematics.Vector2 texcoord = Fusion.Mathematics.Vector2.Zero;

            // back face
            var v0 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord
            };
            var v1 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord
            };
            var v2 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord
            };
            var v3 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(-1.0f, 0, 0), Color = color, TexCoord = texcoord
            };

            // front
            var v4 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord
            };
            var v5 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord
            };
            var v6 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord
            };
            var v7 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(1.0f, 0, 0), Color = color, TexCoord = texcoord
            };

            // left
            var v8 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord
            };
            var v9 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord
            };
            var v10 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord
            };
            var v11 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 0, -1.0f), Color = color, TexCoord = texcoord
            };

            // right
            var v12 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord
            };
            var v13 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord
            };
            var v14 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord
            };
            var v15 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 0, 1.0f), Color = color, TexCoord = texcoord
            };

            // top
            var v16 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord
            };
            var v17 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord
            };
            var v18 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, 0.5f, 0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord
            };
            var v19 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, 0.5f, -0.5f), Normal = new Vector3Fusion(0, 1.0f, 0), Color = color, TexCoord = texcoord
            };

            // bottom
            var v20 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord
            };
            var v21 = new CubeVertex {
                Position = new Vector3Fusion(0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord
            };
            var v22 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, -0.5f, 0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord
            };
            var v23 = new CubeVertex {
                Position = new Vector3Fusion(-0.5f, -0.5f, -0.5f), Normal = new Vector3Fusion(0, -1.0f, 0), Color = color, TexCoord = texcoord
            };

            data = new CubeVertex[] { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23 };
            vb.SetData(data, 0, 24);

            // fill the index buffer
            var index = new int[] { 3, 1, 0,                    // back
                                    3, 2, 1,
                                    4, 5, 7,                    // front
                                    7, 5, 6,
                                    8, 9, 11,                   // left
                                    11, 9, 10,
                                    14, 13, 12,                 // right
                                    14, 12, 15,
                                    19, 16, 17,                 // top
                                    19, 17, 18,
                                    20, 23, 22,                 // bottom
                                    20, 22, 21 };

            ib.SetData(index);
        }