oui , enfin non, faut le construire manuellement, mais c'est une forme simple avec deux triangles. Prendre modèle sur le fichier MeshManuel.pb
regarde ma signature, il y a quelques tutoriels sur la 3D avec PureBasic.
Et un code que je ne vais pas jeter, même s'il ne sert à rien.
Code : Tout sélectionner
InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0,0,0,800,600,"Dungeon")
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
#CameraSpeed = 10
Define.f KeyX, KeyY, MouseX, MouseY
AmbientColor(RGB(128,128,128))
; Create a plan, manually
;
CreateMesh(1,100)
SetMeshData(1, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M1, 8)
SetMeshData(1, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(2,100)
SetMeshData(2, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M2, 4)
SetMeshData(2, #PB_Mesh_Face, ?PlanFaces, 4)
CreateMesh(3,100)
SetMeshData(3, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M3, 8)
SetMeshData(3, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(4,100)
SetMeshData(4, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M4, 8)
SetMeshData(4, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(5,100)
SetMeshData(5, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M5, 4)
SetMeshData(5, #PB_Mesh_Face, ?PlanFaces, 4)
CreateMesh(6,100)
SetMeshData(6, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M6, 8)
SetMeshData(6, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(7,100)
SetMeshData(7, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M7, 8)
SetMeshData(7, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(8,100)
SetMeshData(8, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M8, 8)
SetMeshData(8, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(9,100)
SetMeshData(9, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M9, 8)
SetMeshData(9, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(10,100)
SetMeshData(10, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M10, 8)
SetMeshData(10, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(11,100)
SetMeshData(11, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M11, 8)
SetMeshData(11, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateTexture(1,64,64)
StartDrawing(TextureOutput(1))
Box(0,0,64,64,#Blue)
Box(1,1,62,62,#Yellow)
StopDrawing()
CreateMaterial(1, TextureID(1))
Restore Level
For z=1 To 8
For x=1 To 7
Read Title
If title
Entity=CreateEntity (#PB_Any, MeshID(Title), MaterialID(1))
ScaleEntity(entity, 64, 64, 64)
EntityLocate(entity,x*64,0,z*64)
EndIf
Next x
Next z
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,150,100)
CameraLookAt(0,EntityX(entity),EntityY(entity),EntityZ(entity))
Repeat
ClearScreen(0)
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
If ExamineMouse()
MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
EndIf
RotateCamera(0, MouseX, MouseY, RollZ)
MoveCamera (0, KeyX, 0, KeyY)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
End
DataSection
M1:
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M2:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M3:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M4:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M5:
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M6:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M7:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M8:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M9:
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M10:
Data.f 0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
M11:
Data.f 0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
Data.f 0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
Data.f 0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
Data.f 0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
Data.f 0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
PlanFaces:
Data.w 2, 1, 0 ; bottom face (clockwise as it's reversed...)
Data.w 0, 3, 2
Data.w 0, 1, 2
Data.w 2, 3, 0
PlanFaces2:
Data.w 2, 1, 0 ; bottom face (clockwise as it's reversed...)
Data.w 0, 3, 2
Data.w 0, 1, 2
Data.w 2, 3, 0
Data.w 6, 5, 4 ; bottom face (clockwise as it's reversed...)
Data.w 4, 7, 6
Data.w 4, 5, 6
Data.w 6, 7, 4
Level:
Data.l 1, 2, 2, 3, 2, 2, 4
Data.l 5, 0, 0, 5, 0, 0, 5
Data.l 5, 0, 1, 0, 4, 0, 5
Data.l 5, 0, 5, 5, 5, 0, 5
Data.l 10, 4, 9,11, 7, 3, 6
Data.l 5, 0, 0, 5, 0, 6, 5
Data.l 5, 5, 0, 5, 0, 0, 5
Data.l 9, 8, 2, 8, 2, 8, 7
EndDataSection