[英]OpenGL ES: Rotating 3d model around itself
我正在iPhone上使用OpenGL ES,并且正在尝试通过用手指平移来旋转模型。 我发现了开源应用Molecules,可以让您做到这一点,我正在查看该代码,但是当旋转我的模型时,我只能围绕空间中的某个点旋转它(例如在轨道上作为卫星,我是固定的星球)。 关于什么是错的任何建议? 后来我可以张贴代码,也许点播(多线),在大多数情况下是指分子,你可以在这里找到它分子
如果我的记忆正确地为我服务,我认为您需要将模型平移到原点,旋转,然后平移回起始位置以获得想要的效果。
我认为有一个glTranslate()函数,说该对象位于1,0,0。 然后,您应按-1,0,0进行平移以转到原点。 即通过从对象中心到原点的向量进行平移。
绘制代码大概看起来像这样:
glLoadIdentity();
glTranslate(0, 0, -10);
glRotate(...);
drawMolecule();
现在,重要的是要意识到这些转换是以相反的顺序应用的。 如果在drawMolecule
指定了一个顶点,则该顶点将首先绕给定glRotate
的轴旋转(根据定义,该轴穿过分子的本地原点), 然后在-z方向平移10个单位。
这是有道理的,因为glTranslate
本质上意味着:“翻译此之后的所有内容”。 这包括glRotate
调用本身,因此旋转结果也得到转换。 如果调用被撤消,则转换结果将被旋转,从而导致绕轴旋转,该轴不再经过原点。
底线:要使对象绕其本地原点旋转,请将glRotate
调用置于last 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.