Drehung eines Surfaces zur Kamera
Übersicht

![]() |
TheProgrammerBetreff: Drehung eines Surfaces zur Kamera |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
Ich habe folgendes Problem: Ich möchte für meine particel-effekte singlesurfaces verwenden, also mehrere "Sprites" in ein Surface. Die 4 erstellten Vertexpunkte sollen sich jetzt zur Kamera ausrichten. Hier der Code: BlitzBasic: [AUSKLAPPEN]
winkel# ist der DeltaYaw - Winkel zur cam und winkel2# ist der DeltaPitch - Winkel zur cam. "*1" bedeutet, dass der "Sprite" auf 1,1 scaliert ist, also 0.5 wäre dann nur halb so groß. Den Yaw-Winkel bekomme ich ja hin. Die y-Position der Vertex ist auch schon dem Pitch-Winkel angepasst. Damit diese beiden TriAngles nun aber direkt zur Kamera zeigen, müssten noch die x- und z-koordinaten dem pitch-winkel angepasst werden. Ich hoffe, ihr könnt mir da helfen und habt auch alles verstanden! Mfg |
||
aktuelles Projekt: The last day of human being |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
das problem kannst du umgehen, indem du das mesh, in das du die partikel erstellst, direkt an die kamera hängst. dann brauchst du nur ein tform, um die position des partikels zu bestimmen.
aber auch deine jetzige methode geht. musst allerdings nen ganzen haufen tforms benutzen.Code: [AUSKLAPPEN] TFormVector pa\sx,-pa\sy,0,par_cam,pa\e\mesh
vx1# = TFormedX#() vy1# = TFormedY#() vz1# = TFormedZ#() TFormVector -pa\sx,-pa\sy,0,par_cam,pa\e\mesh vx2# = TFormedX#() vy2# = TFormedY#() vz2# = TFormedZ#() TFormVector pa\sx,pa\sy,0,par_cam,pa\e\mesh vx3# = TFormedX#() vy3# = TFormedY#() vz3# = TFormedZ#() TFormVector -pa\sx,pa\sy,0,par_cam,pa\e\mesh vx4# = TFormedX#() vy4# = TFormedY#() vz4# = TFormedZ#() vert[0] = AddVertex(pa\e\sur,pa\x+vx1#,pa\y+vy1#,pa\z+vz1#,1,1) ; ol vert[1] = AddVertex(pa\e\sur,pa\x+vx2#,pa\y+vy2#,pa\z+vz2#,0,1) ; or vert[2] = AddVertex(pa\e\sur,pa\x+vx3#,pa\y+vy3#,pa\z+vz3#,1,0) ; ul vert[3] = AddVertex(pa\e\sur,pa\x+vx4#,pa\y+vy4#,pa\z+vz4#,0,0) ; ur |
||
MrKeks.net |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist es schneller, wenn ich den mesh an die camera setze?
Wenn ja, wie sieht das dann genau mit dem TForm aus? |
||
aktuelles Projekt: The last day of human being |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
du rechnest die koordinate des partikels ins system der kamera (bzw des an die kamera angehängten meshs) um. danach kannst du die größe durch simple addition festlegen...
(ich copynpaste nur aus ae... dadurch vielleicht etwas kriptische typennamen ^^)Code: [AUSKLAPPEN] TFormPoint 0,0,0,e\piv,fx_explosion
x# = TFormedX() y# = TFormedY() z# = TFormedZ() vert[0] = AddVertex(e\sur,x+e\sx,y+e\sy,z,0,0) ; ol vert[1] = AddVertex(e\sur,x+e\tx,y+e\ty,z,1,0) ; or vert[2] = AddVertex(e\sur,x-e\tx,y-e\ty,z,0,1) ; ul vert[3] = AddVertex(e\sur,x-e\sx,y-e\sy,z,1,1) ; ur p.s. du kannst da auch ganz einfach rotierte partikel machen. du siehst ja das zeugs da oben... Code: [AUSKLAPPEN] e\sx = -sx*Cos(rota) - sy*Sin(rota)
e\sy = sy*Cos(rota) + -sx*Sin(rota) e\tx = sx*Cos(rota) - sy*Sin(rota) e\ty = sy*Cos(rota) + sx*Sin(rota) |
||
MrKeks.net |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo. Danke! funzt
Kannst du die Rotation vlt. nochma anhand dieses codes erklären? BlitzBasic: [AUSKLAPPEN]
|
||
aktuelles Projekt: The last day of human being |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] e\sx = -sx*Cos(rota) - sy*Sin(rota)
e\sy = sy*Cos(rota) + -sx*Sin(rota) e\tx = sx*Cos(rota) - sy*Sin(rota) e\ty = sy*Cos(rota) + sx*Sin(rota) sx und sy sind die jeweilige ausdehnung. nun wird dieser punkt rotiert. dein dreieck liegt jetzt zweischen den punkten im koordinatensystem der kamera. Code: [AUSKLAPPEN] vert[0] = AddVertex(e\sur,x+e\sx,y+e\sy,z,0,0) ; ol
das heißt, du musst diese punkte bei den tformvectors anstelle von sx,sy angeben. also
vert[1] = AddVertex(e\sur,x+e\tx,y+e\ty,z,1,0) ; or vert[2] = AddVertex(e\sur,x-e\tx,y-e\ty,z,0,1) ; ul vert[3] = AddVertex(e\sur,x-e\sx,y-e\sy,z,1,1) ; ur tformvector e\sx,e\sy,0,camera,piv tformvector e\tx,e\ty,0,camera,piv tformvector -e\tx,-e\ty,0,camera,piv tformvector -e\sx,-e\sy,0,camera,piv |
||
MrKeks.net |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank!!! ![]() funzt alles. Ich hoffe, die technik ist jetzt schneller, als jedes Sprite einzeln.. |
||
aktuelles Projekt: The last day of human being |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group