Réalisation d'un effet de lumière 2D

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Réalisation d'un effet de lumière 2D

Message par GallyHC »

Bonjour,

J'aimerais faire un effet 2D pour une visualisation de lumière (comme la capture ci-dessous).
Image

Bon déjà, je sais que l'on peut partir d'un cône (avec dégrader). Mais la je sèche pas mal sur ce coup-ci. Ce qui faudrait, c'est que la longueur du rayon de la lumière soit variable, et qu'il puisse tourner sur lui même. (Après que la couleurs soit aussi variable; mais bon la je pourrait surement adapter).

Merci d'avance a tout le monde,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Réalisation d'un effet de lumière 2D

Message par djes »

Si le rayon est toujours de la même largeur, avec un simple PNG transparent (assez grand), tu devrais t'en sortir...
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Réalisation d'un effet de lumière 2D

Message par Fig »

Vite fait, sans gérer la transparence, mais ce n'est pas difficile à faire si nécessaire.

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
   MessageRequester("Error", "Can't open the sprite system", 0)
   End
EndIf
If OpenWindow(0, 0, 0, 800, 600,"icons lighting", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
      CreateSprite(0,20,20)
      StartDrawing(SpriteOutput(0))
      Box(0,0,20,20,RGB(128,128,128))
      StopDrawing()
      CreateSprite(1,300,300)
      StartDrawing(SpriteOutput(1))
      DrawingMode(#PB_2DDrawing_Gradient)   
      BackColor($0000ff)
      FrontColor($000000)
      LinearGradient(0,0,0,300)
      Box(0,0,300,300)
      StopDrawing()
      rayon=300
      angle=0:largeur_angle=45 ;en degrés
      iconx=390:icony=290:couleur=RGB(Random(255),Random(255),Random(255))
      Repeat
         Repeat
            Event = WindowEvent()
            Select Event
               Case #PB_Event_CloseWindow
                  Quit = 1
            EndSelect
         Until Event = 0
         ExamineKeyboard()
         ClearScreen(RGB(0,0,0))
         x1.f=rayon*Cos(Radian(angle))
         y1.f=rayon*Sin(Radian(angle))
         x2.f=rayon*Cos(Radian(angle+largeur_angle))
         y2.f=rayon*Sin(Radian(angle+largeur_angle))
         TransformSprite(1,SpriteWidth(0)/2,SpriteHeight(0)/2,SpriteWidth(0)/2,SpriteHeight(0)/2,x1,y1,x2,y2)
         DisplaySprite(1,iconx,icony)
         DisplaySprite(0,iconx,icony)
         FlipBuffers()
         angle+2
      Until  Quit Or KeyboardPushed(#PB_Key_Escape)
   Else
      MessageRequester("Error", "Can't open windowed screen!", 0)
   EndIf
EndIf
Dernière modification par Fig le mer. 17/janv./2018 17:52, modifié 1 fois.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Réalisation d'un effet de lumière 2D

Message par GallyHC »

Bonjour,

Djes > Oui, mais la longueur est justement variable ^^.

Fig > Ha la, un très bon point de départ et un grand merci je vais analyser ^^.

GallyHC
Dernière modification par GallyHC le mar. 16/janv./2018 18:25, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Réalisation d'un effet de lumière 2D

Message par Fig »

Si tu customise le dégradé ou charge directement un Png, tu auras une meilleur qualité de lumière.
Tu peux régler le rayon et la largeur du faisceau avec les variables éponymes.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Réalisation d'un effet de lumière 2D

Message par venom »

Après tu avais fait ce code fig qui est top :wink:

@++

----edit lien by Ar-S---
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Réalisation d'un effet de lumière 2D

Message par djes »

GallyHC a écrit :Djes > Oui, mais la longueur est justement variable ^^.
J'ai demandé pour la largeur, pas la longueur...
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Réalisation d'un effet de lumière 2D

Message par GallyHC »

^^ Mal lu forcement et oui variable aussi sinon c'est pas marrant lol.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre