Seite 1 von 1

Quad auf Kamera ausrichten

Verfasst: 27.02.2012, 20:53
von HLTO
Hallo,

ich habe mir ein kleines Programm zusammengestellt. Damit kann man Quad darstellen. Es funktioniert auch alles schön, aber jetzt würde ich diese Quads gerne zur Kamera ausrichten.

Was brauche ich alles um ein Quad (bestehend aus vier Vertices) auf die Kamera auszurichten. Am Anfang dachte ich ich nehme die Rotation der Kamera und übertrage diese auf das Quad, aber das scheint so nicht zu funktionieren.

Re: Quad auf Kamera ausrichten

Verfasst: 27.02.2012, 21:16
von dot
Am einfachsten platzierst du die Quads direkt im Viewspace (also ohne World Matrix).

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 17:06
von kimmi
Das nennt man ein Billboard. Hier findest du, falls nötig, etwas darüber für OpenGL: http://www.lighthouse3d.com/opengl/billboarding/ .

Gruß Kimmi

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 18:09
von HLTO
Danke für das Tutorial :)

Aber jetzt funktioniert es.

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 18:19
von joggel
Wie hast du's gelöst?

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 19:08
von HLTO
Ich habe es mit dem atan() berechnet, aber das geht sicher auch anders. Oder?

Obwohl mir das Ergebnis noch nicht gefällt.

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 21:15
von dot
HLTO hat geschrieben:Ich habe es mit dem atan() berechnet, aber das geht sicher auch anders. Oder?
dot hat geschrieben:Am einfachsten platzierst du die Quads direkt im Viewspace (also ohne World Matrix).
:roll:

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 21:57
von joggel
dot hat geschrieben:Am einfachsten platzierst du die Quads direkt im Viewspace (also ohne World Matrix).
Und wie macht man das?
Gehts um DirecX oder OpenGL?

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 22:01
von dot
Ist doch egal um welche API es geht. Platzier das Billboard im Viewspace, relativ zur Kamera, aka World Matrix auf Identity setzen...

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 22:29
von Artificial Mind
dot hat geschrieben:Ist doch egal um welche API es geht. Platzier das Billboard im Viewspace, relativ zur Kamera, aka World Matrix auf Identity setzen...
Ich weiß nicht wie du darauf kommst das man nur die World Matrix weglassen muss ... Ich bin der Meinung du musst die View Matrix weglassen. Wenn du nur die World-Matrix auf Identity setzt, dann ist das Billboard ja noch nicht zwingen immer Camera-facing.

Also ich habe solche Billboards in meinen Partikeln und die funktionieren so, dass ich per normaler WorldViewProjection den Mittelpunkt des Billboards in Cameraspace (vor Rehomogenisierung) transformiere und dann die entsprechnenden Billboardgrößen auf die x und y Koordinate addiere. Da das noch nicht wieder homogene Koordinaten sind, haben die Eckpunkte danach die richtige Skalierung. Das sollte eigentlich den gleichen Effekt haben als wenn man die Ausdehnung des Billboards erst nach der View und vor der Projection Matrix bestimmt.

Ich habe das allerdings im Geometry Shader:

Code: Alles auswählen

	gl_Position = geometryPosition_cameraspace[0] + vec4(size, -size, 0, 0);
	EmitVertex();
	
	gl_Position = geometryPosition_cameraspace[0] + vec4(-size, -size, 0, 0);
	EmitVertex();
	
	gl_Position = geometryPosition_cameraspace[0] + vec4(size, size, 0, 0);
	EmitVertex();

	gl_Position = geometryPosition_cameraspace[0] + vec4(-size, size, 0, 0);
	EmitVertex();

	EndPrimitive();
mit

Code: Alles auswählen

	gl_Position = geometryPosition_cameraspace = mWorldViewProjection * vec4(vertexPosition, 1);
im Vertex Shader

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 22:31
von dot
Sry, da hast du natürlich recht, man muss sowohl World als auch View Matrix (bzw. in OpenGL eben die ModelView Matrix ) weglassen...

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 22:40
von Artificial Mind
Gut, ich dachte schon ich hätte was falsch verstanden^^ "Einfach weglassen" ist natürlich nicht ganz vollständig, du solltest dir vorher den richtigen Billboardmittelpunkt ausrechnen und dafür brauchst du noch die World und View oder ModelView Matrix. Außer dein Billboard soll relativ zur Kamera bewegt werden :)

Re: Quad auf Kamera ausrichten

Verfasst: 28.02.2012, 22:52
von dot
Ja natürlich. Der Punkt ist eben, wie gesagt, das Quad im Viewspace zu platzieren...