Vegetation auf Plane setzen mittels Textur

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

vanjolo

Betreff: Vegetation auf Plane setzen mittels Textur

BeitragDo, Jan 14, 2010 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es eine Möglichkeit Bäume und anderes auf eine Plane mit mittels einer Textur zu setzen.

Ich würde die gerne gleichbleibend verteilen und habe mir gedacht ich nehme die Kachelbare Textur der Plane, färbe sie weiss und setze dort wo die Bäume hinsollen schwarze Pixel.

Als nächstes sollen nur die Bäume angezeigt werden die innerhalb der Kachel stehen in der sich die Kamera befindet.

Midimaster

BeitragDo, Jan 14, 2010 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst auch ein Image zeichnen und dann dort in der Plane Bäume erstellen, wo die Pixel der Bitmap schwarz sind. Ich nehme mal an, hier geht es um einen ganzen Wald und auf einer Kachel soll mehr als 1 Baum stehen?

Du zeichnest ein Graustufenbild der Baumverteilung in gleicher Größe wie die Textur. Dabei kannst Du sogar noch durch die Grautöne Unterscheidungen treffen. z.b. je dunkler, desto mehr Laubwald oder desto mehr Bäume pro Kachel, etc.

Beim Erschaffen der Bäume im Spiel kannst Du dann mit ReadPixel() etc... den Farbwert pixelgenau abfragen und an die entsprechende Stelle der Plane einen oder mehr Bäume stellen.

Ebenso sollte es möglich sein aus der aktuellen Spielerpos auf die entsprechende Position in der Bitmap zurückzurechnen und so natürlich auch gewisse Bäume abschalten zu können. Vielleicht wäre hier ein BaumType nicht schlecht, in dem man sich gleich beim Erstellen gemerkt hat zu welcher Kachel er gehört. So lassen sich viele Bäume ein und ausschalten ohne jedesmal die genaue Distanz zur Camera neu zu berechnen.

ich denke mal, es geht sir vor allem um Performance, oder?
 

vanjolo

BeitragDo, Jan 14, 2010 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Es geht hauptsächlich um die Performance und die Ergonomie beim erstellen. Das ganze ist für eine Flugsimulation. Also Bäume in kleinen Waldflächen, an Straßen und Flüssen.

Xaymar

ehemals "Cgamer"

BeitragDo, Jan 14, 2010 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Möglichkeit 1:
Du müsstest die Vertexe die um dich rumliegen durchgehen und bei denen gucken ob die UV-Koordinate auf einen schwarzen Pixel liegt.

Möglichkeit 2:
siehe Midimaster

Möglichkeit 3:
Ein quad unter dem Flugobjekt erstellen, der das BaumBild des Bodens immitieren würde. Da du da ja die Skalierung hast, musst du nur die Baumposition[XZ] mit der Skalierung[XZ] malnehmen(Flugobjekt = Mittelpunkt der Skalierung).

Es gibt noch viele weitere möglichkeiten.
Warbseite

Goodjee

BeitragDo, Jan 14, 2010 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habs es noch nie versucht und weiß auch von niemande, dass er es jemals so versucht hat, aber irgendwie finde ich den gedanken grade intressant:

du zeichnest die verteilung der bäume auf eine alphamap
dann hast du eine baumblättergrüne textur mit ein bisschen relief
und texturen die einen querschnitt durch einen wald in schwarz weiß haben auf verschiedenen höhen, vermutlich also verschieden große etwas unförmige kreise die mit der höhe kleiner werden.

die beiden letzen texturen skalierst du so, dass sie sich total oft wiederholen, natürlich maßstabsgerecht

dann erstellst du mehrere meshes der größe des bodens in verschiedenen höhen und weißst ihnen die texturen so zu:

baumtextur*querschnitt(natürlich den richtigen für die höhe)*verteilung

falls du den ansatz versuchst mach mir ein bild davon Razz
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Nibor

BeitragDo, Jan 14, 2010 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst die Bäume auch alle nur einmal laden. Dann hängst du sie an ein Parent-Entity und dieses wird immer, wenn die Kamera die Kachel wechselt, an die neue Kachel gesetzt, die Bäume somit auch. Die Bäume auf dem alten Tile "verschwinden" so auch gleich.
http://www.blitzforum.de/showcase/203/
 

Matthias

BeitragDo, Jan 14, 2010 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde vorschlagen das du dein Gigantiches Map. In Tiles Aufteilst. Als Types.

Jedes Tiles gibst du ein Parentobjekt mit an dem du die einzelnen Bäume bzw Baumansammlungen anhängen kannst.

Nun gehst du alle MapTiles durch und versteckst mit HideEntity alle Parentobjekte.
Die die sich natürlich im Sichtbereich sind, die kannst du dann mit ShowEntity wieder Anzeigen.

So ungefär.
Code: [AUSKLAPPEN]

   VRange=CameraViewRange
   CPosX=EntityX(Camera)
   CPosZ=EntityZ(Camera)

   For MT.TMapTile=Each TMapTile
        HideEntity MT\Parent
        X=EntityX(MT\Parent) Z=EntityZ(MT\Parent)
       
        IF X>CPosX-VRange  And X<CPosX+VRange Then
              IF Z>CPosZ-VRange And Z<CPosZ+VRange Then
                  ShowEntity MT\Parent
              End IF
        End IF
    Next
 

vanjolo

BeitragDo, Jan 14, 2010 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für eure Antworten. Irgendwie sind mir die Ideen aber zu umständlich bzw. bin ich zu doof sie zu verstehen. Vertexe Abfragen auf einer Plane geht meiner Meinung nach schlecht, da die Kachel ja nur aus 4 Vertexen besteht. Wennn es die Möglichkeit gibt wäre das super auf einer Plane Berge und Hügel entstehen zu lassen.

Ich denke da eher an eine Art Koordinatensystem (Virtuelles Raster) das die Position für alle 1x raussucht, diese setzt und dann irgendwie wiederholt.

@Matthias
Deine Idee finde ich gut für die Performance. Danke

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group