javascript - THREE.js稀疏平面BufferGeometry

标签 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 ,但仍然不确定使 null 值透明是正确的方法。

下图显示了我的问题。圆圈区域是一堵不应该在那里的高墙,因为它与“null/0”地板形成三 Angular 测量。红线区域是我们应该有洞的地方。 enter image description here

编辑: 也许这张图片会有所帮助。它是从底部开始的。零高程设置为零会遮挡平面 View 并导致平面边缘被三 Angular 测量为 0 高程: enter image description here

这是我们的桌面应用程序显示的内容。请注意,平面的边缘并未被三 Angular 化为零,而是保持尖锐? enter image description here

最佳答案

FlatBuffers 几何图形采用 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

关于javascript - THREE.js稀疏平面BufferGeometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483598/

相关文章:

javascript - 如何在 Firefox 中启用命令 js> shell?

javascript - 将函数绑定(bind)到两个事件会导致函数执行两次

javascript - TinyMCE 中的水平线样式

javascript - Three.js materialLoader 不加载嵌入的纹理图像

sql - 缩放运算符 (*) 在 PostgreSQL 中如何工作?

javascript - jquery 单选按钮 :checked and $(this). 父级

javascript - 调用 JavaScript preload() 函数?

math - GIS 开发的核​​心数学

python - 从 Voronoi 镶嵌到形状多边形

three.js - 在运行时添加和删除三个.js 灯