Tièdre 3D à l'écran
Publié : dim. 02/janv./2005 4:51
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.
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