Gras-Map (Gelöst)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

martin_moehler

Betreff: Gras-Map (Gelöst)

BeitragSo, Jun 22, 2008 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich hab für mein Programm die Gras-Erstellungs-Routine von Mr.Keks genommen. Nun wollte ich, das man mit Hilfe einer *.bmp (256*256) bestimmen kann an welchen Stellen das Gras erstellt wird bzw. wo es NICHT erstellt wird.
Für mein Problem ist wichtig, dass das Gras (der Rasen) in Rechtecke unterteilt ist.
Hier der Code:
Code: [AUSKLAPPEN]

Function CreateGrass(ter,texp$,ter_scale=1)
   Local vert[3]
   gpiv = CreatePivot()
   tex = LoadTexture(texp,2)

   Dim grass(9,9)
   
   
   For sx = 0 To (ter_scale*TerrainSize(ter)/128)-1   ; Anpassung an Terraingröße
      For sz = 0 To (ter_scale*TerrainSize(ter)/128)-1
         gmesh = CreateMesh(gpiv);
         EntityTexture gmesh,tex
         piv=CreatePivot(gmesh)
         
         
         gsur = CreateSurface(gmesh)
         PositionEntity gmesh,sx*128,0,sz*128       ;(4*32)
         EntityFX gmesh,1+16+2
         ; In jedem mesh gibt's 32x32 Sprites
         For x = 0 To 32
            For z = 0 To 32
               vx1# = x*4+Rnd(-8,8)
               vz1# = z*4+Rnd(-8,8)
               vx2# = x*4+Rnd(-8,8)
               vz2# = z*4+Rnd(-8,8)
               
                  vert[0] = AddVertex(gsur,vx1,TerrainY(ter,vx1+sx*128,0,vz1+sz*128)-.1,vz1,0,.9)
                  vert[1] = AddVertex(gsur,vx1,TerrainY(ter,vx1+sx*128,0,vz1+sz*128)+Rnd(3,5.5),vz1,0,0)
                  vert[2] = AddVertex(gsur,vx2,TerrainY(ter,vx2+sx*128,0,vz2+sz*128)-.1,vz2,.9,.9)
                  vert[3] = AddVertex(gsur,vx2,TerrainY(ter,vx2+sx*128,0,vz2+sz*128)+Rnd(3,5.5),vz2,.9,0)

                  a=((sx*128+VertexX(gsur,vert[0]))/(TerrainSize(ter)*ter_scale))*256
                     If a<0 Then a=0
                     ;aa=a
                     If a>256 Then a=256
                  b=((sz*128+VertexY(gsur,vert[0]))/(TerrainSize(ter)*ter_scale))*256 ;--> Hier ist der Fehler: Es muss VertexZ sein. Zu viel hin und her gespringe zwischen 2d und 3d!! :D

                     If b<0 Then b=0
                     ;bb=b
                     If b>256 Then b=256
      
                  If Not Map(a,b)=-16777216
                     AddTriangle(gsur,vert[0],vert[1],vert[2])
                     AddTriangle(gsur,vert[1],vert[2],vert[3])
                     
                     r = Rand(70,90)
                     g = Rand(195,230)
                     b = Rand(70,90)
                     
                     VertexColor gsur,vert[0],r,g,b
                     VertexColor gsur,vert[1],r,g,b
                     VertexColor gsur,vert[2],r,g,b
                     VertexColor gsur,vert[3],r,g,b
                  End If
               
            Next
         Next
      
         grass(sx,sz) = gmesh
      Next
   Next
   Return gpiv
End Function


Map(a,b) - das array in das ich die *bmp "geladen" habe.

Das Programm arbeitet anstandslos, jedoch werden immer ganze Gras-Rechtecke weggelassen anstelle einzelner sprites.
Kann mir jemand meinen Fehler erklären??

biggicekey

BeitragDi, Jun 24, 2008 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
bei selbst gelösten problemen fänd ich es ganz nett wenn du die lösung auch vorstellen würdest, damit andere, auf der suche nach antworten auf diese frage in diesem thread fündig werden.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]
 

martin_moehler

BeitragDo, Jun 26, 2008 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
steht im code ^^
ich hatte statt vertexz vertexy genommen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group