我在实现能够选择对象的机器人手臂方面遇到了困难,因为我在实现过程中使用了glTranslate()、glRotate()调用,机器人的每个部分都依赖于前面的部分。
示例:
void drawRobo()
{
draw a Cylinder as Base;
glTranslate();
drawArmpart1();
glTranslate();
drawJoint1();
glRotate();
drawArmpart2();
glTranslate();
drawGrabbers(); // The claw or the endeffector
}
void drawObjects()
{
glTranslate();
drawCube() // Object
glTranslate();
drawSphere() // Object 2
}
void display()
{
drawRobo();
drawObjects();
glPostredisplay();
} 现在的问题是,当我使用glRotate()旋转收集器或抓取器时,我的对象也会旋转,我不想这样做。我想要能够旋转关节和手臂,使它更接近物体,然后我想用抓取器来挑选它们。
我该怎么处理呢?我在所有需要它们的地方都有glPushMAtrix()和glPopMatrix()命令。
发布于 2013-10-23 04:14:07
由于您有此问题,很明显,您没有适当的推送和pop矩阵操作。你的伪码应该是:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// setup view matrix
glPushMatrix();
// setup robot's world matrix
drawRobo();
glPopMatrix();
// setup object's world matrix
drawObjects();
glutPostRedisplay();注意,最后一次抽签调用不使用push/pop --只是因为它是最后一个,所以不需要在它之后恢复矩阵。
https://stackoverflow.com/questions/19530989
复制相似问题