Bäume platzieren
Übersicht

sungamerBetreff: Bäume platzieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? ![]() MFG Patrick 'Sungamer' Franken |
||
Schnuff |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rand und Rnd nimmt sich nicht wirklich was ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst ja Pollenflug simulieren
und da dann nen Baum pflanzen und so weiter ![]() |
||
sungamer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Werde mir einfach mal eine Rand positzion speichern und dann +/- Rand mit einem kleinen Wert machen. | ||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist finde ich ne sehr gute Idee werde da mal so testen!
Danke |
||
sungamer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ich camerarange niedriger stelle verschwindet das terrain aber auch. | ||
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir mal EntityAutoFade an. | ||
Aktuelles Projekt:
Demonspawn RPG |
sungamer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ich 10000 Bäume mache bringt das aber auch nichts. | ||
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
sungamer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group