我有以下设置(只有相关的代码):
渲染器
renderer = new THREE.WebGLRenderer({
antialias: true, alpha: true, canvas: canvas
});纹理
dot: THREE.ImageUtils.loadTexture('./assets/images/dot.png')材料
let material = new THREE.PointsMaterial({
size: size,
sizeAttenuation: true,
color: color,
map: textures.dot,
// alphaMap: textures.dotAlpha,
blending: THREE.NormalBlending, // THREE.MultiplyBlending
transparent: true,
alphaTest: 0.1,
opacity: 0.3
});点云通常有20到50个点云,有1k到10k点点。我在屏幕上看到的是它们的一小部分。
pointCloud = new THREE.Points(geometry, material);加点
cfg.pointCloud.forEach(point => {
var vertex = new THREE.Vector3();
vertex.x = point.x;
vertex.y = point.y;
vertex.z = point.z;
geometry.vertices.push(vertex);
});我有以下问题:
material.alphaTest = 0.5和material.opacity:0.1,那么精灵的边缘会变得非常锐利,失去所有的抗混叠效果。从远处看,它们往往呈现得很差,然后消失。我原以为能使边界变得平滑。我用的是512×512 png地图。我如何改进这个渲染?除了使用精灵还有别的办法吗?我缺乏编写自定义着色器所需的技巧,所以我会欣赏任何有助于改进这个渲染的东西。
下面是一些展示问题的示例图像:







发布于 2017-03-18 09:02:07
我成功地提高了渲染质量。我找到了very good answer here。此外,这个question有一些好的信息。
我在材料中添加了depthWrite和depthTest作为假的。
let material = new THREE.PointsMaterial({
size: size,
sizeAttenuation: true,
color: color,
map: this._textures.dot,
blending: THREE.NormalBlending,
transparent: true,
alphaTest: 0.1,
opacity: 0.3,
depthWrite: false,
depthTest: false
});差别是很大的:


不过,我还是要找到一个解决反走样问题的办法。当远离相机时,点往往会完全溶解并消失,就像这张特写照片中所显示的那样。

https://stackoverflow.com/questions/42871582
复制相似问题