2012-06-01 51 views
3

我在three.js中构建了“paper cutout”世界。我所有的模型都是简单的“平面”,我使用带有alpha通道的PNG对它们进行纹理修整,使其更加美观。in three.js,alpha通道作品不一致

奇怪的是:根据飞机的位置和相机的位置,透明度出现并消失不可预知。

症状1:如果飞机部分位于地平面以下,则透明效果很好,但如果将其移动到地平面以上,则透明区域会填充白色。

症状2:建立在症状1上:如果我现在移动摄像机以使外观矢量几乎与平面平行,透明度将再次开始工作。

有什么想法?看起来有点像优化出错或可能出现z-write问题?写入z的纹理是否与alpha值无关?如果是这样,我不认为它会对位置或相机角度敏感。

+0

好吧,修正:我目前的理论是,对象的绘制顺序是基于相机和对象位置的变化。所以我真正的问题变成:three.js是否有一个用画布的算法顺序对透明对象进行排序的工具? – mmaclaurin

回答

9

您需要在材质中将transparent标志设置为true。

new THREE.MeshBasicMaterial({ map: transparent_map, transparent: true });