收藏
回答

threejs如何设置gltf使模型不穿透?

试了VKSession:v1和v2效果都如下图,设置renderer.depth和child.material.depthTest,child.material.depthWrite但是加载模型还是穿透

                   loader.load('https://ar-1306178125.cos.ap-shanghai.myqcloud.com/uploads/file/2024/05/13/bc4a3366bd564afaa0c88a180963a4671715592719273.glb', gltf => {
                        gltf.scene.traverse((child) => {
                            if (child.isMesh) {
                                // 设置模型的深度测试属性
                                              child.material.depthTest = true;
                                              child.material.depthWrite = true; // 是否写入深度缓冲
                                              child.material.needsUpdate = true;
                                console.log('child', child);
                            }
                        });
                        this.model = {
                            scene: gltf.scene,
                            animations: gltf.animations,
                        }
                        console.log('模型加载成功');
                    })

回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    05-24

    你好,请问用官方的示例是否有这个问题呢?

    05-24
    有用
    回复 3
    • 柴思敏Smile
      柴思敏Smile
      06-06
      官方示例是机器人模型一些角度也会穿
      06-06
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      06-06回复柴思敏Smile
      升级下微信版本呢?安卓还是iOS呢?
      06-06
      回复
    • 柴思敏Smile
      柴思敏Smile
      06-12
      测试机ios版本17.04和17.4.1,小米miui12.5.6,微信版本8.0.48和8.0.49;
      渲染器添加了const renderer = new THREE.WebGLRenderer({antialias: true,alpha: true,depth: true, autoClearDepth: true}) ;
      模型添加了child.material.depthTest = true;child.material.depthWrite = true;child.material.needsUpdate = true;child.material.transparent = false;穿透效果依然很明显
      06-12
      回复
登录 后发表内容