three.js - mesh上的customDepthMaterial属性未包含在scene.toJSON输出中

3

我有一个对象,创建方式如下:

const geometry = new THREE.SphereBufferGeometry(2,100,100);
const material = new THREE.MeshPhongMaterial({
    map: myImage
    transparent: true,
    side: THREE.DoubleSide,
    opacity: 0.8
});

const mesh = new THREE.Mesh(geometry, material);

这份材料有一些透明度,我只希望 不透明 部分会投射出阴影,因此我添加了以下内容:

mesh.customDepthMaterial = new THREE.MeshDepthMaterial({
   depthPacking: THREE.RGBADepthPacking,
   alphaTest: 0.4,
   map: image
});

这在场景中渲染得很好。如果我检查场景,该网格上存在customDepthMaterial属性。

但是当我执行scene.toJSON()时,该属性未包含在该网格上(如果我将该JSON加载到场景中,则会丢失透明度,因为没有customDepthMaterial)。

这是故意的吗?还是一个错误?还是我的操作有误?

1个回答

2

这是故意的吗?还是一个错误?或者我做错了什么?

你做的一切都是正确的!问题在于three.js目前还不支持Object3D.customDepthMaterialObject3D.customDistanceMaterial的序列化/反序列化。

我建议你在GitHub上提交一个功能请求。

three.js r122


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接