Minib3d Triangle löschen problemchen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

AnniXa

Betreff: Minib3d Triangle löschen problemchen

BeitragSo, Okt 25, 2009 6:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hi =)
zum löschen eines einzelnen triangles aus einer surface in minib3d hab ich folgende funktion geschrieben:

Code: [AUSKLAPPEN]
Function DelTriangle(Surface:Tsurface, ToDelTri:Int)'geht alle tris durch, löscht sie alle, und erstellt alle neu (auser das zu löschende)
   'ermitteln
   Local NumberOfTriangles = CountTriangles(Surface:Tsurface) - 1' (minus 1 weil eines ja dann entfernt wird
   
   'arrays erzeugen
   Local TriangleArrayA:Int[NumberOfTriangles]
   Local TriangleArrayB:Int[NumberOfTriangles]
   Local TriangleArrayC:Int[NumberOfTriangles]
   'alle tris merken, also die 3 ekpunkte eines jeden tri´s
   For i = 0 To NumberOfTriangles -1 '-1 weil es bei 0 zu zählen beginnt
      'fragen ob aktuelles triangle "i" das zu löschende ist:
      If i = ToDelTri Then 'wenn ja, dieses nicht merken! evtl -2 ?
      Else
      TriangleArrayA:Int[i] = TriangleVertex(Surface:Tsurface,i,0)
      TriangleArrayB:Int[i] = TriangleVertex(Surface:Tsurface,i,0)
      TriangleArrayC:Int[i] = TriangleVertex(Surface:Tsurface,i,0)
      EndIf

   Next
   'alles aus der surface löschen :(
   ClearSurface (Surface:Tsurface,False,True)'also alle tris, nich aber die vertex dings
   'nun alle tris wieder neu erstellen, aus den gemerkten daten:   
   For i = 0 To NumberOfTriangles -1 '-1 weil es bei 0 zu zählen beginnt
   AddTriangle(Surface:Tsurface,TriangleArrayA:Int[i],TriangleArrayB:Int[i],TriangleArrayC:Int[i])
   Next
      
End Function


erst werden alle eckpunkte aller tri´s gemerkt, auser das zu löschende, das wird nicht gemerkt, dann werden alle tri´s mit clearsurface entfernt, und dann aus den gemerkten eckpunkten alle wieder hergestellt.

aber irgendwie funktioniert es nicht, es werden immer alle tri´s gelöscht, und keine wiederhergestellt.

wo hat sich mein fehler versteckt?
wenn ich die zeile mit ClearSurface zu testzwecken auskommentiere bleibt das programm hängen (keine rückmeldung), es sei denn ich verwende ein simples mesh z.B. einen würfel. bei eine mesh aus z.b. 2 würfeln bleibt es hängen.
|moonForge|
Ich bin Pokémon Meisterin seit 1998!
 

klepto2

BeitragSo, Okt 25, 2009 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

 TriangleArrayA:Int[i] = TriangleVertex(Surface:Tsurface,i,0)
      TriangleArrayB:Int[i] = TriangleVertex(Surface:Tsurface,i,0)
      TriangleArrayC:Int[i] = TriangleVertex(Surface:Tsurface,i,0)


sollte:

Code: [AUSKLAPPEN]

 TriangleArrayA:Int[i] = TriangleVertex(Surface:Tsurface,i,0)
 TriangleArrayB:Int[i] = TriangleVertex(Surface:Tsurface,i,1)
 TriangleArrayC:Int[i] = TriangleVertex(Surface:Tsurface,i,2)


sein. mit oberen Code wären alle deine Tris nur auf einem Punkt konzentriert (also für das jeweilige Vertex).
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

AnniXa

BeitragSo, Okt 25, 2009 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ach du schreck, das habe ich übersehen :O
war wohl etwas spät gestern nacht Smile

nun klappt es auch so einigermasen :O
|moonForge|
Ich bin Pokémon Meisterin seit 1998!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group