3d meshterrain design frage

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

furbolg

Betreff: 3d meshterrain design frage

BeitragSa, Jan 10, 2004 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leutz Smile

Wie würdet ihr ein Meshterrain Designen welches Tiles bekommen soll, quasi wie bei Warcraft 3 (keine große Leveltextur). Ich weiss nich wie ich das Speichern soll und dann noch die Schattenmap raufkriegen kann.

In C++ würde ich dafür Linked Lists nehmen und für jeden LEaf ne Liste nach der Texturenzahl verwenden. In BB gelten Types ja immer global Sad

VirtualDreams

BeitragMi, Jan 14, 2004 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also du willst ein MeshTerrain?, und du hast 3D Studio Max? Dann kannst du in dem Terrain jedem Polygon eine eigene Textur zuweisen (macht aber bei großen Terrains verdammt viel arbeit), somit kann man ein Terrain MultiTexturieren mit quasi unendlich vielen verschiedenen Texturen.
 

furbolg

BeitragMi, Jan 14, 2004 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will ein Terrain aus einer Heightmap erstellen und nich stundenlang Modellen...
 

jaZ

BeitragMi, Jan 14, 2004 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm du willst also ein meshterrain mit verschiedenen texturen drauf haben.. hmm.. also ich würde es so machen :

die basis texturen würd ich einfach in einem array speichern sind ja nicht viele Very Happy also stein gras usw
dann eben noch zwei übergänge als alphamap also einmal diagonal und einmal horizontal.
der nächste schritt hängt von deinem meshterrain ab. Lod ist sehr wichtig. Roam algo. ist goil, es gibt jetzt auch noch Roam2 hab ich gehört soll noch besser sein. ich nehme jetzt mal an ohne jegliches Lod zum verschändniss. mesh terrain würd ich eben aus patches bastel. jeder patch siecht so aus x = vertex:
X0X
0X0
X0x

aus denen eben die landschaft basteln. dann eben mehrer patches zu einem mesh vereinigen um overhead zu vermeiden. diesm patch teilste dann eine texture zu. also stein oder was weiß ich. dann kommt der knifflige trick. die tileübergänge. für übergang setzte eben dann die passende alpha übergang mit der anderen texture drauf. den übergang vieleicht noch rotieren. den passenden übergang findeste mit bitmanipulation also du weißt jeder richtgung ein bit zu also 1000 = links ,0100 = rechts oder was weiß ich. dann kommt der trick also wenn du links und rechts eine adnere tile hast machste aben AND also dann kommt eben 1100 raus. jetzt bruachste noch ne table wo zu den passenden bits die passende transition + rotation ist. also denn eben die scheiße texturieren und fertig. is nicht viel speicherverbrauch. am besten eben ist wenn du noch ein paar objecte hast per octree oder quadtree das ganzen schön optimieren. schwerer wird es mit lod da ständig vertices bewegt, gekickt und wider erstellt werden, texturen gesized, in einander kopiert.. aber das kriegste schon gepacken Very Happy

so scheiß viel text und ich weiß nicht ob fheler frei aber kein bock noch mal durchzulesen : sorry, berichtigt mich. hoffe das brachte irgendwas Very Happy
--DRRRSCH!!--
 

jaZ

BeitragMi, Jan 14, 2004 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry wegen doppelpost:

naja für ne schattenmap für ich ne riesge texture nehmen. einfach übers ganze terrain druf. sonst würde der speicherverbrauch zu hoch. eine riesen texture reicht. diese zu berrechenent dürfte auch kein problem werden.
--DRRRSCH!!--
 

furbolg

BeitragMi, Jan 14, 2004 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@JAz:

Danke für die Info.

Ich hab da mal ne frage, kann ich einfach ein Mesh erstellen mit TexBla und dann eins mit TexBlupp und diese beiden zu einem machen ? Rendert BB die beiden mit den Texturen ? (wenn ja, wäre ein großes Problem von mir gelöst)

Und wenn ja, würde ich gern in zwei Schleifen die Heightmap (naja sowas in der Art) durchlaufen und dann temporär Meshes für jede Tex des Leafs(= ein Stück vom Terrain) erstellen. Diese entsprechenden Füllen und dann quasi Rendern Very Happy

Aber wie du das mit dem Alpha meinst weiss ich nich.
 

jaZ

BeitragMi, Jan 14, 2004 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
naja in bb läuft etwas anderes. ich finds in ogl oder dx angenehmer wo mann den vertexbuffer selber füllt naja. in bb ist das anders. du erstellst ein mesh mit createmesh() dann erstellste dazu eine surface(is eine gruppe von tris) und jagst dann da vertices mit addvertex und dann tris mit addtriangle rein. naja mit addmesh kannste mesh aneinaderhängen sodass du eben nich jedes vertex einzeln zur graka pumpen muss. wie die displaylists in ogl eben. naja dann weißte mit entitytexture deinem mesh, oder genuaergesagt der surface des meshes eine texture zu. dabie hasste verschiedene texture layer. dann kannst noch jeder texture den blendmode einstellen wie sie eben mit der dadrunter regiert(add,multi oder was weiß ich. sogor dot3 gibts Very Happy)

das rendernmacht bb von alleine. allso gucken welches MESH(wichtig) im frustum liegt und renderd die scheiße dann.

noch wichtig für umsteiger : in BB erstellt man die meshes und fertig. man muss nur noch rendeeworld machen und bb pump automatisch das zeig in die graka .. er gibt quasi kein custum rendering. das macht bb.
also brachste keien schleife um das zeug zu rendern. das macht bb
--DRRRSCH!!--
 

furbolg

BeitragMi, Jan 14, 2004 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@ jaz: danke für die anregung. Mein Terrain futzt nun mit praktisch Auflösung*Auflösung texturen Very Happy (z.b. Terrain 128*128, sind 128*128 mögliche Texturen Wink)

Ich hab so bei 700-800 frames bei flip 0 Very Happy

Ich test mal was größeres Very Happy
 

furbolg

BeitragMi, Jan 14, 2004 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ok bei 256*256 hab ich noch gut 400 frames Very Happy
 

furbolg

BeitragDo, Jan 15, 2004 1:04
Antworten mit Zitat
Benutzer-Profile anzeigen
@ icedealer:

du wolltest doch wissen ob das mit den Masken geht, das kann ich nur bestätigen. Du musst jedoch folgendes States setzen:

textureblend TerrainTex1,1 << grundtex
TEXTUREBLEND BlendTex,3 << maske
TEXTUREBLEND TerrainTex2,2 << blendtex

Und dann in dieser Reihe folgen dem Brush die Texes zuweisen

brushtexture brush,TerrainTex1,0,0
brushtexture brush,BlendTex,0,1
brushtexture brush,TerrainTex2,0,2

Wenn du einen brush jetzt erstellst der TerrainTex1 oder TerrainTex2 nutzt dann siehst du von dem Effekt nix. Wenn du aber die 3 Sachen setzt dann kannst du den übergang schön sehen. Brauchst halt nur ne 8 Bit Masken bitmap Smile

eizdealer

BeitragDo, Jan 15, 2004 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das jetzt so gemacht:
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

camera=CreateCamera()

cube=CreateCube()

tex1 = LoadTexture("1.bmp") ; <- rote textur
tex2 = LoadTexture("2.bmp") ; <- maske
tex3 = LoadTexture("3.bmp") ; <- blaue textur

TextureBlend tex1,1
TextureBlend tex3,3
TextureBlend tex2,2

brush = CreateBrush()

BrushTexture brush,tex1,0,0
BrushTexture brush,tex3,0,1
BrushTexture brush,tex2,0,2

PaintEntity cube,brush

MoveEntity cube,0,-2,5

While Not KeyDown(1)
   
   UpdateWorld
   
   RenderWorld

   Flip


Wend

End


Mit dem Ergebnis, dass ich die blaue Textur sehe, auf der anderen Seite ist der Cube schwarz. Von der roten Textur sieht man nix. Hast du das so gemeint oder hab ich etwas falsch gemacht?
 

furbolg

BeitragDo, Jan 15, 2004 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast
TextureBlend tex3,3
TextureBlend tex2,2

vertauscht, es muss

TextureBlend tex3,2
TextureBlend tex2,3

heissen

eizdealer

BeitragDo, Jan 15, 2004 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich das so mache, dann werden aber die rote + die blaue Textur addiert -> es erscheint nicht rot, sondern rosa (also 255,0,255).
 

furbolg

BeitragDo, Jan 15, 2004 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ... stimmt bei mir werden die auch trotz maske zusammen addiert ... hmm ... spiel mal ein bisschen mit den states rum ... irgendwie musses doch gehen
 

jaZ

BeitragDo, Jan 15, 2004 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
klar geht das. hier die denkweise :
zeurst wird die alleoberste tex mit der mask gemult. und dass erbebniss dann mit dem untergrund add.
--DRRRSCH!!--

eizdealer

BeitragDo, Jan 15, 2004 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du vorberechnete Übergänge? Veränder doch mal den Code so, dass es geht. Kann mir leider nix drunter vorstellen :/
 

furbolg

BeitragDo, Jan 15, 2004 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
er meint die Reihenfolge und Eigenschaften aber ich kriegs auch nich hin
 

jaZ

BeitragDo, Jan 15, 2004 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
macht es so
layer 0 = obere tex blend = 0
layer 1 = mask tex blend = 0
layer 2 = untere blend = 3
--DRRRSCH!!--

eizdealer

BeitragDo, Jan 15, 2004 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist dich zum verrückt werden... ich hab es genauso gemacht wie du gesagt hast. Ergebnis ist ein rosa Mesh.

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

camera=CreateCamera() : cube=CreateCube() : MoveEntity cube,0,-2,5

basis       = LoadTexture("1.bmp") ; <- rote textur
maske       = LoadTexture("2.bmp") ; <- maske
aufgelegt    = LoadTexture("3.bmp") ; <- blaue textur

TextureBlend basis,3
TextureBlend maske,0
TextureBlend aufgelegt,0

EntityTexture cube,basis,0,2
EntityTexture cube,maske,0,1
EntityTexture cube,aufgelegt,0,0

While Not KeyDown(1)
   UpdateWorld : RenderWorld :Flip
Wend

End
 

furbolg

BeitragDo, Jan 15, 2004 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Jaz config krieg ich nur weiss raus

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group