点云和纹理的三个js透明度问题
Three js transparency issue with PointClouds and textures
我有两个 PointCloud 对象,每个对象用于特定的结构和纹理。一个应该是可点击的,但另一个不是。让我们分别称它们为 P1 和 P2。
P1 使用 THREE 初始化。着色器材质为:
var p1Material = new THREE.ShaderMaterial({
uniforms: uniforms,
attributes: attributes,
vertexShader: document.getElementById('vertexShader').textContent,
fragmentShader: document.getElementById('fragmentShader').textContent,
transparent: true
});
P2 反过来使用 THREE。PointCloudMaterial as:
var p2Material = THREE.PointCloudMaterial({
size : SIZE,
map : THREE.ImageUtils.loadTexture("icons/myAwesomeIcon.png"),
sizeAttenuation : true,
transparent: true
});
两者都产生了三个。PointCloud 对象的 sortParticle 属性设置为 true。
但是,我遇到了透明度问题,例如:
(已删除 - 查看编辑)
一切都是纹理,除了白线。球体纹理用于 P2,其他纹理用于 P1。
我们可以看到,P2 的纹理与 P1 的纹理并不完全透明。但它们是相互对立的,如第二张图片所示。相反,P1的纹理之间也发生了同样的情况。但是,在同一场景中,下面是一个不同的示例:
(已删除 - 查看编辑)
P1 的某些纹理还可以,但 P2 不想表现正常。
我怀疑将纹理驻留在不同的点云中没有帮助。然而,由于 P2 的元素不应该是可点击的,出于性能原因,我决定将它们与批次分开,从而拥有 P1 和 P2。请注意,选择性是通过单击某些内容并使用 THREE 来完成的。雷投。
关于我做错了什么的任何想法?
提前感谢!
编辑:显然问题似乎是由于使用缓冲区几何...
下面是两个完全相同的 JSFiddle 源,除了使用的几何图形。
http://jsfiddle.net/vf6uu90t/3/
http://jsfiddle.net/2uh0q8Lr/2/
我错过了什么吗?
我不得不删除以前的链接,因为堆栈溢出只允许我插入两个链接...... --'
这是 ThreeJs github 问题,以及一个可能的解决方案。
https://github.com/mrdoob/three.js/issues/5668
诀窍是alpha测试。无论如何,似乎有一个与此相关的错误是 r69。
- 灯光问题(使用三个.js)
- 在三个.js中创建球体(例如地球)的磁力线
- 三个js键盘旋转
- 加载模型与三个.js
- 如何在导入的 Collada 模型上使用 EdgesHelper 在三个.js.
- 三个JS框几何体,渲染警告:渲染计数或素数为0
- 我需要三个.js的来源
- 可点击的三个JS凸对象(点击一次即可显示图像)
- 带有三个.js的透明背景
- 使用三个js加载三维模型示例
- 在桌面上向下滚动三个js动画,而不是在手机上
- 将一行的长度限制在三个js中
- 如何在三个js上更新Trackball控件
- 由于相机位置的原因,无法在场景中显示三个.js元素
- 三个js阴影
- EffectComposer和具有三个.js的alpha通道
- 如何点击并滑入三个js立方体
- 三个js立方体是黑色的..不是红色
- 有三个.js的简单太阳系
- 将三个.js示例的webgl_loader_obj_mtl.html集成到 WebForm ASP.NET(mtlLoa