help transformsprite3D() !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

help transformsprite3D() !

Message par bombseb »

Salut, j'ai un probleme avec cette fonction...

j'affiche plusieurs centaines de sprite avec transform3Dsprite et il y en a toujours 4 ou 5 qui ne s'affichent jamais (jamais les même)
alors je suis obligé de faire ma boucle d'affichage 2 fois !

et j'ai une question :

avant de faire un transformsprite3D, on est obligé d'afficher le sprite avec displaysprite3D ?? parceque à chaque fois il faut que je l'efface avec un box de couleur 0...
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Je vois 2 pistes:

Un sprite3D ne s'affichera pas si les coins ne se présentent pas dans le sens des aiguilles d'une montre.

Après chaque Flipbuffers(), il faut redessiner tout l'écran (avec clearscreen(), ou en le remplissant de sprites ou d'autre choses), parceque tu ne peus pas prévoir dans quel état sera le buffer qui revient de l'affichage (mais ce n'est vrai qu'en mode plein écran).

Bon, si ça se trouve c'est pas ça du tout... :roll:
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

Un sprite3D ne s'affichera pas si les coins ne se présentent pas dans le sens des aiguilles d'une montre.
hummm j'en suis pas si sur...je suis en train de programmer un "voxel" qui est quasiment fini d'ailleurs. je peut le faire tourner sur lui même autour de son centre : tout les sprites s'affichent (seulement si je les affiche 2 fois de suite). je peut t'envoyer le fichier tu verra que les sprites tournent, se retrouvent à l'envers etc...
j'ai vraiment l'impression que c'est aléatoire
d'ailleurs même en les affichant 2 fois, il y a certains sprites qui "buggent"

(le voxel est mappé avec mes sprites au fait)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

quand je touchai aux sprites 3D je ne pouvais pas les afficher "dos à l'écran" donc dans le sens inverse des aiguilles d'une montre...

enfin bon ca date d'un truc comme purebasic 3.91 (je sais plus trop lol =)

Dri
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

ici j'ai créé un sprite avec un ligne qui "decend vers la droite"
si le sprite3d s'affichait à l'envers on devrai voir cette ligne inclinée vers la gauche, hors quand c'est censé être le cas je n'ai rien à l'écran...

PB 3.94 8O

Code : Tout sélectionner

ExamineDesktops()

If ( InitSprite() And InitSprite3D() And InitKeyboard() ) = 0
  End
EndIf

OpenScreen(DesktopWidth(0), DesktopHeight(0), DesktopDepth(0), "")

CreateSprite  (0, 32, 32, #PB_Sprite_Texture)

If StartDrawing( SpriteOutput(0) )
  Box (0, 0, 32, 32, $00FFFF)
  Line(0, 0, 32, 32, $FF0000)
  StopDrawing()
EndIf

CreateSprite3D(0, 0)

Repeat
  ClearScreen(0, 0 ,0)
  ExamineKeyboard()
  
  i = Int(f.f) % 32
  
  If Start3D()
    
    TransformSprite3D(0, i, 0, 31-i, 0, 31-i, 31, i, 31)
    DisplaySprite3D(0, 20, 20)
    
    Stop3D()
  EndIf
  
  If StartDrawing( ScreenOutput() )
    
    Locate(0, 0)
    If i < 16
      chaine$ = "face"
    Else
      chaine$ = "dos"
    EndIf
    DrawText("le sprite est de " + chaine$)
    
    StopDrawing()
  EndIf
  
  f + 0.5
  FlipBuffers()
Until KeyboardPushed(#PB_Key_All)
Dri :!:
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

Un sprite3D ne s'affichera pas si les coins ne se présentent pas
dans le sens des aiguilles d'une montre.
pardon, je crois que j'avais mal compris cette phrase effectivement si les points ne sont pas dans le sens des aiguilles d'une montre le sprite ne s'affiche pas (j'ai pas essayé mais apparement c'est vrai).

sauf que les points de mes sprites sont dans le bon sens. et qu'il y a toujours 4 ou 5 sprites qui ne s'affichent pas (jamais les mêmes) alors je suis obligé de tous les réafficher une deuxieme fois et là ca marche
je crois que le mieux est de vous donner le code source que vous puissiez voir par vous même, je le posterais ce soir.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

personne n'a une idée ???
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Moi je veux bien essayer de faire une fonction pour savoir si on est dans le sens des aiguilles d'une montre pour que tu puisses vérifier... mais c'est pas évident...

Dri
Répondre