Question

J'ai besoin en vue de montrer le polygone de route (un rectangle 3.f * de 100.f) avec un point de fuite pour une route étant à 3/4 la hauteur de la fenêtre et le bord de la route la plus proche en dessous d'une fenêtre. Voir jeu Crazy Taxi pour un exemple de ce que je veux faire.

J'utilise iPhone SDK 3.1.2 modèle par défaut de projet OpenGL ES.

Configuration I la matrice de projection comme suit:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustumf(-2.25f, 2.25f, -1.5f, 1.5f, 0.1f, 1000.0f);

Puis-je utiliser pour régler glRotatef pour le mode paysage et la caméra de configuration.

glMatrixMode(GL_MODELVIEW);

glLoadIdentity ();  glRotatef (-90, 0.0f, 0.0f, 1.0f);

const float cameraAngle = 45.0f * M_PI / 180.0f;  gluLookAt (0.0f, 2.0f, 0.0f, 0.0f, 0.0f, 0.0f, 100.0f, cos (cameraAngle), sin (cameraAngle));

Ma bande de triangle du polygone de route est comme suit:

static const GLfloat roadVertices[] = {

-1.5f, 0.0f, 0.0f,    1.5f, 0.0f, 0.0f,         -1.5f, 0.0f, 100.0f,          1.5f, 0.0f, 100.0f,     };

Et je ne peux pas sembler trouver les bons paramètres pour gluLookAt. Mon point de fuite est toujours au centre de l'écran.

Était-ce utile?

La solution

Vous voulez faire cela en véritable 3D? essentiellement votre look au point est le centre de l'écran. Qu'est-ce que vous voulez qu'il soit un quart de l'écran sous l'horizon.

Vous pouvez le travailler en inversant une position finale par projection et par vue (essentiellement unprojecting).

En supposant que l'écran se étend de -1.0f à 1.0f en x et -1.0f à 1.0f en y alors vous voulez l'horizon pour aller à (0.0f, 0.5f). Cela signifie que vous avez besoin de regarder par quart de l'écran (c.-à--0.5f). Pour un z donné (nous avons choisi au hasard 0.5f). Donc, si nous prenons votre point de vue que vous avez déjà défini et une matrice « identité » ainsi que votre matrice « de projection », vous pouvez alors passer cela par gluUnproject comme suit:

GLdouble eyeX, eyeY, eyeZ;
gluUnproject( 0.0f, -0.5f, 0.5f, identity, view, projection, &eyeX, &eyeY, &eyeZ );

Vous pouvez ensuite rebranchez vos valeurs yeux dans gluLookAt et vous serez maintenant regarder un point en dessous de la surface de la route.

Je suis sûr qu'il existe une myriade d'autres façons de le faire, mais que l'on doit travailler ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top