Page 1 sur 1

problème avec les vertices et leur couleur!!

Publié : mar. 14/sept./2010 23:55
par Fortix
Bonsoir à tous))

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 
;}
donc si vous voyez où est le pepin!, je serais ravis d'en prendre connaissance)))
merci à vous))

Re: problème avec les vertices et leur couleur!!

Publié : mer. 15/sept./2010 7:50
par kelebrindae
Comme ça, à vue de nez, je vois deux choses qui pourrait expliquer le problème:
- Premièrement, our que la couleur des vertices soit visible, il faut que l'entity ait un material sur lequel on a appliqué "MaterialAmbientColor(...,#PB_Material_AmbientColors)"
Exemple:

Code : Tout sélectionner

    ;-Texture
    ; C'est un peu lourd, mais sans "TextureOutput" on est obligé de passer par un fichier
    Add3DArchive(".",#PB_3DArchive_FileSystem)
    CreateImage(0,128, 128) 
    StartDrawing(ImageOutput(0)) 
      Box(0, 0, 128, 128, $FFFFFF)
    StopDrawing()
    SaveImage(0,"temp.bmp")
    FreeImage(0)
    LoadTexture(0,"temp.bmp")
    DeleteFile("temp.bmp")
    
    ;-Material
    CreateMaterial(0,TextureID(0))
    MaterialAmbientColor(0,#PB_Material_AmbientColors)    
    
    #EntitySol = 0
    CreateEntity(#EntitySol, MeshID(#Mesh), MaterialID(0) )
(j'ai mis 0 pour les numéro d'images, de texture et de material, mais pour être bien propre, il faudrait plutôt utiliser "#PB_Any". :oops: Bref...)

- Deuxièmement, les données de ton mesh me semblent un peu bizarres: pas assez de vertices (pour un cube, j'en mettrais 4 par faces afin de pouvoir les texturer plus facilement), pas de normales... Mais là, je ne suis pas trop sûr de moi.

Je regarde d'un peu plus près (parce que là, je ne suis pas encore trop bien réveillé), et si personne n'a trouvé entre temps, je te donnerai des nouvelles.

Re: problème avec les vertices et leur couleur!!

Publié : mer. 15/sept./2010 8:20
par kelebrindae
Bon, ça devait être ça.

Voici une version de ton code avec les modifs suivantes:
- Les données du mesh sont différentes, avec 4 vertices indépendants par face et des normales (l'ordre des "Data" n'est pas le même non plus, mais c'est parce j'ai fait un copier/coller d'un vieux code; normalement, ça ne change rien); pour les besoins de l'expérimentation, j'ai coloré les vertices du dessus en bleu et ceux du bas en rouge;
- Dans la procédure "Pixel", j'ai créé un material avec "MaterialAmbientColor(...,#PB_Material_AmbientColors)", que j'ai ensuite assigné au mesh.
- J'ai supprimé le "CameraRenderMode(1,#PB_Camera_Textured)" qui ne servait à rien;
- J'ai sorti les instructions concernant les lumières et les ombres du "Repeat", car il n'est pas nécessaire de les appeler à chaque tour de boucle.
- J'ai supprimé le "Sun(0, 10000, 0, RGB(255,255,255))", car cette instruction n'affecte que l'eau et n'a pas d'effet sur le reste des objets 3D.

Et là, ça marche:

Code : Tout sélectionner

;{ -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, 1)

    SetMeshData(#Mesh, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?CubeVertices, 24)
    SetMeshData(#Mesh, #PB_Mesh_Face, ?CubeFaces, 12)

    ;-Texture
    Add3DArchive(".",#PB_3DArchive_FileSystem)
    CreateImage(0,128, 128) 
    StartDrawing(ImageOutput(0)) 
      Box(0, 0, 128, 128, $FFFFFF)
    StopDrawing()
    SaveImage(0,"temp.bmp")
    FreeImage(0)
    LoadTexture(0,"temp.bmp")
    DeleteFile("temp.bmp")
    
    ;-Material
    CreateMaterial(0,TextureID(0))
    MaterialAmbientColor(0,#PB_Material_AmbientColors)    
    
    #EntitySol = 0
    CreateEntity(#EntitySol, MeshID(#Mesh), MaterialID(0) )
    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_Textured)  ; pas nécessaire, c'est le mode par défaut
    CameraLocate(1, 0, 100, 300)
    
    ; J'ai sorti ces instructions du Repeat, car elle n'ont besoin d'être appelées qu'une fois
    ;Sun(0, 10000, 0, RGB(255,255,255)) ; Cette instruction n'affecte que l'eau => pas d'effet sur les entities
    CreateLight(0, $FFFFFF, 80, 100, 100)
    WorldShadows(#PB_Shadow_Modulative)

    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
       
        RenderWorld()                
        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:
  ;Top 0 à 3
  Data.f -1,1,-1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0,0

  Data.f 1,1,-1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0,0.5

  Data.f 1,1,1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0.333,0.5

  Data.f -1,1,1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0.333,0

  ;Bottom 4 à 7
  Data.f -1,-1,1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.333,0

  Data.f 1,-1,1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.333,0.5

  Data.f 1,-1,-1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.666,0.5

  Data.f -1,-1,-1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.666,0

  ;Front 8 à 11
  Data.f -1,1,1
  Data.f 0,0,1
  Data.l $0000FF
  Data.f 0.666,0

  Data.f 1,1,1
  Data.f 0,0,1
  Data.l $0000FF
  Data.f 0.666,0.5

  Data.f 1,-1,1
  Data.f 0,0,1
  Data.l $FF0000
  Data.f 1,0.5

  Data.f -1,-1,1
  Data.f 0,0,1
  Data.l $FF0000
  Data.f 1,0

  ;Back 12 à 15
  Data.f 1,1,-1
  Data.f 0,0,-1
  Data.l $0000FF
  Data.f 0,0.5

  Data.f -1,1,-1
  Data.f 0,0,-1
  Data.l $0000FF
  Data.f 0,1

  Data.f -1,-1,-1
  Data.f 0,0,-1
  Data.l $FF0000
  Data.f 0.333,1

  Data.f 1,-1,-1
  Data.f 0,0,-1
  Data.l $FF0000
  Data.f 0.333,0.5

  ;Left 16 à 19
  Data.f -1,1,-1
  Data.f -1,0,0
  Data.l $0000FF
  Data.f 0.333,0.5

  Data.f -1,1,1
  Data.f -1,0,0
  Data.l $0000FF
  Data.f 0.333,1

  Data.f -1,-1,1
  Data.f -1,0,0
  Data.l $FF0000
  Data.f 0.666,1

  Data.f -1,-1,-1
  Data.f -1,0,0
  Data.l $FF0000
  Data.f 0.666,0.5

  ;Right 20 à 23
  Data.f 1,1,1
  Data.f 1,0,0
  Data.l $0000FF
  Data.f 0.666,0.5

  Data.f 1,1,-1
  Data.f 1,0,0
  Data.l $0000FF
  Data.f 0.666,1

  Data.f 1,-1,-1
  Data.f 1,0,0
  Data.l $FF0000
  Data.f 1,1

  Data.f 1,-1,1
  Data.f 1,0,0
  Data.l $FF0000
  Data.f 1,0.5

CubeFaces:
  ;Top
  Data.w 0,2,1
  Data.w 2,0,3
  ;Bottom
  Data.w 6,5,4
  Data.w 4,7,6
  ;Right
  Data.w 22,21,20
  Data.w 20,23,22
  ;Back
  Data.w 14,13,12
  Data.w 12,15,14
  ;Left
  Data.w 18,17,16
  Data.w 16,19,18
  ;Front
  Data.w 10,9,8
  Data.w 8,11,10
    
EndDataSection
;}

Re: problème avec les vertices et leur couleur!!

Publié : mer. 15/sept./2010 12:02
par Fortix
Impécable @kelebrindae :D , merci beaucoup pour ton aide, tes explications sont très claires et sa fonctionne très bien en plus;

bon boulot :D

Code : Tout sélectionner

;{ -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, 1)

    SetMeshData(#Mesh, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?CubeVertices, 24)
    SetMeshData(#Mesh, #PB_Mesh_Face, ?CubeFaces, 12)

    ;-Texture
    Add3DArchive("c:\",#PB_3DArchive_FileSystem)
    CreateImage(0,128, 128) 
        StartDrawing(ImageOutput(0)) 
            Box(0, 0, 128, 128, $FFFFFF)
            StopDrawing()
            
    SaveImage(0,"c:\temp.bmp")
    FreeImage(0)
    
    LoadTexture(0,"c:\temp.bmp")
    ;DeleteFile("temp.bmp")
    
    ;-Material
    CreateMaterial(0,TextureID(0))
    MaterialAmbientColor(0,#PB_Material_AmbientColors)    
    
    #EntitySol = 0
    CreateEntity(#EntitySol, MeshID(#Mesh), MaterialID(0) )
        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_Textured)  ; pas nécessaire, c'est le mode par défaut
    CameraLocate(1, 0, 100, 300)
    
    ; J'ai sorti ces instructions du Repeat, car elle n'ont besoin d'être appelées qu'une fois
    ;Sun(0, 10000, 0, RGB(255,255,255)) ; Cette instruction n'affecte que l'eau => pas d'effet sur les entities
    CreateLight(0, $FFFFFF, 80, 100, 100)
    WorldShadows(#PB_Shadow_Modulative)

    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
       
        RenderWorld()                
        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:
  ;Top 0 à 3
  Data.f -1,1,-1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0,0

  Data.f 1,1,-1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0,0.5

  Data.f 1,1,1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0.333,0.5

  Data.f -1,1,1
  Data.f 0,1,0
  Data.l $0000FF
  Data.f 0.333,0

  ;Bottom 4 à 7
  Data.f -1,-1,1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.333,0

  Data.f 1,-1,1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.333,0.5

  Data.f 1,-1,-1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.666,0.5

  Data.f -1,-1,-1
  Data.f 0,-1,0
  Data.l $FF0000
  Data.f 0.666,0

  ;Front 8 à 11
  Data.f -1,1,1
  Data.f 0,0,1
  Data.l $0000FF
  Data.f 0.666,0

  Data.f 1,1,1
  Data.f 0,0,1
  Data.l $0000FF
  Data.f 0.666,0.5

  Data.f 1,-1,1
  Data.f 0,0,1
  Data.l $FF0000
  Data.f 1,0.5

  Data.f -1,-1,1
  Data.f 0,0,1
  Data.l $FF0000
  Data.f 1,0

  ;Back 12 à 15
  Data.f 1,1,-1
  Data.f 0,0,-1
  Data.l $0000FF
  Data.f 0,0.5

  Data.f -1,1,-1
  Data.f 0,0,-1
  Data.l $0000FF
  Data.f 0,1

  Data.f -1,-1,-1
  Data.f 0,0,-1
  Data.l $FF0000
  Data.f 0.333,1

  Data.f 1,-1,-1
  Data.f 0,0,-1
  Data.l $FF0000
  Data.f 0.333,0.5

  ;Left 16 à 19
  Data.f -1,1,-1
  Data.f -1,0,0
  Data.l $0000FF
  Data.f 0.333,0.5

  Data.f -1,1,1
  Data.f -1,0,0
  Data.l $0000FF
  Data.f 0.333,1

  Data.f -1,-1,1
  Data.f -1,0,0
  Data.l $FF0000
  Data.f 0.666,1

  Data.f -1,-1,-1
  Data.f -1,0,0
  Data.l $FF0000
  Data.f 0.666,0.5

  ;Right 20 à 23
  Data.f 1,1,1
  Data.f 1,0,0
  Data.l $0000FF
  Data.f 0.666,0.5

  Data.f 1,1,-1
  Data.f 1,0,0
  Data.l $0000FF
  Data.f 0.666,1

  Data.f 1,-1,-1
  Data.f 1,0,0
  Data.l $FF0000
  Data.f 1,1

  Data.f 1,-1,1
  Data.f 1,0,0
  Data.l $FF0000
  Data.f 1,0.5

CubeFaces:
  ;Top
  Data.w 0,2,1
  Data.w 2,0,3
  ;Bottom
  Data.w 6,5,4
  Data.w 4,7,6
  ;Right
  Data.w 22,21,20
  Data.w 20,23,22
  ;Back
  Data.w 14,13,12
  Data.w 12,15,14
  ;Left
  Data.w 18,17,16
  Data.w 16,19,18
  ;Front
  Data.w 10,9,8
  Data.w 8,11,10
    
EndDataSection
;}
mais je reconnais que je regrète beaucoup "textureoutput()" qui a mistérieusement été suprimé dans la version actuelle de PB, c'est très domage surtout qu'il sagissait plus d'un atout qu'un simple élément, et maintenant nous sommes obligé d'enregistrer l'image pour ensuite la recharger!!! :( et si seulement on pouvait aumoin mettre un "ImageID()" à la place du chemin complet!!!

pour ma part, je n'aime pas trop cette façon de faire (sauvegarder pour recharger) :lol:
la vrai question est: pourquoi l'ont ils retiré???? je parle de "textureoutput()"

et ma seconde question est: peut on faire en sorte de ne rien enregistrer et de construire et recuperer la texture directement sur le source même?

qu'en penses tu @kelebrindae? (et les autres biensûr :lol: )

Re: problème avec les vertices et leur couleur!!

Publié : mer. 15/sept./2010 13:21
par kelebrindae
Fortix a écrit :bon boulot :D
De rien, le forum est fait pour ça! 8)
Fortix a écrit :pourquoi l'ont ils retiré???? je parle de "textureoutput()"
Il me semble que Fred avait évoqué des soucis de performances avec cette commande, mais je ne suis plus très sûr. Ceci dit, cette commande est surtout utile pour les meshes dynamiques, lesquels font pas mal ramer l'affichage 3D, donc...
Mais il court une rumeur selon laquelle la v4.60 apporterait de nouveau des modifications significatives de la 3D; de Grands Anciens tels que Tmyke et G-Rom travailleraient en collaboration avec Fred pour booster les capacités de PB en la matière... Wait and see (and bave)! :wink:
Fortix a écrit :peut on faire en sorte de ne rien enregistrer et de construire et recuperer la texture directement sur le source
Je ne suis pas sûr de comprendre de quelle source tu parles. Mais je ne crois pas que ce soit possible: pas mal de monde s'y est cassé les dents depuis la 4.30, et personne n'y est arrivé. On n'a pas (je crois) de pointeur ou de DC ou de quoi que ce soit sur la texture d'un material, pas de point d'entrée dans SetMeshData, donc c'est un peu compliqué...

Re: problème avec les vertices et leur couleur!!

Publié : mer. 15/sept./2010 13:54
par Le Soldat Inconnu
Si j'ai tous suivis et de mémoire, textureoutput() doit revenir. il y a un soucis avec pour le moment et la fonction a été retiré.

Re: problème avec les vertices et leur couleur!!

Publié : mer. 15/sept./2010 17:24
par G-Rom
Le Soldat Inconnu a écrit :Si j'ai tous suivis et de mémoire, textureoutput() doit revenir. il y a un soucis avec pour le moment et la fonction a été retiré.
Exact , et la manière de créer les mesh devrait changé aussi.