J'ai un modèle de bonhomme de neige que je charge depuis un fichier .obj. Tout fonctionne bien sauf que lorsque j'utilise glRotatef() pour faire tourner le modèle, la tête du bonhomme de neige sera toujours affichée devant le corps. Le nez du bonhomme de neige sera également toujours derrière la tête. Cela crée l'effet que le bonhomme de neige change de direction lorsqu'il tourne, mais en réalité les parties ne sont pas rendues dans le bon ordre z. Pourquoi cela se produit-il? REMARQUE: toutes les parties du bonhomme de neige proviennent du même fichier .obj créé à l'aide de Blender.Opengl ES - Rendu incorrect sur l'axe z?
rendu le modèle comme celui-ci (dans la boucle de tirage)
glVertexPointer(3 ,GL_FLOAT, 0, model_verts);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, model_normals);
glDrawElements(GL_TRIANGLES, num_model_indices*3, GL_UNSIGNED_SHORT, &model_indices);
tournant comme celui-ci (en touchesMoved)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
touchBeginPos = [touch locationInView:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint touchEndPos = [[touches anyObject] locationInView:self];
glMatrixMode(GL_MODELVIEW_MATRIX);
glRotatef(10, (touchBeginPos.y - touchEndPos.y)/4, -(touchBeginPos.x - touchEndPos.x)/4, 0.0f);
touchBeginPos = touchEndPos;
}
affichage du code de haut niveau pourrait aider à expliquer ce qui se passe. – luke
Y a-t-il d'autres informations qui pourraient vous être utiles? –