LinePick auf Terrain?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Eingeproggt

Betreff: LinePick auf Terrain?

BeitragMo, Feb 22, 2010 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Nun hört man auch in Sachen 3D mal was von mir Smile

Also ich möchte ganz simpel ein Objekt auf einem Terrain bewegen - und das Objekt soll logischerweise immer auf der Höhe des Terrains sein.

Ich weiß es gibt TerrainHeight / TerrainY mit dem man sich die Höhe ermitteln kann - ist mir soweit bewußt.
Aber ich habe eine Lösung mit Linepick umgesetzt da mein System auch auf Planes oder MeshTerrains oder was auch immer funktionieren soll später mal...
Und leider funktioniert das stellenweise nicht - ich frage mich warum?

Folgender Code zur Demonstration:

Code: [AUSKLAPPEN]
;Allgemeiner Kram
Global gfx_w=800
Global gfx_h=600
Graphics3D gfx_w,gfx_h,0,2
SetBuffer BackBuffer()

;Terrain
Local terrain=LoadTerrain("terrain\height.png")
EntityPickMode terrain,2
EntityOrder terrain,1
ScaleEntity terrain,0.2,10,0.2

;Camera
Global cam=CreateCamera()
RotateEntity cam,90,0,0
PositionEntity cam,TerrainSize(terrain)*0.1,100,TerrainSize(terrain)*0.1
AmbientLight 255,255,255

;Markierung
Local debugger=CreateSphere(8)
EntityColor debugger,255,0,0
EntityOrder debugger,-1

;Terrain demonstrativ "durchgehn"
For x=0 To TerrainSize(terrain)*0.2
   For z=0 To TerrainSize(terrain)*0.2
      pick=LinePick(x,11,z,0,-12,0)
      
      PositionEntity debugger,x,0,z
      RenderWorld
      Flip 0
      Delay 5
      
      If pick=0 Then
         Delay 100
      EndIf
      
      If KeyHit(1) Then End
   Next
Next

End


(In meinem richtigen Code ist alles weitestgehend variabel gehalten aber ich will hier ja n kurzen lauffähigen COde zeigen der mein Problem aufzeigt)

Die rote Sphere "läuft" sytematisch über das Terrain wenn man den Code ausführt - und an den Stellen an denen mein LinePick fehlschlägt stockt sie kurz (beabsichtigt um es zu veranschaulichen)
Also bei meiner Test-Heightmap die man sich hier anschauen kann gibts einige Stellen an denen das Terrain nicht richtig gepickt wird (Linepick 0 zurück liefert) - Warum aber? An x beliebigen anderen Stellen gehts ja?

Danke für jede Hilfe!
mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Goodjee

BeitragMo, Feb 22, 2010 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
vllt geht das terrain bevor du es skalierst von y=-1 bis y=1 und nich von 0-1
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Eingeproggt

BeitragMo, Feb 22, 2010 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe als "deltay" bei Linepick schon alle möglichen Werte genommen - hat leider nichts geändert (falls das Terrain 1 Einheit weiter unten sein sollte als ich es vermute...)

Die Lösung war, einen "radius" anzugeben bei Linepick - mit radius=1 funktioniert alles prächtig und fehlerfrei - Danke coolo Wink

(Warum es ohne Angabe eines Radius nicht geht ist mir ein Rätsel aber vorerst mal egal)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Chrise

BeitragMo, Feb 22, 2010 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ich kenne mich da selbst nicht genug aus und bin für den BBContest gerade selbst dabei die Terrain-funktionen und Eigenschaften zu erforschen.
Aber möglicherweise könnte es daran liegen, dass ein Terrain sich ja stetig ändert, jenachdem wo sich die Camera befindet.
Das ist von mir jetzt nur eine rein in den Raum gestellte Aussage und ist bestimmt mit einer Chance von 80% falsch Razz
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group