具有相交多边形的Three.js自透明

具有相交多边形的Three.js自透明,three.js,Three.js,我正在尝试制作一个简单的树广告牌,它由两个交叉的平面组成,具有部分透明的纹理。我假设自透明仅适用于一个平面,因为几何体相交时存在深度排序问题 请看这里: 几何结构相当简单: geometry.vertices.push( new THREE.Vector3( -1, -1, 0 ), new THREE.Vector3( -1, 1, 0 ), new THREE.Vector3( 1, 1, 0 ), new THREE.Vector3( 1, -1,

我正在尝试制作一个简单的树广告牌,它由两个交叉的平面组成,具有部分透明的纹理。我假设自透明仅适用于一个平面,因为几何体相交时存在深度排序问题

请看这里:

几何结构相当简单:

geometry.vertices.push(
    new THREE.Vector3( -1, -1, 0 ),
    new THREE.Vector3( -1,  1, 0 ),
    new THREE.Vector3(  1,  1, 0 ),
    new THREE.Vector3(  1, -1, 0 ),

    new THREE.Vector3( 0, -1, -1 ),
    new THREE.Vector3( 0,  1, -1 ),
    new THREE.Vector3( 0,  1,  1 ),
    new THREE.Vector3( 0, -1,  1 ) );

geometry.faces.push(
    new THREE.Face3( 0, 1, 2 ),
    new THREE.Face3( 0, 2, 3 ),

    new THREE.Face3( 4, 5, 6 ),
    new THREE.Face3( 4, 6, 7 ) );
我不想使用PointCloud广告牌,因为我希望即使相机在树的上方,树也保持直立,而不是总是面向相机


有人有可能的解决办法吗?我可以在渲染之前对单个多边形进行排序吗?有没有其他方法可以制作在固定轴上旋转的广告牌?

如果有具有透明区域的重叠纹理对象,则解决深度排序引起的瑕疵的一个方法是设置对象材质的
alphaTest
属性:

material.alphaTest = 0.5; // between 0 and 1
更新小提琴:


three.js r.71

对于像我这样不太熟悉本场景中“公告牌”的含义的人,您能描述或链接到澄清您含义的内容吗?(在你的小提琴中,我看到一个白色的“球体”面和两个相互垂直的黑色T形矩形面。哪些面没有按照你想要的方式工作?)!我所说的布告牌只是指一个2D图像/多边形,它可以在一定距离内代表3D几何体。因此,一个纹理平面,而不是一个完整的树网格。在three.js中,它们是面向摄影机的多边形()。如果你看小提琴,树的右侧被另一个平面的“透明”部分切断。您可以通过树的图像所在的位置看到球体。球体的存在是为了证明透明度在场景中的其他对象上正常工作,只是自身透明度不起作用。Oops。就在你回复的时候删除了我的评论。贴出一个你可以接受的答案。谢谢,这正是我需要的!