Bonjour,
J'aimerais faire un effet 2D pour une visualisation de lumière (comme la capture ci-dessous).
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
Réalisation d'un effet de lumière 2D
Réalisation d'un effet de lumière 2D
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Réalisation d'un effet de lumière 2D
Si le rayon est toujours de la même largeur, avec un simple PNG transparent (assez grand), tu devrais t'en sortir...
Re: Réalisation d'un effet de lumière 2D
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
Version de PB : 6.00LTS - 64 bits
Re: Réalisation d'un effet de lumière 2D
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
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)
Re: Réalisation d'un effet de lumière 2D
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.
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
Version de PB : 6.00LTS - 64 bits
Re: Réalisation d'un effet de lumière 2D
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Réalisation d'un effet de lumière 2D
J'ai demandé pour la largeur, pas la longueur...GallyHC a écrit :Djes > Oui, mais la longueur est justement variable ^^.
Re: Réalisation d'un effet de lumière 2D
^^ Mal lu forcement et oui variable aussi sinon c'est pas marrant lol.
Cordialement,
GallyHC
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)