OpenGL:缩放自适应网格线

时间:2015-05-28 16:12:23

标签: c++ opengl

我尝试制作一个视口网格,就像在大多数3D建模器中看到的一样,缩放会调整网格间距,因此线条不会太密集或太远。例如,缩小将间距从1米改为2米然后5米然后10米和20米等等。任何帮助?

1 个答案:

答案 0 :(得分:2)

这里通常没有你想象的那么复杂。例如,您可能会注意到相机的平移和轨道运行对网格密度没有影响,即使从网格平面到查看器的最近距离可能会发生变化。同样地,改变FOV对所选择的网格单元大小没有影响,即使理想情况下也应该给出它如何能够显着地偏斜和缩小视图。

所以通常只有zoom distance这个基本的,一维的概念相对于目标(摄像机枢轴)而言,并且它不涉及花哨的数学,只是调整一个影响传递给{的值的标量{1}}或glScale,例如

随着它的增加,用于绘制网格的单位大小也会增加(并且可能会对其进行捕捉),这里通常不是一些出色的数学解决方案,而只是从缩放距离到硬编码单位大小的线性映射如1mm,2mm,5mm,10mm,20mm,50mm,1cm等。

这些事情通常不是某些算法论文的结果,而只是开发人员/设计师坐下来调整事物,直到他们看起来/感觉正确。如果您正在尝试开发3D软件,我建议永远不要忽视与用户交互相关的基本解决方案,因为很容易在3D中确信一切都必须复杂并且需要大量研究和完美 - 它背后的准确数学解决方案。对于UI部分,您可以使用更加非正式的解决方案。

有时,这些UI视觉/交互的正式数学解决方案在实践中并不像这些克服的解决方案那样有效,正如您可能已经注意到来自更具学术范围的用户界面(通常在数学上更聪明)和算法上的这些东西,但实际上不太直观)。