erstellt eine passende textur zu einer heightmap

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

dimaster

Betreff: erstellt eine passende textur zu einer heightmap

BeitragSa, Feb 25, 2006 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich hab mal einbischen mit readpixel und writepixel herumgespielt und hab dann einen kleinen heightmap texturierer naja ich denk ma wird vielleicht n00bs eine hilfe sein...

Code: [AUSKLAPPEN]

terraintex("terrain3.bmp","terraintex1.bmp")

Function terraintex(terrain$,name$)
image = CreateImage(512,512)
SetBuffer ImageBuffer(image)
bild = LoadImage(terrain$)
DrawImage bild,0,0
width = ImageWidth(bild)
height = ImageHeight(bild)
For y = 0 To height
 For x = 0 To width
  rgb=ReadPixel(x,y)
  r=(rgb And $FF0000)/$10000
  g=(rgb And $FF00)/$100
  b=rgb And $FF
  If g<19 And b<19 Then rgb=200*$10000 + Rand(206,255)*$100 + 0:WritePixelFast x,y,rgb
  If r=0 And g=0 And b=0 Then rgb=0*$10000 + 0*$100 + Rand(100,255):WritePixel x,y,rgb
  If r>17-2 And g > 17-2 And b >17-2 And r<26 And g<26 And b<26 Then rgb=100*$10000 + Rand(246,255)*$100 + 0:WritePixel x,y,rgb
  If r>24-2 And g > 24-2 And b >24-2 And r<29 And g<29 And b<29 Then rgb=0*$10000 + Rand(236,245)*$100 + 0:WritePixel x,y,rgb
  If r>26-2 And g > 26-2 And b >26-2 And r<34 And g<34 And b<34 Then rgb=0*$10000 + Rand(226,235)*$100 + 0:WritePixel x,y,rgb
  If r>30-2 And g > 30-2 And b >30-2 And r<44 And g<44 And b<44 Then rgb=0*$10000 + Rand(216,225)*$100 + 0:WritePixel x,y,rgb
  If r>40-2 And g > 40-2 And b >40-2 And r<54 And g<54 And b<54 Then rgb=0*$10000 + Rand(206,215)*$100 + 0:WritePixel x,y,rgb
  If r>50-2 And g > 50-2 And b >50-2 And r<64 And g<64 And b<64 Then rgb=0*$10000 + Rand(190,205)*$100 + 0:WritePixelFast x,y,rgb
  If r>60-2 And g > 60-2 And b >60-2 And r<74 And g<74 And b<74 Then rgb=0*$10000 + Rand(180,195)*$100 + 0:WritePixelFast x,y,rgb
  If r>70-2 And g > 70-2 And b >70-2 And r<84 And g<84 And b<84 Then rgb=0*$10000 + Rand(170,185)*$100 + 0:WritePixelFast x,y,rgb
  If r>80-2 And g > 80-2 And b >80-2 And r<94 And g<94 And b<94 Then rgb=0*$10000 + Rand(160,175)*$100 + 0:WritePixelFast x,y,rgb
  If r>90-2 And g > 90-2 And b >90-2 And r<104 And g<104 And b<104 Then rgb=0*$10000 + Rand(150,165)*$100 + 0:WritePixelFast x,y,rgb
  If r>100-2 And g > 100-2 And b >100-2 And r<114 And g<114 And b<114 Then rgb=0*$10000 + Rand(140,155)*$100 + 0:WritePixelFast x,y,rgb
  If r>110-2 And g > 110-2 And b >110-2 And r<124 And g<124 And b<124 Then rgb=0*$10000 + Rand(130,145)*$100 + 0:WritePixelFast x,y,rgb
  If r>120-2 And g > 120-2 And b >120-2 And r<134 And g<134 And b<134 Then rgb=0*$10000 + Rand(120,135)*$100 + 0:WritePixelFast x,y,rgb
  If r>130-2 And g > 130-2 And b >130-2 And r<144 And g<144 And b<144 Then rgb=0*$10000 + Rand(110,125)*$100 + 0:WritePixelFast x,y,rgb
  If r>140-2 And g > 140-2 And b >140-2 And r<154 And g<154 And b<154 Then rgb=0*$10000 + Rand(100,115)*$100 + 0:WritePixelFast x,y,rgb
  If r>150-2 And g > 150-2 And b >150-2 And r<164 And g<164 And b<164 Then rgb=0*$10000 + Rand(90,105)*$100 + 0:WritePixelFast x,y,rgb
  If r>160-2 And g > 160-2 And b >160-2 And r<174 And g<174 And b<174 Then rgb=0*$10000 + Rand(80,95)*$100 + 0:WritePixelFast x,y,rgb
  If r>170-2 And g > 170-2 And b >170-2 And r<184 And g<184 And b<184 Then rgb=0*$10000 + Rand(70,85)*$100 + 0:WritePixelFast x,y,rgb
  If r>180-2 And g > 180-2 And b >180-2 And r<194 And g<194 And b<194 Then rgb=0*$10000 + Rand(60,75)*$100 + 0:WritePixelFast x,y,rgb
  If r>190-2 And g > 190-2 And b >190-2 Then rgb=0*$10000 + Rand(50,65)*$100 + 0:WritePixelFast x,y,rgb
 Next
Next
save = SaveImage(image,name$)
If bild <> 0 write "Textur erstellt"
If bild = 0 Write "Textur nicht erstellt"
If save = 1 Then write "und gespeichert!!!"
If save = 0 Then write ", aber nicht gespeichert!!!"
End Function


die funktion lädt ein heightmap und überprüft jeden pixel auf dessen farbe, dann wird der pixel auf die gewollte farbe geändert und so entsteht dann eine textur, welche man dann auf sein terrain legen kann

hier mal ein bild:
user posted image

mfg dimaster Wink
  • Zuletzt bearbeitet von dimaster am Sa, Feb 25, 2006 22:04, insgesamt 5-mal bearbeitet

Fuchsi

BeitragSa, Feb 25, 2006 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Schönes Stück Code! Very Happy
Aber gehts nich mit "ENTITYTEXTURE" " schneller ?

dimaster

BeitragSa, Feb 25, 2006 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
öhhm der code erstellt anhand eines heightmaps eine textur also er analysiert die heightmap und erstellt eine textur, welche dann aufs terrain gelegt werden kann(mit entitytexture)

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group