我有一个稀疏高程的文件。它基于gps数据。我一直在使用这些数据来填充带有高程的PlaneBuffer数组。
var vertices = new Float32Array( (grid.NCOL*grid.NROW) * 4 );
for (var i = 0, q = vertices.length; i < q; i++){
vertices[ i*3 + 0 ] = parseInt(i % (grid.NCOL+1)*4);
vertices[ i*3 + 1 ] = parseInt(i / (grid.NCOL+1)*4);
// vertices[ i*3 + 2 ] = null; // makes no difference
}
for (var i = 0, l = grid.NODES.length; i < l; i++) {
var nodeNumber = grid.NODES[i][0];
var elevation= grid.NODES[i][1];
vertices[ nodeNumber*3 + 2 ] = elevation;
}
我的问题是,有些节点的高程值是未知的(顶点数组是高度稀疏的),并且应该由平面中的孔/切口表示。我最终得到的是零高程被解释为0而不是空洞。我已经开始使用rawshader的路径,但仍然不确定将空值透明是正确的方法。
下图显示了我的问题。圆圈区域是一个高墙,不应该在那里,因为它三角测量到&#34; null / 0&#34;地板。红线区域是我们应该有一个洞的地方。
答案 0 :(得分:1)
平面缓冲区几何图形采用Float32Array。此数组默认设置为0.使用undefined
setter允许我将稀疏数组设置为float32类型。尝试将任何值设置为null
和NanN
都不起作用。
RTFM:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array
答案 1 :(得分:0)
您的用例似乎更适合具有THREE.Points的点云。 potree.org/demo/potree_1.3/showcase/ca13.html - WestLangley 14分钟前
这个例子帮助: