Page 1 sur 2

sprite3D Scrolling

Publié : ven. 15/juin/2007 18:11
par bombseb
Bonjour,

j'aimerais faire un effet graphique un peu comme dans le clip "One of these days" de Pink floyd
pour l'instant c'est plutot moche mais bon, c'est un début

J'aimerais savoir si il est possible de retirer cette #*@* de ligne en diagonale qui gache tout due au sprite3D qui est constitué de 2 vertex...

Code : Tout sélectionner

;{--------------------------- Init Sprite & Init Keyboard -------------------------------
If InitSprite () = 0 Or InitKeyboard()= 0 Or InitSprite3D() = 0
  MessageRequester ("Erreur", "Impossible d'initialiser directx",#PB_MessageRequester_Ok)
  End
EndIf
;}---------------------------------------------------------------------------------------


;{----------------------------------- Plein écran  --------------------------------------
#WindowWidth    = 640 
#WindowHeight   = 480
If OpenScreen(#WindowWidth, #WindowHeight, 32, "Démo") = 0
   MessageRequester ("Erreur", "Impossible d'ouvrir l'écran",#PB_MessageRequester_Ok)
   End
EndIf
;}----------------------------------------------------------------------------------------

Enumeration
  #SpriteBuffer
  #SpriteBuffer3D
  #Sprite1
  #Sprite3D1
  #nbSprites = 20
  #tmpSprite
EndEnumeration

Global Dim PinkFloyd_x(#nbSprites)
Global Dim PinkFloyd_x2(#nbSprites)

Procedure PinkFloyd_Init ()
  CreateSprite(#SpriteBuffer,256,256, #PB_Sprite_Texture)
  CreateSprite3D(#SpriteBuffer3D, #SpriteBuffer)
  
  CreateSprite(#Sprite1, 32, 32,#PB_Sprite_Texture) 
  If StartDrawing(SpriteOutput(#Sprite1))
    For t = 1 To 16 
      c = t * 16 
      Circle(16, 16, 16 - t, RGB(c,c,c)) 
    Next 
    StopDrawing() 
  EndIf
  CreateSprite3D(#Sprite3D1,#Sprite1)

  For i=0 To #nbSprites-1
    PinkFloyd_x(i)  = Random (220)
    
    If Random (100) > 50
      PinkFloyd_x2(i) = 1
    Else
      PinkFloyd_x2(i) = -1
    EndIf
      
  Next
  
EndProcedure

Procedure PinkFloyd_Main ()
  
  UseBuffer(#SpriteBuffer)
  GrabSprite(#tmpSprite, 0, 0, 255, 255)
  DisplayTransparentSprite(#tmpSprite, 0, 3)
    
    For i=0 To #nbSprites-1
      DisplayTransparentSprite(#Sprite1,PinkFloyd_x(i),0)
      PinkFloyd_x(i) = PinkFloyd_x(i) + PinkFloyd_x2(i)
      If PinkFloyd_x(i) >= 265 Or PinkFloyd_x(i) <= -10
        PinkFloyd_x2(i) = - PinkFloyd_x2(i)
      EndIf
    Next
    
    CreateSprite3D(#SpriteBuffer3D, #SpriteBuffer)
    UseBuffer(-1)
    If Start3D()
      TransformSprite3D(#SpriteBuffer3D, 0,240,100, 640,240,100, 640,480,10, 0,480,10)
      DisplaySprite3D(#SpriteBuffer3D, 0,0, 255)
    Stop3D()
  EndIf
  
  FlipBuffers()
  
EndProcedure


PinkFloyd_Init ()

Repeat
  PinkFloyd_Main ()
  ExamineKeyboard ()
Until KeyboardPushed (#PB_Key_Escape)

End

Publié : ven. 15/juin/2007 18:23
par bombseb
une précision,

sur ce topic du forum anglais : http://www.purebasic.fr/english/viewtop ... ht=desktop

la personne à fait un transformsprite3D comme moi mais on ne voit aucune division en diagonale....je ne comprends pas

Publié : ven. 15/juin/2007 18:58
par Anonyme
as tu essayé mes démos de supersprite3D ?

Publié : ven. 15/juin/2007 19:01
par bombseb
heu...

j'ai vaguement vu tout à l'heure cette lib que tu a développé mais j'avoue que je n'ai pas essayé....

on peut trouver ca où ? :P

Publié : ven. 15/juin/2007 19:11
par bombseb
je viens de le trouver....

ouah c'est excellent !!!


je vais essayer de voir si je peut l'exploiter... enfin si tu veux bien :D

Publié : ven. 15/juin/2007 19:35
par Anonyme
non, la license est de 250 euros :D

Attention tout de même, cela reste des sprites :wink:
c'est pas de la vrai 3D

Publié : ven. 15/juin/2007 19:44
par bombseb
yes

par contre, il n'y a aucun exemples....


non mais en fait je suis en train de me faire une procedure pour ce que je veux faire... j'ai déja presque fini :oops:

par contre je ne sais pas si vas tres rapide

Publié : ven. 15/juin/2007 20:34
par Anonyme
la 2° page du post supersprite3d , 1°er topic y a qq exemples.

Publié : ven. 15/juin/2007 20:56
par Thierryfr
cpl bator
j'ai lancer ton code j'ai un ecran noir .

Re: sprite3D Scrolling

Publié : ven. 15/juin/2007 21:00
par Backup
bombseb a écrit :Bonjour,

j'aimerais faire un effet graphique un peu comme dans le clip "One of these days" de Pink floyd
pour l'instant c'est plutot moche mais bon, c'est un début

J'aimerais savoir si il est possible de retirer cette #*@* de ligne en diagonale qui gache tout due au sprite3D qui est constitué de 2 vertex...

desolé mais chez moi ce listing n'affiche rien de rien ... (ecran noir !)8O 8O

et je ne comprends pas pourquoi , peut etre ma carte graphique ??



a quoi sert cette ligne ?

Code : Tout sélectionner

 CreateSprite3D(#Sprite3D1,#Sprite1)
puisqu'apres tu ne fait plus reference a #Sprite3D1 ?.... :?


t'as pas testé le code que tu as posté , c'est pas possible ...

Publié : ven. 15/juin/2007 21:38
par Anonyme
@Thierry

Avec quel code exactement ?

je rectifie se que j'ai écrit plus haut

les exemples sont sur le 1° post , la 2° page c'est la p'tite màj.
je viens de testé, ca marche.

Publié : ven. 15/juin/2007 21:53
par bombseb
a quoi sert cette ligne ?

Code:
CreateSprite3D(#Sprite3D1,#Sprite1)


puisqu'apres tu ne fait plus reference a #Sprite3D1 ?.... Confused


t'as pas testé le code que tu as posté , c'est pas possible ...

oui c'est ligne ne sert à rien... j'aurais pu la retirer
par contre chez moi ca marche...enfin maintenant j'ai tout changé....

Publié : ven. 15/juin/2007 22:44
par Backup
quelqu'un peut confirmer qu'avec le listing de bomsec plus haut
on ne voit rien ?? 8O

@Bombseb : tu utilise la 4.02 ??

Publié : sam. 16/juin/2007 10:13
par bombseb
heu non moi c'est la 4.00 tout court

et c'est Bombseb :D

Publié : sam. 16/juin/2007 10:39
par Backup
bombseb a écrit :heu non moi c'est la 4.00 tout court

et c'est Bombseb :D
oui excuse :D

je viens de reinstaller la V4.00
pareil, je ne vois rien ! 8O

et réinstallation de la v 4.02
rien non plus !! :?

c'est etrange ...


quelqu'un peut essayer ??

ps : j'ai une nvidia 7600 GT thd