j'ai un petit soucis avec un détail qui semble pourtant simple!!, je n'arrive pas à colorier les vertices à partir de "SectionData",
voici le code:
Code : Tout sélectionner
; #PB_Mesh_Vertex =0
; #PB_Mesh_Color =2
; #PB_Mesh_Normal =4
; #PB_Mesh_UVCoordinate =8
;{ -Initialisation
If InitEngine3D()
If InitKeyboard() And InitMouse()=0
MessageRequester("Erreur","Les péripheriques utiles pour le déplacement dans l'environnement 3D sont inaccessibles!")
End
EndIf
Else
MessageRequester("Erreur","l'Initialisation 3D à échouée!")
End
EndIf
If InitSprite() And InitSprite3D()
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseTGAImageDecoder()
Else
MessageRequester("Erreur","Les éléments indispensable pour la décoration 3D sont inaccessibles!")
End
EndIf
;}
Parse3DScripts()
Enumeration
#Window_0
EndEnumeration
Enumeration
#Edit_pront
#Bt_Face
EndEnumeration
Procedure Open_Window_0(LargW,HautW,LargS,HautS)
If OpenWindow(#Window_0, 0, 0, LargW,HautW, "MeshConvertData", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
If OpenWindowedScreen(WindowID(#Window_0), 0, 0, LargS,HautS, 0, 0, 0)
; If CreateGadgetList(WindowID(#Window_0))
EditorGadget(#Edit_pront, LargW/4, 500, LargW/2, 200)
;Frame3DGadget(#Frame3D_0, 802, 5, 95, 150, "Fenêtre active")
;ButtonGadget(#Bt_Face, 810, 25, 40, 30, "Face")
ProcedureReturn #True
; EndIf
EndIf
EndIf
EndProcedure
;{ Mesh sol
;-------------------------------------------
Procedure Pixel()
#Mesh = 0
CreateMesh(#Mesh, 10000)
SetMeshData(#Mesh, #PB_Mesh_Vertex, ?CubeVertices, 8)
SetMeshData(#Mesh, #PB_Mesh_Face, ?CubeFacesIndexes, 12)
;SetMeshData(#Mesh, #PB_Mesh_Color, ?CubeTextureColor, 8)
#EntitySol = 0
CreateEntity(#EntitySol, MeshID(#Mesh), #PB_Material_None)
ScaleEntity(#EntitySol, 40, 40, 40)
EntityRenderMode(#EntitySol,#PB_Entity_CastShadow)
EntityLocate(#EntitySol, 0, 0, 0)
EndProcedure
;--------------------------------------------------------------------
;}
;{
lW=900
hW=700
Lxs=900
Hys=500
CameraSpeed = 3
;}
AntialiasingMode(#PB_AntialiasingMode_x6)
If Open_Window_0(lW,hW,Lxs,Hys)
Pixel()
CreateCamera(1,0, 0, 100, 100)
;CameraRenderMode(1,#PB_Camera_Wireframe)
CameraRenderMode(1,#PB_Camera_Textured)
CameraLocate(1, 0, 100, 300)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -CameraSpeed:DisableGadget(#Edit_pront, 1)
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = CameraSpeed:DisableGadget(#Edit_pront, 1)
Else
KeyX = 0:DisableGadget(#Edit_pront, 0)
EndIf
If KeyboardPushed(#PB_Key_RightAlt)
If KeyboardPushed(#PB_Key_Up)
KeyZ = -CameraSpeed :DisableGadget(#Edit_pront, 1)
ElseIf KeyboardPushed(#PB_Key_Down)
KeyZ = CameraSpeed:DisableGadget(#Edit_pront, 1)
Else
KeyZ = 0:DisableGadget(#Edit_pront, 0)
EndIf
Else
If KeyboardPushed(#PB_Key_Up)
KeyY = -CameraSpeed :DisableGadget(#Edit_pront, 1)
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = CameraSpeed :DisableGadget(#Edit_pront, 1)
Else
KeyY = 0:DisableGadget(#Edit_pront, 0)
EndIf
EndIf
EndIf
CameraLookAt(1,0,10,0)
If KeyboardPushed(#PB_Key_Space)=#False
MoveCamera(1, KeyX, -KeyY, KeyZ)
EndIf
WorldShadows(#PB_Shadow_Modulative)
RenderWorld()
;CreateLight(0, RGB(188,190,192), 10, 200, 0)
Sun(0, 10000, 0, RGB(255,255,255))
FlipBuffers()
Until Event = #PB_Event_CloseWindow
Else
MessageRequester("Fortix:","Erreur, cette application ne peut pas s'executer sur cet ordinateur!")
EndIf
End
;
;----------------------------------
;{ Définition du cube
DataSection
CubeVertices:
Data.f 0, 0, 0 ; Vertex index 0
Data.f 1, 0, 0 ; Vertex index 1
Data.f 1, 0, 1 ; Vertex index 2
Data.f 0, 0, 1 ; Vertex index 3
Data.f 0, 1, 0 ; Vertex index 4 - Note: exactly the same as above, but with 'y'
Data.f 1, 1, 0 ; Vertex index 5
Data.f 1, 1, 1 ; Vertex index 6
Data.f 0, 1, 1 ; Vertex index 7
CubeFacesIndexes:
Data.w 0, 1, 2 ; bottom face (clockwise as it's reversed...)
Data.w 2, 3, 0
Data.w 6, 5, 4 ; top face
Data.w 4, 7, 6
Data.w 1, 5, 6 ; right face
Data.w 6, 2, 1
Data.w 7, 4, 0 ; left face
Data.w 0, 3, 7
Data.w 5, 1, 0 ; back face
Data.w 0, 4, 5
Data.w 2, 6, 7 ; front face
Data.w 7, 3, 2
; CubeTextureCoordinates:
; Data.f 0 , 0.33 ; Vertex 0
; Data.f 0.33, 0.33 ; Vertex 1
; Data.f 0.33, 0 ; Vertex 2
; Data.f 0, 0 ; Vertex 3
;
; Data.f 0.66, 1 ; Vertex 4
; Data.f 1, 1 ; Vertex 5
; Data.f 1, 0.66 ; Vertex 6
; Data.f 0.66, 0.66 ; Vertex 7
CubeTextureColor:
Data.l $000000 ; Vertex 0
Data.l $000000 ; Vertex 1
Data.l $000000 ; Vertex 2
Data.l $000000 ; Vertex 3
Data.l $FF0000 ; Vertex 4
Data.l $FF0000 ; Vertex 5
Data.l $FF0000 ; Vertex 6
Data.l $FF0000 ; Vertex 7
EndDataSection
;}
merci à vous))