繁体   English   中英

OpenGL ES:围绕自身旋转3D模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM