Globalen Koordinaten von Vertices
Übersicht

onkelz89Betreff: Globalen Koordinaten von Vertices |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
hab ein Porblem - bin gerade unter anderen an einem Schadensmodell dran... Naja ich möchte erstmal nur die Stelle der Kollision prüfen und zwar die genaue (Vertex). Code: [AUSKLAPPEN] If CountCollisions(mesh)>0 Then
surf=GetSurface(mesh,CountSurfaces(mesh)) For b=0 To CountVertices(surf)-1 If VertexX(surf,b)<EntityX(test2,True)+testvar# And VertexX(surf,b)>EntityX(test2,True)-testvar# Then If VertexY(surf,b)<EntityY(test2,True)+testvar# And VertexY(surf,b)>EntityY(test2,True)-testvar# Then If VertexZ(surf,b)<EntityZ(test2,True)+testvar# And VertexZ(surf,b)>EntityZ(test2,True)-testvar# Then VertexCoords surf,b,VertexX(surf,b)+.1,VertexY(surf,b)+.1,VertexZ(surf,b)+.1 EndIf EndIf EndIf Next EndIf Soweit so gut .. dachte ich... Aber die VertexX usw. Angaben sind nicht Global - sondern beziehen sich nur auf die Veränderung ab der "geburt"... Zumindest denke ich das es so ist. Achja das +.1 hinter den Werten ist erstmal nur ein Test - ob es sich überhaupt verändert.... Ich hab wie viele Befehle durchgeschaut nix dabei bis jetzt aber irgendwas muss es geben.. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die VertexX etc sind vom 0,0,0 ihres Objektes aus gerechnet. Das hat nix mit "Ab geburt" zu tun
wie alles bei modellen |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah ok jetzt macht es sind ![]() Danke klappt super!!! Code: [AUSKLAPPEN] If (EntityX(mesh,True)+VertexX(surf,b))<EntityX(test2,True)+testvar# And (EntityX(mesh,True)+VertexX(surf,b))>EntityX(test2,True)-testvar# Then
If (EntityY(mesh,True)+VertexY(surf,b))<EntityY(test2,True)+testvar# And (EntityY(mesh,True)+VertexY(surf,b))>EntityY(test2,True)-testvar# Then If (EntityZ(mesh,True)+VertexZ(surf,b))<EntityZ(test2,True)+testvar# And (EntityZ(mesh,True)+VertexZ(surf,b))>EntityZ(test2,True)-testvar# Then VertexCoords surf,b,VertexX(surf,b)+.1,VertexY(surf,b)+.1,VertexZ(surf,b)+.1 EndIf EndIf EndIf |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und dann mußte noch dran denken ob das Objekt gedreht ist .
Guck mal unter Entity State / TForm... |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
meinst du wegen dem + 1 dahinter beim verschieben bestimmt...
Das war nur testweise damit ich sehe ob sich überhaupt was verändert ![]() Habe mitlerweile eine Abfrage wo die beidem Mittelpunkte von den Objekten liegen... dem entsprechend wird das Objekt verändert. Ist aber bestimmt nicht die beste Methode, ich schau mir die Befehle auf jeden Fall heute Abend zu Haus mal an. Danke |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein er meint weil deine Methode dann hopps gehen könnte wenn das objekt gedreht ist. Deswegen musst du die Koordinaten wenn du "Urzustand" haben willst erst mittels TFormPoint von Entity auf 0 "geformt" werden wobei Entity halt die Entity ist von welcher du den Vertex betrachtest | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Diese Befehle kennst du hoffentlich ?
CollisionEntity ( entity,index ) CollisionX# ( entity,index ) CollisionNX# ( entity,index ) CollisionSurface ( entity,index ) CollisionTriangle ( entity,index ) ... CollisionTime ( entity,index ) |
||
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, gerade rein gekommen...
Ehm ja und nein... ich arbeite mir den Befehlen bisher so gut wie nie. Mein bisheriger, funktionierender, aber auch bestimmt umständlicher Lösungsweg sieht so aus: Code: [AUSKLAPPEN] If CountCollisions(mesh)>0 Then
surf=GetSurface(mesh,CountSurfaces(mesh)) For b=0 To CountVertices(surf)-1 If (EntityX(mesh,True)+VertexX(surf,b))<EntityX(test2,True)+testvar# And (EntityX(mesh,True)+VertexX(surf,b))>EntityX(test2,True)-testvar# Then If (EntityY(mesh,True)+VertexY(surf,b))<EntityY(test2,True)+testvar# And (EntityY(mesh,True)+VertexY(surf,b))>EntityY(test2,True)-testvar# Then If (EntityZ(mesh,True)+VertexZ(surf,b))<EntityZ(test2,True)+testvar# And (EntityZ(mesh,True)+VertexZ(surf,b))>EntityZ(test2,True)-testvar# Then andersx=0 andersy=0 andersz=0 If EntityX(mesh,True)<EntityX(test2,True) Then andersx=-testvar# If EntityX(mesh,True)>EntityX(test2,True) Then andersx=testvar# If EntityY(mesh,True)<EntityY(test2,True) Then andersy=-testvar# If EntityY(mesh,True)>EntityY(test2,True) Then andersy=testvar# If EntityZ(mesh,True)<EntityZ(test2,True) Then andersz=-testvar# If EntityZ(mesh,True)>EntityZ(test2,True) Then andersz=testvar# VertexCoords surf,b,VertexX(surf,b)+andersx,VertexY(surf,b)+andersy,VertexZ(surf,b)+andersz EndIf EndIf EndIf Next EndIf Ich hab das sooo gemacht weil ich nicht weiß wie ich sonst die Koordinaten raus bekommen, die ich brauch... EDIT: Code: [AUSKLAPPEN] If (EntityX(mesh,True)+VertexX(surf,b))<CollisionX(mesh,i)+testvar# And (EntityX(mesh,True)+VertexX(surf,b))>CollisionX(mesh,i)-testvar# Then
If (EntityY(mesh,True)+VertexY(surf,b))<CollisionY(mesh,i)+testvar# And (EntityY(mesh,True)+VertexY(surf,b))>CollisionY(mesh,i)-testvar# Then If (EntityZ(mesh,True)+VertexZ(surf,b))<CollisionZ(mesh,i)+testvar# And (EntityZ(mesh,True)+VertexZ(surf,b))>CollisionZ(mesh,i)-testvar# Then andersx=0 andersy=0 andersz=0 If EntityX(mesh,True)<CollisionX(mesh,i) Then andersx=-testvar# If EntityX(mesh,True)>CollisionX(mesh,i) Then andersx=testvar# If EntityY(mesh,True)<CollisionY(mesh,i) Then andersy=-testvar# If EntityY(mesh,True)>CollisionY(mesh,i) Then andersy=testvar# If EntityZ(mesh,True)<CollisionZ(mesh,i) Then andersz=-testvar# If EntityZ(mesh,True)>CollisionZ(mesh,i) Then andersz=testvar# VertexCoords surf,b,VertexX(surf,b)+andersx,VertexY(surf,b)+andersy,VertexZ(surf,b)+andersz EndIf EndIf EndIf So wenn ich die Befehle anschaue... - Gleicher Effekt bisher Achja ich weiß das das viel Performance schluckte... werden die Befehle auch in Variabel speichern.. geht momentan nur rein ums Prinzip ob es geht... |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jup , mach das weil dann blickste besser durch ![]() Vorher haste unnötig immer die gleiche Berechnung inner Schleife gemacht . Und auch mal "Else" benutzen . Code: [AUSKLAPPEN] If CountCollisions(mesh)>0 Then ex1#=EntityX(mesh,True) ey1#=EntityY(mesh,True) ez1#=EntityZ(mesh,True) ex2#=EntityX(test2,True) ey2#=EntityY(test2,True) ez2#=EntityZ(test2,True) andersx=0 andersy=0 andersz=0 If ex1<ex2 Then andersx=-testvar# If ex1>ex2 Then andersx=testvar# If ey1<ey2 Then andersy=-testvar# If ey1>ey2 Then andersy=testvar# If ez1<ez2 Then andersz=-testvar# If ez1>ez2 Then andersz=testvar# surf=GetSurface(mesh,CountSurfaces(mesh)) For b=0 To CountVertices(surf)-1 If (ex1+VertexX(surf,b))<ex2+testvar# And (ex1+VertexX(surf,b))>ex2-testvar# Then If (ey1+VertexY(surf,b))<ey2+testvar# And (ey1+VertexY(surf,b))>ey2-testvar# Then If (ez1+VertexZ(surf,b))<ez2+testvar# And (ez1+VertexZ(surf,b))>ez2-testvar# Then VertexCoords surf,b,VertexX(surf,b)+andersx,VertexY(surf,b)+andersy,VertexZ(surf,b)+andersz EndIf EndIf EndIf Next EndIf |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group