Ejemplo n.º 1
0
        private CustomVertex[] CreateCustomVertexArray()
        {
            var geometry = (MeshGeometry3D)Geometry;
            var colors   = geometry.Colors != null?geometry.Colors.ToArray() : null;

            var textureCoordinates = geometry.TextureCoordinates != null?geometry.TextureCoordinates.ToArray() : null;

            var texScale = TextureCoodScale;
            var normals  = geometry.Normals != null?geometry.Normals.ToArray() : null;

            var tangents = geometry.Tangents != null?geometry.Tangents.ToArray() : null;

            var bitangents = geometry.BiTangents != null?geometry.BiTangents.ToArray() : null;

            var positions   = geometry.Positions.ToArray();
            var vertexCount = geometry.Positions.Count;
            var result      = new CustomVertex[vertexCount];

            for (var i = 0; i < vertexCount; i++)
            {
                result[i] = new CustomVertex
                {
                    Position     = new Vector4(positions[i], 1f),
                    Color        = colors != null ? colors[i] : Color4.White,
                    TexCoord     = textureCoordinates != null ? texScale * textureCoordinates[i] : Vector2.Zero,
                    Normal       = normals != null ? normals[i] : Vector3.Zero,
                    Tangent      = tangents != null ? tangents[i] : Vector3.Zero,
                    BiTangent    = bitangents != null ? bitangents[i] : Vector3.Zero,
                    CustomParams = new Vector4((bool)GetValue(AttachedProperties.ShowSelectedProperty) ? 1 : 0, RequiresPerVertexColoration ? 1 : 0, 0, 0)
                };
            }

            return(result);
        }
        private CustomVertex[] CreateCustomVertexArray()
        {
            var geometry = (MeshGeometry3D)Geometry;
            var colors = geometry.Colors != null ? geometry.Colors.ToArray() : null;
            var textureCoordinates = geometry.TextureCoordinates != null ? geometry.TextureCoordinates.ToArray() : null;
            var texScale = TextureCoodScale;
            var normals = geometry.Normals != null ? geometry.Normals.ToArray() : null;
            var tangents = geometry.Tangents != null ? geometry.Tangents.ToArray() : null;
            var bitangents = geometry.BiTangents != null ? geometry.BiTangents.ToArray() : null;
            var positions = geometry.Positions.ToArray();
            var vertexCount = geometry.Positions.Count;
            var result = new CustomVertex[vertexCount];

            for (var i = 0; i < vertexCount; i++)
            {
                result[i] = new CustomVertex
                {
                    Position = new Vector4(positions[i], 1f),
                    Color = colors != null ? colors[i] : Color4.White,
                    TexCoord = textureCoordinates != null ? texScale * textureCoordinates[i] : Vector2.Zero,
                    Normal = normals != null ? normals[i] : Vector3.Zero,
                    Tangent = tangents != null ? tangents[i] : Vector3.Zero,
                    BiTangent = bitangents != null ? bitangents[i] : Vector3.Zero,
                    CustomParams = new Vector4((bool)GetValue(AttachedProperties.ShowSelectedProperty) ? 1 : 0, RequiresPerVertexColoration ? 1 : 0, 0, 0)
                };
            }

            return result;
        }