首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ObjectLoader加载包含具有多个材料的BufferGeometry的JSON不起作用

使用ObjectLoader加载包含具有多个材料的BufferGeometry的JSON不起作用
EN

Stack Overflow用户
提问于 2019-06-20 02:28:20
回答 1查看 96关注 0票数 0

我已经创建了一个具有多种材质的球体,如下所示:

代码语言:javascript
复制
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并替换整个场景。我这样做的原因是:

代码语言:javascript
复制
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的格式正确)。

我已经尝试过了,而不是使用

代码语言:javascript
复制
const geometry = new THREE.SphereGeometry(2,100,100);

如果我这样做了,那么当加载JSON时,对象就会正确地出现。

我更喜欢使用SphereBufferGeometry(),但我不确定为什么它不能工作。我遗漏了什么/做错了什么?

这里有两个例子。在这两种情况下,您都应该看到一个空白球体,但在#1中您没有看到:

https://codepen.io/anon/pen/BgQmMq

  • With SphereBufferGeometry
  1. SphereBufferGeometrySphereGeometry
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56673801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档