Bäume platzieren

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

sungamer

Betreff: Bäume platzieren

BeitragDi, Feb 07, 2006 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich habe in versucht Bäume auf einem Terrain zu platzieren. Ich habe mir einfach Rnd Wrt genommen und dann mit Types platziert! Sieht aber dumm und nicht sehr realistich aus, weil sie eben Zufalls generiert platziert wurden. Habe gelesen das man die Bäume mit Mathematischen brechnugen naturgetreu platzieren lassen kann.
Weis einer wie das geht? Confused

MFG
Patrick 'Sungamer' Franken
 

Schnuff

BeitragDi, Feb 07, 2006 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
erst mal, ich würde Rand statt Rnd nehmen, ist schneller!
über eine Mathematische berechnungsweise, wüstte ich nichts
aber probiere es mal mit EntityDistance!
Programmers dont die. They gosub without return...

Mr.Keks

BeitragMi, Feb 08, 2006 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Rand und Rnd nimmt sich nicht wirklich was Wink.

Du kannst doch durchaus mal versuchen, einen mathematischen Zusammenhang zu suchen! Allerdings ist es vermutlich einfacher, die Levels einfach von Hand zu bauen.
MrKeks.net

Markus2

BeitragMi, Feb 08, 2006 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ja Pollenflug simulieren
und da dann nen Baum pflanzen und so weiter Smile
 

sungamer

BeitragMi, Feb 08, 2006 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Werde mir einfach mal eine Rand positzion speichern und dann +/- Rand mit einem kleinen Wert machen.
 

antome

!!! gesperrt !!!

BeitragDo, Feb 09, 2006 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ca. vor einem Jahr ein Zufallsprg. für XWorld/Glet geschrieben
ich habe es variabel gehalten um auch Steine Gras und eben alles was man so braucht zufällig in die Landschaft setzen kann.
Es funktioniert mit Heightmaps.

Ich beschreibe mal wie es in etwa funktioniert.

- Du machst eine Kopie deine Heightmap und malst dort mit verschiedenen Farben Flecken drauf je nachdem was du reinsetzen willst also für Bäume z.B. rot $FF0000 Steine grün $00FF00
diese Farbflecken kannst du auslesen .
- Höhenkorrektur ggf. für jedes Mesh eingeben
- Skalierung der Bäume
- Min. und Max. Höhe in der es im Level gesetzt werden soll
- Flag zufällige Y-Rotation ja/nein, denn es sieht viel natürlicher aus wenn die Bäume nicht alle in der selben Richtung stehen.
- eine "noset Funktion" wenn in einem Bestimmten Radius um das Objekt der Höhenunterschiede größer als X ist, dann nicht setzen. Damit kann man verhindern das Objekte an einer zu steilen Stelle gesetzt werden und
die eine Hälfte im Berg verschwindet wärend die andere Hälte im freien schwebt. Dazu must du in 4 verschiedenen Richtungen um das Mesh herum
in einem bestimmten Abstand die Höhen messen und wenn der Unterschied zu groß ist "nicht setzen "
- es werden noch mehr Variablem im Script gelesen z.B. MeshPfad/Name, Anzahl , x1,y1,x2,y2(Begrenzung für einen bestimmten Bereich)Terrainskalierung, FadeNear/FadeFar, Terraindetail usw.

Man kann dann im Script Unterteilungen machen für die Farben
Color FF0000
Meshname Baum1.b3d
..... alle anderen Werte

Color 00FF00
..nächses Mesh


Ist nur ein Vorschlag wie du es machen kannst, es sieht sehr natürlich aus
und man kann es mit XWorld/GLET notfalls noch nacheditieren.

Dazu hab ich noch ein Programm welches mir aus der XML-Glet Datei eine
Binäre Datei macht um die Level platzsparender zu speichern, sie laden dann auch schneller.

Wenn ich mein Spiel für welches ich das gemacht habe veröffentliche werde ich die Dateien dann auch geändert frei geben, das dauert aber noch.

Du kannst dir aber sicherlich sehr schnell auf diese Weise ein eigenes schreiben, mit eigenem Format.
antome
 

sungamer

BeitragDo, Feb 09, 2006 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist finde ich ne sehr gute Idee werde da mal so testen!
Danke
 

sungamer

BeitragDo, Feb 09, 2006 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry aber ich kenne mich mit dem Type system nicht so gut aus. Versuche gerade eine mini LOD zu erstellen indem ich die Bäume die weit weg sind mit hideentity ausblende.

Code: [AUSKLAPPEN]

Type tree
 Field x
 Field y
 Field id$
End Type

tree1 = LoadMesh("tree1.b3d")

For  tree = 0 To 1000
x = Rand(1000,10000)
z = Rand(1000,10000)
id$ = "tree" + tree

tree_id     = New tree
tree_id\x   = X
tree_id\y   = z
tree_id\id$ = id$

y =TerrainY(terr,x,y,z)
tree_id\id$ = CopyMesh(tree1)
PositionMesh(tree_id\id$,x,y,z)
Next


Das ist ein Stück des Codes. Funktioniert aber nicht so wie ich es will. Jeder Baum soll im Type tree gespeichert werden.
Weis auch noch nicht genau was ich in die Hauptschleife rein schreiben soll, es gibt aber bestimmt ne Formel wie man den abstand von camera zu den Bäumen messen kann und wenn nötig die weit enfernten Bäume ausblenden kann.

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Feb 09, 2006 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

type tree
   field mesh
end type

baum=loadmesh("tree.3ds")
global trees.tree

for i=0 to 999
   trees.tree=new tree
   trees\mesh=copyentity(baum)
   positionentity trees\mesh,rand(1000,10000),,rand(1000,10000),0
next

Also so würd ich es machen...


EDIT:
Für das Ausblenden, ab einer bestimmten Entfernung:
camerarange
camerafog
(und camerafogmode)
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

sungamer

BeitragDo, Feb 09, 2006 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich camerarange niedriger stelle verschwindet das terrain aber auch.

lucifer

BeitragDo, Feb 09, 2006 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal EntityAutoFade an.
Aktuelles Projekt:
Demonspawn
RPG
 

sungamer

BeitragDo, Feb 09, 2006 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich 10000 Bäume mache bringt das aber auch nichts.
 

lettorTrepuS

BeitragFr, Feb 10, 2006 1:40
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

sungamer

BeitragFr, Feb 10, 2006 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es jetzt so gemacht:

Code: [AUSKLAPPEN]
baum=LoadMesh("tree1.b3d")
ScaleMesh(baum,0.1,0.1,0.1)

For i = 0 To 100
pointx = Rand(1000,10000)
pointy = Rand(1000,10000)



   For a = 0 To 50
 
   treeX = pointx + Rand(0,500)
   treez = pointy + Rand(0,500)
   y =TerrainY(terr,treex,y,treez)
   ;EntityAutoFade(baum,200,1000)
   EntityAutoFade(baum,2000,2200)
   If y < -460
   trees.tree=New tree
   trees\mesh=CopyEntity(baum)
   PositionEntity trees\mesh,treex,y,treez
   End If
 
   Next



Next


Sind aber eckig die Wälder! Wie bekomme ich die abgerundet?

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group