"materials" : [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "color_1.003",
"blending" : "NormalBlending",
"colorAmbient" : [0.64000004529953, 0.64000004529953, 0.64000004529953],
"colorDiffuse" : [0.64000004529953, 0.64000004529953, 0.64000004529953],
"colorEmissive" : [0.0, 0.0, 0.0],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"shading" : "Lambert",
"specularCoef" : 50,
"transparency" : 1.0,
"transparent" : false,
"vertexColors" : false
}],
答案 0 :(得分:0)
假设您想要一个十六进制的颜色值,并且看起来这些值从0到1似乎是合理的(3d编程通常是这种情况)。
[0.64000, 0.23000000, 0.123456].map( v => Math.round(v*255).toString(16) ).join("")
.map()
为数组中的每个值运行一个函数,返回的值将成为一个新数组。.join()
将多个值合并为一个字符串Math.round()
摆脱丑陋的小数点.toString()
将转换为十六进制。为了可重用性和可读性,可以重写同一件事
function toHex(value){
return Math.round(value*255).toString(16)
}
function toHexColor(arr){
return "#" + arr.map(toHex).join("")
}
const color = toHexColor(materials[0].colorDiffuse)
console.log( color )
免责声明:这些函数名称虽然不好,但仅用于演示目的