THREE.js稀疏planeBufferGeometry

时间:2016-04-07 17:47:08

标签: javascript three.js gis arcgis-js-api

我有一个稀疏高程的文件。它基于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;地板。红线区域是我们应该有一个洞的地方。 enter image description here

编辑: 也许这张照片会有所帮助。它来自底层。零高程设置为零会阻挡平面视图并导致平面边缘被三角化为0高程:enter image description here

以下是我们的桌面应用程序显示的内容。请注意,平面的边缘不是三角测量到零,而是保持锐利? enter image description here

2 个答案:

答案 0 :(得分:1)

平面缓冲区几何图形采用Float32Array。此数组默认设置为0.使用undefined setter允许我将稀疏数组设置为float32类型。尝试将任何值设置为nullNanN都不起作用。

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

预期的最终结果: enter image description here

答案 1 :(得分:0)

您的用例似乎更适合具有THREE.Points的点云。 potree.org/demo/potree_1.3/showcase/ca13.html - WestLangley 14分钟前

这个例子帮助:

http://threejs.org/examples/#webgl_buffergeometry_points