我有一个汽车模型,其中不同的汽车部件被描述在顶点组中。
您知道轮胎的当前位置,因此可以使用从单位矩阵和取反位置构建的转换矩阵将其转换到原点:
1 0 0 -x
0 1 0 -y
0 0 1 -z
0 0 0 1
然后旋转并应用正向变换将其放回:
1 0 0 x
0 1 0 y
0 0 1 z
0 0 0 1
glPushMatrix();
// at this point you're working at the origin
// translate the tire here
// rotate the tire here
glPopMatrix();
这里是代码:
glTranslatef(x_translate_factor,y_translate_factor,z_translate_factor);
glRotatef(global_car_rotate,0,1,0) ;
glRotatef(global_tire_rotate,0,1,0);
glRotatef(tire_speed,1,0,0);
tire_speed 是轮胎旋转速度,global_tire_rotate 是轮胎相对于汽车的旋转角度。global_car_rotate 是汽车(以及其上的物体如车轮)相对于 z 轴的旋转角度。*_translate_factor 是汽车在您场景中的位置。它对我很有效,希望对您也有效;)。