Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Suchergebnisse

Suchergebnisse 1-17 von insgesamt 17.

Werbeanzeige

26.08.2007, 15:48

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

testen ob und wo eine linie eine ebene schneidet nun wird diese ebene noch auf ein dreieck begrenzt

26.08.2007, 13:13

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

hehe, dacht ich mir auch als ich das sah

25.08.2007, 23:48

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

okay, hab das nun mal bissl überarbeitet, nu wird immerhin erkannt, wenn die linie genau auf der eben liegt, also start und endpunkt der linien den gleichen z wert haben, wie meine ebene dazu bemerke man mein geiles if: Quellcode 1 if(s<0.0f && s>0.0f)

25.08.2007, 23:03

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

naja, laut dem tut steht da: Zitat Die Funktion LineHitsPlane berechnet, ob eine Strecke eine Ebene schneidet. LineHitsPlane heißt bei mir nur CollisionLine_Plane

25.08.2007, 15:40

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

Quellcode 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 bool CollisionLine_Plane(Linie line, Plane plane, Vector &sp) { Vector LineDir; float Denominator, s; LineDir.SetV(line.GetV2()-line.GetV1()); Denominator=plane.GetA()*LineDir.GetX()+ plane.GetB()*LineDir.GetY()+ plane.GetC()*LineDir.GetZ(); printf("%f\n", Denominator); if(fabsf(Denominator)<0.0001f) { if(fabsf(line.GetV1X()*plane.GetA()+ line.GetV1Y()*plane.GetB()+ line.GetV1Z()*plane.GetC()+plane.Get...

25.08.2007, 14:47

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

jo, hab erst gerade mitbekommen, das a, b und c die 3 koords des 3d-vektors vN, also der normalen sind also muss doch n bug in der fnkt sein, die testet, ob ich ne ebene schneide :-/

25.08.2007, 06:47

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

okay, hab mal bissl durchgeguckt und meine PlaneFromPoints funktion in die richtung geändert: Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 Plane PlaneFromPoints(Vector& v1, Vector& v2, Vector& v3) { // Testwerte dreieck ABC (v1, v2, v3) Plane p; // v1(0,0,90) v2(0,2,90) v3(2,0,90) p.vN.SetV(v1.CrossProduct(v3-v2, v1-v2)); // vN.x=0 vN.y=0 vN.z=-4 p.vN.SetV(p.vN.NormNormalize()); // vN.x=0 vN.y=0 vN.z=-1 a=p.vN.GetX(); // 0.0f b=p.vN.GetY(); // 0.0f c=p.vN.GetZ(); // -1.0f p.SetD(-(v1.GetX()*p.GetB() + v...

17.08.2007, 12:58

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

ich gebe die werte nicht aus aber wenn ich weiß das meine strecke AB A(2,2,80) und B(2,2,83) ist und meine ebene quasi auf z=90 ist kann keine kollision vorhanden sien ein true wird trotzdem zurück gegeben :-/

17.08.2007, 11:58

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

aber irgendwie stimmt da was noch nicht! ich übergebe nun an PlaneFromPoints die vektoren v1(0,0,90), v2(0,2,90) und v3(2,0,90) das wäre n dreieck, und die ebene geht ja nun von oben nach unten nun kommt in der funktion, laut tut, das ich rechnen muss, mit plane.a, plane.b und plane.c ka, hab da nun einfach die koords der normal normalisierten genpmmen, quasi plane.vN.x, plane.vN.y und plane.vN.z aber das haut vorne und hinten nciht hin, da immer ne kollision erkannt wird, auch wenn die zu teste...

17.08.2007, 11:33

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

ne das krasse is, das eg schon alle funktionen da waren, bis auf Normnormalize, da hats wohl dann gehangen

17.08.2007, 11:17

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

Also doch so: Quellcode 1 2 3 4 5 6 7 8 Plane PlaneFromPoints(Vector& v1, Vector& v2, Vector& v3) { Plane temp; temp.vN.CrossProduct(v3-v2, v1-v2); temp.vN.NormNormalize(); temp.SetD(-(v1.GetX()*vN.GetX() + v1.GetY()*vN.GetY() + v1.GetZ()*vN.GetZ())); return temp; } hier die zusätzlichen funktionen, damits keine missverständnisse gibt: Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Vector vN; float fD; void SetD(float v) { fD=v; } Vector CrossProduct(Vector &v1, Vector &v2) { Vector resu...

17.08.2007, 10:30

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

also ich komm da echt nciht dahinter. ein Plane ist ne ebene, mit unbegrenzten maßen. lediglich ne richtung hat sie ja, oder!? also, z.b. v(0,1,0) müsste mir ne ebene geben, die geraden von unten nach oben geht!? die funktion zum erstellen einer ebene ist ja: Quellcode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Plane PlaneFromPoints(const Vector3D& v1, // Die drei Punkte const Vector3D& v2, const Vector3D& v3) { Plane p; // Normalenvektor durch Kreuzprodukt berechnen und eintragen p.n = Vector3D_Cross(v3 ...

17.08.2007, 09:36

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

naja, ich versuchs nach der gezeigten frmel zu machen, sonst peil ich nix. aber kanns sein, seh ich grad, das d errechnet wird durch: Quellcode 1 2 3 4 5 6 vN <-- NormalisierterVector Plane::PlaneFromPoints(Vector &v) { Plane temp; temp.SetD(v.x*vN.x+v.y*vN.y+v.z*vN.z); }

17.08.2007, 09:14

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

also ist plane wirlich nur mit v und d definiert v nun also das kreuzprodukt von (C-B x A-B) okay, soweit so gut, aber das mti dem d raffe ich irgendwie noch garnet und irgendwie kann das doch och net alles in der struktur oder klasse sein. im tutorial steht die zuweisung ja mit: Quellcode 1 p.d = -(v1.x * p.a + v1.y * p.b + v1.z * p.c); soweit klar, d ist n float wert, das is och noch okay. v1 ist der ortsvektor von..einem der 3 Punkte die an plane übergeben werden. die ebene is aufs dreieck AB...

17.08.2007, 08:02

Forenbeitrag von: »d00m«

Frage zum 2. Teil des 3D Kollisionstutorial

Woltle grad das tutorial machen zum thehama Strecke und Ebene und fand nun den Datentyp Plane da. Aus was besteht der, bzw wie is er angelgt? im forum hier fand ich die struktur struct PLANE { Vector v; float d; }; aber da begreife ich den zusammenhang nicht recht Vector v soll ja wohl die 3 eckpunkte der dreiecksebene ABC sein, oder? also wäs Vector v[3]; oder? und was hat das d da zu suchen? vllt kann mir ja jemand "schnell" weiterhelfen, würd mich freuen!

31.07.2007, 14:05

Forenbeitrag von: »d00m«

Kollisionsprobleme

momentan ist er: C-/C++-Quelltext 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 45 46 47 48 49 50 51 52 bool CollisionLine_Line(LINE line1, LINE line2, VECTOR_XYZ *sp) { VECTOR_XY KollPoint; bool KoolX =false; bool KoolY=false; float s, t; // test für 2D ablauf -> 3D-Vektoren in 2D umwandeln VECTOR_XY A, B, C, D; make2Dvector(A, line1.v1); make2Dvector(B, line1.v2); make2Dvector(C, line2.v1); make2Dvector(D, line2.v2); ...

31.07.2007, 13:30

Forenbeitrag von: »d00m«

Kollisionsprobleme

Hi. habe probleme mit der kollisionserkennung von 2 linien, in 3d. bin das tutorial auf http://www.scherfgen-software.net/ durchgegangen, aber da kommen falsche werte raus! ich hab zwar schon eine funktion zum errechnen des schnittpunktes, in 2D, aber da es, meiner meinung nach, sehr rechenaufwendig ist, wollte ich es verbessern. auch weiß ich bei meiner momentanen funktion nicht, wie ich sei auf 3D erweitern kann. kann mir vllt jemand weiterhelfen?

Werbeanzeige