Je vous propose d'ajouter les pyramides avec cette procédure
CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)
Code : Tout sélectionner
Declare CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)
InitEngine3D() : InitKeyboard() : InitSprite()
OpenWindow(0,0,0,1024,768,"test")
OpenWindowedScreen(WindowID(0),0,0,1024,768)
Add3DArchive(#PB_Compiler_Home + "Examples\3D\Data\Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/waterworld.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)
Parse3DScripts()
SkyBox("desert07.jpg")
;Caméra, Lumiere & Ombre
CreateCamera(0, 0, 0, 100, 100)
CameraBackColor(0, RGB(0, 0, 0))
MoveCamera(0, 0, 1.5, 4)
CameraLookAt(0, 0, 0, 0)
; Light
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any, RGB(151, 251, 151), -200, 100, -500)
WorldShadows(#PB_Shadow_Additive)
CreateMaterial(0, TextureID(LoadTexture(-1, "Dirt.jpg")))
CreateMaterial(1, TextureID(LoadTexture(-1, "Floor02.jpg")))
CreatePlane(0, 5, 5, 1, 1, 5, 5)
CreateEntity(0, MeshID(0), MaterialID(0), 0, 0, 0)
CreatePyramid(0, 1, 1, 0.5)
CreateEntity(1, MeshID(0), MaterialID(1), 1, 0.5, 1)
CreatePyramid(0, 1, 1, 0)
CreateEntity(2, MeshID(0), MaterialID(1), -1, 0.5, 1)
While #True
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
Break
EndIf
EndIf
RenderWorld()
FlipBuffers()
Wend
Procedure CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)
Protected Dim MeshData.PB_MeshVertex(0)
Protected Result = CreateCube(Mesh, Width)
If Mesh = #PB_Any
Mesh = Result
EndIf
GetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
;(3, 10, 16)
MeshData(3)\x = -SizeTop/2
MeshData(10)\x = -SizeTop/2
MeshData(16)\x = -SizeTop/2
MeshData(3)\z = SizeTop/2
MeshData(10)\z = SizeTop/2
MeshData(16)\z = SizeTop/2
MeshData(3)\y = Height/2
MeshData(10)\y = Height/2
MeshData(16)\y = Height/2
;(6, 11, 19)
MeshData(6)\x = -SizeTop/2
MeshData(11)\x = -SizeTop/2
MeshData(19)\x = -SizeTop/2
MeshData(6)\z = -SizeTop/2
MeshData(11)\z = -SizeTop/2
MeshData(19)\z = -SizeTop/2
MeshData(6)\y = Height/2
MeshData(11)\y = Height/2
MeshData(19)\y = Height/2
;(7, 14, 18)
MeshData(7)\x = SizeTop/2
MeshData(14)\x = SizeTop/2
MeshData(18)\x = SizeTop/2
MeshData(7)\z = -SizeTop/2
MeshData(14)\z = -SizeTop/2
MeshData(18)\z = -SizeTop/2
MeshData(7)\y = Height/2
MeshData(14)\y = Height/2
MeshData(18)\y = Height/2
;(2, 15, 17)
MeshData(2)\x = SizeTop/2
MeshData(15)\x = SizeTop/2
MeshData(17)\x = SizeTop/2
MeshData(2)\z = SizeTop/2
MeshData(15)\z = SizeTop/2
MeshData(17)\z = SizeTop/2
MeshData(2)\y = Height/2
MeshData(15)\y = Height/2
MeshData(17)\y = Height/2
;(0, 9, 23)
MeshData(0)\y = -Height/2
MeshData(9)\y = -Height/2
MeshData(23)\y = -Height/2
;(5, 8, 20)
MeshData(5)\y = -Height/2
MeshData(8)\y = -Height/2
MeshData(20)\y = -Height/2
;(4, 13, 21)
MeshData(4)\y = -Height/2
MeshData(13)\y = -Height/2
MeshData(21)\y = -Height/2
;(1, 12, 22)
MeshData(1)\y = -Height/2
MeshData(12)\y = -Height/2
MeshData(22)\y = -Height/2
SetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
ProcedureReturn Result
EndProcedure