Danke erst einmal für das Beispiel, ich hatte in der Zwischenzeit noch etwas anderes gefunden.
Ein Beispiel mit drei rotirenden Quadraten.
Ich hatte vor dies Beispiel abzuwandeln um einen rotierenden Würfel zu erhalten. Leider klappt das noch nicht. Mein Problem ist fehendes Verständnis für die Angabe der Vertexkoordinaten, denke ich.
Am liebsten würde ich auch Eckpunkten einen Farbwert zuweisen, um mir Farbverläufe zu erzeugen, wie in den Beispeilen
.
Code: Alles auswählen
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1501&start=10
; Author: Danilo (updated for PB 4.00 by ste123)
; Date: 05. July 2003
; OS: Windows
; Demo: Yes
If InitEngine3D() And InitSprite() And InitKeyboard()
OpenWindow(0,0,0,640,480,"3D Mesh Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
BigFont = LoadFont(1,"Arial",38)
Add3DArchive("data", #PB_3DArchive_FileSystem)
LoadTexture(0,"clouds.jpg")
CreateMaterial(0, TextureID(0))
; Viereck 1
;CreateMesh(1,30)
;SetMeshData(1,#PB_Mesh_Vertex ,?Ecken , 4) ; 4 Ecken
;SetMeshData(1,#PB_Mesh_Face ,?Viereck_1 , 2) ; 2 Dreicke
;SetMeshData(1,#PB_Mesh_UVCoordinate ,?TexturKoordinaten, 4)
;CreateEntity(1, MeshID(1), MaterialID(0))
CreateMesh(2,30)
SetMeshData(2,#PB_Mesh_Vertex ,?Ecken , 8) ; n Ecken
SetMeshData(2,#PB_Mesh_Face ,?Objekt_1 , 4) ; n Dreiecke
SetMeshData(2,#PB_Mesh_UVCoordinate ,?TexturKoordinaten, 8)
CreateEntity(2, MeshID(2), MaterialID(0))
; Viereck 2
;CreateMesh(2,30)
;SetMeshData(2,#PB_Mesh_Vertex ,?Ecken , 4) ; 4 Ecken
;SetMeshData(2,#PB_Mesh_Face ,?Viereck_2 , 2) ; 2 Dreiecke
;SetMeshData(2,#PB_Mesh_UVCoordinate ,?TexturKoordinaten, 4)
;CreateEntity(2, MeshID(2), MaterialID(0))
; Viereck 3
;CreateMesh(3,30)
;SetMeshData(3,#PB_Mesh_Vertex ,?Ecken , 4) ; 4 Ecken
;SetMeshData(3,#PB_Mesh_Face ,?Viereck_3 , 4) ; 4 Dreiecke (Vorder- und Rueckseite)
;SetMeshData(3,#PB_Mesh_UVCoordinate ,?TexturKoordinaten, 4)
;CreateEntity(3, MeshID(3), MaterialID(0))
;MoveEntity(1,-3,0,0)
;MoveEntity(3, 3,0,0)
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,10)
Repeat
ClearScreen(RGB(0,0,0) )
ExamineKeyboard()
Select WindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
rot+1
If rot>=360 : rot=0 : EndIf
;RotateEntity(1, rot, rot, 0)
RotateEntity(2, rot, 0, rot)
;RotateEntity(3, rot, rot, 0)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit
Else
MessageRequester("Error", "Cant init DirectX 3D Engine",0)
EndIf
End
DataSection
Ecken:
Data.f 0, 0, 0 ; Ecke 0 3-----2 7-----6
Data.f 2, 0, 0 ; Ecke 1 | . | /| /|
Data.f 2, 2, 0 ; Ecke 2 | | 3-+---2 |
Data.f 0, 2, 0 ; Ecke 3 0-----1 | 4---+-5
Data.f 0, 0, 2 ; Ecke 4 7-----6 |/ |/
Data.f 2, 0, 2 ; Ecke 5 | . | 0-----1
Data.f 2, 2, 2 ; Ecke 6 | |
Data.f 0, 2, 2 ; Ecke 7 4-----5
TexturKoordinaten:
Data.f 0.0, 0.0 ; Vertex 0
Data.f 2.0, 0.0 ; Vertex 1
Data.f 2.0, 2.0 ; Vertex 2
Data.f 0.0, 2.0 ; Vertex 3
Data.f 0.0, 0.0 ; Vertex 4
Data.f 2.0, 0.0 ; Vertex 5
Data.f 2.0, 2.0 ; Vertex 6
Data.f 0.0, 2.0 ; Vertex 7
Objekt_1:
Data.w 0, 1, 2 ; Dreieck 1 besteht aus den Ecken 0, 1 und 2 // Vorderseite
Data.w 2, 3, 0 ; Dreieck 2 besteht aus den Ecken 2, 3 und 0
Data.w 4, 5, 6 ; Dreieck 1 besteht aus den Ecken 4, 5 und 6 // Rückseite
Data.w 4, 7, 6 ; Dreieck 2 besteht aus den Ecken 6, 7 und 4
Data.w 0, 4, 1 ; Dreieck 1 besteht aus den Ecken 0, 1 und 5 // Unterseite
Data.w 4, 5, 1 ; Dreieck 2 besteht aus den Ecken 0, 4 und 5
Data.w 7, 3, 2 ; Dreieck 1 besteht aus den Ecken 3, 2 und 6 // Oberseite
Data.w 7, 6, 2 ; Dreieck 2 besteht aus den Ecken 3, 7 und 6
Data.w 3, 0, 4 ; Dreieck 1 besteht aus den Ecken 0, 1 und 5 // Links
Data.w 3, 7, 4 ; Dreieck 2 besteht aus den Ecken 0, 4 und 5
Data.w 1, 2, 6 ; Dreieck 1 besteht aus den Ecken 3, 2 und 6 // Rechts
Data.w 1, 5, 6 ; Dreieck 2 besteht aus den Ecken 3, 7 und 6
Viereck_1:
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
Viereck_2:
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
Viereck_3:
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
; IDE Options = PureBasic v4.02 (Windows - x86)
; Folding = -
; DisableDebugger