Three.JS:怪异的闪烁/渲染带有透明的MeshPhongMaterial

时间:2019-01-17 23:05:27

标签: javascript three.js

我的场景中具有以下网格:

const cylinder = new Mesh(
  new CylinderGeometry(2, 2, 1, 32),
  new MeshPhongMaterial({
    color: color,
    shininess: 32,
    opacity: 0,
    transparent: true,
    specular: 0xffff82,
  }),
);

因为我想淡入每个圆圈,所以我将“网格”设为透明。当我移动相机时,会有一些奇怪的渲染,我不知道为什么会发生这种情况或需要更改什么。一旦我移除透明,它就可以正常工作。

enter image description here

编辑

这是显示问题的小提琴。 css中的139行是创建圆柱的位置。 https://jsfiddle.net/mxmtsk/tb6gqm10/35/

1 个答案:

答案 0 :(得分:0)

似乎透明圆柱的某些面在飞机后面消失了。您可以通过如下方式轻松地解决此问题:将圆柱体朝相机稍微移动:

cylinder.rotation.x = Math.PI / 2; 
cylinder.position.z = 0.5; // fix

这样,圆柱体不会与平面相交。

更新的小提琴:https://jsfiddle.net/f8m1u4rg/