Page 1 sur 1

Tièdre 3D à l'écran

Publié : dim. 02/janv./2005 4:51
par Guimauve
Bonjour à tous,

J'ai codé ça pour m'aider à voir le sens des axes dans le monde 3D.

N.B. J'ai pas vérifié si les axes étaient bien alignés.

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Afficher un trièdre à l'écran -- Source principal
; Version 1.0
; Programmation = OK
; Programmé par : Guumauve
; Date : 1er janvier 2005
; Mise à jour : 1er janvier 2005
; Codé avec PureBasic V3.92 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Enumeration
     #AxeX
     #AxeY
     #AxeZ
EndEnumeration

; Largeur et hauteur de la résolution windows
ScreenW = GetSystemMetrics_(#SM_CXSCREEN)
ScreenH = GetSystemMetrics_(#SM_CYSCREEN)
; Couleur 32 bits
ScreenD = 32


If InitEngine3D() = 0
     MessageRequester("Error", "The 3D Engine can't be initialized")
     End
Else
     If InitSprite() = 0 Or InitKeyboard() = 0
          MessageRequester("Error", "Can't open DirectX 7 Or later")
          End
     Else
          If OpenScreen(ScreenW, ScreenH, ScreenD, "Icosaèdre étoilé") = 0
               MessageRequester("Error", "Can't open a screen !")
               End
          Else
               
               CreateMesh(#AxeX)
               SetMeshData(#AxeX, 0, ?Vertices, 88)
               SetMeshData(#AxeX, 1, ?FacesIndexes, 40)
               SetMeshData(#AxeX, 2, ?TextureCoordinates, 88)
               
               CreateEntity(#AxeX, MeshID(#AxeX), CreateMaterial(#AxeX, CreateTexture(#AxeX, 256, 256)))
               CopyEntity(#AxeX, #AxeY)
               CopyEntity(#AxeX, #Axez)
               
               For entity = #AxeX To #AxeZ
                    ScaleEntity(entity, 0.25, 0.25, 0.25)
               Next
               
               For entity = #AxeY To #AxeZ
                    EntityMaterial(entity, CreateMaterial(entity, CreateTexture(entity, 256, 256)))
               Next
               
               RotateEntity(#AxeY,0,90,0)
               RotateEntity(#AxeZ,0,0,90)
               
               ; Dessin des textures
               StartDrawing(TextureOutput(#AxeX))
                    Box(0, 0, 256, 256, RGB(000, 255, 000))
               StopDrawing()
               
               StartDrawing(TextureOutput(#AxeY))
                    Box(0, 0, 256, 256, RGB(255, 000, 000))
               StopDrawing()
               
               StartDrawing(TextureOutput(#AxeZ))
                    Box(0, 0, 256, 256, RGB(000, 000, 255))
               StopDrawing()
               
               CreateCamera(0, 0, 0, 100, 100)
               ;RotateCamera(0,-45.0,-45.0,30.0)
               CameraLocate(0, -25, 25, 25)
               
               CameraLookAt(0,0,0,0)
                
               CameraRenderMode(0, #PB_Camera_Textured)
               EntityLocate(#AxeX, 0, 0, 0)

               Repeat
                    
                    ClearScreen(0, 0, 0)
                    
                    RenderWorld()
                    
                    ExamineKeyboard()
                    FlipBuffers()
               Until KeyboardPushed(#PB_Key_Escape)
          EndIf
     EndIf
     
EndIf


; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


DataSection
     
     Vertices :
     
     ; 88
          Data.f - 2.000000, 21.000000, -0.000000
          Data.f - 2.000000, 0.000000, -0.000000
          Data.f - 1.414214, 0.000000, -1.414214
          Data.f - 1.414214, 21.000000, -1.414214
          Data.f - 4.500000, 21.000000, -0.000000
          Data.f - 2.000000, 21.000000, -0.000000
          Data.f - 1.414214, 21.000000, -1.414214
          Data.f - 3.181981, 21.000000, -3.181981
          Data.f - 3.181981, 21.000000, -3.181981
          Data.f 0.000000, 30.000000, -0.000000
          Data.f - 4.500000, 21.000000, -0.000000
          Data.f - 4.500000, 21.000000, -0.000000
          Data.f - 0.000000, 30.000000, -0.000000
          Data.f - 3.181981, 21.000000, 3.181981
          Data.f - 3.181981, 21.000000, 3.181981
          Data.f - 1.414214, 21.000000, 1.414214
          Data.f - 2.000000, 21.000000, -0.000000
          Data.f - 4.500000, 21.000000, -0.000000
          Data.f - 1.414214, 21.000000, 1.414214
          Data.f - 1.414214, 0.000000, 1.414214
          Data.f - 2.000000, 0.000000, -0.000000
          Data.f - 2.000000, 21.000000, -0.000000
          Data.f - 3.181981, 21.000000, 3.181981
          Data.f - 0.000000, 30.000000, -0.000000
          Data.f - 0.000000, 21.000000, 4.500000
          Data.f - 0.000000, 21.000000, 4.500000
          Data.f - 0.000000, 21.000000, 2.000000
          Data.f - 1.414214, 21.000000, 1.414214
          Data.f - 3.181981, 21.000000, 3.181981
          Data.f - 0.000000, 21.000000, 2.000000
          Data.f - 0.000000, 0.000000, 2.000000
          Data.f - 1.414214, 0.000000, 1.414214
          Data.f - 1.414214, 21.000000, 1.414214
          Data.f - 0.000000, 21.000000, 4.500000
          Data.f - 0.000000, 30.000000, 0.000000
          Data.f 3.181981, 21.000000, 3.181981
          Data.f 3.181981, 21.000000, 3.181981
          Data.f 1.414214, 21.000000, 1.414214
          Data.f - 0.000000, 21.000000, 2.000000
          Data.f - 0.000000, 21.000000, 4.500000
          Data.f 1.414214, 21.000000, 1.414214
          Data.f 1.414214, 0.000000, 1.414214
          Data.f - 0.000000, 0.000000, 2.000000
          Data.f - 0.000000, 21.000000, 2.000000
          Data.f 3.181981, 21.000000, 3.181981
          Data.f - 0.000000, 30.000000, 0.000000
          Data.f 4.500000, 21.000000, 0.000000
          Data.f 4.500000, 21.000000, 0.000000
          Data.f 2.000000, 21.000000, 0.000000
          Data.f 1.414214, 21.000000, 1.414214
          Data.f 3.181981, 21.000000, 3.181981
          Data.f 2.000000, 21.000000, 0.000000
          Data.f 2.000000, 0.000000, 0.000000
          Data.f 1.414214, 0.000000, 1.414214
          Data.f 1.414214, 21.000000, 1.414214
          Data.f 4.500000, 21.000000, 0.000000
          Data.f 0.000000, 30.000000, 0.000000
          Data.f 3.181981, 21.000000, -3.181981
          Data.f 3.181981, 21.000000, -3.181981
          Data.f 1.414214, 21.000000, -1.414214
          Data.f 2.000000, 21.000000, 0.000000
          Data.f 4.500000, 21.000000, 0.000000
          Data.f 1.414214, 21.000000, -1.414214
          Data.f 1.414214, 0.000000, -1.414214
          Data.f 2.000000, 0.000000, 0.000000
          Data.f 2.000000, 21.000000, 0.000000
          Data.f 3.181981, 21.000000, -3.181981
          Data.f 0.000000, 30.000000, 0.000000
          Data.f 0.000000, 21.000000, -4.500000
          Data.f 0.000000, 21.000000, -4.500000
          Data.f 0.000000, 21.000000, -2.000000
          Data.f 1.414214, 21.000000, -1.414214
          Data.f 3.181981, 21.000000, -3.181981
          Data.f 0.000000, 21.000000, -2.000000
          Data.f 0.000000, 0.000000, -2.000000
          Data.f 1.414214, 0.000000, -1.414214
          Data.f 1.414214, 21.000000, -1.414214
          Data.f 0.000000, 21.000000, -4.500000
          Data.f 0.000000, 30.000000, -0.000000
          Data.f - 3.181981, 21.000000, -3.181981
          Data.f - 3.181981, 21.000000, -3.181981
          Data.f - 1.414214, 21.000000, -1.414214
          Data.f 0.000000, 21.000000, -2.000000
          Data.f 0.000000, 21.000000, -4.500000
          Data.f - 1.414214, 21.000000, -1.414214
          Data.f - 1.414214, 0.000000, -1.414214
          Data.f 0.000000, 0.000000, -2.000000
          Data.f 0.000000, 21.000000, -2.000000
     
     FacesIndexes :
     
     ; 40
          Data.w 2, 1, 0
          Data.w 3, 2, 0
          Data.w 6, 5, 4
          Data.w 7, 6, 4
          Data.w 10, 9, 8
          Data.w 13, 12, 11
          Data.w 16, 15, 14
          Data.w 17, 16, 14
          Data.w 20, 19, 18
          Data.w 21, 20, 18
          Data.w 24, 23, 22
          Data.w 27, 26, 25
          Data.w 28, 27, 25
          Data.w 31, 30, 29
          Data.w 32, 31, 29
          Data.w 35, 34, 33
          Data.w 38, 37, 36
          Data.w 39, 38, 36
          Data.w 42, 41, 40
          Data.w 43, 42, 40
          Data.w 46, 45, 44
          Data.w 49, 48, 47
          Data.w 50, 49, 47
          Data.w 53, 52, 51
          Data.w 54, 53, 51
          Data.w 57, 56, 55
          Data.w 60, 59, 58
          Data.w 61, 60, 58
          Data.w 64, 63, 62
          Data.w 65, 64, 62
          Data.w 68, 67, 66
          Data.w 71, 70, 69
          Data.w 72, 71, 69
          Data.w 75, 74, 73
          Data.w 76, 75, 73
          Data.w 79, 78, 77
          Data.w 82, 81, 80
          Data.w 83, 82, 80
          Data.w 86, 85, 84
          Data.w 87, 86, 84
     
     
     TextureCoordinates :
     ; 88
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 0.500000
          Data.f 0.000000, 0.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
          Data.f 1.000000, 0.000000
          Data.f 0.000000, 0.000000
          Data.f 0.000000, 1.000000
          Data.f 1.000000, 1.000000
     
EndDataSection