Tokamak - Beliebiges Mesh statt Primitives benutzen?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Mau

Betreff: Tokamak - Beliebiges Mesh statt Primitives benutzen?

BeitragMo, Apr 05, 2010 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hätte mal eben eine Frage zu Tokamak bzw. dem Wrapper. Ich lasse einige Objekte von oben auf ein Mesh fallen. Diese sollen von dem Mesh abprallen. Wie kann ich Tokamak klar machen, das er das Mesh mit in die Physik einbeziehen soll? Die Objekte müssen nur vom Mesh abprallen, sonst muss das Mesh keine Funktion haben. Wie geht das am einfachsten? Alle Tutorials, die ich zum Thema finden konnte, behandeln nur Primitives, erklären aber nicht, wie ich ein komplexeres Mesh einbinden kann.
Alles muss, nichts kann!

Blackside

BeitragMo, Apr 05, 2010 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich habe mal in meinen alten Projekten gekramt und habe diese Funktion gefunden.
Damit sollte es klappen.

Code: [AUSKLAPPEN]
Function BT_StaticMesh(entity,trisbank=0,vertbank=0,rec=False)
   
   If EntityClass(entity) = "Mesh"
      
      If rec = False
         vertbank = CreateBank(0)
         trisbank = CreateBank(0)
         
         f_vert = 0
         f_tris = 0
      Else
         f_vert = BankSize(vertbank)/16
         f_tris = BankSize(trisbank)/24
      End If
      
      n_surf = CountSurfaces(entity)
      For s = 1 To n_surf
         surf = GetSurface(entity,s)
         
         n_vert = CountVertices(surf)
         n_tris = CountTriangles(surf)
         
         ResizeBank vertbank,(n_vert+f_vert)*16         
         ResizeBank trisbank,(n_tris+f_tris)*24
         
         For v = 0 To n_vert-1
            bankoffset = (f_vert+v)*16
            
            TFormPoint VertexX#(surf,v),VertexY#(surf,v),VertexZ#(surf,v),entity,0
            
            PokeFloat vertbank,bankoffset   ,TFormedX()
            PokeFloat vertbank,bankoffset+4   ,TFormedY()
            PokeFloat vertbank,bankoffset+8   ,TFormedZ()
            PokeFloat vertbank,bankoffset+12,0.0
         Next
         
         For t = 0 To n_tris-1
            bankoffset = (f_tris+t)*24
            
            PokeInt trisbank,bankoffset   ,f_vert+TriangleVertex(surf,t,0)
            PokeInt trisbank,bankoffset+4 ,f_vert+TriangleVertex(surf,t,1)
            PokeInt trisbank,bankoffset+8 ,f_vert+TriangleVertex(surf,t,2)
            PokeInt trisbank,bankoffset+12,0
            PokeInt trisbank,bankoffset+16,0
            PokeInt trisbank,bankoffset+20,0
         Next   
         
         f_vert = f_vert + n_vert
         f_tris = f_tris + n_tris
      Next
      
   End If
   
   n_child = CountChildren(entity)
   For c = 1 To n_child
      BT_StaticMesh(GetChild(entity,c),trisbank,vertbank,True)
   Next
   
   If rec = False
      If vertbank<>0 And trisbank<>0
         f_vert = BankSize(vertbank)/16
         f_tris = BankSize(trisbank)/24
         
         TOKSIM_SetStaticMesh vertbank,f_vert,trisbank,f_tris
         
         FreeBank vertbank
         FreeBank trisbank
      End If
   End If
   
End Function
Hier sollte eigentlich eine Signatur stehen!
 

Mau

BeitragMo, Apr 05, 2010 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das haut recht gut hin, soweit ich das testen konnte -danke dir vielmals! Very Happy
Alles muss, nichts kann!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group