problem mit meiner 3d-Tilemap!
Übersicht

![]() |
ApprauuuuBetreff: problem mit meiner 3d-Tilemap! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo! ![]() Ich bin neuerdings dabei auch mal Blitz 3d zu lernen und habe schon mein erstes Problem.... Ich will ne 3d-Tilemap machen und das klappt auch schon ganz gut Hier mal der Code: Code: [AUSKLAPPEN] map_hoch = 100
map_breit = 100 Graphics3D 640,480,16,2 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,10,-10,-5 RotateEntity camera , -25, 0, 0 licht=CreateLight() RotateEntity licht,90,0,0 Dim mapvertex(map_breit,map_hoch,1,1) Dim mapsurface(map_breit,map_hoch) brush=LoadBrush("textur.PNG") brush2=LoadBrush("textur2.PNG") map=CreateMesh() EntityPickMode map, 2 For x = 0 To map_breit - 1 For y = 0 To map_hoch - 1 mapsurface(x, y) = CreateSurface(map, brush) mapvertex(x, y, 1, 0) = AddVertex(mapsurface(x, y),1+x,0-y,0, 1, 0) mapvertex(x, y, 1, 1) = AddVertex(mapsurface(x, y),1+x,-1-y,0, 1, 1) mapvertex(x, y, 0, 1) = AddVertex(mapsurface(x, y),0+x,-1-y,0, 0, 1) mapvertex(x, y, 0, 0) = AddVertex(mapsurface(x, y),0+x,0-y,0, 0, 0) AddTriangle(mapsurface(x, y),mapvertex(x, y, 1, 0),mapvertex(x, y, 1, 1),mapvertex(x, y, 0, 1)) AddTriangle(mapsurface(x, y),mapvertex(x, y, 0, 0),mapvertex(x, y, 1, 0),mapvertex(x, y, 0, 1)) PaintSurface mapsurface(x, y), brush Next Next UpdateNormals map While Not KeyHit(1) maus_x = MouseX() maus_y = MouseY() tileauswahl=CameraPick(camera,maus_x, maus_y) If tileauswahl <> 0 And MouseDown(1) Then tileauswahlsurface = PickedSurface() PaintSurface tileauswahlsurface, brush2 EndIf RenderWorld Flip Wend End Das Problem hier ist, dass das ganze sehr langsam läuft.... Bei der 100*100-Map fängt die ganze Geschichte hierschon an zu stocken und ich wollte eigentlich schon mindestens problemlos 300*300 große Maps erstelllen können (bei wc III gehts soggar bis aus 512*512 und das Spiel hat recht niedrige Systemanforderungen). Hat das jetzt ein wenig Editwor-like gemacht, dass wenn man irgdnwo drauf klickt ein Grastile durch Wasser ersetzt wird (nur so zum üben, also wer sich fragt was das pick unen im Code soll ^^) Kann mir hier jemand helfen, um so ne Tilemap schneller ans laufen zu bringen??[/syntax] |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
du darfst nicht für jedes tile ein eigenes surface erstellen! das verlangsamt das ganze unheimlich! | ||
MrKeks.net |
![]() |
Apprauuuu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber wenn ich alles in einem Surface habe, kann ich doch nicht mehr die einzelnen Felder einzeln texturieren (brushen)???? | ||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber dann brauchst du immernoch nur ein surface für jede mögliche terraintexture und nicht für jedes tri. und du müsstest halt die tris je nach texture dem entsprachenden surface zuordnen.
das warcraft3terrain besteht, soweit ich das beobachtet habe, aus layern. du hast also ein paar terrains übereinander, die für all die übereinander kommenden untergrundtypen stehen. also z.b. sand, matsch, gras, dunkles gras, straße. das sind dann fünf surfaces. für jedes nimmst du dir eine art tileset. also z.b. sowas hier wie das von timemill. ![]() allerdings lässt du da das braune weg. das müsstest du transparent machen. es gibt nur immer randtiles und der rest ist transparent. durch uvkoordinaten sorgst du nun dafür, dass auf einem tri genau der teil der tilemap zu sehen ist, den du als tile haben möchtest. hier musst du aufpassen. unter umständen sieht man dann noch einen teile eines anderen tiles. um das zu verhindern, musst du immer am rand jedes tiles einen pixel wiederholen, also effektiv nur 14*14-pixeltiles haben, wenn es eigentlich 16*16 wären. fürs spiel optimierst du dann indem, du all die verdeckten oder ohnehin unsichtbaren tiles löschst. |
||
MrKeks.net |
![]() |
Apprauuuu |
![]() Antworten mit Zitat ![]() |
---|---|---|
UI danke sehr! ![]() Hab das jetzt so hinbekommen.... Also nen großen 1-Tileboden aus gras gemacht, der so groß wie die Map ist und da drauf dann die anderen Tiles, falls welche benutzt werden ^^ Klappt bisher alles... Werd mich wieder melden, falls es irgendwelche neuen Probleme gibt ![]() |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group