首页 > 解决方案 > 标准化点云(用于在 OpenGL 中显示)的最有效方法是什么?

问题描述

给定一个在任意范围内具有 x,y,z 坐标的点云(即 x: [-40,40], y: [-1,1], z: [-100:100])什么是最有效的方法转换坐标,使其落在 OpenGL 的裁剪体积范围内(x:[-1,1],y:[-1,1],z:[-1,1]),从而可以显示?

标签: openglopengl-4

解决方案


由于您说的是“标准化显示”,我假设您事先不知道确切的范围。

您需要扫描云以找到每个轴的最小/最大值,然后构建一个转换矩阵来重新定位云,因此它的“中间”将定位在 0,0,0,然后按比例缩小,因此云的最长轴将适合裁剪体积。

您不需要转换 cpu 端的点,顶点着色器会使用您将作为制服传递的矩阵来做到这一点。


推荐阅读