collision (mesh mit terrain)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

biegl

Betreff: collision (mesh mit terrain)

BeitragSo, Okt 24, 2004 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe mal wieder ein problem...

ich habe eine map (3ds terain) und ein player mesh.
ich hatte zuvor anstatt eines meshes eine kugel
da hatte ich die kolli so:
Code: [AUSKLAPPEN]
Collisions player_col,terrain_col,2,3


aber jetzt wo ich ein mesh habe das definitiv keine kugel ist funktioniert
die kolli nimmer...

mir ist schon klar an was es liegen könnte:
ich habja jetzt eine kugel-polygon abfrage
und wenn ich das mesh anstatt der kugel nehem ist es ja dann eine polygon-polygon abfage
aber das gibt es ja nicht?

bitte helft mir...

mfg biegl
 

biegl

BeitragSo, Okt 24, 2004 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ok das problem hat sich gelöst.. ich hatte vergessen dem mesh den pivot als parent zu zuweisen.

Aber ein weiteres collision problem ergibt sich..
wen der player einen zu steilen berg hochläuft funzt die kolli nicht mehr und er knallt durch die map....
 

Roterblitz

BeitragSo, Okt 24, 2004 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
biegl hat Folgendes geschrieben:
ok das problem hat sich gelöst.. ich hatte vergessen dem mesh den pivot als parent zu zuweisen.

Aber ein weiteres collision problem ergibt sich..
wen der player einen zu steilen berg hochläuft funzt die kolli nicht mehr und er knallt durch die map....


Benutzt du ein eigenes Mesh als Terrain ? oder das Loadterrain von Blitz3D ?
bei Kugel to Mesh Collisionen gibst schon immer Probs in Blitz Razz

Hier musst du am besten eine eigene Collisions Routine proggen die von Blitz3D ist für eigene Terrain Meshflächen wohl zu ungenau und deine Kugel unten am Char fällt durch das Mesh Razz ... Cube to Mesh funkt besser allerdings ist nur eine Kugel sinnvoll wenn deine Spielfigur nen Berg hochlaufen soll Smile ... reduzier die Kugel auf sowenig Flächen wie möglich. und Collisionradius beachten. Ein Cube geht auch ABER dann musst du zusätzlich immer den Winkel deines Parent also deiner Figur anpassen.

Bei Loadterrain immer noch zusätzlich TerrainY korrekt abfragen und
in dieser Coll Routine die Kugel wieder aufs Terrain zusetzten ! Fehler
bei Loadterrainund Collision sind auch oft die Typen der Variablen,
stell sicher das du hier zB keine INT und FLOAT vermischt und dadurch
Werte zerhackst.,
User posted image
 

biegl

BeitragMo, Okt 25, 2004 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm.. danke...

ichbenutze ein selbst erstelltes terrain (liegt in 3ds vor..).

Wie meinst du das mit selbst eine collisions routine proggen?
Kannst du mir das mal genauer erläutern?


mfg biegl (TheTrigger)
 

sven123

BeitragMo, Okt 25, 2004 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun ich kann zwar nichts sinvolles zum Thema beisteuern habe aber auch ein Problem mit der Kollision von einem Mesh mit dem Terrain.Ich habe dem Mesh(flieger) einen Kugelförmigen Pivot als Parent zugeteilt aber trotzdem bleibt mein Mesh nicht stehen wenn es mit dem terrain Kollidiert sondern fliegt einfach hindurch.Ich sitze schon ziemlich lange an diesem Problem,sehe mich aber auserstande es ohne hilfe dritter zu lösen.
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
;Laden der Texturen und Meshs
terrain=LoadTerrain("f:\newheightmap.bmp")
text1=LoadTexture("C:\Programme\Blitz 3D\Tools\Textures\Urban\Urb009.bmp")
haus=LoadTexture("f:\glass30.bmp")
Mesh=LoadMesh("f:\3dModeller\Hand.3ds")
Gebaude=LoadMesh("f:\hhouse.x")
flieger=LoadMesh("f:\Flieger.3ds")
himmel=LoadTexture("C:\Programme\Blitz 3D\Samples\Blitz 3D Samples\AGore\GrassDemo\Data\sky_Up.bmp")
himmelr=LoadTexture("C:\Programme\Blitz 3D\Samples\Blitz 3D Samples\AGore\GrassDemo\Data\sky_RT.bmp")
;Globals für die Kollision
Global Feld=1
Global player=2
;Objekt richtig drehen
TurnEntity flieger,-90,0,90
;Erstellen eines Pivot für die Kollision
pivot=CreatePivot()
sky=CreateCube()
EntityRadius pivot,0.2
PositionEntity  pivot,3000,1000,8000
FlipMesh sky
ScaleEntity  sky,6350,9000,6400
PositionEntity sky,6500,-2000,6400
EntityOrder sky,1
;Das Terrain erstellen und Texturieren
EntityTexture terrain,text1,0,0
ScaleEntity terrain,100,200,100
ScaleTexture text1,100,200
;Spielfigur posizionieren
PositionMesh flieger,-8000,-5000,2000
TerrainDetail terrain,8000,True
;Position der Hand 
PositionMesh Mesh,4000,800,8000
;Position des Hauses
PositionMesh Gebaude,6000,30,9000
;Die Textur des Hauses bearbeiten und verwenden
SetCubeFace himmel,4
SetCubeFace himmelr,2
RotateTexture  haus,180
EntityTexture Gebaude,haus
EntityTexture sky,himmel
;;;;;;;;;;;;;;;;;;;;;;;;;;------Die Eintsellung der Kamera auf Thirdperson sicht
;;
;;
;Kameravoreinstellungen   
cam=CreateCamera()
PositionEntity cam,5100,2050,8075
CameraRange cam,1,80000
light=CreateLight()
LightRange light,80000
TurnEntity light,45,45,45
EntityParent light,cam
;Einstellungen für die Sicht
TurnEntity cam,10,106,0
EntityParent flieger,cam
PositionEntity cam,3007,1025,5845
TurnEntity cam,270,0,270
;Kollisionsabfrage 
EntityType terrain,Feld
EntityType pivot,player
Collisions player,Feld,2,1
;Steuerung des Spieler und der Cam
;;;;;;;;;;;;;;;;;;;;-------Hauptschleife
While Not KeyHit(1)
;Mausabfrage 
RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0 ;muss immer mesh parent sein!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
If KeyDown(200)=1 Then MoveEntity cam,0,0,70
If KeyDown(203)=1 Then MoveEntity cam,-70,0,0
If KeyDown(205)=1 Then MoveEntity cam,70,0,0
If KeyDown(208)=1 Then MoveEntity cam,0,0,-70
UpdateWorld
RenderWorld
Flip
Wend
ClearWorld
End
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

stfighter01

BeitragMo, Okt 25, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@sven konnte den code nicht testen ohne meshs aber ich glaub du hast deinen flieger das pivot nicht als parent zugeteilt
(bzw. du müsstest die camera UND den flieger dem pivot zuordnen und beide mit dem pivot bewegen)

@biegl
hier muss ich roterblitz widersprechen.
es ist ganz egal wieviele polygone deine "kugel" hat.
den durchmesser für die kollision gibst du ohnehin mit entityradius an, und daher ist es ganz egal was für eine form dein mesh hat (sphere, maxl oder sonstwas), da dein mesh ohnehin nicht überprüft wird.

von dem gerücht das kugeln manchmal durch terrains fallen habe ich schon gehört, sollte das ein ernsthaftes problem werden, so schlage ich vor du verdoppelts die abfragegeschwindigkeit - quasi du zeichnest nur jedes 2te mal mit renderworld und flip. damit sollte wieder für ausreichend genauigkeit gesorgt sein.


mfg stfighter
Denken hilft!
 

sven123

BeitragMo, Okt 25, 2004 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@stfighter01
Das war nicht der Kern des Pronlems ich habe jetzt den pivot als parent von Cam und vom Mesh.So hier habe ich dir jetzt mal alle Daten des Proggis als zip bereitgestelt.Wie gesagt ich kann beim besten willen nicht herausfinden warum es nicht geht.
http://home.arcor.de/the_fuzzy/Test3d.zip
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

Darren

BeitragDi, Okt 26, 2004 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@seven123 wenn ich das richtig sehe drehst und bewegst du die cam und nicht den pivot..... Confused
 

sven123

BeitragDi, Okt 26, 2004 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so muss ich dann den Pivot bewegen und nicht die Kamera oder peide.
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

biegl

BeitragDi, Okt 26, 2004 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
@stfighter01
ich habe keine kugel sondern im mom das mario mänchen aus dem
castle samle.. und das fällt bei zu steilen bergen auch durch..
wie meinst du das mit renderwold 2mal abfragen ich frage jetzt im mom
renderworld und flip am ende meiner hauptschleife ab..

mfg biegl
 

Darren

BeitragDi, Okt 26, 2004 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
@sven123 ja is auch logisch du hast ja nen pivot als parent von deinem mesh und der cam und wenn du den pivot drehst drehen sich auch die cam un das mesh Wink Wink
by Darren
 

Darren

BeitragDi, Okt 26, 2004 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
da hätte ich mal ne andre frage.....
undzwar wie groß muss ich die scybox machn wenn mein terrain zb 1000x1000 groß is??
 

sven123

BeitragDi, Okt 26, 2004 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das bei mir einfach so gemacht:Einen kelinen Würfel erstellen und denn dann durch scaleentity immer weiter hochscalieren,dann den Befehl flipmesh verwenden damit man die Kanten des Würfels innen sieht.Fertig!Also wenn das deine Frage war,da gibt es keine bestimmte größe einfach auf eben beschriebenen wege ausprobieren.
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

sven123

BeitragDi, Okt 26, 2004 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte allerdings auch noch eine Frage der Kollision betreffend.Wenn ich den pivot als parent von flieger(Mesh) und cam deklariere und diesen dann bewege funktioniert meine Steurung nicht mehr richtig auserdem wird die Kollision von der Camera mit dem Boden Gebrüft aber ich möchte ja die Kollision von dem Mesh mit dem Terrain testen lassen.Wie mache ich die Kollision richtig?
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

biegl

BeitragSa, Okt 30, 2004 11:44
Antworten mit Zitat
Benutzer-Profile anzeigen
also das mit der colli regt michlangsamm auf ...
 

Dreamora

BeitragSa, Okt 30, 2004 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Hilfe ist relativ umfangreich.
Man sollte sie sich vielleicht wirklich mal angucken.
zum einen was Parent etc bringt und zum anderen betreffend die Kollision, mit welcher man das Objekt versieht das man prüfen will!

Sprich wenn du cam und flieger hast setzt du colli für flieger und net für die cam.

Und was das steuern betrifft: Das hängt davon ab wo der 0,0,0 punkt bei deinem flieger ist, denn um den punkt wird rotiert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

sven123

BeitragSo, Okt 31, 2004 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Afwan(Sorry) für die vielen dummen fragen der Kollison betreffend,ich habe es aber wirklich nicht geblickt. Embarassed Zwar ist jetzt das alte Problem gelöst doch ein neues geselt sich hinzu.Nun funktioniert di Kollision zwischen flieger und terrain doch wenn der flieger nach der Kollision stoppt sieht man den flieger nicht mehr weil sich die Kamera noch weiter bewegt,nun stehe ich vor der Aufgeabe die Kamera zu stoppen wenn der Flieger(das Mesh) stopt.Doch das geht nicht weil ich ja die Cam als Child vom Flieger habe.Dann habe ich versucht die Camm als paren zu deffnieren(entityparent cam,flieger) doch wie nicht zu weiter wunderlich kam es dadurch zu einem Stack Overflow.Also habe ich versucht eine if abfrage mit der Kollision zu machen(if collisons1,2,2,1=true the lock=1) das lock soll dann die Camera bewegungen als Schaltvariabele stoppen,dass ging aber nicht!Wie löse ich dieses Problem?.
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken
 

Darren

BeitragSo, Okt 31, 2004 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab die cam in jeden schleifen durchlauf die cam immerwieder richtig positioniert

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group