3d meshterrain design frage
Übersicht BlitzBasic Blitz3D
furbolgBetreff: 3d meshterrain design frage |
Sa, Jan 10, 2004 23:42 Antworten mit Zitat |
|
---|---|---|
Hi Leutz
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 |
||
VirtualDreams |
Mi, Jan 14, 2004 11:47 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Jan 14, 2004 18:47 Antworten mit Zitat |
|
---|---|---|
Ich will ein Terrain aus einer Heightmap erstellen und nich stundenlang Modellen... | ||
jaZ |
Mi, Jan 14, 2004 19:16 Antworten mit Zitat |
|
---|---|---|
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 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 so scheiß viel text und ich weiß nicht ob fheler frei aber kein bock noch mal durchzulesen : sorry, berichtigt mich. hoffe das brachte irgendwas |
||
--DRRRSCH!!-- |
jaZ |
Mi, Jan 14, 2004 19:21 Antworten mit Zitat |
|
---|---|---|
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 |
Mi, Jan 14, 2004 21:47 Antworten mit Zitat |
|
---|---|---|
@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 Aber wie du das mit dem Alpha meinst weiss ich nich. |
||
jaZ |
Mi, Jan 14, 2004 22:09 Antworten mit Zitat |
|
---|---|---|
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 )
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 |
Mi, Jan 14, 2004 22:48 Antworten mit Zitat |
|
---|---|---|
@ jaz: danke für die anregung. Mein Terrain futzt nun mit praktisch Auflösung*Auflösung texturen (z.b. Terrain 128*128, sind 128*128 mögliche Texturen )
Ich hab so bei 700-800 frames bei flip 0 Ich test mal was größeres |
||
furbolg |
Mi, Jan 14, 2004 22:54 Antworten mit Zitat |
|
---|---|---|
ja ok bei 256*256 hab ich noch gut 400 frames | ||
furbolg |
Do, Jan 15, 2004 1:04 Antworten mit Zitat |
|
---|---|---|
@ 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 |
||
eizdealer |
Do, Jan 15, 2004 16:38 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Jan 15, 2004 16:47 Antworten mit Zitat |
|
---|---|---|
du hast
TextureBlend tex3,3 TextureBlend tex2,2 vertauscht, es muss TextureBlend tex3,2 TextureBlend tex2,3 heissen |
||
eizdealer |
Do, Jan 15, 2004 17:23 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Jan 15, 2004 17:26 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Jan 15, 2004 19:03 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Jan 15, 2004 19:08 Antworten mit Zitat |
|
---|---|---|
Meinst du vorberechnete Übergänge? Veränder doch mal den Code so, dass es geht. Kann mir leider nix drunter vorstellen :/ | ||
furbolg |
Do, Jan 15, 2004 19:11 Antworten mit Zitat |
|
---|---|---|
er meint die Reihenfolge und Eigenschaften aber ich kriegs auch nich hin | ||
jaZ |
Do, Jan 15, 2004 19:30 Antworten mit Zitat |
|
---|---|---|
macht es so
layer 0 = obere tex blend = 0 layer 1 = mask tex blend = 0 layer 2 = untere blend = 3 |
||
--DRRRSCH!!-- |
eizdealer |
Do, Jan 15, 2004 19:57 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Jan 15, 2004 20:32 Antworten mit Zitat |
|
---|---|---|
Mit Jaz config krieg ich nur weiss raus | ||
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group