标准化点云(用于在 OpenGL 中显示)的最有效方法是什么?
What is the most efficient way to normalize a point cloud (for display in OpenGL)?
给定一个 x,y,z 坐标在任意范围内的点云(即 x: [-40,40], y: [-1,1], z: [-100:100])什么是变换坐标的最有效方法,使它们落在 OpenGL 的裁剪体积范围内 (x: [-1,1], y: [-1,1], z: [-1,1]),因此可以显示?
既然你说的是 "normalize for display",我想你事先并不知道确切的范围。
您需要扫描云以找到每个轴的 min/max 值,然后构建一个转换矩阵来重新定位云,因此它的 "middle" 将位于 0, 0,0,然后按比例缩小,这样云的最长轴将适合裁剪体积。
您不需要变换 cpu 侧的点,顶点着色器会使用您将作为统一传递的矩阵来执行此操作。
给定一个 x,y,z 坐标在任意范围内的点云(即 x: [-40,40], y: [-1,1], z: [-100:100])什么是变换坐标的最有效方法,使它们落在 OpenGL 的裁剪体积范围内 (x: [-1,1], y: [-1,1], z: [-1,1]),因此可以显示?
既然你说的是 "normalize for display",我想你事先并不知道确切的范围。
您需要扫描云以找到每个轴的 min/max 值,然后构建一个转换矩阵来重新定位云,因此它的 "middle" 将位于 0, 0,0,然后按比例缩小,这样云的最长轴将适合裁剪体积。
您不需要变换 cpu 侧的点,顶点着色器会使用您将作为统一传递的矩阵来执行此操作。