nimm 3d und ogre, da kannste eine fläche herstellen und kannst durch verschiebung der koordinaten auch den drehpunk bestimmen.
für "schiene.png" setzt ein eigenes bild ein.
schau dir ogre an, da kannst auch transparente flächen machen.
Code: Alles auswählen
Global Dim spr.l(150),zz.l
InitEngine3D() 
InitSprite() 
InitKeyboard()
    OpenWindow(0,0,0,640,480,"3D Mesh Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(0),200,10,400,400,0,0,0)
    Add3DArchive("Data", #PB_3DArchive_FileSystem)
  
    For zz=0 To 2
      CreateMesh(zz,10)
      SetMeshData(zz, #PB_Mesh_Vertex|#PB_Mesh_UVCoordinate, ?Ecken, 4)
      SetMeshData(zz, #PB_Mesh_Face, ?Viereck, 4)
   
      CreateMaterial(0, LoadTexture(0,"schiene.png"))
      CreateEntity(zz, MeshID(zz), MaterialID(0))
    Next
    
    colorlight = 0
 
    If colorlight = 0
      CreateLight(0, RGB(255,255,255), 100.0, 0, 0)  ; White Light
    Else
      CreateLight(0, RGB(0,0,255), 100.0, 0, 0)   ; Blue Light
      CreateLight(1, RGB(255,0,0), -100.0, 0, 0)  ; Red Light
      CreateLight(2, RGB(255,255,0), 0.0, 100, 0) ; Yellow Light
    EndIf 
    
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0,0,0,50)
    CameraBackColor(0, RGB(255,255,255))
    
    Repeat
      ExamineKeyboard()
      
      Select WindowEvent()
        Case #PB_Event_CloseWindow
          Quit = #True
      EndSelect
     
      rot=1
      RotateEntity(0,0,0,rot*0.1,#PB_Relative)
      RotateEntity(1,0,rot,rot*0.3,#PB_Relative)
      RotateEntity(2,rot,0,rot*0.5,#PB_Relative)
      
      RenderWorld()
      FlipBuffers()
   
    Until KeyboardPushed(#PB_Key_Escape) Or Quit
End
DataSection
  Ecken:
    Data.f -10, 0,  0 ; Ecke 0 lu           
    Data.f 0,1
    Data.f  10, 0,  0 ; Ecke 1 ru         
    Data.f 1,1
    Data.f  10,  20,  0 ; Ecke 2 ro         
    Data.f 1,0
    Data.f -10,  20,  0 ; Ecke 3 lo           
    Data.f 0,0
   
  Viereck:
    Data.w 0, 1, 2  ; Dreieck 1 besteht aus den Ecken 0, 1 und 2
    Data.w 2, 3, 0  ; Dreieck 2 besteht aus den Ecken 2, 3 und 0
                    ; = 1 Viereck Vorderseite
    Data.w 0, 3, 2  ; Dreieck 1 besteht aus den Ecken 0, 3 und 2
    Data.w 2, 1, 0  ; Dreieck 2 besteht aus den Ecken 2, 1 und 0
                    ; = 1 Viereck Rueckseite
EndDataSection