Baum-Map

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

AMD

Betreff: Baum-Map

BeitragMo, Dez 10, 2007 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

vorne weg man musses nicht Baum-Map nennen mann kann es auch "Pixel-Map" oder "Hui-Map" oder "hui-hui" nennen is eigl. egal..^^

da ich gerade eine Baum-Map brauche und ich noch keine so dollen ansätze hier im forum gefunden habe nur ein paar code-schnipsel im Beginner Coners hab ich mir eine Baum-Map geschrieben und werd sie hier für euch zur verfügung stellen.

Was ist eine BaumMap?
Man hat einen Terrain und malt darauf viele weiße Pixel(die später die Bäume darstellen sollen). Aber da ja dann viele große spitzen aus dem Terrain ragen würden und der baum auf den spitzen stehn würde nimmt man einen ganz normalen terrain und malt einfach seine pixel auf ein anderes Bild. Diese beiden werden dann kompiniert.

Wofür brauche ich so etwas?
Wenn man z.b. viele Bäume (z.b. Wald) hat und mehrere Häußer da rein stellen, stecken oft einige Bäume in den Häußern fest.

hier mal der code:
ich hoffe ich habe alles halbwegs gut beschrieben...
Code: [AUSKLAPPEN]
;©AMD(Blitzforum)
Graphics3D 1024,768,16,2;Grafikmodus

SetBuffer BackBuffer();Buffer

camera=CreateCamera();Kamera


terrain=LoadTerrain("TestTerrain3.png");Laden des Terrains
ScaleEntity terrain,1,50,1;Skalierung des Terrains

img1=LoadTexture("Map1.png");Laden der "Pixel-map" kann man sich mit paint selbst malen. Man sollte darauf achten das das Pixel-Bild genau so groß ist wie das TerrainBild
Dim pon(TextureWidth(img1),TextureHeight(img1));Dim mit Textur-Breite und Textur-Höhe erstellen

For x = 1 To TextureWidth(img1) Step 2;x=breite des ganzen bildes wobei alle 2 Pixel übersprungen werden
For y = 1 To TextureHeight(img1) Step 2;y=höhe des ganzen bildes wobei alle 2 Pixel übersprungen werden

Wert=ReadPixel(x,y,TextureBuffer(img1));Die pixel die gelesen werden sollen

If Wert And $FFFFFF = $FFFFFF;prüft ob es weiße pixel gibt
pon(x,y)=1
wievielbaume=wievielbaume+1;spätere Anzanhl der bäume wie es weiße Pixel gibt
EndIf

Next
Next
Dim BaumNeu(wievielbaume)
Baum = CreateCube();Grund"Baum" erstellen
HideEntity Baum;Baum wird unsichtbar gemacht das dieser nicht gebraucht wird


For x = 1 To TextureWidth(img1) Step 2
For y = 1 To TextureHeight(img1) Step 2

z=TerrainY(terrain,x,0,y);höhe der position von Bäume = Höhe von Terrain

If pon(x,y)=1
BaumNeu(i)=CopyEntity(Baum);Baum wird kopier und somit ist es auch gleich Single-Surface
ScaleEntity BaumNeu(i),2,2,2;Skalierung der Bäume
    PositionEntity BaumNeu(i),x,z,y;Die Position der Bäume (x=Bildbreite,y=Bildhöhe)
   EntityColor BaumNeu(i),255,0,0;Farbe von den Bäumen

End If
Next
Next




While Not KeyHit(1);Wenn man ESC drückt wird beendet


 



If KeyDown(200) MoveEntity camera,0,0,10;nach vorne bewegung der camera
If KeyDown(208) MoveEntity camera,0,0,-10;nach hinten bewegung der camera
   SpeedX=   SpeedX+MouseXSpeed();Maussteurung der camera
   SpeedY=SpeedY+MouseYSpeed();Maussteuerung der camera
   RotateEntity camera,Speedy,-Speedx,0;Maussteuerung der camera
   
RenderWorld;Rendern der 3D-Szene

Flip;für den buffer
Wend;das gehört dazu zum ESC das beendet wird 


hier bekommt ihr zum test auch mal die bilder die ich dazu verwendet habe:

user posted image
user posted image

hoffe ich konnte euch helfen!
sagt mir was ich besser machen sollte und wie ihr es so findet

MfG

ach ja für leute dies immer noch net geschnallt haben ...
Wackelt einfach etwas mit der maus hin und her dann seht ihr das terrain mit den "Bäumen"
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
  • Zuletzt bearbeitet von AMD am Di, Dez 11, 2007 23:25, insgesamt 3-mal bearbeitet

ozzi789

BeitragDi, Dez 11, 2007 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich find sie echt gut .. konnte daraus lernen

Danke


Oz
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Dottakopf

BeitragFr, Dez 14, 2007 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm n bisschen unübersichtlich.
Mach bessere formatierungen.(For next schleifen, boa musste 3 mal lesen biss ich wusste wo was da drin gemacht wird, vorallem bei verschachtelten schleifen sind formatierungen wichtig !)
Varriablen name wie "pon" als arry sagt irgendwie 0 aus, oder doch ?

Vielleicht ist es in functionen gepackt übersichtlicher :

Set_terrain()
- terrain erstellen
- objekte setzten(bäume)

und in der main loop dan sowas wie :

Update_player() ;steuert die camera(spieler)

Somit würde die gliederung dan so aussehen:

Code: [AUSKLAPPEN]


set_terrain()


While not keyhit(1)

   Update_player()

updateworld
renderworld
flip
wend
end


function 1


function 2



und natürlich die schleifen (aber ich den du weist es selber, ich schreibs nur "performa"...)
Code: [AUSKLAPPEN]

for wert_x = 1 to sonstwas step blubber
  for wert_y = 1 to sonstwas step blubber
         arry(x,y) = bla
   next
next




Ist keine negative Kritik !
Nur mein feedback !

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group