Jo hat mich auch etwas genervt, als ich etwas mit 3D experimentiert habe.
Darum jetzt mal hier eine "neue" Version wie man ein Wurfel macht ...
Mit Textur und Licht ...
Code: Alles auswählen
InitSprite()
InitSprite3D()
InitEngine3D()
UsePNGImageDecoder()
UsePNGImageEncoder()
Enumeration
#Window
#Camera
#Mesh
#Image
#Entity
#Material
#Texture
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
CreateCamera(#Camera, 0, 0, 100, 100)
CameraBackColor(#Camera, $FFFFFF)
CameraLocate(#Camera, 0, 0, 1000)
CameraRenderMode(#Camera, #PB_Camera_Textured)
CreateMesh(#Mesh, 100)
SetMeshData(#Mesh, #PB_Mesh_Vertex|#PB_Mesh_Normal|#PB_Mesh_UVCoordinate, ?VertexNormalData, 24)
SetMeshData(#Mesh, #PB_Mesh_Face, ?FaceData, 12)
Add3DArchive(GetTemporaryDirectory(), #PB_3DArchive_FileSystem)
CatchImage(#Image, ?Wuerfel_png)
SaveImage(#Image, GetTemporaryDirectory()+"Wuerfel.png", #PB_ImagePlugin_PNG)
LoadTexture(#Texture, GetTemporaryDirectory()+"Wuerfel.png")
CreateMaterial(#Material, TextureID(#Texture))
CreateEntity(#Entity, MeshID(#Mesh), MaterialID(#Material))
ScaleEntity(#Entity, 100, 100, 100)
CreateLight(#PB_Any, $FF0000, 150, -100, 100)
CreateLight(#PB_Any, $0000FF, -150, -100, 100)
CreateLight(#PB_Any, $00FF00, 0, 200, 100)
Repeat
ClearScreen($FFFFFF)
RotateEntity(#Entity, 0, 1, Sin(ElapsedMilliseconds()/1000), #PB_Relative)
RenderWorld()
FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindow
DataSection
VertexNormalData: ; Vertex : Normal : Textur :
; Vorn
Data.f -1,-1, 1 : Data.f 0, 0, 1 : Data.f 0.00, 0.25
Data.f 1,-1, 1 : Data.f 0, 0, 1 : Data.f 0.25, 0.25
Data.f -1, 1, 1 : Data.f 0, 0, 1 : Data.f 0.00, 0.50
Data.f 1, 1, 1 : Data.f 0, 0, 1 : Data.f 0.25, 0.50
; Hinten
Data.f -1,-1,-1 : Data.f 0, 0,-1 : Data.f 0.50, 0.25
Data.f 1,-1,-1 : Data.f 0, 0,-1 : Data.f 0.75, 0.25
Data.f -1, 1,-1 : Data.f 0, 0,-1 : Data.f 0.50, 0.50
Data.f 1, 1,-1 : Data.f 0, 0,-1 : Data.f 0.75, 0.50
; Unten
Data.f -1,-1,-1 : Data.f 0,-1, 0 : Data.f 0.25, 0.25
Data.f 1,-1,-1 : Data.f 0,-1, 0 : Data.f 0.50, 0.25
Data.f -1,-1, 1 : Data.f 0,-1, 0 : Data.f 0.25, 0.50
Data.f 1,-1, 1 : Data.f 0,-1, 0 : Data.f 0.50, 0.50
; Oben
Data.f -1, 1,-1 : Data.f 0, 1, 0 : Data.f 0.75, 0.25
Data.f 1, 1,-1 : Data.f 0, 1, 0 : Data.f 1.00, 0.25
Data.f -1, 1, 1 : Data.f 0, 1, 0 : Data.f 0.75, 0.50
Data.f 1, 1, 1 : Data.f 0, 1, 0 : Data.f 1.00, 0.50
; Rechts
Data.f 1,-1,-1 : Data.f 1, 0, 0 : Data.f 0.25, 0.00
Data.f 1, 1,-1 : Data.f 1, 0, 0 : Data.f 0.50, 0.00
Data.f 1,-1, 1 : Data.f 1, 0, 0 : Data.f 0.25, 0.25
Data.f 1, 1, 1 : Data.f 1, 0, 0 : Data.f 0.50, 0.25
; Links
Data.f -1,-1,-1 : Data.f -1, 0, 0 : Data.f 0.25, 0.50
Data.f -1, 1,-1 : Data.f -1, 0, 0 : Data.f 0.50, 0.50
Data.f -1,-1, 1 : Data.f -1, 0, 0 : Data.f 0.25, 0.75
Data.f -1, 1, 1 : Data.f -1, 0, 0 : Data.f 0.50, 0.75
FaceData: ; Face
;Vorne
Data.w 0,3,2
Data.w 0,1,3
;Hinten
Data.w 4,7,5
Data.w 4,6,7
;Unten
Data.w 8,11,10
Data.w 8,9,11
;Oben
Data.w 12,15,13
Data.w 12,14,15
;Rechts
Data.w 16,19,18
Data.w 16,17,19
;Links
Data.w 20,23,21
Data.w 20,22,23
EndDataSection
DataSection
Wuerfel_png:
Data.q $0A1A0A0D474E5089,$524448490D000000,$4000000040000000,$E60B250000000208,$4D41670400000089
Data.q $61FC0B8FB1000041,$4144495A01000005,$830EED59ED436854,$8CCEE6F7D1F40C20,$9EB05685A5A410C5
Data.q $719FB3BBDA0C96BF,$715167E2ECF85EDB,$4BACB9E1EFCFFE12,$C0401CF1C09E80E0,$953E845421088147
Data.q $A7A2BD5B0E023E0F,$0468818F95D861F2,$BE55B0E023EA9298,$00C7CAEC30F9E7F6,$AD87FE3E0FE8A043
Data.q $3E56B0C3E4502646,$561FE3EEDCB3C406,$DF9DAB121B405397,$97F0EB81F7C900FA,$F4AC587E0DF6BDDF
Data.q $A695207DAA020E99,$99D2C71F7EA25E73,$48DE67DEAF0E7CE2,$BE7E21084E52B540,$E908672BC26378EF
Data.q $C793442C78ED0DF6,$FF6F9300954AF0B4,$CA17BE73408D1E82,$00FB3A789A06F569,$0601F7E7D7524345
Data.q $7D12FAEB571FBE7D,$0FA1303EEA812C20,$E5F9EE7A75530250,$03EDA0296A0063A6,$6FD79EAFFFB77B2D
Data.q $C041D79EA870D847,$6363CC2421088158,$A8D39FD109CCACE5,$652660203B335F95,$8FA9ED4C4908A1A7
Data.q $FA9ECC0278F03EF9,$324CEA81454C4FEC,$01400A005002835C,$02801400A0050028,$CE2F8142BC0A0050
Data.q $00F8C5BD31D2C518,$AE444E4549000000,$0000000000826042
EndDataSection