Tokamak - Convex Hull

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

The_Nici

Betreff: Tokamak - Convex Hull

BeitragSo, Mai 18, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
folgender Code:
Code: [AUSKLAPPEN]

         mesh=strecke
         Local nsurf = CountSurfaces(mesh)
         Local nvert = 0
         For ns = 1 To nsurf
            Local surf = GetSurface(mesh,ns)
            nvert = nvert + CountVertices(surf)
         Next
   
         Local vbank = CreateBank(nvert*4*3)
         nv = 0
         ; Poke vertices coordinates to bank
         For ns = 1 To nsurf
            surf = GetSurface(mesh,ns)
            nvv = CountVertices(surf)
            For nvc = 0 To nvv - 1
               PokeFloat vbank,nv*12+0,VertexX(surf,nvc)
               PokeFloat vbank,nv*12+4,VertexY(surf,nvc)
               PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)
               nv = nv+1
            Next
         Next
         geomstrecke=TOKRB_AddConvex(rbstrecke,chbank,BankSize(chbank))
         mode=2
      EndIf


Ich bekomme immer einen MAV bei TOKRB_AddConvex()
Dabei sollte das doch irgendwie stimmen, oder?

BladeRunner

Moderator

BeitragMo, Mai 19, 2008 6:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du erstellst vbank aber übergibst chbank.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

The_Nici

BeitragMo, Mai 19, 2008 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ouch. XD
Danke BladeRunner für den Hinweis.

Jedoch bleibt der MAV auf weiteres bei dieser Zeile.

Xaron

BeitragMi, Jan 26, 2011 9:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry für das Hochholen dieses alten Beitrages, aber da ich mich selbst gerade damit beschäftige, hier der Weg, wie ich es geschafft habe:

Zunächst einmal musst Du ein Mesh in eine Liste von Vertizes umwandeln, die Du dann wiederum mit dem Tool "adjacency.exe" in ein binäres File konvertierst (das Tool befindet sich im tools-Ordner der Tokamak Engine: http://www.tokamakphysics.com/..._1_2_5.zip ).

Schritt 1: Konvertieren des Meshes in eine Vertexliste

Code: [AUSKLAPPEN]

Graphics3D( 800, 600, 32, 2 )
entity = LoadMesh( "mesh.b3d" )
createTokHull( entity, "mesh.txt" )
End

Function createTokHull( entity, file$ )
  Local points%, surf%
  Local vx#,vy#,vz#
  Local k%,l%
  Local count%
 
  Local surfs=CountSurfaces(entity)
  If surfs=0 Return 0
    For k=1 To surfs
      surf=GetSurface(entity,k)
      points=points+CountVertices(surf)
    Next
   
    Local file = WriteFile(file$)
    WriteLine( file,points )
   
    count = 0
   
    For k=1 To surfs
      surf=GetSurface(entity,k)
      For l = 0 To CountVertices( surf ) - 1
        vx = VertexX( surf, l )
        vy = VertexY( surf, l )
        vz = VertexZ( surf, l )
        TFormPoint( vx, vy, vz, entity, 0 )
        WriteLine( file, TFormedX() + " " + TFormedY() + " " + TFormedZ() )
      Next
    Next
   
    CloseFile file
End Function


Schritt 2: Konvertieren der Vertexliste in ein Bin-File

In der Kommandozeile (cmd.exe) eintippen:

Code: [AUSKLAPPEN]

adjacency.exe mesh.txt mesh.bin


Nun hast Du ein binäres File der konvexen Hülle Deines Meshes. Das kannst Du jetzt der Tokamak-Engine so übergeben:

Code: [AUSKLAPPEN]

size = FileSize( "mesh.bin" )
convex = CreateBank( size )
filein = ReadFile( "mesh.bin" )
For i = 0 To size-1
  PokeByte( convex, i, ReadByte( filein )  )
Next   
CloseFile( filein )

;convexe Hülle an Tokamak übergeben
tokHandle = TOKRB_Create()
TOKRB_AddConvex( tokHandle, convex, BankSize( convex ) )

FreeBank( convex )


Fertig. Smile Ich hoffe, das hilft anderen...
Cerberus X - Monkey X Reloaded!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group