automatische Texturzuweisung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Boris1993

Betreff: automatische Texturzuweisung

BeitragSo, Apr 04, 2010 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
ich arbeite gerade an einem flugsimulator in dem ein zufälliges terrain erzeugt wird und möchte dass z.B. ab einem bestimmten steigungswinkel (keine ahnung wie der berechnet werden soll) statt der bodentextur eine felsentextur zugewiesen wird kann mir jemand vllt einen denkanstoß geben mit beispielcode
danke schonmal für eure antworten
mfg Boris

US-Blitz

ehemals "SimssmiS"

BeitragSo, Apr 04, 2010 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab eher ne bemerkung oder tipp wie das geht weiß ich leider nicht kann noch nicht mal gute 2d spiele programieren bin anfänger
aber ich würde sagen steine ab einer bestimmten höhe alse in gebirgen da es so realistischer ist

Elendil

BeitragMo, Apr 05, 2010 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn ich dich jetzt richtig verstanden habe, dann könnte dir der Befehl EntityPitch() helfen. Mit dem fragst du den Drehwinkel der X-Achse ab.
Hier n Beispielcode:

Code: [AUSKLAPPEN]
Graphics3D 640, 480
SetBuffer BackBuffer()

camera = CreateCamera()
PositionEntity camera, 0, 1, 0

light = CreateLight()
RotateEntity light, 90, 0, 0

terrain = CreateTerrain(128)

grass_tex = LoadTexture("Sand0134_2_thumbhuge.jpg")
stein_tex = LoadTexture("Stein03.jpg")


While Not KeyHit(1)
   If KeyDown(205) = 1 Then TurnEntity camera, 0, -1, 0
   If KeyDown(203) = 1 Then TurnEntity camera, 0, 1, 0
   If KeyDown(208) = 1 Then MoveEntity camera, 0, 0, -0.05
   If KeyDown(200) = 1 Then MoveEntity camera, 0, 0, 0.05
   If KeyDown(17)  = 1 Then TurnEntity camera, -1,0,0
   If KeyDown(31)  = 1 Then TurnEntity camera, 1,0,0
   
   If EntityPitch(camera) < -20 Then
      EntityTexture terrain, stein_tex
   Else
      EntityTexture terrain, grass_tex
   EndIf
   
   RenderWorld
   Text 0, 0, "Benutze Cursortasten..."
   Text 0, 50, EntityPitch(camera) + " = Steigungswinkel"
   Flip
Wend
End

Hoff ich konnt helfn und dases dis war was du wolltet Wink
LG Elendil

PS: mit den Pfeiltasten steuerste und mit W/S änderst du den winkel Wink


EDIT: ou sorry falsch verstanden, glaub ich, ging davon das aus das du die camera meintest mit dem steigungswinkel und nich vom terrain =\ x_X
  • Zuletzt bearbeitet von Elendil am Mo, Apr 05, 2010 10:54, insgesamt 3-mal bearbeitet

mpmxyz

BeitragMo, Apr 05, 2010 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Man muss die Oberflächennormale an jedem Punkt berechnen und deren z-Komponente überprüfen.
Wenn du dich nicht mit Vektorberechnungen - Stichwort: Kreuzprodukt - beschäftigen möchtest, nutzt du für jede Stelle des Terrains LinePick und vergleichst den Wert von PickedNZ. (Wenn das Blitz-Koordinatensystem anders ist, muss es möglicherweise einer der anderen Normalenbefehle sein.)
Den Neigungswinkel bekommst du mit ACos heraus.
Je nachdem, wie die Neigung an dieser Stelle ist, änderst du die Textur des Terrains an dieser Stelle.
Abhängig davon, wie du die Textur änderst, kann die Berechnung und Texturänderung aber nur eingeschränkt für regelmäßige Berechnungen geeignet sein.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Goodjee

BeitragMo, Apr 05, 2010 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
eg solltest du dir den gesamten normalenvektor angucken, nicht nur nz, und diesen dann mit dem vektor (0/1/0) vergleichen mit dem skalarprodukt und dir den so erhaltenen winkel betrachten
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

mpmxyz

BeitragMo, Apr 05, 2010 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@Goodjee:
Und wenn du deine Berechnungen vereinfachst, kommen meine Berechnungen heraus.
Ich wollte die Lösung nicht komplexer als nötig machen.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Goodjee

BeitragMo, Apr 05, 2010 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
denke nich, nehmen wir eine fläche, die einfach von links nach rechts abfällt, die zkomponente des normalenvektors sollte 0 sein, der winkel kann aber ein beliebiger winkel zwischen 0 und 180° sein
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

mpmxyz

BeitragDi, Apr 06, 2010 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Goodjee, ich ging davon aus, dass die z-Komponente beim Terrain nach oben zeigt. (Das wäre zumindest das logischste, was man meiner Meinung nach machen könnte.)
Unter dieser Annahme stimmt meine Aussage voll und ganz.
Da es aber laut der Hilfe eher die y-Komponente sein muss, muss man PickedNY nutzen, wenn das Terrain nicht gedreht wurde.
Das Skalarprodukt lässt sich aber trotzdem wegvereinfachen.
Dein Gegenargument kann ich aber nicht verstehen.
Dieser Wert ändert sich ja beim Kippen stetig und bleibt zwischen 0 und 1.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Goodjee

BeitragDi, Apr 06, 2010 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, hast recht
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group