缩放自适应网格线
OpenGL: Zoom adaptive grid lines
我正在尝试制作一个视口网格,就像在大多数3D建模器中看到的那样,其中缩放调整网格间距,因此线条不会变得太密集或太远。例如,缩小将间距从1米变为2米,然后是5米,10米和20米等等。任何帮助吗?
这里通常没有您最初想象的那么复杂。例如,您可能会注意到,平移和绕相机运行对网格密度没有影响,即使从网格平面到观察者的最近距离可能会发生变化。同样地,改变视场对选择的网格单元大小没有影响,尽管理想情况下它可能会显著地扭曲和缩小视野。
所以通常只有这个基本的,一维的zoom distance
相对于目标(相机枢轴)的概念,它不涉及花哨的数学,只是调整一个影响传递给glScale
或glTranslate
的值的标量,例如
随着它的增加,用于绘制网格的单位尺寸也会增加(可能会捕捉到它),这里它通常不是一些聪明的数学解决方案,而只是从缩放距离到硬编码单位尺寸的线性映射,如1mm, 2mm, 5mm, 10mm, 20mm, 50mm, 1cm等。
这些东西通常不是一些算法论文的结果,而是开发人员/设计师坐下来调整东西,直到它们看起来/感觉正确。如果你正在尝试开发一款3D软件,我建议你永远不要忽视这个与用户交互相关的基本解决方案,因为在3D中很容易让人相信一切都必须是复杂的,并且需要大量的研究和精确的数学解决方案。对于UI部分,您可以使用更非正式的解决方案。
有时候,这些UI视觉/交互的正式数学解决方案在实践中并不像这些拼凑的解决方案那样有效,正如你可能已经注意到的,来自更学术领域的用户界面(这些领域通常在数学和算法上更聪明,但实际上不那么直观)。
相关文章:
- 如何检查助推融合序列是否为自适应结构
- C++中排序的自适应功能
- Boost.Spirit.Qi 语法,用于 Boost.Fusion 自适应结构中的默认值
- 自适应路径 - 阿斯塔尔修改
- 具有自适应 std::p air 点类型的 R 树查询
- 将自适应阈值应用于范围函数 opencv c++
- 使用C 使用PayPal自适应付款API的最佳方法是什么?
- 将 Rcpp 与 C 代码链接,以实现自适应城域拒绝采样
- 采用 Opencv c++ 的自适应中值滤波器
- 自适应正交 (C++)
- Boost Spirit Parser用三个字符串的矢量编译成一个结构,自适应不工作
- OpenCV / C++ - 如何在矢量上使用自适应阈值而不是垫子
- 您将如何在调度程序中实现这种自适应的"软糖因子"?
- 将网格线添加到 Wt WTable 小部件
- OpenCV中的自适应算法实现
- 用自适应MeanShift对特征空间-SURF描述符进行聚类
- 自适应阈值opencv
- 在vtkXYPlotActor中绘制网格线
- boost::spirit::qi具有相同的简单自适应结构属性的规则会导致编译错误
- 缩放自适应网格线