我有一个包含稀疏高程的文件。它基于 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 测量。红线区域是我们应该有洞的地方。
编辑: 也许这张图片会有所帮助。它是从底部开始的。零高程设置为零会遮挡平面 View 并导致平面边缘被三 Angular 测量为 0 高程:
最佳答案
FlatBuffers 几何图形采用 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
关于javascript - THREE.js稀疏平面BufferGeometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483598/