THREE.js 稀疏 planeBufferGeometry
THREE.js sparse planeBufferGeometry
我有一个标高稀疏的文件。它基于 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;
}
我的问题是有些节点的高程值是未知的(顶点数组是稀疏的高程)并且应该在平面中用 holes/cutouts 表示。我最终得到的是空高程被解释为 0 而不是孔。我已经开始使用 rawshader,但仍然不确定使空值透明是正确的方法。
下图显示了我的问题。圆圈区域是一堵高墙,不应该在那里,因为它三角测量到 "null/0" 层。红线区域是我们应该有一个洞的地方。
编辑:
也许这张照片会有所帮助。它来自底部。设置为零的空高程会阻挡平面的视图并导致平面的边缘被三角化为 0 高程:
这是我们的桌面应用程序显示的内容。请注意,平面的边缘没有三角化为零,而是保持锐利?
您的用例似乎更适合 THREE.Points 的点云。 potree.org/demo/potree_1.3/showcase/ca13.html – WestLangley 14 分钟前
这个例子帮助了:
Plane buffer Geometries 采用 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
最终结果符合预期:
我有一个标高稀疏的文件。它基于 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;
}
我的问题是有些节点的高程值是未知的(顶点数组是稀疏的高程)并且应该在平面中用 holes/cutouts 表示。我最终得到的是空高程被解释为 0 而不是孔。我已经开始使用 rawshader,但仍然不确定使空值透明是正确的方法。
下图显示了我的问题。圆圈区域是一堵高墙,不应该在那里,因为它三角测量到 "null/0" 层。红线区域是我们应该有一个洞的地方。
编辑:
也许这张照片会有所帮助。它来自底部。设置为零的空高程会阻挡平面的视图并导致平面的边缘被三角化为 0 高程:
这是我们的桌面应用程序显示的内容。请注意,平面的边缘没有三角化为零,而是保持锐利?
您的用例似乎更适合 THREE.Points 的点云。 potree.org/demo/potree_1.3/showcase/ca13.html – WestLangley 14 分钟前
这个例子帮助了:
Plane buffer Geometries 采用 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
最终结果符合预期: