threejs无法解析json对象中的材质
亲爱的所有人,我正在使用angular 2.4.10和三个js 0.85.0。从服务器下载JSON文件后,我可以使用以下JSON对象: 我正在尝试使用另一篇StackOverflow文章中建议的以下代码在不使用加载程序URL的情况下加载对象:threejs无法解析json对象中的材质,json,parsing,three.js,Json,Parsing,Three.js,亲爱的所有人,我正在使用angular 2.4.10和三个js 0.85.0。从服务器下载JSON文件后,我可以使用以下JSON对象: 我正在尝试使用另一篇StackOverflow文章中建议的以下代码在不使用加载程序URL的情况下加载对象: loadModel(aJSONObject) { console.log(aJSONObject); let loader = new THREE.ObjectLoader(); let model = loader.pars
loadModel(aJSONObject) {
console.log(aJSONObject);
let loader = new THREE.ObjectLoader();
let model = loader.parse( aJSONObject );
console.log(model);
.....
}
它正在工作,但没有得到材料。如何从JSON文件中获取材料?我尝试加载您的模型,并且正确导入了唯一的材料 但是,JSON模型中没有为该材质定义纹理或颜色。因此,对象将看起来是白色的,这是three.js材质使用的默认颜色 要在three.js中查看您的模型,请确保根据您的相机位置对其进行适当缩放(我必须将其缩小)。
此外,由于模型使用的是
three.MeshPhongMaterial
,请不要忘记添加一些灯光
顺便说一下,您的模型中定义了一些
X
、Y
和Z
单独的属性,这些属性会毫无用处地增加其大小(three.js不会使用它们)。我尝试加载您的模型,并且正确导入了唯一的材质
但是,JSON模型中没有为该材质定义纹理或颜色。因此,对象将看起来是白色的,这是three.js材质使用的默认颜色
要在three.js中查看您的模型,请确保根据您的相机位置对其进行适当缩放(我必须将其缩小)。此外,由于模型使用的是
three.MeshPhongMaterial
,请不要忘记添加一些灯光
顺便说一句,您的模型中定义了一些
X
、Y
和Z
单独的属性,这些属性毫无用处地增加了模型的大小(three.js不会使用它们)。看一看谢谢您,neeh,您是一个明星。如果你知道答案,就再澄清一次。如果我只应用以下代码:var objLoader=new THREE.ObjectLoader();var object=objLoader.parse(json)代码>在不使用THREE.FileLoader的情况下(当我的服务为我获取JSON对象时),我仍然可以获取一个Object3D,用于渲染,但与FileLoader返回的对象相比,它缺少几个字段。例如,您的代码返回一个bbox(边界框),该框在未使用文件加载时返回的对象中不存在。您知道原因吗?您的THREE.Mesh
包含在THREE.Object3D
中。您要查找的是object.children[0]
。如果要查找边界框
,应该在网格的几何体中找到它:对象。子对象[0]。几何体。边界框
三个。文件加载程序
不会更改任何内容。请检查服务返回的数据。如果确实没有边界框
,请使用对象.children>进行计算[0].geometry.computeBoundingBox()
。谢谢你,非常感谢。你帮了我很多麻烦。谢谢你,Neeh,你是个明星。如果你知道答案,请再澄清一次。如果我只应用以下代码:var objLoader=new THREE.ObjectLoader();var object=objLoader.parse(json);
,而不使用THREE.FileLoader()(当我的服务为我获取JSON对象时)我仍然获取了一个Object3D,可以用于渲染,但与FileLoader返回的对象相比,它缺少几个字段(未使用文件加载返回的对象中不存在的边界框。您知道原因吗?您的THREE.Mesh
包含在THREE.Object3D
中。您要查找的是object.children[0]
。如果要查找边界框
,应该在网格的几何体中找到它:对象。子对象[0]。几何体。边界框
三个。文件加载程序
不会更改任何内容。请检查服务返回的数据。如果确实没有边界框
,请使用对象.children>进行计算[0].geometry.computeBoundingBox()
。谢谢,非常感谢。你帮我省去了很多麻烦。