Level mit mehreren Texturen
Übersicht

![]() |
JPDBetreff: Level mit mehreren Texturen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich bin ein Anfänger in Blitz3D. Ich versuche jetzt mal mein Problem zu beschreiben: Ich habe eine Art Labyrinth. Jede Wand besteht aus 2 Triangeln, also 4 Vertex. Ich möchte jeder Wand eventuell ne andere Textur zuweißen können, oder zumindest zwischen 40 verschiedenen Texturen auswählen können. Das Labyrinth lade ich mit Hilfe einer externen Datei, welche die Positionen der Vertexe beinhaltet und die dazugehöroge Grafik (z.B. 1-40). Wie kann ich nun ein Mesh erstellen, welches mir die Möglichkeit gibt, soviele Texturen zu verwenden? Währe um eine Antwort dankbar, mfg JPD ![]() ![]() |
||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um mein Problem zu verdeutlichen:
Code: [AUSKLAPPEN] mesh=CreateMesh() surface1 = CreateSurface( mesh ) surface2 = CreateSurface( mesh ) v1 = AddVertex(surface1,-1,1,0,0,0) v2 = AddVertex(surface1,1,1,0,1,0) v3 = AddVertex(surface1,1,-1,0,1,1) v4 = AddVertex(surface1,-1,-1,0,0,1) AddTriangle surface1,v1,v2,v4 AddTriangle surface1,v4,v2,v3 b=LoadBrush( "test.bmp" ) PaintSurface surface1,b v1 = AddVertex(surface2,-1,1,1,0,0) v2 = AddVertex(surface2,1,1,1,1,0) v3 = AddVertex(surface2,1,-1,1,1,1) v4 = AddVertex(surface2,-1,-1,1,0,1) AddTriangle surface2,v1,v2,v4 AddTriangle surface2,v4,v2,v3 b2=LoadBrush( "logo.bmp" ) PaintSurface surface2,b2 Muss ich jetzt bei jeder neuen Textur ein neues Surface herholen? JPD |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Texturen nur einmal laden und dann brauchste
für jede Texture eine Surface . Du kannst also deine Wände (Vertices) die die gleiche Texture haben an ein Mesh mit einer Surface hängen . Möglichkeiten 40 Meshes mit 1 Surface und einer Texture 1 Mesh mit 40 Surfaces und jeweils einer Texture 40 einzelne Wände und CopyEntity benutzen . Etc... |
||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aja, also kann ich zum Beispiel folgendes machen:
Code: [AUSKLAPPEN] Dim surface(40) ... und kann dann so die Texturen zuordnen. Wieviel Surfaces kann ich maximal verwenden? JPD ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja so in der Art
dim Brush(40) brush(x)=LoadBrush("...") <- macht ein brush direkt mit Texture s=CreateSurface ( mesh,brush(x)) Wieviele Surface man erstellen kann weiß ich nicht , weiß nur das weniger schneller sind . Auch sind einzelne Meshes wiederum schneller weil diese ausgeblendet werden können . Am besten ist da wohl nen Baukasten aus fertig Wänden die du dir zusammen setzt . Und wo ne Wand auf eine andere stößt solltest du keine Polys verschwenden . |
||
- Zuletzt bearbeitet von Markus2 am Mo, Aug 09, 2004 20:17, insgesamt einmal bearbeitet
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm ... ich dachte das geht nicht, da man ja nur maximal 8 Brushes pro Surface anwenden kann.
Daher dachte ich mir, die Surfaces durchzuzählen, und jedem Surface ein Brush zuweißen? Müsste doch gehen? |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was du meinst ist was anderes , man kann Texturen übereinander legen .
z.B. Überblenden . |
||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne, also das geht leider ned ...
Code: [AUSKLAPPEN] mesh=CreateMesh() surface1 = CreateSurface( mesh ) Dim b(10) b(1) = LoadBrush( "logo.bmp" ) b(2) = LoadBrush( "test.bmp" ) b(3) = LoadBrush( "logo.bmp" ) b(4) = LoadBrush( "test.bmp" ) b(5) = LoadBrush( "logo.bmp" ) b(6) = LoadBrush( "test.bmp" ) b(7) = LoadBrush( "logo.bmp" ) b(8) = LoadBrush( "test.bmp" ) For K = 1 To 8 v1 = AddVertex(surface1,K,-1,1,0,0) v2 = AddVertex(surface1,K,1,1,1,0) v3 = AddVertex(surface1,K,1,-1,1,1) v4 = AddVertex(surface1,K,-1,-1,0,1) AddTriangle surface1,v1,v2,v4 AddTriangle surface1,v4,v2,v3 PaintSurface surface1,b(K) Next Das macht Blitz3D net mit ... wie macht man das denn richtig? |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab soch gesagt 1 Surface = 1 Texture = 1 Brush
Wenn du Vertices erzeugst mußte auch an die Normale denken oder nimmst einfach UpdateNormals . (Wegen Licht) Und für jede Fläche eigene Vertices ist wichtig . |
||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja sorry. Wie machen das dann die andereren Spieleengines. Z.B. 300 Bitmaps, welche jede einzeln zu einem Triangle zugeordnet werden können... ?
Vielleicht verstehst du jetzt mein kleines Problem .... ![]() Erstellen die zu jeder Bitmap ne andre Mesh? Dann hab ich doch Probleme mit der Kollisionsabfrage. Oder was steckt denn da dahinter? JPD |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kann man durch die UVs also Texturekoordinaten machen ,
also eine Bitmap die in wirklichkeit viele kleine Texturen hat wie nen Schachbrett . Da sagste mit den UVs einfach von wo bis wo die Texture angezeigt werden soll . Also UV ist das gleiche wie XY nur im Bereich von 0-1 wobei 0,0 links oben von der Texture ist und 1,1 rechts unten . Ich glaube aber das ist für dich zuviel fürn Anfang ![]() |
||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne, ich habe schon mal davon gehört. Es gibt von dem auch n Beispiel in Blitz3D, nur habe ich da die Erfahrung gemacht, dass wenn das nebenstehe Bild weiß ist und mein aktuelles Bild rot, dass an den Rändern des rotes nachher noch Teile vom weißen zu sehen sind. Liegt vielleicht an der Grafikkarte oder so. Aber das ist dann ja total umständlich.
Also. Du kennst ja z.B. Monster Truck Madness. Die Landschaft ist ja genau so aufgebaut. Viele Tiles aneinander welche eine art Terrain darstellen. Ich hab jetzt nur noch Probleme, jedem Tile (2 Triangles) ne Grafik zuzuweißen. Mit Brush gehts net so richtig, Mit Surface lahm ich das Programm zu. Was kann ich denn noch tun? |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was du meinst ist
16: Clamp U 32: Clamp V das verhindert das die Texture gekachelt wird . Das Problem hatte ich bei einem Terrain wo ich auch gerätselt habe warum ich nen Rand von der anderen Seite sehe . Wie jedes Viereck eine Texture aus einer großen Texture bekommt habe ich ja oben geschrieben . Wenn du z.B. die große Texture 4x4 unterteilst haste bei U oder V z.B. ca. diese Werte 0-0.25 0.25-0.5 0.5-0.75 0.75-1.0 |
||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie und wo muss ich dann den befehl einsetzen? | ||
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
ah, jetzt unter LoadBrush als Option ...
ja, jetzt sind die Ränder weg. Juhu. Erstes Problem gelöst. Als zweites müsste ich jetzt nur noch das mit der UV-Map hinbekommen. Meine Tiles würde ich als größe 64x64 wählen, das müsste für ne kleine Racing-Landschaft reichen. Mal etwas rumprobieren. Ich meld mich dann wieder unter nem neuem Topic. Danke erstmal 8) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group