我开发了一个程序和一个模块,其中有很多形状类。考虑一个形状类,例如我在这里拥有的一个矩形,以及一个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 条件,我必须执行一些我上面写的动画。但是,当我在程序中包含相机时,它会搞砸并将坐标转换为屏幕中心(我的初始坐标在左上角)
我必须自己做翻译来纠正这个相机翻译或尝试世界到屏幕/屏幕到世界等。
我只是想知道是否有办法将这个对象从相机中取出,做我的动画和其他东西,然后在其他如果条件也需要时将其放回相机中。说物体不在相机中可能是不正确的(可能已经存在的一些数学函数有助于获得这种效果)