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()); }
int CreateSolidColorMaterial(Color4f color) { glTFLoader.Schema.Material material = new glTFLoader.Schema.Material() { PbrMetallicRoughness = new MaterialPbrMetallicRoughness() { BaseColorFactor = color.ToFloatArray(), } }; return(dummy.Materials.AddAndReturnIndex(material)); }