Iphone iOS中的OpenGl渲染
在我的项目中,我必须旋转一个OBJ文件。我有恒定的支点。我得到了精确的水平旋转。现在我必须垂直旋转我的OBJ文件。我的结论是,必须改变角度本身。给出在恒定轴心点垂直旋转的想法 我的轴心点是teapotNode_u2;。旋转轴=CC3VectorMake(0.1,1,0.3) 我在这个rend ios项目中找到了答案 实际上,问题是,当单击左右按钮时,旋转正常工作,就像顶部和底部旋转也正常工作一样。但当我右键单击顶部/底部时,对象正在旋转,但它闪烁 解决办法是:Iphone iOS中的OpenGl渲染,iphone,ios,opengl-es,rendering,Iphone,Ios,Opengl Es,Rendering,在我的项目中,我必须旋转一个OBJ文件。我有恒定的支点。我得到了精确的水平旋转。现在我必须垂直旋转我的OBJ文件。我的结论是,必须改变角度本身。给出在恒定轴心点垂直旋转的想法 我的轴心点是teapotNode_u2;。旋转轴=CC3VectorMake(0.1,1,0.3) 我在这个rend ios项目中找到了答案 实际上,问题是,当单击左右按钮时,旋转正常工作,就像顶部和底部旋转也正常工作一样。但当我右键单击顶部/底部时,对象正在旋转,但它闪烁 解决办法是: Globally declared
Globally declared:
float x=0.0;
float y=0.0;
float z=0.0;
float angle;
float xangle;
float yangle;
-(void)rightButtonPressed {
x=0; y=1; z=0; //ROTATE OBJECT IN Y-AXIS(Y=1 & X=0)
yAngle+=2.0; //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (ANTI CLOCKWISE)
angle +=2.0;
teapotNode_.rotationAxis = CC3VectorMake(x,y,z);
teapotNode_.rotation = CC3VectorMake(0, yAngle, 0);
director_.running = YES;//Redirector object
if (director_.frameInterval == 2)
{
director_.running = NO;
}
}
-(void)leftButtonPressed {
x=0; y=1; z=0; //ROTATE OBJECT IN Y-AXIS(Y=1 & X=0)
yAngle-=2.0; //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (CLOCKWISE)
angle -=2.0;
teapotNode_.rotationAxis = CC3VectorMake(x,y,z);
teapotNode_.rotation = CC3VectorMake(0, yAngle, 0);
director_.running = YES;//Redirector object
if (director_.frameInterval == 2)
{
director_.running = NO;
}
}
-(void)topButtonPressed {
//Existing
/*float angle;
teapotNode_.rotationAxis = CC3VectorMake(0.1, 0, 0); //Changed the Pivot point.
angle +=2.0; //how to calculate the Top Down angle.
*/
//Modified
x=1; y=0; z=0; //ROTATE OBJECT IN Y-AXIS(Y=0 & X=1)
xAngle+=2.0; //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (Top Down)
angle +=2.0;
teapotNode_.rotationAxis = CC3VectorMake(x,y,z);
teapotNode_.rotation = CC3VectorMake(xangle, 0, 0);
director_.running = YES;//Redirector object
if (director_.frameInterval == 2)
{
director_.running = NO;
}
}
左右旋转工作正常。自上而下的旋转也起作用,但当我突然单击“顶部”按钮时,渲染图像会闪烁。因为我改变了轴心点。我的问题是支点是常数。我必须改变角度本身。因此,我要求提供垂直渲染的角度计算。请提及您在项目中使用的示例代码链接,以便我们可以回答您的问题。我从下载该项目的网站。
Globally declared:
float x=0.0;
float y=0.0;
float z=0.0;
float angle;
float xangle;
float yangle;
-(void)rightButtonPressed {
x=0; y=1; z=0; //ROTATE OBJECT IN Y-AXIS(Y=1 & X=0)
yAngle+=2.0; //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (ANTI CLOCKWISE)
angle +=2.0;
teapotNode_.rotationAxis = CC3VectorMake(x,y,z);
teapotNode_.rotation = CC3VectorMake(0, yAngle, 0);
director_.running = YES;//Redirector object
if (director_.frameInterval == 2)
{
director_.running = NO;
}
}
-(void)leftButtonPressed {
x=0; y=1; z=0; //ROTATE OBJECT IN Y-AXIS(Y=1 & X=0)
yAngle-=2.0; //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (CLOCKWISE)
angle -=2.0;
teapotNode_.rotationAxis = CC3VectorMake(x,y,z);
teapotNode_.rotation = CC3VectorMake(0, yAngle, 0);
director_.running = YES;//Redirector object
if (director_.frameInterval == 2)
{
director_.running = NO;
}
}
-(void)topButtonPressed {
//Existing
/*float angle;
teapotNode_.rotationAxis = CC3VectorMake(0.1, 0, 0); //Changed the Pivot point.
angle +=2.0; //how to calculate the Top Down angle.
*/
//Modified
x=1; y=0; z=0; //ROTATE OBJECT IN Y-AXIS(Y=0 & X=1)
xAngle+=2.0; //GET ANGLE OF OBJECT ROTATION IN Y-AXIS (Top Down)
angle +=2.0;
teapotNode_.rotationAxis = CC3VectorMake(x,y,z);
teapotNode_.rotation = CC3VectorMake(xangle, 0, 0);
director_.running = YES;//Redirector object
if (director_.frameInterval == 2)
{
director_.running = NO;
}
}