Bonjour,

Je débute sous OpenGL avec Android donc peut être que j'ai loupé quelques trucs (j'ai lu des tutos tout de même).
L'objectif est de faire une appli de réalité augmentée.

Alors j'ai positionné des objets dans l'espace autour du point [0,0,0].

Initialement d'après ce que j'ai compris la camera est positionnée en [0,0,0] et regarde vers [0,0,-1] avec le up en [0,1,0].

Dans le principe j'applique pour le moment une rotation de la camera selon les données de la boussole (1 seul axe pour le moment). La caméra tourne donc autour de l'axe y.

Ce que j'essaye de faire c'est de positionner la camera en [0,0,0] et je la tourne selon l'angle choisit.

Alors ça fonctionne à moitié. c'est-à-dire, je n'arrive pas à voir les objets "derrière" c'est à dire avec un z positif (dans mon exemple). Pour les objets ayant un z négatif c'est OK.

un peu de code du Renderer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
@Override
public void onDrawFrame(GL10 gl) {
	gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
	gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 
	double heading = ... valeur en degré içi ...
	double angle = (heading/180)*Math.PI;
 
	float x_camera_position = 0f;
	float y_camera_position = 0f;
	float z_camera_position = 0f;
 
	float x_camera_direction = x_camera_position + (float)Math.sin(-angle);
	float y_camera_direction = y_camera_position;
	float z_camera_direction = z_camera_position + (float)Math.cos(-angle);
 
	gl.glMatrixMode(GL10.GL_MODELVIEW);
	gl.glLoadIdentity();
 
	GLU.gluLookAt(gl, x_camera_position, y_camera_position, z_camera_position,
                                x_camera_direction, y_camera_direction, z_camera_direction, 0f, 1f, 0f);
	// draw	
	scene.draw(gl);
}
 
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
	gl.glViewport(0, 0, width, height);
	gl.glMatrixMode(GL10.GL_PROJECTION);
	gl.glLoadIdentity();
	GLU.gluPerspective(gl, 42.5f, (float) this.width / (float) this.height, 0.1f, 100.0f);
	gl.glMatrixMode(GL10.GL_MODELVIEW);
	gl.glLoadIdentity();
}
 
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
	gl.glShadeModel(GL10.GL_SMOOTH);
	gl.glClearDepthf(1.0f);
	gl.glEnable(GL10.GL_DEPTH_TEST);
	gl.glDepthFunc(GL10.GL_LEQUAL);
	gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
}