Morphing 3D

Généralités sur la programmation 3D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Morphing 3D

Message par comtois »

J'ai tout regroupé

à l'occasion j'ajouterai peut-être d'autres formes.

Code : Tout sélectionner

;Comtois 07/05/06
;PB4.0 Beta 11
;32 formes 3D

;Site intéressant pour choisir une couleur
;http://pourpre.com/chroma/dico.php?typ=alpha

;Pour obtenir d'autres formes
;http://www.mathcurve.com/surfaces/surfaces.shtml

Texte$ = "Morphing 3D"

Resultat = MessageRequester(Texte$,"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
   ExamineDesktops()
   Sx = DesktopWidth(0)
   Sy = DesktopHeight(0)
   Sd = DesktopDepth(0)
  OpenScreen(Sx, Sy,Sd, Texte$)
Else
  OpenWindow(0,0, 0, 800 , 600 ,Texte$,#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),0,0, 800 , 600,0,0,0)
EndIf

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

Global Angle.f,Pas.f, CameraMode.l
Global *VBuffer,*IBuffer
Global b.f, k.f
Global NbSommet, NbTriangle, Forme3D

#E = 2.71828182
#NombreForme3D = 32
Forme3D = 31

NbSommet = 25000
NbTriangle = NbSommet

Global Dim Final.s_Vecteur(NbSommet)
Global Dim Intermediaire.Vertex(NbSommet)
*IBuffer = AllocateMemory(SizeOf(FTriangle) * NbTriangle)

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

Procedure CoordonneesPoint(t,u.f,v.f,*Point.s_Vecteur)
   Select t
      Case 1 ;
         *Point\x = (3 + Cos(u)) * Cos(u)
         *Point\y = (3 + Cos(v)) * Sin(u)
         *Point\z = Sin(v)
                            
      Case 2 ; Astroide
         *Point\x = 4 * Cos(u) * Cos(u) * Cos(u) * Cos(v) * Cos(v) * Cos(v)
         *Point\y = 4 * Sin(u) * Sin(u) * Sin(u) * Cos(v) * Cos(v) * Cos(v)
         *Point\z = 4 * Sin(v) * Sin(v) * Sin(v)   

      Case 3 ; Tore
         *Point\x = (3 + Cos(v)) * Cos(u)
         *Point\y = (3 + Cos(v)) * Sin(u)
         *Point\z = Sin(v)
                 
      Case 4 ; Sphere
         *Point\x = 3 * Cos(u) * Cos(v)
         *Point\y = 3 * Sin(u) * Cos(v)
         *Point\z = 3 * Sin(v)
         
      Case 5 ; Cylindre creux
         *Point\x = 3 * Cos(u) * Cos(u)
         *Point\y = 3 * Cos(u) * Sin(u)
         *Point\z = 3 * Sin(v)
     
      Case 6 ;
         *Point\x = 3 * Cos(v) * Cos(u)
         *Point\y = 3 * Cos(v) * Sin(u)
         *Point\z = 3 * Sin(u)   

      Case 7 ;
         *Point\x = 3 * Cos(v) * Cos(v)
         *Point\y = 3 * Cos(v) * Sin(u)
         *Point\z = 3 * Sin(v)
         
      Case 8 ;
         *Point\x = 3 * Cos(u) * Cos(v)
         *Point\y = 3 * Sin(u) * Sin(v)
         *Point\z = 3 * Sin(u)
     
      Case 9 ;
         *Point\x = 3 * Cos(u) * Cos(v)
         *Point\y = 3 * Sin(u) * Sin(u)
         *Point\z = 3 * Sin(v)
         
      Case 10 ; Plan
         *Point\x = 3 * Cos(u) * Cos(u)
         *Point\y = 3 * Sin(u) * Sin(u)
         *Point\z = 3 * Sin(v)   
                 
      Case 11 ;
         *Point\x = 3 * Sin(u) * Cos(u)
         *Point\y = 3 * Sin(u) * Sin(v)
         *Point\z = 3 * Sin(v)
         
      Case 12 ;
         *Point\x = 3 * Cos(v) * Cos(v)
         *Point\y = 3 * Sin(v) * Sin(u)
         *Point\z = 3 * Sin(v)

      Case 13 ;
         *Point\x = 3 * Cos(u) * Cos(u)
         *Point\y = 3 * Cos(v) * Sin(v)
         *Point\z = 3 * Sin(v)

      Case 14 ; Coquillage
         *Point\x = 3 * (exp(u/k) * Cos(u) * (1 + b * Cos(v)))
         *Point\y = 3 * (exp(u/k) * Sin(u) * (1 + b * Cos(v)))
         *Point\z = 3 * (exp(u/k) * (1 + b * Sin(v)))
         
      Case 15 ; Trompette
         *Point\x = u * Cos(v)
         *Point\y = u * Sin(v)
         *Point\z = 1.0 / u   
         
      Case 16 ; le hasard fait bien les choses
         *Point\x = u * Cos(v)
         *Point\y = u * Sin(v)
         *Point\z = Cos(v) * Sin(u)     

      Case 17 ; Hélicoïde
         *Point\x = u * Cos(v)
         *Point\y = u * Sin(v)
         *Point\z = v
         
      Case 18 ; Hyperboloïde
         *Point\x =  0.05 * Cos(v) / Cos(u)
         *Point\y =  0.05 * Sin(v) / Cos(u)
         *Point\z =  0.05 * Tan(u)
         
      Case 19 ;Coquillage fin
         *Point\x =  0.45 * exp(u/k) * Cos(u) * (1 + b * Cos(v)) 
         *Point\y =  0.45 * exp(u/k) * Sin(u) * (1 + b * Cos(v))
         *Point\z =  0.45 * exp(u/k) * (k + b * Sin(v)) 
         
      Case 20 ;
         *Point\x = (2 + Cos(u)) * Cos(v) 
         *Point\y = (2 + Cos(v)) * Sin(u)
         *Point\z = Sin(v)

      Case 21 ; Disque
         *Point\x = 2 * Sin(v)  
         *Point\y = 2 * Sin(v)
         *Point\z = 3 * Cos(v) * Sin(u)    
         
      Case 22 ; Chapeau
         *Point\x = 3 * Cos(u)*Cos(v)
         *Point\y = 3 * Cos(u)*Sin(v)
         *Point\z = 3 * Pow(Sin(u),8) ; Changez 8 pour accentuer le rebord 

      Case 23 ; 
         *Point\x = 3 * Cos(v)*Cos(u)
         *Point\y = Sin(v)
         *Point\z = v
                  
      Case 24 ; 
         *Point\x = 3 * Pow(Cos(u)*Cos(v),3)
         *Point\y = 3 * Pow(Cos(u)*Sin(v),3)
         *Point\z = 3 * Pow(Sin(u),8)

      Case 25 ; 
         *Point\x = 3 * Pow(Cos(u)*Cos(v),3)
         *Point\y = 18 * Pow(Cos(u)*Sin(u),3)
         *Point\z = 5 * Pow(Sin(u),4)

      Case 26 ; 
         *Point\x = 2.5 * Sin(u)
         *Point\y = 2.5 * Cos(v)
         *Point\z = 3 * Pow(Sin(u),90)  
         
      Case 27 ; 
         *Point\x = 0.15 * exp(v) * Cos(u) 
         *Point\y = 0.15 * exp(v) * Sin(u) 
         *Point\z = 0.6 * Sin(v)    
      
      Case 28 ; 
         *Point\x = 2*Cos(v)+2*Cos(3*v) 
         *Point\y = 2*Sin(v)-2*Sin(3*v)
         *Point\z = Sin(2*u)      
      
      Case 29 ; 
         *Point\x = 2*Cos(v)
         *Point\y = 2*Sin(v)*Sin(u)
         *Point\z = 2*Sin(2*u)    
       
      Case 30 ;
         *Point\x = 2 * Cos(2*u)*Cos(v)
         *Point\y = 3*Sin(v)*Sin(u)
         *Point\z = 4*Sin(u)    
         
      Case 31 ;
         *Point\x = 2 * Cos(2*u)*Cos(v)
         *Point\y = 3 * Sin(v)*Sin(u)
         *Point\z = 3 * Sin(2*u) 
           
     Case 32 ;
         *Point\x = 2 * Pow(Cos(v),3)
         *Point\y = 3 * Sin(v)
         *Point\z = 3 * Sin(2*u)*Sin(v)                                                 
   EndSelect
EndProcedure

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 CalculMesh(No.l)
   Define.l p, pp
   Define.f umin, umax, vmin, vmax, uiter, viter, uu, vv
   Define.f x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4
   Define.f nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4
   Define.s_Vecteur n1, n2, n3, n4, n5, n6, n7, n8, n9   
   Define.s_Vecteur vn1, vn2, vn3, vn4
   Define.s_Vecteur p1, p2, p3, p4
   Define.s_Vecteur np1, np2, np3, np4
   
   DoubleTriangle = 0

   umin.f  = -#PI               
   umax.f  = #PI     
   vmin.f  = -#PI     
   vmax.f  =  #PI     

   
   NbSommet = 24000
   If No = 9 Or No = 10 
      vmin.f  = -#PI/2     
      vmax.f  =  #PI/2    
   ElseIf No = 14 ; Coquillage
      k = 10     
      b = 0.49268
      umin.f  = -34               
      umax.f  = -4   
      vmin.f  = 0        ;
      vmax.f  =  6.3
      DoubleTriangle = 1
      NbSommet = 25000
   ElseIf No = 15 ; Trompette
      umin.f  = #PI/16           
      umax.f  = #PI  
      DoubleTriangle = 1    
   ElseIf No = 17 ; Hélicoïde
      DoubleTriangle = 1  
   ElseIf No = 18  
      vmin.f  = -#PI/2           
      vmax.f  = #PI/2   
   ElseIf  No = 19 ; Coquillage allongé   
      k       = 25       
      b.f     = 5        
      umin.f  = -90          
      umax.f  = -26.7  
      vmin.f  = 0        
      vmax.f  = #PI*2 
      DoubleTriangle = 1
   ElseIf No = 21 ; Disque
      vmin.f  = -#PI/2     
      vmax.f  =  #PI/2   
   ElseIf No = 27
      DoubleTriangle = 1  
   EndIf
   
   
   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 ;   
     
   *PtrF.FTriangle = *IBuffer
   uu = umin   
   p = 0
   pp = 0
   ;Coul = $318CE7
   Coul = Random($FFFFFF)
   While (uu<=umax)                     
      vv = vmin
      While (vv<=vmax)                     
         ;POINTS     
         CoordonneesPoint(No,uu,vv,@p1)
           uu=uu+iu   
         CoordonneesPoint(No,uu,vv,@p2)           
         vv=vv+iv
         CoordonneesPoint(No,uu,vv,@p3)
         uu=uu-iu
         CoordonneesPoint(No,uu,vv,@p4)
         vv=vv-iv
         ;NORMALS                 
         uu=uu+2*iu
         CoordonneesPoint(No,uu,vv,@np1)
         uu=uu-2*iu
         vv=vv+2*iv
         CoordonneesPoint(No,uu,vv,@np2)
         vv=vv-2*iv
         uu=uu-iu
         CoordonneesPoint(No,uu,vv,@np3)
         uu=uu+iu
         vv=vv-iv
         CoordonneesPoint(No,uu,vv,@np4)
         vv=vv+iv
         vcross(n1, np2\x-p4\x, np2\y-p4\y, np2\z-p4\z, np1\x-p2\x, np1\y-p2\y, np1\z-p2\z)
         vcross(n2,  p4\x-p3\x,  p4\y-p3\y,  p4\z-p3\z, np2\x-p4\x, np2\y-p4\y, np2\z-p4\z)
         vcross(n3, np3\x-p1\x, np3\y-p1\y, np3\z-p1\z, np2\x-p4\x, np2\y-p4\y, np2\z-p4\z)
         vcross(n4,  p3\x-p2\x,  p3\y-p2\y,  p3\z-p2\z, np1\x-p2\x, np1\y-p2\y, np1\z-p2\z)
         vcross(n5,  p1\x-p2\x,  p1\y-p2\y,  p1\z-p2\z,  p3\x-p2\x,  p3\y-p2\y,  p3\z-p2\z)
         vcross(n6, np3\x-p1\x, np3\y-p1\y, np3\z-p1\z,  p4\x-p1\x,  p4\y-p1\y,  p4\z-p1\z)
         vcross(n7, np1\x-p2\x, np1\y-p2\y, np1\z-p2\z, np4\x-p1\x, np4\y-p1\y, np4\z-p1\z)
         vcross(n8, np4\x-p1\x, np4\y-p1\y, np4\z-p1\z,  p1\x-p2\x,  p1\y-p2\y,  p1\z-p2\z)
         vcross(n9, np4\x-p1\x, np4\y-p1\y, np4\z-p1\z, np3\x-p1\x, np3\y-p1\y, np3\z-p1\z)
         
         
         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
 
         Final(pp)\x = p1\x
         Final(pp)\y = p1\y
         Final(pp)\z = p1\z
         Intermediaire(pp)\nx = vn1\x
         Intermediaire(pp)\ny = vn1\y
         Intermediaire(pp)\nz = vn1\z
         Intermediaire(pp)\co = Coul
         Intermediaire(pp)\u = 0
         Intermediaire(pp)\v = 0
         pp + 1
       
         Final(pp)\x = p2\x
         Final(pp)\y = p2\y
         Final(pp)\z = p2\z
         Intermediaire(pp)\nx = vn2\x
         Intermediaire(pp)\ny = vn2\y
         Intermediaire(pp)\nz = vn2\z
         Intermediaire(pp)\co = Coul
         Intermediaire(pp)\u = 1
         Intermediaire(pp)\v = 0
         pp + 1
         
         Final(pp)\x = p3\x
         Final(pp)\y = p3\y
         Final(pp)\z = p3\z
         Intermediaire(pp)\nx = vn3\x
         Intermediaire(pp)\ny = vn3\y
         Intermediaire(pp)\nz = vn3\z
         Intermediaire(pp)\co = Coul
         Intermediaire(pp)\u = 1
         Intermediaire(pp)\v = 1
         pp + 1
                   
         Final(pp)\x = p4\x
         Final(pp)\y = p4\y
         Final(pp)\z = p4\z
         Intermediaire(pp)\nx = vn4\x
         Intermediaire(pp)\ny = vn4\y
         Intermediaire(pp)\nz = vn4\z
         Intermediaire(pp)\co = Coul
         Intermediaire(pp)\u = 0
         Intermediaire(pp)\v = 1
         pp + 1
       
         ;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)
         If DoubleTriangle
            NbTriangle = NbSommet
            *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)
         Else
            NbTriangle = NbSommet / 2
         EndIf
     
          p + 4

         vv = vv+iv
      Wend                 
      uu = uu+iu
   Wend   
   
   If IsMesh(0) = 0
      If CreateMesh(0,100)
         Flag = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
         SetMeshData(0,Flag         ,Intermediaire(),NbSommet)
         SetMeshData(0,#PB_Mesh_Face,*IBuffer,NbTriangle)
       EndIf
   EndIf
   SetMeshData(0,#PB_Mesh_Face,*IBuffer,NbTriangle)
   
EndProcedure
Procedure.f  CurveValue(actuelle.f, Cible.f, P.f)
  Define.f Delta, Valeur
 
  Delta = Cible - actuelle
  If P > 1000 : P = 1000 : EndIf
  Valeur = actuelle + (Delta * P / 1000)
  ProcedureReturn Valeur
EndProcedure
 
Procedure Morphing()
   Delta.f = 0.01
   r.f = NbSommet*20
   For i = 0 To NbSommet-1
      ;If Final(i)\x > Intermediaire(i)\px : Intermediaire(i)\px + Delta : EndIf
      ;If Final(i)\x < Intermediaire(i)\px : Intermediaire(i)\px - Delta : EndIf
      ;If Final(i)\y > Intermediaire(i)\py : Intermediaire(i)\py + Delta : EndIf
      ;If Final(i)\y < Intermediaire(i)\py : Intermediaire(i)\py - Delta : EndIf
      ;If Final(i)\z > Intermediaire(i)\pz : Intermediaire(i)\pz + Delta : EndIf
      ;If Final(i)\z < Intermediaire(i)\pz : Intermediaire(i)\pz - Delta : EndIf
     Intermediaire(i)\px = CurveValue(Intermediaire(i)\px, Final(i)\x, 16)
     Intermediaire(i)\py = CurveValue(Intermediaire(i)\py, Final(i)\y, 16)
     Intermediaire(i)\pz = CurveValue(Intermediaire(i)\pz, Final(i)\z, 16)
   Next i
   
   Flag = #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate | #PB_Mesh_Color
   SetMeshData(0,Flag         ,Intermediaire(),NbSommet)
EndProcedure


;-Mesh

CalculMesh(Forme3D)

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

;-Material
CreateMaterial(0,TextureID(0))
MaterialShadingMode(0,#PB_Material_Phong)
MaterialAmbientColor(0,-1)

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

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


;-Light
AmbientColor(RGB(75,75,75))
CreateLight(0,RGB(155,155,155),EntityX(0)+150,EntityY(0),EntityZ(0))

pas = 0.9
Hasard = 0

Repeat
   If fullscreen = 0
      While WindowEvent() : Wend
   EndIf
   
    If Attente > 500
       
       If hasard 
         Forme3D = Random(#NombreForme3D) + 1
       Else
         Forme3D + 1
       EndIf  
       If Forme3D > #NombreForme3D : Forme3D = 1 : EndIf
       CalculMesh(Forme3D)
       Attente = 0
    EndIf   
   
   Morphing()
     
   Attente + 1
   
   Angle + Pas
   RotateEntity(0,angle,angle/2,-Angle)

   If ExamineKeyboard()
     If KeyboardReleased(#PB_Key_F1)
       CameraMode=1-CameraMode
       CameraRenderMode(0,CameraMode)
     ElseIf KeyboardReleased(#PB_Key_F2)
         CameraBackColor(0,0)
     ElseIf KeyboardReleased(#PB_Key_F3)
         CameraBackColor(0,RGB(255,0,0))
     ElseIf KeyboardReleased(#PB_Key_F4)
         CameraBackColor(0,RGB(255,255,0))  
     ElseIf KeyboardReleased(#PB_Key_F5)
         CameraBackColor(0,RGB(0,255,0)) 
     ElseIf KeyboardReleased(#PB_Key_F6)
         CameraBackColor(0,RGB(0,0,255))  
     ElseIf KeyboardReleased(#PB_Key_F7)
         CameraBackColor(0,RGB(0,255,255))    
     ElseIf KeyboardReleased(#PB_Key_F10)    
         Hasard = 1 - Hasard       
     EndIf
   EndIf
  RenderWorld()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Dernière modification par comtois le dim. 07/mai/2006 22:32, modifié 6 fois.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Avec un "fond" étoilé et une musique de Strauss, c'est un remake de 2001 l'Odyssée de l'espace de Kubrick :)

Sinon peut-être que ce programme gratoche (clone de Painter Classic)
peut intéresser
http://www.artweaver.de/index.php?id=4,73,0,0,1,0
Il a un langage de programmation (en plugin) (quasi du Purebasic) qui permet de manipuler l'apparence de n'importe quelle image :)
(slider la page pour les exemples)
Est beau ce qui plaît sans concept :)
Speedy Galerie
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Y'a pas à dire, comtois, c'est le roi de la 3D en Pure. Vraiment superbe et en plus vraiment fluide.

Extra :D

On en veux encore même si je pige rien au programme. :wink:

:10:
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Super, mais ça fait chauffer le CPU
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Good07 a écrit :On en veux encore même si je pige rien au programme.
C'est fait , j'ai édité le code dans le premier post, j'ai ajouté 4 ou 5 formes, et il y a un fond bleu , ça change :)

Droopy a écrit :Super, mais ça fait chauffer le CPU
ça chauffe beaucoup ? A quoi est-ce dû selon toi ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

L'activité CPU est à 100%, je suppose que cela est du au fait que c'est le CPU qui calcule tout, et non pas la carte 3D.
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

un petit

Code : Tout sélectionner

  delay(20)
entre

Code : Tout sélectionner

  RenderWorld()
  FlipBuffers() 
et ca fait redescendre le temps CPU
:wink:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

C'est vrai que je mets rarement un delay() dans mes codes, en général je ne fais que du plein écran et je prends 100% de la CPU :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Très sympa ce code! (avec du retard!) :P
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui c'est impressionnant !

mais je mettrai un petit bemol :)

il faudrait que cela morphe aussi entre les resultats et le debut d'une nouvelle form

parce que actuellement cela créé un "a coups" :)

tu nous refait Thalassa ? :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Moi, je donne mon avis de celui qui y connait "fifre".
Il est super beau cet oreiller marron.

Les ombres, c'est super bien fait, on s'y croirait.
Oouuuuaaaaah !!!! et ben en parlant d'oreiller........., je vais aller me coucher

Encore bravo comtois, doit "n'enavoir" des calculs pour faire ça, meme moi j'men rend compte :D
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

faut patienter quelques secondes au début, puis on est un peu surpris, et enfin cela devient une belle démonstration dès la deuxième transformation :)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Superbe ! ça fait très demomaker :)
Répondre