GLBasic forum

Other languages => GLBasic - de => Topic started by: Tenorm on 2008-Apr-08

Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-08
Hi,

ich habe ein Problem mit den Kollisionsabfragen im 3D-Modus:

Ich bekomme immer völlig sinnlose Werte (X_COLLISIONRAY) oder an den falschen Stellen ein FALSE oder TRUE (X_COLLISION, X_COLLISIONAABB). Ich arbeite mit animirten und sich bewegenden Quake II-Animationen, die ich dann in *.ddd´s umwandle, hab aber auch schon versucht, dass Problem mit *.3ds-Dateien zu beheben => Funktioniert trotzdem nicht. Da ich jetzt mal davon ausgehe, dass das an mir liegt, könnte mir bitte jemand nen Codeschnipsel einer Objektkollisionsabrage von Körper "0" und Körper"1" tippen. Nur das nötigste.

Wäre nett, weil ohne die Kollisionsabfrage komm ich nicht weiter.

Gruß

Tenorm
Title: Kollisionsabfrage in 3D
Post by: Kitty Hello on 2008-Apr-08
Du musst X_MOVEMENT/X_ROTATION aufrufen, um Objekt A and die Stelle zu schieben, wo es später gezeichnet wird.
Dann bei X_COLLISION eine Kugel in _globalen_ Koordinaten angeben.
Wenn's nicht geht, Code zeigen. Kann nur eine Kleinigkeit sein.
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-09
Die Kugel bzw. der Quader bwewgt sich immer mit dem Player mit. Aber ich zeig dir mal nen Ausschnitt:

...
X_SCALING 0.025,0.025,0.025
X_MOVEMENT 0-player_x,0-player_y,0-player_z
X_ROTATION player_rot,0,1,0
X_SETTEXTUR 0,-1
X_DRAWANIM 0, 0, 40, anim, TRUE

X_SCALING 0.025,0.025,0.025
X_MOVEMENT 100,0,100
X_ROTATION 90,0,1,0
X_SETTEXTUR 1,-1
X_DRAWANIM 1, 0, 40, anim, TRUE

IF X_COLLISIONAABB(1,anim,0-player_y,5+player_z,0-player_x,6,6)=TRUE THEN c=TRUE
...

player_... = Koordinaten von Spielfigur
anim        = Animationsstufe

Noch was: Muss ich bei den Collision*-Befehlen eigendlich das Objekt inner- oder ausserhalb des Quaders/ der Kugel angeben?

Gruß
Title: Kollisionsabfrage in 3D
Post by: Kitty Hello on 2008-Apr-09
Ja... Neee...
Du willst doch eine Kugel um den _Player_ mit den _Objekten_ prüfen. Nicht eine Kugel mit dem Player, oder?

Also:
x_movement hindernis_x, hindernis_y, hindernis_z
xif x_collisionaabb(id_player, anim, x_player, y_player, z_player, width, height) ....
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-09
OK, die Frage war aber eher nebensächlich, die Kollisionsab frage läuft aber immer noch nicht.
[SCHMOLL] .

Also liegt beim Code kein Fehler???

Hat sowas vielleichtwas mit den Modellen zu tun (also Dateityp), mit was für Dateien arbeitest du???

Die Position von X_COLL... stimmt auch, oder???
Title: Kollisionsabfrage in 3D
Post by: Schranz0r on 2008-Apr-09
Schonmal Debug angemacht, und geschaut ob die Kollisionsbox auch richtig sitzt?
Title: Kollisionsabfrage in 3D
Post by: BumbleBee on 2008-Apr-09
Warum fragt hier mich keiner. ;) Das Kollisionsproblem kann auch an X_SCALING liegen.
In der Hilfe steht:

QuoteSkalierte, inbesondere nicht orthotrope Skalierungen, können Probleme bei X_COLLISION hervorrufen.
Wenn ich zum Beispiel ein Terrain habe und mache X_SCALING 2,2,2  dann fällt der Spieler durch den Boden. Probier's mal aus bei dir.:)

Cheers
Title: Kollisionsabfrage in 3D
Post by: Kitty Hello on 2008-Apr-09
Echt!? Oh sch.....
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-10
Die Box sitzt richtig.
Wenn das Problem bei Scaling liegt, hab ich aber ein Problem: Ich scaliere meine Welt ums 500-fache, da ich im Editor keine unbegrenzt große Welten erstellen kann. Kann man sowas überbrücken/reparieren/umstellen?

Danke
Gruß

Tenorm
Title: Kollisionsabfrage in 3D
Post by: Schranz0r on 2008-Apr-10
Eher nicht, was benutzt du den für ein Programm?
Also in Blender solltest du es doch scalieren können auf die größe was du brauchst ?
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-10
Ich hab zwar Blender auch, verwende aber Milkshape 3D, da kenn ich mich halt gut aus, das Programm an sich ist eigendlich für Player, aber tuts auch super für Welten. Ausserdem zahllose in- und export-Optionen. Was anderes kann man nicht dagegen machen?

Gruß

Tenorm

PS: Vielleicht könnt ihr das Problem ja im nächsten Update beheben, wäre echt ne gigantische Hilfe, da ich sonst ja nie scalieren kann, ohne das die Kollisionsabfrage spinnt.
Danke
Title: Kollisionsabfrage in 3D
Post by: Schranz0r on 2008-Apr-10
Ich glaub Gernot ist schon auf suche, denke das war nicht so geplannt, das beim Sculling die Kollision falsch ist ?! :)
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-10
Danke, ich schätze sowas ;)
Title: Kollisionsabfrage in 3D
Post by: x-tra on 2008-Apr-10
nur mal so offtopic: wie schauts inzwischen mit boden- bzw. weltkollisionen gegenüber player aus?(wollt keinen extra thread öffnen)
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-12
Und wie stet´s mit der Behebung des Problems?
Irgendwelche Fortschritte?
Title: Kollisionsabfrage in 3D
Post by: Schranz0r on 2008-Apr-12
KA muss Gernot ja machen, und atm ist er wohl nicht da :)
Title: Kollisionsabfrage in 3D
Post by: Kitty Hello on 2008-Apr-14
Wenn's hier ein Problem gibt, bitte ein kleines Beispiel hochladen, das das Problem verdeutlicht.
Title: Kollisionsabfrage in 3D
Post by: Tenorm on 2008-Apr-14
Bei keinem einzigen meiner Programme funktioniert die Kollisionskontrolle mit scalierten Modellen. Ich hab jetzt mal ein Modell im Editor scaliert => muss es im Programm nicht mehr machen => funktioniert einwandfrei.
Aber das für die ganze Spielwelt (fast 100 Animationen/Objekte) zu machen, wäre doch etwas zeitraubend. Noch nal zum Beispiel:Das kannst du doch schnell bei irgendeinem 3D-Game (ausser eins mit Newton-Kollisionen) ausprobieren, einfach größe schnell verdoppeln, wer weis, vielleicht funktionierts ja bei dir, bei mir nicht.

Danke