我已经创建了一个具有多种材质的球体,如下所示:
const materials = [
new THREE.MeshPhongMaterial({});
new THREE.ShaderMaterial({ visible: false});
]
const geometry = new THREE.SphereBufferGeometry(2,100,100);
geometry.addGroup(0, Infinity, 0);
geometry.addGroup(0, Infinity, 1);
const mesh = new THREE.Mesh(geometry, materials);
scene.add(mesh);
场景,灯光,相机也被定义(但不包括在这里,因为它们不是一个问题)。
当页面加载(初始化)时,这一切都会起作用。
稍后,我将使用scene.toJSON()
导出整个场景。然后,稍后,我可能希望重新加载该JSON并替换整个场景。我这样做的原因是:
const loader = new THREE.ObjectLoader();
loader.parse(jsonObject, function(object) {
// instance is an object containing a bunch of things,
// including the current scene.
// So I replace the current scene with the new one from the JSON
instance.scene = object;
}
此时,场景被正确替换,但对象没有出现(我知道JSON的格式正确)。
我已经尝试过了,而不是使用
const geometry = new THREE.SphereGeometry(2,100,100);
如果我这样做了,那么当加载JSON时,对象就会正确地出现。
我更喜欢使用SphereBufferGeometry()
,但我不确定为什么它不能工作。我遗漏了什么/做错了什么?
这里有两个例子。在这两种情况下,您都应该看到一个空白球体,但在#1中您没有看到:
https://codepen.io/anon/pen/BgQmMq
SphereBufferGeometry
:SphereBufferGeometrySphereGeometry
https://stackoverflow.com/questions/56673801
复制相似问题