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