Page 1 sur 2

Principe du volume plein **[RESOLUT]**

Publié : sam. 02/mai/2009 22:55
par Fortix
Bonjours,

quelles sont les méthodes pour parvenir à remplir un volume 3D?

Publié : mer. 06/mai/2009 21:53
par Anonyme
tu le perces et tu le rempli d'eau*.

*Eau , on la trouve sous forme de poudre à Auchan ou Carrefour.


===>[]


de quoi parles tu ?

Re: Principe du volume plein

Publié : mer. 06/mai/2009 21:57
par Backup
Fortix a écrit :Bonjours,

quelles sont les méthodes pour parvenir à remplir un volume 3D?
facile ! un empilement de disk, ou de "pavé"

bref tu prends la base de ta forme, et tu empile !!
mais en principe en 3D on recherche le moins de polygones non ?

Publié : mer. 06/mai/2009 23:02
par Frenchy Pilou
Pour la 3D artistique "volumique"
il y a 2 grandes écoles : la myriade de polygones que l'on subdivise à outrance (Zbrush atteint le milliard de polygones en Haute Qualité !
(image ci-dessous) by Marc Boulay

Image
et sinon carrément le "voxel" c'est à dire le "grain" de matière ultime que l'on aglutine! (voir lien ci-dessous)
3D COAT :Galerie du Voxel!

Publié : jeu. 07/mai/2009 10:07
par Fortix
@Cpl.Bator : :lol:

@Dobro : donc une forme de base avec 6 facettes (pour le cas d'un pavé)?

@Frenchy Pilou : la technique I.R.M quoi?

Publié : jeu. 07/mai/2009 10:29
par Backup
Fortix a écrit : @Dobro : donc une forme de base avec 6 facettes (pour le cas d'un pavé)?
ben en fait je sais pas trop , faut plutot raisonner en points
mais en fait je ne comprends pas le but, vu qu'en 3D on cherche plutot a "évider" les volumes, pour gagner de la place en Kilo octets .. et en facettes

chercher a faire le contraire, n'a peut etre pas de sens ...

dans les jeux video par exemple, on met une collision sur un volume
celui ci peut etre creux, on s'en fout, le joueur, ne rentrera pas dedans !

(en principe car sur les cartes de certains jeux comme Warrock, il existe des volume ou l'on peut entrer dedans et tirer sur tout ce qui passe a porté... :lol: quelques bugs qui permettent de rentrer dans la matrice ;) )

Publié : jeu. 07/mai/2009 10:49
par Fortix
mon projet conciste à créer un espace colorimétrique 3D et non pas 2D

pourquoi pas 2D?, parce qu'il implique de masse de calculs très complexes et plus une valeur passe de fonction en fonction et plus elle retourne des résultats éronnés;

donc mon objectif est de créer un concept nouveau c'est à dire créer un system colorimétrique 3D encrein de simplicité pour le traitement d'image 2D; colorimétrique 3D s'aparentera à un losange à 5 côtés
triangle de la base = R V B (50%); centre égale gris
côté du bas= noir
côté du haut= blanc

et du noir au blanc on obtiendra un niveau de gris
et du Rouge (par exemple) au Gris on obtiendra une désaturation!!

Publié : jeu. 07/mai/2009 11:29
par Anonyme
cherche du coté des voxels.

Publié : jeu. 07/mai/2009 11:50
par Frenchy Pilou
L'irm : site assez complet ou la volumétrie dans le domaine médical (c'est sûrement eux qui sont le plus avancés sur le sujet ;)

Publié : jeu. 07/mai/2009 12:12
par Fortix
Très intéressant :lol:

Publié : sam. 09/mai/2009 23:03
par Fortix
J'ais mis sur piéd quelque chose de très chouette :D :D

à essayer :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 InitPalette() And InitSprite() And InitSprite3D()
    UseJPEGImageDecoder() 
    UsePNGImageDecoder() 
    UseTIFFImageDecoder() 
    UseTGAImageDecoder()
Else
    MessageRequester("Erreur","Les éléments indispensable pour la décoration 3D sont inaccessibles!")
        
    End
EndIf
;}

Procedure Open_Window_0(LargW,HautW,LargS,HautS)

    If OpenWindow(0, 0, 0, LargW,HautW, "",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
        If OpenWindowedScreen(WindowID(0), 0, 0, LargS,HautS, 0, 0, 0)        
            ProcedureReturn #True        
        EndIf
    EndIf
    
EndProcedure    

; Procedure LaserLine(IDLaser,index1,index2,teinteIndex1,teinteIndex2,x1,y1,z1,x2,y2,z2)
; 
;     Structure spoint
;         Position.f[3]
;         Couleur.l
;     EndStructure
; 
;     Structure sline
;         Index.w[3]
;     EndStructure
; 
;     Protected Dim Sommets.spoint(2)
;     Protected Dim Triangles.sline(0)
; 
;     CreateMesh(IDLaser, 0)   
;                 
;         Sommets(0)\Position[0] = x1
;         Sommets(0)\Position[1] = y1
;         Sommets(0)\Position[2] = z1
;         Sommets(0)\Couleur     = teinteIndex1
;                         
;         Sommets(1)\Position[0] = x2
;         Sommets(1)\Position[1] = y2
;         Sommets(1)\Position[2] = z2
;         Sommets(1)\Couleur     = teinteIndex2
;                         
;         Triangles(0)\Index[0] = index1 
;         Triangles(0)\Index[1] = index2
;                         
;         Triangles(0)\Index[0] = index2 
;         Triangles(0)\Index[1] = index1
;                      
;         SetMeshData(IDLaser, #PB_Mesh_Vertex | #PB_Mesh_Color, @Sommets(), 2)   
;                         
;         SetMeshData(IDLaser, #PB_Mesh_Face, @Triangles(), 1)                     
;         
; ;-----------------------------------------------------------------------------------------
;     CreateTexture(IDLaser, 64, 64)
;                 StartDrawing(TextureOutput(IDLaser))
;                     Box(0,0, TextureWidth(IDLaser), TextureHeight(IDLaser), RGB(255, 255, 255))
;                 StopDrawing()
;             
;             CreateMaterial(IDLaser, TextureID(IDLaser))
;                 MaterialAmbientColor(IDLaser, #PB_Material_AmbientColors)
;             
;     
;         CreateEntity(IDLaser, MeshID(IDLaser), MaterialID(IDLaser))
;              EntityRenderMode(IDLaser, #PB_Entity_Wireframe|#PB_Entity_CastShadow)
; ;----------------------------------------------------------------------------------------- 
;         
;         ProcedureReturn Laser
;         
; EndProcedure


Procedure Triangulation(IDStrip,index1,index2,index3,teinteIndex1,teinteIndex2,teinteIndex3,x1,y1,z1,x2,y2,z2,x3,y3,z3)

    Structure s_Sommet
        Position.f[3]
        Couleur.l
    EndStructure

    Structure s_Triangle
        Index.w[3]
    EndStructure

    Protected Dim Sommets.s_Sommet(3)
    Protected Dim Triangles.s_Triangle(1)
    
    ;ReDim meshNUM.Mesh(IDStrip/4)
    
    CreateMesh(IDStrip, 0)   
                
        Sommets(0)\Position[0] = x1
        Sommets(0)\Position[1] = y1
        Sommets(0)\Position[2] = z1
        Sommets(0)\Couleur     = teinteIndex1
                        
        Sommets(1)\Position[0] = x2
        Sommets(1)\Position[1] = y2
        Sommets(1)\Position[2] = z2
        Sommets(1)\Couleur     = teinteIndex2
        
        Sommets(2)\Position[0] = x3
        Sommets(2)\Position[1] = y3
        Sommets(2)\Position[2] = z3
        Sommets(2)\Couleur     = teinteIndex3
                        
        Triangles(0)\Index[0] = index1 
        Triangles(0)\Index[1] = index2
        Triangles(0)\Index[2] = index3
                     
        SetMeshData(IDStrip, #PB_Mesh_Vertex|#PB_Mesh_Color, @Sommets(), 3)   
                        
        SetMeshData(IDStrip, #PB_Mesh_Face, @Triangles(), 1)                     
       
;-----------------------------------------------------------------------------------------
            CreateTexture(IDStrip, 64, 64)
                StartDrawing(TextureOutput(IDStrip))
                    Box(0,0, TextureWidth(IDStrip), TextureHeight(IDStrip), RGB(255, 255, 255))
                StopDrawing()
            
            CreateMaterial(IDStrip, TextureID(IDStrip))
                MaterialAmbientColor(IDStrip, #PB_Material_AmbientColors)
            
            CreateEntity(IDStrip, MeshID(IDStrip), MaterialID(IDStrip))
                EntityRenderMode(IDStrip, #PB_Entity_CastShadow)           
;----------------------------------------------------------------------------------------- 
        
        ProcedureReturn IDStrip
        
EndProcedure


lW=900
hW=600

Lxs=800
Hys=600

CameraSpeed = 1

If Open_Window_0(lW,hW,lW,hW)
;{ Mesh sol
;-------------------------------------------
    #Mesh = 0
    CreateMesh(#Mesh, 4)
        Options = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate
        
        SetMeshData(#Mesh, Options      , ?Surface, 4)
        SetMeshData(#Mesh, #PB_Mesh_Face, ?Planate, 2)
    
    #TextureSol = 0
    CreateTexture(#TextureSol, 1000, 1000)
        StartDrawing(TextureOutput(#TextureSol))
            Box(0, 0, TextureWidth(#TextureSol), TextureHeight(#TextureSol), RGB(240,250,255))
            
            For i = 0 To TextureHeight(#TextureSol)-1 Step 50
                Line(i, 0, 0, TextureHeight(#TextureSol), RGB(230,240,255))
                Line(0, i, TextureWidth(#TextureSol), 0, RGB(230,240,255))
            Next i
        StopDrawing()
   
    #MatiereSol = 0
    CreateMaterial(#MatiereSol, TextureID(#TextureSol))
       
    #EntitySol = 0
    CreateEntity(#EntitySol, MeshID(#Mesh), MaterialID(#MatiereSol))
        ScaleEntity(#EntitySol, 10000, 0, 10000) 
        EntityLocate(#EntitySol, 0, -10, 0)
;--------------------------------------------------------------------
;}

For r=1 To 40
    Triangulation(r,2,1,0,#Red,#Green,#Blue,76,r,-62,0,r,81,-85,r,-74)
Next 

    CreateCamera(1,0, 0, 100, 100)
    CameraLocate(1, 0, 20, 300)

    Repeat  
        Event     = WaitWindowEvent()   
        WindowID  = EventWindow()   
        GadgetID  = EventGadget()   
        EventType = EventType()
        
        If ExamineKeyboard()        
            If KeyboardPushed(#PB_Key_Left)
                KeyX = -CameraSpeed 
            ElseIf KeyboardPushed(#PB_Key_Right)
                KeyX = CameraSpeed 
            Else
                KeyX = 0
            EndIf
                          
            If KeyboardPushed(#PB_Key_Up)
                KeyY = -CameraSpeed 
            ElseIf KeyboardPushed(#PB_Key_Down)
                KeyY = CameraSpeed 
            Else
                KeyY = 0
            EndIf
            
            If KeyboardPushed(#PB_Key_Escape)
                Close=#True
            EndIf
        EndIf
          
;         If ExamineMouse()
;             MouseX = -(MouseDeltaX()/10)*CameraSpeed/2
;             MouseY = -(MouseDeltaY()/10)*CameraSpeed/2
;         EndIf
        
        ;RotateCamera(1, MouseX, MouseY, RollZ)
        CameraLookAt(1,0,10,0)
        MoveCamera  (1, KeyX, -KeyY, 0)
       
       
       
;         If dn=0
;             LaserLine(10,1,2,$00FF00,$00FF00,14,10,16,37,30,33)
;             dn=1
;         EndIf
        
        RenderWorld()
        
        ;AmbientColor(RGB(128,128,128))
        
        CreateLight(0, RGB(188,190,192), 10, 200, 0)
            
        FlipBuffers()
        
    Until Event = #PB_Event_CloseWindow Or Close
Else
    MessageRequester("Fortix:","Erreur, cette application ne peut pas s'executer sur cet ordinateur!")    
EndIf

End
;





;----------------------------------

;{ Définition du cube
DataSection
  Surface:
  
  Data.f -0.5,0.5,-0.5
  Data.f 0,1,0
  Data.f 0,0

  Data.f 0.5,0.5,-0.5
  Data.f 0,1,0
  Data.f 0,6

  Data.f 0.5,0.5,0.5
  Data.f 0,1,0
  Data.f 6,6

  Data.f -0.5,0.5,0.5
  Data.f 0,1,0
  Data.f 6,0

  Planate:
  Data.w 2,1,0
  Data.w 0,3,2
  
EndDataSection
;}
et on peut faire des formes encore plus complex vous savez :D

Publié : dim. 10/mai/2009 9:35
par Backup
plante sur la ligne 135 ( StartDrawing(TextureOutput(IDStrip))) ;)

Publié : dim. 10/mai/2009 11:08
par Fortix
Bizar, chez moi sa marche correctement, en fait je fonctionne toujours sur la version 4.20 de PB!!

Publié : dim. 10/mai/2009 13:16
par Backup
Fortix a écrit :Bizar, chez moi sa marche correctement, en fait je fonctionne toujours sur la version 4.20 de PB!!
ç'est un truc que je ne comprends d'ailleurs pas trop ...

on est passé en V 4.30 finale , il n'y a pas de raisons de rester en Version 4.XX .....

j comprends qu'on veuille garder la 3.94, parceque c'etait pas du tout pareil et les librairies sont nombreuse sous 3.94

mais depuis la V 4.30 , il n'y a pas de raisons pour ne pas l'adopter ! 8O

d'autant que la V4.40 pointe son nez !!


pour info l'erreur dit : que "TextureOutput(IDStrip)" n'est pas une fonction,un tableau, ou une liste chainée connu !!

si tu utilse une librairie , ben faut le signaler ...

Publié : dim. 10/mai/2009 14:44
par flaith
Normal car lors du passage de la version 4.20 à la version 4.30 :
Removed: CopyTexture(), TextureOutput()
cf : http://www.purebasic.com/news55.php3