[GELÖST]Gridnetz erstellen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Skabus

Betreff: [GELÖST]Gridnetz erstellen

BeitragDo, Jun 10, 2010 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich hab eine ganz einfache Aufgabe, aber ich komm net auf eine Lösung.

Und zwar will ich ein Gridnetz zur Laufzeit erstellen, also sprich eine Plane wie bei 3DSMax
mit variablen Segmenten...

Ich habe das zwar bereits hinbekommen, hab aber das Prob, dass die Vertices nicht
100%tig zusammenhängend sind, da ich die einzelnen Segmente seguenziell
erstellt habe....

Code sieht so aus:

BlitzMax: [AUSKLAPPEN]
			

'die 4 Vertices bilden ein Quadrat aus 2 Dreicken
ent = CreateMesh()

'ein Surface wird erstellt
Global surf:TSurface = ent.CreateSurface()
Global curID:Int=0


For Local z:Int = 0 To Size-1

If(z=0) Then
vert1.x = 0*chunkSize
vert1.y = 0
vert1.z = z*chunkSize
vert2.x = 0
vert2.y = 0
vert2.z = z*chunkSize+chunkSize
vert3.x = 0*chunkSize+chunkSize
vert3.y = Rnd(0,10)
vert3.z = z*chunkSize+chunkSize
vert4.x = 0*chunkSize+chunkSize
vert4.y = 0
vert4.z = z*chunkSize
Else

vert1.x = vertZ1.x
vert1.y = vertZ1.y
vert1.z = vertZ1.z
vert2.x = 0
vert2.y = 0
vert2.z = z*chunkSize+chunkSize
vert3.x = 0*chunkSize+chunkSize
vert3.y = Rnd(0,10)
vert3.z = z*chunkSize+chunkSize
vert4.x = vertZ2.x
vert4.y = vertZ2.y
vert4.z = vertZ2.z

EndIf

'zwei Folgepunkte werden gespeichert
vertZ1.x = vert2.x
vertZ1.y = vert2.y
vertZ1.z = vert2.z
vertZ2.x = vert3.x
vertZ2.y = vert3.y
vertZ2.z = vert3.z


'Vertices werden auf das Surface angebracht
surf.AddVertex(vert1.x,vert1.y,vert1.z)
surf.AddVertex(vert2.x,vert2.y,vert2.z)
surf.AddVertex(vert3.x,vert3.y,vert3.z)
surf.AddVertex(vert4.x,vert4.y,vert4.z)

'Normalen werden hinzugefügt
surf.VertexNormal(curID,vert1.x,1.0,vert1.z)
surf.VertexNormal(curID+1,vert1.x,1.0,vert1.z)
surf.VertexNormal(curID+2,vert1.x,1.0,vert1.z)
surf.VertexNormal(curID+3,vert1.x,1.0,vert1.z)


surf.AddTriangle(curID,curID+1,curID+2)
surf.AddTriangle(curID+2,curID+3,curID)


curID:+4



For Local x:Int = 1 To Size-1

'es werden geweils die Vorgängervertices genommen
'um damit ein neues Quad zu erstellen
vert1.x = vert4.x 'x*chunkSize
vert1.y = vert4.y '0
vert1.z = vert4.z 'z*chunkSize
vert2.x = vert3.x 'x*chunkSize
vert2.y = vert3.y '0
vert2.z = vert3.z 'z*chunkSize+chunkSize
vert3.x = x*chunkSize+chunkSize
vert3.y = 0
If(z=4 And x=6) Then vert3.y = 5
vert3.z = z*chunkSize+chunkSize
vert4.x = x*chunkSize+chunkSize
vert4.y = 0
vert4.z = z*chunkSize



'Vertices werden auf das Surface angebracht
surf.AddVertex(vert1.x,vert1.y,vert1.z)
surf.AddVertex(vert2.x,vert2.y,vert2.z)
surf.AddVertex(vert3.x,vert3.y,vert3.z)
surf.AddVertex(vert4.x,vert4.y,vert4.z)

'Normalen werden hinzugefügt
surf.VertexNormal(curID,vert1.x,1.0,vert1.z)
surf.VertexNormal(curID+1,vert2.x,1.0,vert2.z)
surf.VertexNormal(curID+2,vert3.x,1.0,vert3.z)
surf.VertexNormal(curID+3,vert4.x,1.0,vert4.z)

surf.AddTriangle(curID,curID+1,curID+2)
surf.AddTriangle(curID+2,curID+3,curID)

curID:+4
Next


Next


Das funktioniert auch wunderbar...nur leider hängen die einzelnen Quadsegemente nicht zusammen,
was aus dem Code ja auch hervorgeht.Ich hab zwar an den Seiten das Problem bereits
gelöst, das ist alllerdings auch net so das Wahre^^"

Hat jemand ne einfach, schnelle Lösung wie man einfach ein zusammenhängendes Gridnetz erstellt?
Ich denk mal wieder zu kompliziert Rolling Eyes


Danke für eure Hilfe^^


MfG Ska

EDIT: [ironiemodus = true] Danke für eure Hilfe^^ ohne euch hätte ichs nie geschafft Very Happy [ironiemodus = false] Rolling Eyes
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group