我对使用 Three.js 并从我自己的模型格式分别编写一个导出器到 JSON 模型格式非常陌生。使用 Three.js 加载的场景格式。我不明白材料 JSON 规范的差异。使用 Three.js JSONLoader 材质规范必须像这样定义颜色: ... "colorAmbient":[0.0, 0.0, 0.0], "colorDiffuse":[0.0, 1.0, 0.0], ... 。我试过“colorDiffuse”:65280,但这不起作用。使用 JSONLoader 也不考虑“colorSpecular”参数。当我在 Firebug 中检查加载的结果时,我只看到正确加载了环境和漫反射颜色。相比之下,Three.js 的 JSON 场景格式使用如下参数列表定义材质:
"phong_skin": {
"type": "MeshPhongMaterial",
"parameters": { "color": 0, "ambient": 0, "specular": 16777215, "shininess": 50, ... }},
为什么场景和对象 JSON 格式在材质规格上如此不同?高光颜色和高光系数呢?我错过了什么?
我的简单 JSON 文件(代表飞机):
{
"faces": [40,0,1,2,0,1,2,0,1,2,40,3,4,5,3,4,5,3,4,5],
"materials":[{
"DbgColor":15658734,
"DbgIndex":0,
"DbgName":"_global_FLOOR_MAT",
"colorAmbient":[0.0, 0.0, 0.0],
"colorDiffuse":[0.0, 1.0, 0.0],
"colorSpecular":[1.0, 1.0, 0.0],
"opacity":1,
"specularCoef":128,
"transparent":false,
"wireframe":false,
"blending" : "NormalBlending"
}],
"metadata":{
"formatVersion":3.1,
"generatedBy":"My Exporter"},
"normals":[0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,1,0,0,1],
"scale":1,
"uvs":[[0,-193.333,0,-0,58,-0,0,-193.333,58,-0,58,-193.333]],
"vertices":[0,1160,0,0,0,0,1160,0,0,0,1160,0,1160,0,0,1160,1160,0]
}