Page 1 sur 1

Coquillage 3D

Publié : mar. 02/mai/2006 19:05
par comtois
C'est pas aussi joli que l'original , mais c'est quand même un coquillage ,et que personne ne s'avise de me dire que ça lui fait penser à autre chose :)

Code : Tout sélectionner

;Comtois 02/05/06
;PB4.0 Beta 11


Resultat = MessageRequester("Coquillage 3D","Full Screen ?",#PB_MessageRequester_YesNo)
If Resultat = 6     
  FullScreen=1
Else           
  FullScreen=0
EndIf

;- Initialisation
If InitEngine3D() = 0
   MessageRequester( "Erreur" , "Impossible d'initialiser la 3D , vérifiez la présence de engine3D.dll" , 0 )
   End
EndIf
   
If InitSprite() = 0 Or InitKeyboard() = 0
   MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
   End
EndIf


If Fullscreen
  OpenScreen(800,600,32,"Coquillage 3D")
Else
  OpenWindow(0,0, 0, 800 , 600 ,"Coquillage 3D",#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),0,0, 800 , 600,0,0,0)
EndIf

#E = 2.71828182

Global Angle.f,Pas.f, CameraMode.l
Global *VBuffer,*IBuffer
Global meridien.l

meridien=30
Structure s_Vecteur
   x.f
   y.f
   z.f
EndStructure

Structure Vertex
   px.f
   py.f
   pz.f
   nx.f
   ny.f
   nz.f
   co.l
   U.f
   V.f
EndStructure

Structure FTriangle
   f1.w
   f2.w
   f3.w
EndStructure


Procedure.f Exp(value.f)
  ProcedureReturn Pow(#E, value)
EndProcedure

Macro CX(p1,p2)
 exp(p1/k)*Cos(p1)*(1+b*Cos(p2))
EndMacro
Macro   CY(p1,p2)
exp(p1/k)*Sin(p1)*(1+b*Cos(p2))
EndMacro
Macro CZ(p1,p2)
;exp(p1/k)*(k+b*Sin(p2))
exp(p1/k)*(1+b*Sin(p2))
EndMacro

Macro SOUSTRACTION_VECTEUR(V, V1, V2)
   V\x = V1\x - V2\x
     V\y = V1\y - V2\y
     V\z = V1\z - V2\z
EndMacro


Macro vcross(N, x1, y1, z1, x2, y2, z2)
   N\x = (((y1) * (z2)) - ((z1) * (y2)))
   N\y = (((z1) * (x2)) - ((x1) * (z2)))
   N\z = (((x1) * (y2)) - ((y1) * (x2)))
EndMacro
Procedure CreateMeshCoquillage()
;http://aesculier.chez-alice.fr/fichiersPovray/coquillages/coquillages.html

;A arranger , j'ai juste recopié pour tester.


; equation - Coquillage

;x=exp(p1/k)*Cos(p1)*(1+b*Cos(p2))
;y=exp(p1/k)*Sin(p1)*(1+b*Cos(p2))
;z=exp(p1/k)*(1+b*Sin(p2))
;Peut s'appliquer à toute surface paramétrique en mettant les
;bonnes formules dans CX, CY, CZ
 
   ;Coq 1
  ; k       = 25       ;  coq1 : 25    ; coq2 : 10;
  ; b.f     = 5        ;  coq1 : 5     ; coq2 : 0.49268
  ; umin.f  = -90      ;  coq1 : -90   ; coq2 : -34           
  ; umax.f  = -26.7    ;  coq1 : -26.7 ; coq2 : 4       
  ; NbSommet = 23000   ; A recalculer avec plus de précision !
  ; NbTriangle = 11600 * 2; Idem
   ; Coq 2
   k       = 10       ;  coq1 : 25    ; coq2 : 10;
   b.f     = 0.49268  ;  coq1 : 5     ; coq2 : 0.49268
   umin.f  = -34      ;  coq1 : -90   ; coq2 : -34           
   umax.f  = -4       ;  coq1 : -26.7 ; coq2 : 4
   NbSommet = 25000   ; A recalculer avec plus de précision !
   NbTriangle = 12500 * 2 ; Idem
     
     
   vmin.f  = 0        ;
   vmax.f  =  6.3     ;
   uiter.f = 140      ;  nombre de pas en u
   viter.f = 40       ;  nombre de pas en v


   iu.f    = (umax-umin)/uiter ;   //increment par pas
   iv.f    = (vmax-vmin)/viter ;

   Define.f uu, vv
   
   Define.f x1, y1, z1
   Define.f x2, y2, z2
   Define.f x3, y3, z3
   Define.f x4, y4, z4
   
   Define.f nx1, ny1, nz1
   Define.f nx2, ny2, nz2
   Define.f nx3, ny3, nz3
   Define.f nx4, ny4, nz4

   Define.s_Vecteur n1, n2, n3, n4, n5, n6, n7, n8, n9   
   Define.s_Vecteur vn1, vn2, vn3, vn4
   

   
   *VBuffer = AllocateMemory(SizeOf(Vertex) * NbSommet)
   *IBuffer = AllocateMemory(SizeOf(FTriangle) * NbTriangle)
   *PtrV.Vertex = *Vbuffer
   *PtrF.FTriangle = *IBuffer
   uu = umin   
   p = 0
   ;Coul = Random($00FFFF) + $FF0000
   Coul = $12143F   
   
   While (uu<=umax)                     
      vv = vmin
      While (vv<=vmax)                     
         ;POINTS     
         x1=CX(uu,vv)
         y1=CY(uu,vv)
         z1=CZ(uu,vv)
         uu=uu+iu   
         x2=CX(uu,vv)
         y2=CY(uu,vv)
         z2=CZ(uu,vv)           
         vv=vv+iv
         x3=CX(uu,vv)
         y3=CY(uu,vv)
         z3=CZ(uu,vv)
         uu=uu-iu
         x4=CX(uu,vv)
         y4=CY(uu,vv)
         z4=CZ(uu,vv)
         vv=vv-iv
         ;NORMALS                 
         uu=uu+2*iu
         nx1=CX(uu,vv)
         ny1=CY(uu,vv)
         nz1=CZ(uu,vv)
         uu=uu-2*iu
         vv=vv+2*iv
         nx2=CX(uu,vv)
         ny2=CY(uu,vv)
         nz2=CZ(uu,vv)
         vv=vv-2*iv
         uu=uu-iu
         nx3=CX(uu,vv)
         ny3=CY(uu,vv)
         nz3=CZ(uu,vv)
         uu=uu+iu
         vv=vv-iv
         nx4=CX(uu,vv)
         ny4=CY(uu,vv)
         nz4=CZ(uu,vv)
         vv=vv+iv
         vcross(n1, nx2-x4, ny2-y4, nz2-z4, nx1-x2, ny1-y2, nz1-z2)
         vcross(n2,  x4-x3,  y4-y3,  z4-z3, nx2-x4, ny2-y4, nz2-z4)
         vcross(n3, nx3-x1, ny3-y1, nz3-z1, nx2-x4, ny2-y4, nz2-z4)
         vcross(n4,  x3-x2,  y3-y2,  z3-z2, nx1-x2, ny1-y2, nz1-z2)
         vcross(n5,  x1-x2,  y1-y2,  z1-z2,  x3-x2,  y3-y2,  z3-z2)
         vcross(n6, nx3-x1, ny3-y1, nz3-z1,  x4-x1,  y4-y1,  z4-z1)
         vcross(n7, nx1-x2, ny1-y2, nz1-z2, nx4-x1, ny4-y1, nz4-z1)
         vcross(n8, nx4-x1, ny4-y1, nz4-z1,  x1-x2,  y1-y2,  z1-z2)
         vcross(n9, nx4-x1, ny4-y1, nz4-z1, nx3-x1, ny3-y1, nz3-z1)
         
         
         vn1\x = n5\x+n6\x+n8\x+n9\x   
         vn1\y = n5\y+n6\y+n8\y+n9\y
         vn1\z = n5\z+n6\z+n8\z+n9\z
         
         vn2\x = n4\x+n5\x+n7\x+n8\x   
         vn2\y = n4\y+n5\y+n7\y+n8\y
         vn2\z = n4\z+n5\z+n7\z+n8\z
           
         vn3\x = n1\x+n2\x+n4\x+n5\x   
         vn3\y = n1\y+n2\y+n4\y+n5\y
         vn3\z = n1\z+n2\z+n4\z+n5\z
         
         vn4\x = n2\x+n3\x+n5\x+n6\x   
         vn4\y = n2\y+n3\y+n5\y+n6\y
         vn4\z = n2\z+n3\z+n5\z+n6\z
         
         
         *PtrV\px = x1
         *PtrV\py = y1
         *PtrV\pz = z1
         *PtrV\nx = vn1\x
         *PtrV\ny = vn1\y
         *PtrV\nz = vn1\z
         *PtrV\co = Coul
         *PtrV\u = 0
         *PtrV\v = 0
         *PtrV + SizeOf(Vertex)
         
           
         *PtrV\px = x2
         *PtrV\py = y2
         *PtrV\pz = z2
         *PtrV\nx = vn2\x
         *PtrV\ny = vn2\y
         *PtrV\nz = vn2\z
         *PtrV\co = Coul
         *PtrV\u = 1
         *PtrV\v = 0
         *PtrV + SizeOf(Vertex)
 
         
         *PtrV\px = x3
         *PtrV\py = y3
         *PtrV\pz = z3
         *PtrV\nx = vn3\x
         *PtrV\ny = vn3\y
         *PtrV\nz = vn3\z
         *PtrV\co = Coul
         *PtrV\u = 1
         *PtrV\v = 1
         *PtrV + SizeOf(Vertex)
 
                   
         *PtrV\px = x4
         *PtrV\py = y4
         *PtrV\pz = z4
         *PtrV\nx = vn4\x
         *PtrV\ny = vn4\y
         *PtrV\nz = vn4\z
         *PtrV\co = Coul
         *PtrV\u = 0
         *PtrV\v = 1
         *PtrV + SizeOf(Vertex)   
       
         ;TRIANGLES     
         *PtrF\f1 = p          ; p1
         *PtrF\f2 = p + 1      ; p2
         *PtrF\f3 = p + 2      ; p3
         *PtrF + SizeOf(FTriangle)
         *PtrF\f1 = p          ; p1
         *PtrF\f2 = p + 2      ; p3
         *PtrF\f3 = p + 3      ; p4
         *PtrF + SizeOf(FTriangle)

         *PtrF\f3 = p          ; p1
         *PtrF\f2 = p + 1      ; p2
         *PtrF\f1 = p + 2      ; p3
         *PtrF + SizeOf(FTriangle)
         *PtrF\f3 = p          ; p1
         *PtrF\f2 = p + 2      ; p3
         *PtrF\f1 = p + 3      ; p4
         *PtrF + SizeOf(FTriangle)
         
         p + 4

         vv = vv+iv
      Wend                 
      uu = uu+iu
   Wend   
   
     
   If CreateMesh(0,100)
      Flag = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
      SetMeshData(0,Flag         ,*VBuffer,NbSommet)
      SetMeshData(0,#PB_Mesh_Face,*IBuffer,NbTriangle)
      ProcedureReturn 1
   Else
      ProcedureReturn 0   
   EndIf
   
EndProcedure   


;-Mesh
;CreateMeshCone(meridien,2,2,0)
CreateMeshCoquillage()

;-Texture
CreateTexture(0,128, 128)
StartDrawing(TextureOutput(0))
  Box(0, 0, 128, 128, $FFFFFF)
StopDrawing()

;-Material
CreateMaterial(0,TextureID(0))
MaterialAmbientColor(0,-1)

;-Entity
CreateEntity(0,MeshID(0),MaterialID(0))
ScaleEntity(0,120,120,120)

;-Camera
CreateCamera(0, 0, 0 , 100 , 100)
MoveCamera(0,0,0,-400)
CameraLookAt(0,EntityX(0),EntityY(0),EntityZ(0))


;-Light
AmbientColor(RGB(205,205,205))
CreateLight(0,RGB(155,155,55),EntityX(0)+150,EntityY(0),EntityZ(0))
;CreateLight(1,RGB(55,255,255),EntityX(0)-150,EntityY(0),EntityZ(0))
;CreateLight(2,RGB(255,55,255),EntityX(0),EntityY(0)+150,EntityZ(0))
;CreateLight(3,RGB(255,255,55),EntityX(0),EntityY(0)-150,EntityZ(0))
pas = 0.8
Repeat
   ;ClearScreen(0)
   If fullscreen = 0
      While WindowEvent() : Wend
   EndIf
   Angle + Pas
   RotateEntity(0,angle,angle/2,-Angle)

   If ExamineKeyboard()
     If KeyboardReleased(#PB_Key_F1)
       CameraMode=1-CameraMode
       CameraRenderMode(0,CameraMode)
     EndIf
   EndIf
  RenderWorld()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Publié : mar. 02/mai/2006 19:11
par comtois
Et l'autre coquillage

Code : Tout sélectionner

;Comtois 02/05/06
;PB4.0 Beta 11


Resultat = MessageRequester("Coquillage 3D","Full Screen ?",#PB_MessageRequester_YesNo)
If Resultat = 6     
  FullScreen=1
Else           
  FullScreen=0
EndIf

;- Initialisation
If InitEngine3D() = 0
   MessageRequester( "Erreur" , "Impossible d'initialiser la 3D , vérifiez la présence de engine3D.dll" , 0 )
   End
EndIf
   
If InitSprite() = 0 Or InitKeyboard() = 0
   MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
   End
EndIf


If Fullscreen 
  OpenScreen(800,600,32,"Coquillage 3D")
Else
  OpenWindow(0,0, 0, 800 , 600 ,"Coquillage 3D",#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),0,0, 800 , 600,0,0,0)
EndIf

#E = 2.71828182

Global Angle.f,Pas.f, CameraMode.l
Global *VBuffer,*IBuffer

Structure s_Vecteur
   x.f
   y.f
   z.f
EndStructure

Structure Vertex
   px.f
   py.f
   pz.f
   nx.f
   ny.f
   nz.f
   co.l
   U.f
   V.f
EndStructure

Structure FTriangle
   f1.w
   f2.w
   f3.w
EndStructure


Procedure.f Exp(value.f)
  ProcedureReturn Pow(#E, value)
EndProcedure

Macro CX(p1,p2)
 exp(p1/k)*Cos(p1)*(1+b*Cos(p2)) 
EndMacro  
Macro   CY(p1,p2)
exp(p1/k)*Sin(p1)*(1+b*Cos(p2)) 
EndMacro 
Macro CZ(p1,p2)
exp(p1/k)*(k+b*Sin(p2)) 
;exp(p1/k)*(1+b*Sin(p2))  
EndMacro 

Macro SOUSTRACTION_VECTEUR(V, V1, V2)
   V\x = V1\x - V2\x
  	V\y = V1\y - V2\y
  	V\z = V1\z - V2\z
EndMacro 


Macro vcross(N, x1, y1, z1, x2, y2, z2)
	N\x = (((y1) * (z2)) - ((z1) * (y2)))
   N\y = (((z1) * (x2)) - ((x1) * (z2)))
   N\z = (((x1) * (y2)) - ((y1) * (x2)))
EndMacro
Procedure CreateMeshCoquillage()
;http://aesculier.chez-alice.fr/fichiersPovray/coquillages/coquillages.html

;A arranger , j'ai juste recopié pour tester.


; equation - Coquillage 

;x=exp(p1/k)*Cos(p1)*(1+b*Cos(p2))
;y=exp(p1/k)*Sin(p1)*(1+b*Cos(p2))
;z=exp(p1/k)*(1+b*Sin(p2)) 

;Peut s'appliquer à toute surface paramétrique en mettant les 
;bonnes formules dans CX, CY, CZ
 
   ;Coq 1
   k       = 25       ;  coq1 : 25    ; coq2 : 10;
   b.f     = 5        ;  coq1 : 5     ; coq2 : 0.49268 
   umin.f  = -90      ;  coq1 : -90   ; coq2 : -34           
   umax.f  = -26.7    ;  coq1 : -26.7 ; coq2 : 4       
   NbSommet = 26000   ; A recalculer avec plus de précision !
   NbTriangle = NbSommet ; Idem 
  
   ; Coq 2
;    k       = 10       ;  coq1 : 25    ; coq2 : 10;
;    b.f     = 0.49268  ;  coq1 : 5     ; coq2 : 0.49268 
;    umin.f  = -34      ;  coq1 : -90   ; coq2 : -34           
;    umax.f  = -4       ;  coq1 : -26.7 ; coq2 : 4 
;    NbSommet = 25000   ; A recalculer avec plus de précision !
;    NbTriangle = 12500 ; Idem
    
    
    
    ;Commun aux deux        
    vmin.f  = 0        ; 
    vmax.f  =  6.3     ;
    uiter.f = 150      ;  nombre de pas en u
    viter.f = 40       ;  nombre de pas en v
 

   iu.f    = (umax-umin)/uiter ;   //increment par pas
   iv.f    = (vmax-vmin)/viter ;

   Define.f uu, vv
   
   Define.f x1, y1, z1
   Define.f x2, y2, z2
   Define.f x3, y3, z3
   Define.f x4, y4, z4
   
   Define.f nx1, ny1, nz1
   Define.f nx2, ny2, nz2
   Define.f nx3, ny3, nz3
   Define.f nx4, ny4, nz4

   Define.s_Vecteur n1, n2, n3, n4, n5, n6, n7, n8, n9   
   Define.s_Vecteur vn1, vn2, vn3, vn4
   

   
   *VBuffer = AllocateMemory(SizeOf(Vertex) * NbSommet)
   *IBuffer = AllocateMemory(SizeOf(FTriangle) * NbTriangle)
   *PtrV.Vertex = *Vbuffer
   *PtrF.FTriangle = *IBuffer
   uu = umin   
   p = 0 
   Coul = Random($00FFFF) + $FF0000
   While (uu<=umax)                     
      vv = vmin
      While (vv<=vmax)                     
         ;POINTS      
         x1=CX(uu,vv)
         y1=CY(uu,vv) 
         z1=CZ(uu,vv) 
         uu=uu+iu    
         x2=CX(uu,vv)
         y2=CY(uu,vv)
         z2=CZ(uu,vv)            
         vv=vv+iv 
         x3=CX(uu,vv)
         y3=CY(uu,vv)
         z3=CZ(uu,vv)
         uu=uu-iu 
         x4=CX(uu,vv)
         y4=CY(uu,vv)
         z4=CZ(uu,vv) 
         vv=vv-iv
         ;NORMALS                  
         uu=uu+2*iu 
         nx1=CX(uu,vv)
         ny1=CY(uu,vv)
         nz1=CZ(uu,vv)
         uu=uu-2*iu 
         vv=vv+2*iv
         nx2=CX(uu,vv) 
         ny2=CY(uu,vv) 
         nz2=CZ(uu,vv) 
         vv=vv-2*iv 
         uu=uu-iu 
         nx3=CX(uu,vv)
         ny3=CY(uu,vv)
         nz3=CZ(uu,vv)
         uu=uu+iu 
         vv=vv-iv 
         nx4=CX(uu,vv)
         ny4=CY(uu,vv)
         nz4=CZ(uu,vv)
         vv=vv+iv
         vcross(n1, nx2-x4, ny2-y4, nz2-z4, nx1-x2, ny1-y2, nz1-z2)
         vcross(n2,  x4-x3,  y4-y3,  z4-z3, nx2-x4, ny2-y4, nz2-z4) 
         vcross(n3, nx3-x1, ny3-y1, nz3-z1, nx2-x4, ny2-y4, nz2-z4)
         vcross(n4,  x3-x2,  y3-y2,  z3-z2, nx1-x2, ny1-y2, nz1-z2) 
         vcross(n5,  x1-x2,  y1-y2,  z1-z2,  x3-x2,  y3-y2,  z3-z2)
         vcross(n6, nx3-x1, ny3-y1, nz3-z1,  x4-x1,  y4-y1,  z4-z1)
         vcross(n7, nx1-x2, ny1-y2, nz1-z2, nx4-x1, ny4-y1, nz4-z1)
         vcross(n8, nx4-x1, ny4-y1, nz4-z1,  x1-x2,  y1-y2,  z1-z2) 
         vcross(n9, nx4-x1, ny4-y1, nz4-z1, nx3-x1, ny3-y1, nz3-z1)  
         
         
         vn1\x = n5\x+n6\x+n8\x+n9\x    
         vn1\y = n5\y+n6\y+n8\y+n9\y
         vn1\z = n5\z+n6\z+n8\z+n9\z
         
         vn2\x = n4\x+n5\x+n7\x+n8\x    
         vn2\y = n4\y+n5\y+n7\y+n8\y
         vn2\z = n4\z+n5\z+n7\z+n8\z
            
         vn3\x = n1\x+n2\x+n4\x+n5\x    
         vn3\y = n1\y+n2\y+n4\y+n5\y
         vn3\z = n1\z+n2\z+n4\z+n5\z
         
         vn4\x = n2\x+n3\x+n5\x+n6\x    
         vn4\y = n2\y+n3\y+n5\y+n6\y
         vn4\z = n2\z+n3\z+n5\z+n6\z
         
         
         *PtrV\px = x1
         *PtrV\py = y1
         *PtrV\pz = z1
         *PtrV\nx = vn1\x
         *PtrV\ny = vn1\y
         *PtrV\nz = vn1\z
         *PtrV\co = Coul
         *PtrV\u = 0
         *PtrV\v = 0
         *PtrV + SizeOf(Vertex)
         
            
         *PtrV\px = x2
         *PtrV\py = y2
         *PtrV\pz = z2
         *PtrV\nx = vn2\x
         *PtrV\ny = vn2\y
         *PtrV\nz = vn2\z
         *PtrV\co = Coul
         *PtrV\u = 1
         *PtrV\v = 0
         *PtrV + SizeOf(Vertex)
  
         
         *PtrV\px = x3
         *PtrV\py = y3
         *PtrV\pz = z3
         *PtrV\nx = vn3\x
         *PtrV\ny = vn3\y
         *PtrV\nz = vn3\z
         *PtrV\co = Coul
         *PtrV\u = 1
         *PtrV\v = 1
         *PtrV + SizeOf(Vertex)
 
                    
         *PtrV\px = x4
         *PtrV\py = y4
         *PtrV\pz = z4
         *PtrV\nx = vn4\x
         *PtrV\ny = vn4\y
         *PtrV\nz = vn4\z
         *PtrV\co = Coul
         *PtrV\u = 0
         *PtrV\v = 1
         *PtrV + SizeOf(Vertex)    
      
   
         ;TRIANGLES      
         *PtrF\f1 = p          ; p1
         *PtrF\f2 = p + 1      ; p2
         *PtrF\f3 = p + 2      ; p3
         *PtrF + SizeOf(FTriangle)
         *PtrF\f1 = p          ; p1
         *PtrF\f2 = p + 2      ; p3
         *PtrF\f3 = p + 3      ; p4
         *PtrF + SizeOf(FTriangle)
         
         *PtrF\f3 = p          ; p1
         *PtrF\f2 = p + 1      ; p2
         *PtrF\f1 = p + 2      ; p3
         *PtrF + SizeOf(FTriangle)
         *PtrF\f3 = p          ; p1
         *PtrF\f2 = p + 2      ; p3
         *PtrF\f1 = p + 3      ; p4
         *PtrF + SizeOf(FTriangle)
         p + 4

         vv = vv+iv
      Wend                 
      uu = uu+iu 
   Wend    
   
      
   If CreateMesh(0,100)
      Flag = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color 
      SetMeshData(0,Flag         ,*VBuffer,NbSommet)
      SetMeshData(0,#PB_Mesh_Face,*IBuffer,NbTriangle)
      ProcedureReturn 1
   Else
      ProcedureReturn 0   
   EndIf
   
EndProcedure   


;-Mesh
;CreateMeshCone(meridien,2,2,0)
CreateMeshCoquillage()

;-Texture
CreateTexture(0,128, 128)
StartDrawing(TextureOutput(0))
  Box(0, 0, 128, 128, $FFFFFF)
StopDrawing() 

;-Material
CreateMaterial(0,TextureID(0))
MaterialAmbientColor(0,-1) 

;-Entity
CreateEntity(0,MeshID(0),MaterialID(0))
ScaleEntity(0,15,15,15)

;-Camera
CreateCamera(0, 0, 0 , 100 , 100)
MoveCamera(0,0,0,-400)
CameraLookAt(0,EntityX(0),EntityY(0),EntityZ(0))


;-Light
AmbientColor(RGB(205,205,205))
CreateLight(0,RGB(155,155,55),EntityX(0)+150,EntityY(0),EntityZ(0))
;CreateLight(1,RGB(55,255,255),EntityX(0)-150,EntityY(0),EntityZ(0))
;CreateLight(2,RGB(255,55,255),EntityX(0),EntityY(0)+150,EntityZ(0))
;CreateLight(3,RGB(255,255,55),EntityX(0),EntityY(0)-150,EntityZ(0))
pas = 0.8
Repeat
   ;ClearScreen(0)
   If fullscreen = 0
      While WindowEvent() : Wend
   EndIf 
   Angle + Pas
   RotateEntity(0,angle,angle/2,-Angle)

   If ExamineKeyboard()
     If KeyboardReleased(#PB_Key_F1)
       CameraMode=1-CameraMode
       CameraRenderMode(0,CameraMode)
     EndIf
   EndIf
  RenderWorld()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) 

Publié : mar. 02/mai/2006 19:14
par Dr. Dri
Ca me fait penser à autre chose ^^
(ah nan fallait pas le dire =)

On dirait une glace à l'italienne sans le cône ^^

Dri

Publié : mar. 02/mai/2006 19:27
par comtois
oui , c'est aussi à ça que je pensais :lol:

Publié : mar. 02/mai/2006 19:36
par Dr. Dri
ca ressemble aussi aux cacas dans docteur slump ^^
(tres bonne BD que je recommande à tous ceux qui aiment l'humour décalé)
Image

Dri

Publié : mar. 02/mai/2006 20:03
par Droopy
Trop fort Comtois

Et pour Dr Slump +1

Publié : mar. 02/mai/2006 20:28
par Anonyme
Exelent Comtois !
En revanche , le deuxième coquillage me faisait pensé à un jouer pour adultes :P

Publié : mar. 02/mai/2006 20:42
par Sehka
Salut Comtois 8)
Très mignon ton coquillage, cela donne envie d'aller à la plage...
Bon et bien maintenant faut que tu rajoutes un peu de sable et de l'eau :lol:

Publié : mar. 02/mai/2006 20:43
par Frenchy Pilou
Y a quand même un soucis :)
La surface "interne" n'est point prise en compte, ce qui fait que quand celle-ci passe devant l'oeil du spectateur il y a du "vide" :)
Noir sur noir il n'y a plus d'espoir :D

Essayez Chaoscope http://www.btinternet.com/~ndesprez/
Les atracteurs étranges créent des formes incroyables en volume
Seulement 3 touches
F3 Débute la recherche
F4 Calcul
F5 Stop
et la Souris Zoom molette
Rotate "clic gauche et move"
Move Shift Left "clic droit et move"
Recherche de la bonne position temps réel
Un must !!!


ou http://www.apophysis.org/
Ce sont des "flammes" fractales parmis les plus belles que l'on puisse réaliser!
Charger la dernière Béta, ne pas se fier pas à la prévisualisation, car quand on demande le rendu cela cartonne !
F7 pour les variations

C'est un univers à lui tout seul !

On peux bricoler ses propres scripts mais il y a déjà de quoi faire
Tutorials : http://www.apophysis.org/tutorials/index.html

Sinon il y a sur Deviant Art par exemple une section spéciale dédiée
http://apophysis.deviantart.com/

Publié : mar. 02/mai/2006 20:51
par comtois
Frenchy Pilou a écrit :Y a quand même un soucis :)
La surface "interne" n'est point prise en compte, ce qui fait que quand celle-ci passe devant l'oeil du spectateur il y a du "vide" :)
Noir sur noir il n'y a plus d'espoir :D
oui j'ai vu , si tu trouves comment améliorer le truc tu gagnes une poignée de sable chaud :)

Publié : mar. 02/mai/2006 20:56
par comtois
Sehka a écrit :Salut Comtois 8)
Très mignon ton coquillage, cela donne envie d'aller à la plage...
Bon et bien maintenant faut que tu rajoutes un peu de sable et de l'eau :lol:
j'ai pas encore tout compris comment fonctionnait povray, c'est fou ce qu'on peut faire en quelques lignes avec ce logiciel !!

Je vais chercher des infos sur les textures, elle m'épate la texture du coquillage qu'il y a sur le site où j'ai trouvé ce code !

Publié : mar. 02/mai/2006 21:00
par Frenchy Pilou
La critique est aisée, mais l'art est difficile ;)

Publié : mar. 02/mai/2006 21:11
par comtois
En fait il suffit de doubler les triangles, mais je cherchais une solution plus économique, et les doubler qu'à l'extrémité , ailleurs c'est pas utile.

Pour voir ce que ça donne il suffit de multiplier par 2 NbTriangle

et d'ajouter ça

Code : Tout sélectionner

         *PtrF\f3 = p          ; p1
         *PtrF\f2 = p + 1      ; p2
         *PtrF\f1 = p + 2      ; p3
         *PtrF + SizeOf(FTriangle)
         *PtrF\f3 = p          ; p1
         *PtrF\f2 = p + 2      ; p3
         *PtrF\f1 = p + 3      ; p4
         *PtrF + SizeOf(FTriangle)
à la suite de ce code

Code : Tout sélectionner

         ;TRIANGLES     
         *PtrF\f1 = p          ; p1
         *PtrF\f2 = p + 1      ; p2
         *PtrF\f3 = p + 2      ; p3
         *PtrF + SizeOf(FTriangle)
         *PtrF\f1 = p          ; p1
         *PtrF\f2 = p + 2      ; p3
         *PtrF\f3 = p + 3      ; p4
         *PtrF + SizeOf(FTriangle)