Pflanzen auf ausgewählten flächen per zufall setzten

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

rctuner

Betreff: Pflanzen auf ausgewählten flächen per zufall setzten

BeitragSo, Okt 01, 2006 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich hab jetzt eine ziemlich riesige map mit 3d world studio erstellt.
(ähnlich GTA)

Nur sehen die leeren grünen flächen noch zu mager aus. desshalb möchte ich pflanzen dort plazieren.
sicher kann ich das auch mit einem editor machen, nur würde das ziemlich auf die fps gehen, wegen den grossen mengen an pflanzen...
deswegen dachte ich da an ein "system", welches die pflanzen nur dann anzeigt wenn ich sagen wir mal 30m davor bin. das ist ja auch kein problem dank fadeentity..

Dann würde ich einfach auf zufall bäume und pflanzen setzten,
nur das problem ist: dass ich auf der map auch gebäude und stein flächen habe, auf den natürlich keine pflanzen sitzen dürfen.

Hat jemand ne Idee?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]

5k41

BeitragMo, Okt 02, 2006 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Du müsstest dir eine zusätzliche eigene Map-Datei machen, in der In form von x,y,z,endx,endy,endz bereiche definiert sind, in denen Pflanzen stehen dürfen. Im Spiel liest du nun diese Datei aus und setzt die Pflanzen nur in die definierten Gebiete. Ist vielleicht Ratsam dafür sich auch noch schnell nen kleinen Editior zu schreiben.

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

rctuner

BeitragMo, Okt 02, 2006 11:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab leider noch nie einen editor geschrieben und weiß auch garnicht wie ich anfangen soll...
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

antome

!!! gesperrt !!!

BeitragMo, Okt 02, 2006 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Einen Editor schreiben ist eigentlich sehr einfach, du lädst dein Terrain und bewegst dich darauf
und immer wenn du an einer Stelle bist an der du was setzen willst holst du dir die Koordinaten und
speicherst sie, natürlich mit weiteren Daten welche dein zu setzendes Objekt definieren.
Du kannst auch in einem Umkreis eine bestimmte Menge zufällig setzen und vieles mehr.

Aber wie 5k41 schon sagte ist es mit Zufallsplatzierungen einfacher eine Map zu schreiben wo
bestimmt Objekte platziert werden dürfen.

Eine sehr einfache Methode ist ein BMP oder PNG zu benutzen (kein JPG) und mit den Farben bestimmte Objekte zu plazieren.
antome

rctuner

BeitragMo, Okt 02, 2006 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
sagen wir mal ich hab jetzt ein programm mit dem ich die map von oben betrachten kann und wie ein vogel auf der map fliegen kann. Wie kann ich dann ein rechteck ziehen? In dem dann die Pflanzen Positioniert werden sollen.
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

antome

!!! gesperrt !!!

BeitragMo, Okt 02, 2006 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
In dem Fall könntest du ein Cube benutzen welcher auf der Map auf deinen Koordinaten mitfliegt
den machst du halb transparent, dann kannst du mit 4 Tasten die X und Z Größe des Cubes verändern und damit auch die Koordinaten berechnen.
antome

rctuner

BeitragMo, Okt 02, 2006 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hab jetzt folgendes programmiert:



Code: [AUSKLAPPEN]

Graphics3D 640,480

SetBuffer BackBuffer()


Const TYPE_WORLD=1

light=CreateLight()

camera=CreateCamera()
RotateEntity camera,90,0,0
PositionEntity camera,0,5000,0
CameraRange camera, 1, 15000


rechteck=CreateCube()
EntityAlpha rechteck,0.6
EntityColor rechteck,255,0,0
;PositionEntity rechteck,0,-500,0


map=LoadMesh("data\maps\city2\map.b3d")
ScaleEntity map,1.4,1.4,1.4

   EntityType map,TYPE_WORLD


x#=5
z#=5

While Not KeyHit(1)


If KeyDown(203)
 MoveEntity camera,-6,0,0
EndIf

If KeyDown(205)
 MoveEntity camera,6,0,0
EndIf

If KeyDown(200)
 MoveEntity camera,0,6,0
EndIf

If KeyDown(208)
 MoveEntity camera,0,-6,0
EndIf


If KeyDown(30)
 x#=x#+1
EndIf

If KeyDown(44)
 x#=x#-1
EndIf


If KeyDown(31)
 z#=z#+1
EndIf

If KeyDown(45)
 z#=z#-1
EndIf

If KeyDown(57)
y#=y#+1
EndIf

ScaleEntity rechteck,x#,10+y#,z#


PositionEntity rechteck,EntityX(camera),EntityY(map)+20,EntityZ(camera)

 UpdateWorld
 RenderWorld

Text 10,10, "Scale X Rechteck: " +y#
Text 10,20, "Scale Z Rechteck: " +z#

 Flip
 Wend
End


Wie kann ich jetzt den inneren Bereich des Rechtecks herausfinden? Also x und z biss xende und zende.

Gibt es auch noch andere Methoden? Da ich auch runde kurven usw. habe, eignen sich rechtecke nicht besonders gut.[/code]
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

antome

!!! gesperrt !!!

BeitragMo, Okt 02, 2006 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit der Größe deines Entitys. das Entity hat seine Koordinaten in der Mitte, dann musst du die Hälfte
der Breite und die Hälfte der Tiefe X und Z nehmen dann kannst du die Ecken berechnen.
Am besten du lässt den Würfel am Boden entlang mitgehen also Collision benutzen
am besten noch einen Pivot damit du die Hälfte des Würfels im Boden einsinken lassen kannst.
antome
 

Roggi

BeitragMo, Okt 02, 2006 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum machst du es dir nicht einfach und zwar so wie es schonmal beschrieben war. Eine Map Datei in der du mit Hilfe von den Farben ausliest ob dort Pflanzen stehen drüfen oder nicht. Mit einem Bild z.B. von Oben aus der Vogelperspektive wenn man alles gut sieht und alles von einem Typ(z.B. Straße) diesselbe Farbe hat. Ist das verständlich? Ich denke mal dass, das funktionieren könnte oder nicht?

MfG Roggi

5k41

BeitragMo, Okt 02, 2006 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh, falls du das so verstanden hast, so war mein Post zumindest nicht gemeint! Ich meinte genau das schreiben eines Editors! Ist einfach das Sicherste und wenn man es ein paar mal gemacht hat fällt es einem auch sehr leicht und hat nicht den nachteil, dass wenn du ein grünes Dach machst es automatisch bewuchert ist Wink. Ausserdem ists um einiges schneller.
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

FreetimeCoder

BeitragDi, Okt 03, 2006 7:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würd nen Editor schreiben, mit dem man die Pflanzen einzlen setzen kann (oder mit ziehen zufällig mehere "malen" kann). Dann machst du das mit Types.
Am Ende speicherst du eine Datei, in die du als erstes die Art der Pflanze, dann deren Gesamtzahl und als letztes die X,Y,Z Koordinaten schreibst. Das Hauptprogramm liest sich alles heraus, und erstellt die selben Pflanzen an den selben Stellen.
So erlebst du auch keine bösen Überraschungen (das zB irgendwo ein Baum steht und einen Eingang versperrt)

MFG
FreetimeCoder
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

Dreamora

BeitragDi, Okt 03, 2006 8:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Würds auch so ähnlich machen wie FreetimeCoder es vorgeschlagen hat.

Allerdings mit 2 Änderungen / Erweiterungen

1. Bau eine Funktionalität in den Editor für "Verteile ausgewählte Vegetation zufällig zwischen höhe X und höhe Y"

2. Speicher es bitte nicht so wie von ihm vorgeschlagen. Nutze wie oben empfohlen eine Bitmap. Du hast 16Mio Farben zur verfügung. Und ich habe berechtigte Zweifel, dass du mehr verschiedene Pflanzen haben wirst Smile (wahrscheinlich wirds sogar reichen wenn du nur einen Farbkanal nutzt also 255 pflanzen, zb Grün. Dann könntest du Rot und Blau sogar noch für andere Daten nutzen Smile )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FreetimeCoder

BeitragDi, Okt 03, 2006 9:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Allerdings funktioniert meine Methode auch, wenn man Pflanzen zB unter einem Vordach haben will Wink
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

Dreamora

BeitragDi, Okt 03, 2006 10:13
Antworten mit Zitat
Benutzer-Profile anzeigen
und wo ist da das Problem mit dem Bild? Da das Bild nichts von geometrie weiss, liegt es einzig an der Implementation Smile
Normalerweise sind diese Colormaps dazu da, daten auf der Heightmap zu definieren, womit es dann unter dem Vordach wäre.
Was auf dem haus ist, wird ja nicht durchs vegetationssystem sondern das Hausmodel gesteuert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FreetimeCoder

BeitragDi, Okt 03, 2006 10:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn man einen Felsvorsprung hat und man will auf dem Fels und unter dem Fels verschiedene Pflanzen haben?
Razz
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

antome

!!! gesperrt !!!

BeitragDi, Okt 03, 2006 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ihm die Bitmap vorgeschlagen weil er es zufällig verteilen wollte, und auch den Würfel
diese beiden Methoden eignen sich um Pflanzen in bestimmten Bereichen zufällig vrteilen zu lassen.
Die Bitmap ist sonst in der Auflösung zu ungenau, ein Pixel ersteckt sich je nach Terraingröße über einen relativ großen Bereich.
Wenn ich Pflanzen und Bäume genau setzen will dann geht das nur wenn ich die Koordinaten abspeichere.
antome
 

Dreamora

BeitragDi, Okt 03, 2006 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
FreetimeCoder hat Folgendes geschrieben:
Und wenn man einen Felsvorsprung hat und man will auf dem Fels und unter dem Fels verschiedene Pflanzen haben?
Razz


Da wird jedes Vegetationssystem austicken.
Es geht hier ja kaum darum, 10000 Pflanzen manuell kontrolliert und als einzelne Objekte zu haben. Denn das wird selbst mit EntityAutoFade das Programm zum abkratzen bringen.

Was nötig ist für einigermassen gescheiten Grassbewuchs ist etwas automatisches auf SingleSurface Basis.

Deine Variante ist zwar auch nicht schlecht, aber jeder Spawn einzeln -> zig tausend gräser -> nicht mehr tauglich für echtzeit (alleine schon weil each über die Types zu lange dauert). Taugt nur für Bäume, wenn überhaupt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rctuner

BeitragDi, Okt 03, 2006 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:


2. Speicher es bitte nicht so wie von ihm vorgeschlagen. Nutze wie oben empfohlen eine Bitmap. )


Schonmal danke für eure hilfe!

2. Ich hab leider keine ahnung wie ich das anstellen sollte.
Wie rechne ich die 3d Koordinaten auf auf Bild um?
Dieses Bild muss dann ja auch ziemlich genau auf der map "liegen"...

Währ schön wenn ich das einwenig genauer erklärt bekomme.
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

antome

!!! gesperrt !!!

BeitragDi, Okt 03, 2006 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das musst du umrechnen, wenn dein Terrain 10000 x 10000 groß ist erstellst du am besten ein Bitmap mit 1000 x 1000

Am allerbesten wäre es wenn du von oben einen Screenshot deines Terrains machen würdest, da du ja keine Heightmap benutzt .
So weit weg bis alles drauf ist, dann lädst du den Screenshot in ein Bildbearbeitungsprogramm
schneidest es aus und scalierst es auf 1000 x 1000
Nun kannst du in dieses Bild farbige Flächen einmalen denen du Pflanzen (einzeln oder Pflanzengruppen ) zuweist.
Den Hex oder Dezimalwert der jeweilgen Farben notieren.

Nun kannst du im Programm z.B. Koordinate 100 , 4500 einfach durch 10 Teilen und hast den entprechenden Punkt auf dem Bild oder umgekehrt.

Eines noch: X,Z Koordinaten sind auf einer oder zwei Achsen vertauscht mit den Bitmap Koordinaten, ich glaube einmal kippen oben unten.
das Bild vorher Swappen / Kippen.
antome

rctuner

BeitragDi, Okt 03, 2006 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
kann ich nicht einfach CAMERAPROJECT verwenden?
In dem Editor gucke ich ja 90 grad steil nach unten. also müsste ich damit die 2d koordinaten doch herausbekommen?

Soweit ich dass sehe dann einfach an PROJECTED die farbigen pixel setzten und den buffer dann speichern?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group