模型在不同的坐标系OpenGL ES中如何转换?

时间:2013-12-12 04:59:40

标签: android opengl-es matrix matrix-multiplication

假设我有一个包含以下两个三角形的元素:

<triangle A="1018;655;0" B="1018;655;61,5" C="1030;655;61,5" />
<triangle A="1030;655;0" B="1077;655;0" C="1030;655;61,5" />

每个三角形有3个顶点,由0到1200之间的值组成。

现在我喜欢在OpenGL ES 2中可视化这个元素。

我目前正在做的是,寻找最大值并通过此值划分所有元素以获得0到1之间的新值。使用每个三角形的这个值,我的渲染器能够可视化对象

我不认为这是正确的方法。

我得到了以下矩阵:模型,视图,投影。我的计算机图形学课程已经过了一段时间,但是不可能使用默认的三角形值并进行从对象空间到视图/世界空间的特定转换吗?

有没有好的解决方案?或者我必须提供0到1之间的值的对象,我的方法是正确的方法。

1 个答案:

答案 0 :(得分:1)

这取决于您使用的内容。如果您使用glOrtho(与glFrustum相对),您需要做的就是插入较大的值作为参数,通常使用屏幕坐标。

至于视锥体(在你的情况下更可能)你仍然可以做同样的事情但是你会改变视野(你会增加它的角度)。因此,为了将它们保持在一起,您应该扩展模型或简单地将其放置在远处。请注意,通过将其放置得很远,您可能需要在平截头体调用中增加zFar参数。

一般情况下,你得到的模型对你的场景要么大也要小,但这并不是简单的矩阵调用无法处理的。所有你需要做的就是在绘制模型之前推动模型矩阵并缩放(glScalef),然后在绘制调用之后弹出它。这样你就可以得到理想的效果,其余的代码完好无损。