Crazy Sheep

Généralités sur la programmation 3D
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

J'ai remis à jour mon code mais franchement je galère pour rendre transparent le tritre du jeu qui est un fichier PNG avec une transparence. Voici mon code:

Code : Tout sélectionner

;***********************
;      Crazy Sheep
;     Version 1.0.0
;      By MetalOS
;***********************

InitEngine3D()
InitKeyboard()
InitMouse()
InitSprite()

Enumeration
  #Camera
  #EntityPlanet
  #Light
  #ImageTitre
  #SpriteTitre
  #Light2
EndEnumeration

Add3DArchive("Data\Textures", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Models", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Scripts", #PB_3DArchive_FileSystem)
Add3DArchive("Data\GUI", #PB_3DArchive_FileSystem)

Parse3DScripts()

OpenScreen(1366,768,32,"")
SkyDome("cloud.jpg", 30)
  
CreateCamera(#Camera,0,0,100,100)
MoveCamera(#Camera,0.2,0,5, #PB_Absolute)
CameraBackColor(#Camera, RGB(42, 90, 183))
CameraLookAt(#Camera,0,0,0)

 ;-Entity
 CreateEntity(#EntityPlanet, LoadMesh(0, "Planete.mesh"),  #PB_Material_None)
 RotateEntity(#EntityPlanet, 30, -20, 0)
 CreateLight(#Light, RGB(255, 255, 255),  10, 0, 30, #PB_Light_Point)  ; Light blanc
 
 ;Sprit
 UsePNGImageDecoder()
 LoadImage(#ImageTitre, "Data\Textures\Titre.png")
 If CreateSprite(#SpriteTitre, 674, 200, #PB_Sprite_AlphaBlending)
   StartDrawing(SpriteOutput(#SpriteTitre))
    DrawImage(ImageID(#ImageTitre),0,0)
   StopDrawing()
 EndIf
  
Repeat
  ExamineKeyboard()
  
  RenderWorld()
  
  
  DisplaySprite(#SpriteTitre, 355, 10)
  DisplayTransparentSprite(#SpriteTitre, 355, 10, 0, RGB(0, 0, 0))
  TransparentSpriteColor(#SpriteTitre, RGB(0, 0, 0))

   
   FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Et voici le résultat:

Image

Le fond noir du texte ne devrais pas apparaître normalement mais je ne sais pas comment m'y prendre. Création d'un sprite, d'un material... franchement je ne voie pas.
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Re: Crazy Sheep

Message par raven »

Code : Tout sélectionner

;DisplaySprite(#SpriteTitre, 355, 10)
 DisplayTransparentSprite(#SpriteTitre, 355, 10, 0, RGB(0, 0, 0))
 TransparentSpriteColor(#SpriteTitre, RGB(0, 0, 0))
tu l'affiche pas 2 fois?
Pb5.24 Lts/5.31 Windows 7 64 nvidia 560 ti E8500 8g ram
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Crazy Sheep

Message par Cool Dji »

Raven a raison; enlève le displaysprite...

MetalOs, dans ton code, tu affiches une fois le titre avec le noir autour,
puis tu affiches une fois avec le DisplaytransparentSprite mais comme tu a affiché juste avant sans transparent, on voit le contour noir.
Only PureBasic makes it possible
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Ça ne change rien j'ai toujours le fond du titre reste noir. Sur Mac c'est tous le skydome qui devient noir.
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Personne n'a d'idée sur le problème ?
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Crazy Sheep

Message par Cool Dji »

Ok, je pense avoir trouvé mais je n'ai pas essayé pour vérifier.
Si c'est pas ça, tu peux faire une archive avec les fichiers ?

Tu perds l'alphablanding avec le drawimage

Code : Tout sélectionner

LoadImage(#ImageTitre, "Data\Textures\Titre.png")
If CreateSprite(#SpriteTitre, 674, 200, #PB_Sprite_AlphaBlending)
   StartDrawing(SpriteOutput(#SpriteTitre))
    DrawImage(ImageID(#ImageTitre),0,0)
   StopDrawing()
EndIf
fait directement un loadsprite(#SpriteTitre, "Data\Textures\Titre.png",#PB_Sprite_AlphaBlending)
Only PureBasic makes it possible
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Ca ne change rien, si j'ai deux minutes je ferais une archive.
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Archive à télécharger ici:

Télécharger

Merci de votre aide.
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Crazy Sheep

Message par falsam »

De cette maniére ça fonctionne.

Code : Tout sélectionner

;***********************
;      Crazy Sheep
;     Version 1.0.0
;      By MetalOS
;***********************

InitEngine3D()
InitKeyboard()
InitMouse()
InitSprite()

Enumeration
  #Camera
  #EntityPlanet
  #Light
  #ImageTitre
  #SpriteTitre
EndEnumeration

Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem)
Add3DArchive("Data/GUI", #PB_3DArchive_FileSystem)

Parse3DScripts()

AntialiasingMode(#PB_AntialiasingMode_x6)

OpenScreen(1366,768,32,"")
SkyDome("cloud.jpg", 30)
  
CreateCamera(#Camera,0,0,100,100)
MoveCamera(#Camera,0.2,0,5, #PB_Absolute)
CameraBackColor(#Camera, RGB(42, 90, 183))
CameraLookAt(#Camera,0,0,0)

 ;-Entity
 CreateEntity(#EntityPlanet, LoadMesh(0, "Planete.mesh"),  #PB_Material_None)
 RotateEntity(#EntityPlanet, 30, -20, 0)
 CreateLight(#Light, RGB(255, 255, 255),  10, 0, 30, #PB_Light_Point)  ; Light blanc
 
 ;Sprit
 UsePNGImageDecoder()
 LoadImage(#ImageTitre, "Data/Textures/Titre.png")
 If CreateSprite(#SpriteTitre, 674, 200)
   StartDrawing(SpriteOutput(#SpriteTitre))
   DrawImage(ImageID(#ImageTitre),0,0)
   StopDrawing()
 EndIf
  
 Repeat
   
  ExamineKeyboard()
  
  RenderWorld()
  DisplayTransparentSprite(#SpriteTitre, 355, 10, 255)
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Le chargement du sprite pourrait être plus simple, mais peut être que tu as tes raisons pour procéder de cette manière :)

J'aurai remplacé

Code : Tout sélectionner

;Sprit
 UsePNGImageDecoder()
 LoadImage(#ImageTitre, "Data/Textures/Titre.png")
 If CreateSprite(#SpriteTitre, 674, 200)
   StartDrawing(SpriteOutput(#SpriteTitre))
   DrawImage(ImageID(#ImageTitre),0,0)
   StopDrawing()
 EndIf
par

Code : Tout sélectionner

 ;Sprit
 UsePNGImageDecoder()
 LoadSprite(#SpriteTitre, "Data/Textures/Titre.png", #PB_Sprite_AlphaBlending)
De plus ça évite le bug du Pure Black que tu as peut être constater lors de l’exécution de mon précédent code.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Oui ce code là fonctionne à merveille

Code : Tout sélectionner

;***********************
;      Crazy Sheep
;     Version 1.0.0
;      By MetalOS
;***********************

InitEngine3D()
InitKeyboard()
InitMouse()
InitSprite()

Enumeration
  #Camera
  #EntityPlanet
  #Light
  #ImageTitre
  #SpriteTitre
EndEnumeration

Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem)
Add3DArchive("Data/GUI", #PB_3DArchive_FileSystem)

Parse3DScripts()

AntialiasingMode(#PB_AntialiasingMode_x6)

OpenScreen(1366,768,32,"")
SkyDome("cloud.jpg", 30)
  
CreateCamera(#Camera,0,0,100,100)
MoveCamera(#Camera,0.2,0,5, #PB_Absolute)
CameraBackColor(#Camera, RGB(42, 90, 183))
CameraLookAt(#Camera,0,0,0)

;-Entity
CreateEntity(#EntityPlanet, LoadMesh(0, "Planete.mesh"),  #PB_Material_None)
RotateEntity(#EntityPlanet, 30, -20, 0)
CreateLight(#Light, RGB(255, 255, 255),  10, 0, 30, #PB_Light_Point)  ; Light blanc

;Sprit
;Sprit
UsePNGImageDecoder()
LoadSprite(#SpriteTitre, "Data/Textures/Titre.png", #PB_Sprite_AlphaBlending)
  
Repeat
   
  ExamineKeyboard()
  
  RenderWorld()
  DisplayTransparentSprite(#SpriteTitre, 355, 10, 255)
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Autrement je n'est aucune raison particulière d'avoir procédé ainsi, j'ai essayer de suivre d'autres exemples qui mon conduit à cette erreur. Merci de ton aide falsam ;-)
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Crazy Sheep

Message par falsam »

falsam a écrit :Merci de ton aide falsam
De rien et vivement la suite :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Quoi ça ne suiffe pas... :-D
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Crazy Sheep

Message par falsam »

MetalOS a écrit :Quoi ça ne suiffe pas... :-D
Tssss .... tu nous fais saliver avec une belle intro et ça s'arrete là ! Il y a des filles avec qui ça fonctionne de la même manière :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Lol
Répondre