我开发了一个程序,其中有一个模块有很多形状类。考虑一个形状类,例如我在这里的一个矩形,以及一个从我的班级不断调用的draw
函数。
virtual void draw()
{
if(State == HOVERING || State == CLOSED){
rec.draw(playerContainer);
gluLookAt(lookAtPoint);
}
else if(State == OPENING)
{
glPushMatrix();
glTranslatef(Tweenable3D::pos.x,Tweenable3D::pos.y,Tweenable3D::pos.z);
glRotatef(Tweenable3D::xRotation,-1,0,0);
glTranslatef(-Tweenable3D::pos.y,-Tweenable3D::pos.y,-Tweenable3D::pos.z);
rectShape.draw(Tweenable3D::pos.x, Tweenable3D::pos.y, Tweenable3D::width, Tweenable3D::height);
glTranslatef(ofGetWidth()/2, ofGetHeight()/2,0);
glPopMatrix();
}
else
{
setPosition(vidPlayerFinalPosition);
rectShape.draw(vidPlayerFinalPosition, vidPlayerFinalWidth, vidPlayerFinalHeight);
ofCircle(vidPlayerFinalPosition, 30);
ofVec3f looks(0,0,0);
lookAt(looks);
}
}
第二个中使用的Tweenable3D
只是我的动画的插值。我正在以这种方式做旋转,翻译等动画。
这里的问题是我的形状在开始时位于相机内部。对于第二个if条件,我必须执行一些动画,如上所述。但是,当我在我的程序中包含一个摄像头时,它会混乱并将坐标转换为屏幕中心(我的初始坐标位于左上角)
我必须自己翻译以纠正这个相机翻译或尝试世界屏幕/屏幕到世界等。
我只是想知道我是否可以通过一些方式将这个物体从相机中取出,做我的动画和其他内容,如果条件也在需要时将其放回相机中。说对象不在相机中可能是不正确的(可能已经有一些数学函数可以帮助实现这种效果)