Esempio n. 1
0
        byte[] GetVertexColorBytes(MeshVertexColorList vertexColors, out Color4f min, out Color4f max)
        {
            float [] minArr = new float[] { float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity };
            float [] maxArr = new float[] { float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity };

            List <float> colors = new List <float>(vertexColors.Count * 4);

            for (int i = 0; i < vertexColors.Count; i++)
            {
                Color4f color = new Color4f(vertexColors[i]);

                colors.AddRange(color.ToFloatArray());

                minArr[0] = Math.Min(minArr[0], color.R);
                minArr[1] = Math.Min(minArr[1], color.G);
                minArr[2] = Math.Min(minArr[2], color.B);
                minArr[3] = Math.Min(minArr[3], color.A);

                maxArr[0] = Math.Max(maxArr[0], color.R);
                maxArr[1] = Math.Max(maxArr[1], color.G);
                maxArr[2] = Math.Max(maxArr[2], color.B);
                maxArr[3] = Math.Max(maxArr[3], color.A);
            }

            min = new Color4f(minArr[0], minArr[1], minArr[2], minArr[3]);
            max = new Color4f(maxArr[0], maxArr[1], maxArr[2], maxArr[3]);

            IEnumerable <byte> bytesEnumerable = colors.SelectMany(value => BitConverter.GetBytes(value));

            return(bytesEnumerable.ToArray());
        }
Esempio n. 2
0
        int CreateSolidColorMaterial(Color4f color)
        {
            glTFLoader.Schema.Material material = new glTFLoader.Schema.Material()
            {
                PbrMetallicRoughness = new MaterialPbrMetallicRoughness()
                {
                    BaseColorFactor = color.ToFloatArray(),
                }
            };

            return(dummy.Materials.AddAndReturnIndex(material));
        }