opengl - 标准化点云(用于在 OpenGL 中显示)的最有效方法是什么?
问题描述
给定一个在任意范围内具有 x,y,z 坐标的点云(即 x: [-40,40], y: [-1,1], z: [-100:100])什么是最有效的方法转换坐标,使其落在 OpenGL 的裁剪体积范围内(x:[-1,1],y:[-1,1],z:[-1,1]),从而可以显示?
解决方案
由于您说的是“标准化显示”,我假设您事先不知道确切的范围。
您需要扫描云以找到每个轴的最小/最大值,然后构建一个转换矩阵来重新定位云,因此它的“中间”将定位在 0,0,0,然后按比例缩小,因此云的最长轴将适合裁剪体积。
您不需要转换 cpu 端的点,顶点着色器会使用您将作为制服传递的矩阵来做到这一点。
推荐阅读
- python - 如何在循环的每次迭代中使用 for-loop 为 SVR 生成 X_train?
- python-3.x - 将矩形图像投影到弯曲的背景上
- asp.net-core - 如何使用带有自定义参数的 ASP.NET Core 实现 dhtmlxScheduler?
- rest - VMware Rest API 身份验证失败
- python - 使用嵌套的while循环替换列表列表的元素
- oauth-2.0 - Oauth2 PKCE 谁应该生成代码验证器和代码质询
- elasticsearch - 来自术语聚合的子聚合的准确性
- javascript - 未捕获的语法错误:位置 0 处的 JSON 中的意外标记 D
- sql - 是否可以在扳手中进行有效的时间戳排序查询?
- java - 尝试在 JUnit 测试和 Mockito 中使用 when 和 thenReturn 时出错(NullPointerException)