SetVertex() public method

public SetVertex ( uint nr, Vertex3D vert ) : void
nr uint
vert Vertex3D
return void
コード例 #1
0
ファイル: Sea.cs プロジェクト: yooyke/work
        private void CreateSea()
        {
            Mesh mesh = new Mesh();
            MeshBuffer mb = new MeshBuffer(VertexType.Standard);
            for (int h = 0; h < TILE_H_NUMBER; h++)
            {
                for (int w = 0; w < TILE_W_NUMBER; w++)
                {
                    mb.SetVertex((uint)(h * TILE_H_NUMBER + TILE_W_NUMBER), new Vertex3D(
                        new Vector3D(w * TILE_SPAN, h * TILE_SPAN, 19.8f),
                        new Vector3D(0, 0, 1),
                        Color.White,
                        new Vector2D((float)w / TILE_W_NUMBER, (float)h / TILE_H_NUMBER)
                        ));
                }
            }

            uint index = 0;
            for (int h = 0; h < (int)(TILE_H_NUMBER - 1); h++)
            {
                for (int w = 0; w < (int)(TILE_W_NUMBER - 1); w++)
                {
                    mb.SetIndex(index++, (ushort)((h + 0) * TILE_H_NUMBER + (w + 0)));
                    mb.SetIndex(index++, (ushort)((h + 0) * TILE_H_NUMBER + (w + 1)));
                    mb.SetIndex(index++, (ushort)((h + 1) * TILE_H_NUMBER + (w + 0)));

                    mb.SetIndex(index++, (ushort)((h + 1) * TILE_H_NUMBER + (w + 0)));
                    mb.SetIndex(index++, (ushort)((h + 0) * TILE_H_NUMBER + (w + 1)));
                    mb.SetIndex(index++, (ushort)((h + 1) * TILE_H_NUMBER + (w + 1)));
                }
            }
            mb.Material.Texture1 = Render.Texture.GetTexture(Path.Combine(dir, "sea.jpg"));
            mb.Material.BackfaceCulling = false;
            mesh.AddMeshBuffer(mb);

            MeshSceneNode node = Render.Scene.AddMeshSceneNode(mesh, Root, -1);
            node.Position = new Vector3D(-(TILE_W_NUMBER * TILE_SPAN / 2), -(TILE_H_NUMBER * TILE_SPAN / 2), 0);
            node.AutomaticCulling = CullingType.Off;
        }
コード例 #2
0
ファイル: Prim.cs プロジェクト: yooyke/work
        private Mesh CreateMesh(MeshData[] meshes)
        {
            Mesh mesh = new Mesh();

            foreach (MeshData data in meshes)
            {
                if (data == null)
                    continue;

                bool use_alpha = (data.Color[0] < 0.9999f);

                MeshBuffer mb = new MeshBuffer(VertexType.Standard);
                for (uint i = 0; i < data.Indices.Length; i++)
                {
                    VertexData v = data.Vertices[data.Indices[i]];
                    mb.SetVertex(i, new Vertex3D(
                        new Vector3D(v.Position[0], v.Position[1], v.Position[2]),
                        new Vector3D(v.Normal[0], v.Normal[1], v.Normal[2]),
                        Color.White,
                        new Vector2D(v.UV[0], v.UV[1])
                        ));

                    mb.SetIndex(i, (ushort)data.Indices[i]);
                }
                mb.SetColor(Util.ToColor(data.Color[0], data.Color[1], data.Color[2], data.Color[3]));
                mb.Material.AmbientColor = Util.ToColor(1, data.Color[1], data.Color[2], data.Color[3]);
                TextureInfo info = null;
                if (data.Texture1DownLoaded)
                    info = Render.Texture.GetTexture(Path.Combine(Ox.Paths.Cache, data.Texture1), true, true);
                if (info != null)
                {
                    mb.Material.Texture1 = (info.Texture == null) ? Render.RenderData.BlankTexture : info.Texture;
                    use_alpha |= info.UseAlpha;
                }
                mb.Material.MaterialType = use_alpha ? MaterialType.TransparentAlphaChannel : MaterialType.Solid;

                mesh.AddMeshBuffer(mb);
            }

            return mesh;
        }
コード例 #3
0
        // experimental - build sculpt mesh using indexed access to vertex, normal, and UV lists
        private static Mesh SculptMeshToIrrMesh(SculptMesh sculptMesh)
        {
            Color color = new Color(255, 255, 255, 255);

            Mesh mesh = new Mesh();

            int numFaces = sculptMesh.faces.Count;

            MeshBuffer mb = new MeshBuffer(VertexType.Standard);

            int numVerts = sculptMesh.coords.Count;

            try
            {
                for (int i = 0; i < numVerts; i++)
                    mb.SetVertex((uint)i, new Vertex3D(convVect3d(sculptMesh.coords[i]), convNormal(sculptMesh.normals[i]), color, convVect2d(sculptMesh.uvs[i])));

                ushort index = 0;
                foreach (Face face in sculptMesh.faces)
                {
                    mb.SetIndex(index++, (ushort)face.v1);
                    mb.SetIndex(index++, (ushort)face.v3);
                    mb.SetIndex(index++, (ushort)face.v2);
                }

                mesh.AddMeshBuffer(mb);

                // don't dispose here
                //mb.Dispose();
            }

            catch (AccessViolationException)
            {
                VUtil.LogConsole("[ACCESSVIOLATION]", "PrimMesherG::SCultMeshToIrrMesh");
                m_log.Error("ACCESSVIOLATION");
                mesh = null;
            }

            return mesh;
        }