【问题标题】:Blending artifacts when rendering polygon hair with Three.js使用 Three.js 渲染多边形头发时混合伪影
【发布时间】:2016-06-21 01:11:30
【问题描述】:

尝试用透明度渲染多边形头发我得到了这个神器:

到目前为止我检查过的内容:

  1. renderer.sortObjects 是真的。
  2. 头发的material.side 是THREE.DoubleSide。
  3. 设置material.alphaTest=0.5 - 减少了问题,但仍然可以看到一些伪影。

如何调试?

【问题讨论】:

标签: three.js


【解决方案1】:

解决问题的是两次渲染头发,首先是背面,然后是正面:

    var hairMesh1 = obj;
    var hairMaterial1 = hairMesh1.material;
    hairMaterial1.opacity = 1.0;
    hairMaterial1.transparent = true;
    hairMaterial1.side = THREE.BackSide;
    hairMaterial1.depthWrite = false;

    var hairMesh2 = hairMesh1.clone();
    var hairMaterial2 = hairMesh2.material = hairMesh2.material.clone();
    hairMaterial2.side = THREE.FrontSide;

    var hairObj2 = new THREE.Object3D();
    hairObj2.add(hairMesh2)
    hairObj2.renderOrder = 1;

    model.add(hairObj1);
    model.add(hairObj2);

this answer 对此进行了解释。

我尝试的另一件事是here - 我设置了

material.alphaTest = 0.5; // between 0 and 1

减少了问题(仍然可以看到明显的伪影)。可以在here找到解释。

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 2012-10-24
    • 2018-10-14
    • 1970-01-01
    • 2013-12-10
    • 2020-10-26
    • 2023-03-21
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多