PureBasic

Forums PureBasic
Nous sommes le Ven 24/Mai/2013 2:25

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 17 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Méthode "Font Tiles PNG" vers Sprite3D pour créer du texte.
MessagePosté: Mer 15/Fév/2012 12:02 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
Bonjour neigeux.
M'étant mis à la 2D et autres effets de particules depuis peu, j'aimerai savoir quelle est selon vous la méthode la plus efficace pour créer texte graphique à partir d'une planche .png

Voilà une représentation de la planche
Image

- L'image réelle fait 1024x512
- Les lettres sont dans des cases de 128x128
- Le fond est complètement transparent

A la manière de ce qu'avait fait Taznorman dans ce topic

Seulement je voudrais utiliser les Sprite3D vu la fluidité de ces derniers.

Ma question est :
- Dois-je créer un grand sprite3D à partir d'un grand sprite (de la taille de ma planche) ?
Si oui comment faire un genre de grabsprite() sur ce sprite3D ?

ou

- Dois-je créer un grand sprite() de la taille de ma planche puis créer autant de sprite que de lettres (128x128) puis créer autant de sprite3D ?
ça me parait bien contraignant.

ou

y'a t il d'autres solutions ?

D'avance merci.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 12:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
tu charge ton sprite geant !
puis tu utilise ClipSprite(#Sprite, x, y, Largeur, Hauteur)

cela reviens a avoir un petit sprite piqué sur le gros , mais sans en creer un
il s'agit toujours du Sprite Geant, mais clippé :)
la taille sera donc, bien la taille d'une lettre :)

ensuite tu crees le sprite 3d avec ..

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 12:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
sur le principe ça me parait bien, mais que fait on avec LoadTexture ?
Vu que la texture est en fait la planche elle même ?
Je vois pas trop comment la "caler" sur un sprite qui a été grabbé

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 13:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
ben avant de faire clipsprite(#sprite

tu fait ton LoadSprite(#Sprite, NomFichier$ ,#PB_Sprite_Texture )

du coup #sprite est texturé pour la 3D

donc ton #sprite du clipsprite le sera aussi :)
plus qu'a faire

CreateSprite3D(#Sprite3D, #Sprite)

en clair :
Code:
#Sprite=1
#Sprite3D=1

LoadSprite(#Sprite, NomFichier$ ,#PB_Sprite_Texture ) ; tu charge le mega sprite
ClipSprite(#Sprite, x, y, x+12, y+24) ; tu le reduit une lettre = 12 par 24..par ex
CreateSprite3D(#Sprite3D, #Sprite) ; tu fait ton sprite 3d

_________________
Image


Dernière édition par Dobro le Mer 15/Fév/2012 13:06, édité 2 fois.

Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 13:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
j'ai reedité mon message le dernier

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 14:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
J'ai essayé avec uniquement la première ligne pour tester mais ça chie.
Je me retrouve avec des sprite3D de la taille de mon sprite non clippé.
L'affichage est du coup tout superposé.

Code:
 
   ; ------------------------------------------------------------
  ;  Test Font PB 4.60 by Ar-S
  ; ------------------------------------------------------------
 
UsePNGImageDecoder()
 

  ; --- Sprites ----
Enumeration
  #S1
EndEnumeration
 
Enumeration 1
  ;Sprite 3D
  #S3D_A
  #S3D_B
  #S3D_C
  #S3D_D
  #S3D_E
  #S3D_F
  #S3D_G
  #S3D_H
  #S3D_I
  #S3D_J
  #S3D_K
  #S3D_L
  #S3D_M
  #S3D_N
  #S3D_O
  #S3D_P
  #S3D_Q
  #S3D_R
  #S3D_S
  #S3D_T
  #S3D_U
  #S3D_V
  #S3D_W
  #S3D_X
  #S3D_Y
  #S3D_Z
EndEnumeration


Global.i Width, Height, Depth, RefreshRate
Global TailleAlph.i = 128
ClipX = 0
ClipY = 0

If InitEngine3D()
 
  Add3DArchive("Datas", #PB_3DArchive_FileSystem)
 
  InitSprite()
  InitSprite3D()
  InitKeyboard()
 
  ExamineDesktops()
  ExamineScreenModes()
 
  Width      = DesktopWidth(0)
  Height      = DesktopHeight(0)
  Depth      = DesktopDepth(0)
  RefreshRate  = DesktopFrequency(0)
 
 
  Result = OpenScreen(Width, Height, Depth, "Ar-S TEST Font", #PB_Screen_WaitSynchronization, RefreshRate)
 
  Debug Result
 
  ARSfont = LoadSprite(#S1, "datas\ARS_LettresRED.png", #PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
  If ARSfont = 0
    Debug "Erreur loadsprite 3D"
  EndIf
 
  For CLIP = 1 To 8 ; (1ere ligne)
    ClipSprite(#S1, ClipX, ClipY, TailleAlph, TailleAlph)
    CreateSprite3D(CLIP, #S1)
    ClipX + TailleAlph
  Next 
 
 
  Sprite3DQuality(1)
 
 
  ;Dimension et données concernant le logo
  X3D = 0 ; (Width / 2) - (TailleAlph / 2)
  Y3D = 0 ; (Height / 2) - (TailleAlph / 2)
  SP = 1
 
  ;----------
 
 
  Repeat
    FlipBuffers()
    ClearScreen(0)
   
    ExamineKeyboard()
    RenderWorld()
   
    ;- Mouvement du Logo
    If Start3D()
       
       
        For SP = 1 To 8 ; teste avec la ligne 1
          DisplaySprite3D(SP, X3D, Y3D,255)
          X3D + TailleAlph
         
        Next
       
       
      Stop3D()
     
     
    EndIf
   
  Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
 
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
 
End

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 14:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
dans ce cas ,utilise Grabsprite en lieu et place de ClipSprite ;)

_________________
Image


Dernière édition par Dobro le Mer 15/Fév/2012 14:38, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 14:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Salut Ar-S,

Pour ça, je charge la planche complete sous forme d'image puis avec grabimage je créé des sprites puis createsprite3D.

Code:
LoadImage(0,"Data/Editeur/police.bmp")

For j =0 To 46:GrabImage(0,1,j*6,0,6,7)
    CreateSprite(j,6,7,#PB_Sprite_Texture)
    TransparentSpriteColor(j, 0)
    StartDrawing(SpriteOutput(j))
    DrawImage(ImageID(1),0,0)
    StopDrawing()
    CreateSprite3D(j, j)
Next


Edit : Dobro a été plus rapide :D

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 14:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
Ok je vais tester..
Merci

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 15:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
Bon nouveau soucis, avec ce code.
mon PNg a un fond transparent, il faut donc que j'utilise l'option #PB_Sprite_AlphaBlending au lieu de #PB_Sprite_texture
Et la doc dit "Il n'est pas possible d'utiliser SpriteOutput() (et par conséquent les fonctions de dessin 2D) avec un sprite du type #PB_Sprite_Alpha."
il me semble que ça foire aussi avec #PB_Sprite_AlphaBlending non ?

C'est en train de m'irriter. Je crois que je vais finir par créer x images différentes pour chaque sprite.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 17:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12954
Ar-S a écrit:
C'est en train de m'irriter. Je crois que je vais finir par créer x images différentes pour chaque sprite.

c'est cool , tu amene de l'eau a mon moulin,lorsque je dis que Pb est bancale ! :)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 18:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
Dobro a écrit:
Ar-S a écrit:
C'est en train de m'irriter. Je crois que je vais finir par créer x images différentes pour chaque sprite.

c'est cool , tu amene de l'eau a mon moulin,lorsque je dis que Pb est bancale ! :)


Pour sa défense je suis bancale aussi :wink:
Et puis les Sprite3D c'est pas si vieux.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 19:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5223
Bon j'arrive à charger tous mes sprites en sprite3d mais lors du display() j'ai un clignotement tout moche.

Donc comme je l'ai dit plus haut j'ai créé 28 images de 128 x 128 (1.png, 2.png, 3.png etc...)
contenant les lettres de A à Z ainsi que l'apostrophe et le symbole "moins"

Code:

   ; ------------------------------------------------------------
  ;  Test Font PB 4.60 by Ar-S
  ; ------------------------------------------------------------
 
UsePNGImageDecoder()
 

    ;Sprite 3D
Enumeration 1
 
  #S3D_A
  #S3D_B
  #S3D_C
  #S3D_D
  #S3D_E
  #S3D_F
  #S3D_G
  #S3D_H
  #S3D_I
  #S3D_J
  #S3D_K
  #S3D_L
  #S3D_M
  #S3D_N
  #S3D_O
  #S3D_P
  #S3D_Q
  #S3D_R
  #S3D_S
  #S3D_T
  #S3D_U
  #S3D_V
  #S3D_W
  #S3D_X
  #S3D_Y
  #S3D_Z
  #S3D_Tiret
  #S3D_Apos
 
EndEnumeration


Global.i Width, Height, Depth, RefreshRate
Global TailleAlph.i = 128

If InitEngine3D()
 
  Add3DArchive("Datas", #PB_3DArchive_FileSystem)
 
  InitSprite()
  InitSprite3D()
  InitKeyboard()
 
  ExamineDesktops()
  ExamineScreenModes()
 
  Width      = DesktopWidth(0)
  Height      = DesktopHeight(0)
  Depth      = DesktopDepth(0)
  RefreshRate  = DesktopFrequency(0)
 
  ;Dimension et données concernant le logo
  X3D = 0 ; (Width / 2) - (TailleAlph / 2)
  Y3D = 0 ; (Height / 2) - (TailleAlph / 2)
  SP = 1 ; numéro du 1er sprite
 
  Result = OpenScreen(Width, Height, Depth, "Ar-S TEST Font", #PB_Screen_WaitSynchronization, RefreshRate)
 
  Debug Result
 
  For Sprite = #S3D_A To #S3D_Apos
    Sprite3D = Sprite
    LoadSprite(Sprite, "E:\MULTIMEDIA\****\ARS_RESSOURCES\"+Str(Sprite)+".png", #PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite3D(Sprite3D, Sprite)
  Next

  Sprite3DQuality(1) ; 1 = #PB_Sprite3D_BilinearFiltering
 
  ;----------
 
 
  Repeat
   
    FlipBuffers()
    ;ClearScreen(0)
   
    ExamineKeyboard()
    RenderWorld()
   
    ;- Mouvement du Logo
    If Start3D()
       
        If SP < 29
         
           DisplaySprite3D(SP, X3D, Y3D, 255)
           
            If X3D > Width - TailleAlph
              X3D = 0
              Y3D + TailleAlph
            EndIf
           
            If Y3D > (Height - TailleAlph)
              Y3D = 0
             
            EndIf
           
           
            X3D + TailleAlph
           
            Debug "Y3D : " + Str(Y3D) + " Sprite : "+ Str(SP)
 
            SP + 1
       
        EndIf
         
       
       
      Stop3D()
     
     
    EndIf
   
   
  Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
 
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
 
End

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 19:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Là, je mange et après je poste un exemple avec une routine qui décrypte les textes et pointe sur les bons sprites.
J'utilise le même système pour des textes en 3d avec des caractères en . mesh

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
 Sujet du message: Re: Méthode "Font Tiles PNG" vers Sprite3D pour créer du tex
MessagePosté: Mer 15/Fév/2012 22:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 883
Localisation: Besançon
Hop,

Voici l'ébauche de mon nouvel éditeur 3D dans lequel il y a des affichages de textes en 2D et en 3D
J'ai repris et combiné diverses sources du forum, de PB...

J'espère que ça pourra aider :D

http://xdji.free.fr/Telechargement/Base3D.zip

pour bouger : fleches du clavier
pour entrer dans l'éditeur : shift gauche appuyé => dans ce cas, l'écran de jeu est bloqué
pour bouger le scale sur (x,y et z) en même temps controle gauche appuyé

Textes en 3D
- Chargement des mesh (1 par lettre) les mesh sont dans Data/Mesh/letter
ligne 307
- construction du texte (1 entity par caractère sauf espace)
ligne 321


Textes en 2D

- chargement du fichier et création des sprites pour les lettres (le fichier image est dans Data/Editeur)
ligne 252
- Procédures affichage de textes
lignes 92 et 105 (algo à refaire sur le principe de l'algo des textes 3D)
- Appel d'une procédure (AffT3d) dans la boucle
ligne 424

_________________
Only PureBasic makes it possible


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 17 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye