Ich habe eine einfache OpenGL-App, die beliebige 3D-Modelle anzeigt. Ich möchte Zoom implementieren. was ich jetzt benutze glScale und funktioniert bis zu einem gewissen Grad. Ich habe jedoch zwei Probleme.OpenGL "Zoom": Objekt Clipping und Helligkeit
Jede Art von Zoom (+) erreicht schnell den Punkt, an dem sich die Kanten des Objekts in der nahen Clipping-Ebene befinden. Momentan ist mein zNear ungefähr 0.1, also macht es Sinn, dass das Vergrößern des Maßstabs des Objekts Clipping verursacht. Ich frage mich, ob es andere Ansätze für eine bessere Wirkung gibt.
Wenn ich hineinzoomiere, wird das Objekt gedimmt. verkleinern und es wird heller. Ich habe eine Lichtposition bei etwa 0, 0, 100. Ich habe eine sehr einfache Beleuchtung bei 0,0,100 positioniert und nur diffuse verwenden.
gl.glEnable(GL10.GL_LIGHTING); gl.glEnable(GL10.GL_LIGHT0); gl.glEnable(GL10.GL_COLOR_MATERIAL); float[] lights; lights = new float[] { 0f, 0f, 0f, 1f }; gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lights, 0); lights = new float[] { 1f, 1f, 1f, 1f }; gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lights, 0); lights = new float[] { 0f, 0f, 0f, 1f }; gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_SPECULAR, lights, 0); float matAmbient[] = { 0f, 0f, 0f, 1f }; float matDiffuse[] = { 1f, 1f, 1f, 1f }; float matSpecular[] = { 0f, 0f, 0f, 1f }; gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, matAmbient, 0); gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, matDiffuse, 0); gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SPECULAR, matSpecular, 0); float lightPosition[] = { mesh.mid.vertex[X], mesh.mid.vertex[Y], 100f, 1f }; gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosition, 0);
ich habe Dämpfungseinstellungen nicht, was ich glaube Bedürfnisse aktiviert werden das Licht zu veranlassen, nach Entfernung beeinträchtigt werden. Unabhängig davon ändere ich nicht die Entfernung des Objekts, skaliere es einfach. Sicher, die Position der Gesichter ändert sich, aber nicht signifikant. Wie auch immer, ich würde denken, dass das Heranzoomen heller und nicht schwächer wird.
dies geschieht mit opengl-es 1.0 auf der android-plattform, wenn das relevant ist.
jede Hilfe wird geschätzt.
ah, ich hätte es wissen müssen. Das passiert, wenn ich spät nachts Fragen beantworte. Ich werde meine Antwort jetzt bearbeiten. – PeterT