我正在尝试制作一个像大多数3D建模器中看到的那样的视口网格,缩放可以调整网格间距,这样线就不会变得太密集或太远。例如,缩小会将间距从1m更改为2m,然后是5m,然后是10m和20m,等等。
发布于 2015-05-30 07:38:35
在这里,它通常并不像你最初想象的那样复杂。例如,您可能会注意到,平移和动态观察摄影机对栅格密度没有影响,即使栅格平面到查看器的最近距离可能会发生变化。同样,更改FOV对选择的网格单元大小没有影响,即使理想情况下可能应该给出它如何显著倾斜和缩小视图。
所以通常只有这种基本的,一维的相对于注视目标(相机轴心)的zoom distance概念,它不涉及花哨的数学运算,只需要调整一个标量来影响传递给glScale或glTranslate的值,例如
随着它的增加,用于绘制网格(并可能捕捉到它)的单元大小也在增加,这里通常不是什么出色的数学解决方案,而只是从缩放距离到硬编码的单元大小的线性映射,如1 5mm、2 5mm、5 5mm、10 5mm、20 5mm、50 5mm、1 1cm等。
这类事情通常不是某种算法论文的结果,而只是开发人员/设计师坐下来调整东西,直到它们看起来/感觉正确为止。如果你正在尝试开发一个3D软件,我建议你永远不要忽视这个与用户交互相关的基本解决方案,因为在3D中很容易相信一切都必须是复杂的,背后有大量的研究和完美精确的数学解决方案。对于UI部分,您可以使用更多非正式的解决方案。
有时,这些UI可视化/交互的正式数学解决方案在实践中并不像这些笨拙的解决方案那样好用,正如你可能在来自更学术领域的用户界面中注意到的那样(在数学和算法方面,这些领域通常要聪明得多,但实际上不那么直观)。
https://stackoverflow.com/questions/30511908
复制相似问题