PureBasic

Forums PureBasic
Nous sommes le Mer 18/Sep/2019 23:03

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: Mirror Experience
MessagePosté: Lun 22/Déc/2014 1:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
La solution est de créer une seconde camera et d'utiliser la fonction CreateRenderTexture() afin d'obtenir le rendu de cette caméra dans une texture qui sera afficher sur la face cachée d'un plan.
Code:
EnableExplicit

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

Global Window, Event
Global Camera, CameraMirror, Animation.s
Global Texture, Material, Entity, Player, PlayerSpeed.f, CameraSpeed = 30, Mirror

Window = OpenWindow(#PB_Any,0,0,1024,768,"Mon beau miroir")
OpenWindowedScreen(WindowID(window),0,0,1024,768)

Add3DArchive(#PB_Compiler_Home + "Examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/desert.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/Sinbad.zip", #PB_3DArchive_Zip)
Parse3DScripts()

;Ambiance
SkyBox("desert07.jpg")
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -10, 100, -500)
WorldShadows(#PB_Shadow_Additive)

;Camera
Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)

;Ground
Material = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Dirt.jpg")))
Entity = CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 5000, 5000, 100, 100, 400, 400)), MaterialID(Material))
CreateEntityBody(Entity, #PB_Entity_PlaneBody, 1,1,1)
Fog(RGB(139, 69, 19), 20, 40, 200)

;Player
Player = CreateEntity(#PB_Any, MeshID(LoadMesh(#PB_Any, "Sinbad.mesh")), #PB_Material_None, 0, 5, -25)
CreateEntityBody(Player, #PB_Entity_ConvexHullBody, 1, 0, 1)
EntityAngularFactor(Player, 0, 1, 0)

;Mirror - Camera
CameraMirror = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(CameraMirror, 0, 4, 0, #PB_Absolute)
CameraLookAt(CameraMirror,  EntityX(Player), EntityY(Player), EntityZ(Player))
CameraFOV(CameraMirror, 95)

;Mirror - Background
Material = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Wood.jpg")))
Entity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 1)), MaterialID(Material), 0, 5, 0.7)
ScaleEntity(Entity, 10, 10, 1)

;Mirror - Texture & Material
Texture = CreateRenderTexture(#PB_Any, CameraID(CameraMirror), 1024, 768, #PB_Texture_AutomaticUpdate)
Material = CreateMaterial(#PB_Any, TextureID(Texture))
SetMaterialColor(Material, #PB_Material_SelfIlluminationColor, RGB(255, 255, 255))
MaterialCullingMode(Material, #PB_Material_NoCulling)

;Mirror - Entity
Mirror = CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 8, 8, 1, 1, 1, 1)), MaterialID(Material), 0, 5, 0)
CreateEntityBody(Mirror, #PB_Entity_StaticBody)
RotateEntity(Mirror, -90, 180, 0)

Repeat
  Repeat   
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
       
    EndSelect
  Until Event = 0
     
  If ExamineKeyboard()
   
    If KeyboardPushed (#PB_Key_Escape)
     Break
    EndIf
   
    Animation = "IdleBase"
   
    If KeyboardPushed(#PB_Key_F1)
      Animation = "SliceVertical"
    EndIf
   
    If KeyboardPushed(#PB_Key_F2)
      Animation = "SliceHorizontal"
    EndIf
   
    If KeyboardPushed(#PB_Key_F3)
      Animation = "Dance"
    EndIf
   
    If KeyboardPushed (#PB_Key_Up)
      PlayerSpeed = 8
      Animation = "IdleBase"
     
    ElseIf KeyboardPushed (#PB_Key_Down)
      PlayerSpeed = -8
      Animation = "IdleBase"
    Else
      PlayerSpeed = 0
    EndIf
   
    If KeyboardPushed (#PB_Key_Left)
      RotateEntity(Player, 0, 3, 0, #PB_Relative)
    ElseIf KeyboardPushed (#PB_Key_Right)
      RotateEntity(Player, 0, -3, 0, #PB_Relative)
    EndIf   
   
    If PlayerSpeed <> 0
      DisableEntityBody(Player, #False) ; Wake up entity (BugWare)
      MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
     
      If EntityAnimationStatus(Player, "RunBase") = #PB_EntityAnimation_Stopped
        StartEntityAnimation(Player, "RunBase")
      EndIf
    Else
      If EntityAnimationStatus(Player, Animation) = #PB_EntityAnimation_Stopped
        StartEntityAnimation(Player, Animation)
      EndIf
    EndIf
   
    CameraFollow(Camera, EntityID(PLayer), -180, EntityY(Player)+3, 15, 0.5, 0.5, #True)
  EndIf
 
  RenderWorld(50)
  FlipBuffers() 
ForEver
Utilisez les flèches pour vous déplacer et pivoter. F1 F2 & F3 pour quelques animations et Esc pour quitter

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Lun 22/Déc/2014 15:33, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 10:19 
Hors ligne

Inscription: Mar 02/Déc/2014 12:16
Messages: 149
Bonjour Falsam,
super ton code.

bonne journée.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 10:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 578
Hé, hé! Marrant, cet exemple; s'il y avait des animations pour que le perso puisse faire des pitreries devant le miroir, je crois que j'y passerais des heures... :wink:

As tu essayé de placer un second miroir en face du premier, pour voir si ça explose?

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 11:01 
Hors ligne

Inscription: Mar 02/Déc/2014 12:16
Messages: 149
ha oui tiens ... dans un monde parallèle 8O


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 13:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
kelebrindae et klystron merci pour vos commentaires.
kelebrindae a écrit:
s'il y avait des animations pour que le perso puisse faire des pitreries devant le miroir, je crois que j'y passerais des heures.
Tu ne passeras peut-être pas quelques heures mais j'ai ajouté 3 animations accessibles depuis les touches F1, F2 et F3. Ces animations sont issus des exemples de Pure Basic.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 14:14 
Hors ligne

Inscription: Mar 02/Déc/2014 12:16
Messages: 149
oui super.
bonne apres-midi Falsam.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 15:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Mai/2007 15:21
Messages: 578
Ah ben non, tiens; ça n'explose pas... (presque déçu :( )

Code:
EnableExplicit

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

Global Window, Event
Global Camera, CameraMirror, CameraMirror2
Global Animation.s
Global Texture, Material, Entity, Mirror
Global Texture2, Material2, Entity2, Mirror2
Global Player, PlayerSpeed.f, CameraSpeed = 30, materialBg

Window = OpenWindow(#PB_Any,0,0,1024,768,"Mon beau miroir")
OpenWindowedScreen(WindowID(window),0,0,1024,768)

Add3DArchive(#PB_Compiler_Home + "Examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/desert.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home+"Examples/3D/Data/Packs/Sinbad.zip", #PB_3DArchive_Zip)
Parse3DScripts()

;Ambiance
SkyBox("desert07.jpg")
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -10, 100, -500)
WorldShadows(#PB_Shadow_Additive)

;Camera
Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
;MoveCamera(Camera,10,0,0)

;Ground
Material = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Dirt.jpg")))
Entity = CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 5000, 5000, 100, 100, 400, 400)), MaterialID(Material))
EntityPhysicBody(Entity, #PB_Entity_StaticBody, 0,0,1)
Fog(RGB(139, 69, 19), 20, 40, 200)

;Player
Player = CreateEntity(#PB_Any, MeshID(LoadMesh(#PB_Any, "Sinbad.mesh")), #PB_Material_None, 0, 5, -10)
EntityPhysicBody(Player, #PB_Entity_CylinderBody, 1, 1, 1)

;Mirror - Camera
CameraMirror = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(CameraMirror, 0, 4, 0, #PB_Absolute)
CameraLookAt(CameraMirror,  EntityX(Player), EntityY(Player), EntityZ(Player))
;CameraFOV(CameraMirror, 95)

;Mirror - Background
MaterialBg = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Wood.jpg")))
Entity = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 1)), MaterialID(MaterialBg), 0, 5, 0.7)
ScaleEntity(Entity, 10, 10, 1)

;Mirror - Texture & Material
Texture = CreateRenderTexture(#PB_Any, CameraID(CameraMirror), 1024, 768, #PB_Texture_AutomaticUpdate)
Material = CreateMaterial(#PB_Any, TextureID(Texture))
SetMaterialColor(Material, #PB_Material_SelfIlluminationColor, RGB(255, 255, 255))
MaterialCullingMode(Material, #PB_Material_NoCulling)

;Mirror - Entity
Mirror = CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 8, 8, 1, 1, 1, 1)), MaterialID(Material), 0, 5, 0)
EntityPhysicBody(Mirror, #PB_Entity_StaticBody)
RotateEntity(Mirror, -90, 180, 0)


;Mirror2 - Camera
CameraMirror2 = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(CameraMirror2, 0, 4, -20, #PB_Absolute)
CameraLookAt(CameraMirror2,  EntityX(Player), EntityY(Player), EntityZ(Player))
;CameraFOV(CameraMirror2, 95)

;Mirror2 - Background
Entity2 = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 1)), MaterialID(MaterialBg), 0, 5, -20 - 0.7)
ScaleEntity(Entity2, 10, 10, 1)

;Mirror2 - Texture & Material
Texture2 = CreateRenderTexture(#PB_Any, CameraID(CameraMirror2), 1024, 768, #PB_Texture_AutomaticUpdate)
Material2 = CreateMaterial(#PB_Any, TextureID(Texture2))
SetMaterialColor(Material2, #PB_Material_SelfIlluminationColor, RGB(255, 255, 255))
MaterialCullingMode(Material2, #PB_Material_NoCulling)

;Mirror2 - Entity
Mirror2 = CreateEntity(#PB_Any, MeshID(CreatePlane(#PB_Any, 8, 8, 1, 1, 1, 1)), MaterialID(Material2), 0, 5, -20)
EntityPhysicBody(Mirror2, #PB_Entity_StaticBody)
RotateEntity(Mirror2, -90, 180, 0)

Repeat
  Repeat   
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
       
    EndSelect
  Until Event = 0
     
  If ExamineKeyboard()
   
    If KeyboardPushed (#PB_Key_Escape)
     Break
    EndIf
   
    Animation = "IdleBase"
   
    If KeyboardPushed(#PB_Key_F1)
      Animation = "SliceVertical"
    EndIf
   
    If KeyboardPushed(#PB_Key_F2)
      Animation = "SliceHorizontal"
    EndIf
   
    If KeyboardPushed(#PB_Key_F3)
      Animation = "Dance"
    EndIf
       
   
    If KeyboardPushed (#PB_Key_Up)
      PlayerSpeed = 5
      Animation = "IdleBase"
     
    ElseIf KeyboardPushed (#PB_Key_Down)
      PlayerSpeed = -5
      Animation = "IdleBase"
    Else
      PlayerSpeed = 0
    EndIf
   
    If KeyboardPushed (#PB_Key_Left)
      RotateEntity(Player, 0, 1.5, 0, #PB_Relative)
    ElseIf KeyboardPushed (#PB_Key_Right)
      RotateEntity(Player, 0, -1.5, 0, #PB_Relative)
    EndIf   
   
    If PlayerSpeed <> 0
      DisableEntityBody(Player, #False) ; Wake up entity (BugWare)
      MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
     
      If EntityAnimationStatus(Player, "RunBase") = #PB_EntityAnimation_Stopped
        StartEntityAnimation(Player, "RunBase")
      EndIf
    Else
      If EntityAnimationStatus(Player, Animation) = #PB_EntityAnimation_Stopped
        StartEntityAnimation(Player, Animation)
      EndIf
    EndIf
   
    CameraFollow(Camera, EntityID(Player), 0, EntityY(Player)+0.5, -15, 0.5, 0.5, #True)   
   
  EndIf

  RenderWorld(40)
  FlipBuffers()
ForEver

_________________
Les idées sont le souvenir de choses qui ne se sont pas encore produites.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Se voir dans un miroir
MessagePosté: Lun 22/Déc/2014 15:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Merci kelebrindae:)

Un labyrinthe avec plein de miroirs ? :mrgreen:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Mer 24/Déc/2014 20:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 1318
ya un piti problème avec vos miroirs :lol:

Surtout celui qu'a ajouté Kelebrindae : il ne montre pas le personnage du bon coté.
Et le 'miroir' n'a pas les propriétés d'un miroir.

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Mar 28/Mar/2017 17:24 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Modification du code pour être en conformité avec PureBasic 5.60.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Ven 31/Mar/2017 20:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2797
Localisation: Klyntar
Bonjour,

Mince chez moi le compilateur plante des l'ouverture de la fenêtre. 8O :(
Sa doit être mon ordi en carton :lol:






@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Ven 31/Mar/2017 22:23 
Hors ligne

Inscription: Mer 04/Nov/2015 17:39
Messages: 1024
Sympa tous ça :D

_________________
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Ven 31/Mar/2017 22:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 4066
Dans les 2 codes, erreur de engine3D.dll avec mon ordi portable qui date de 5 ans. :oops:

_________________
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.70LTS - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Ven 31/Mar/2017 23:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
venom a écrit:
Mince chez moi le compilateur plante des l'ouverture de la fenêtre.
Si tu es sous windows7 il est possible que DirectX9c ne soit pas installer. Dans ce cas il faut soit installer DirectX9c ou bien compiler avec la librairie OpenGL.
:idea: menu Compiler => option compilation => Library SubSystem : OpenGL

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mirror Experience
MessagePosté: Sam 01/Avr/2017 9:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 24/Aoû/2005 10:42
Messages: 467
Impressionnant 8O
Ca marche nickel sur mon Mac :wink:

Merci Falsam

_________________
Bureau : Win10 64bits
Maison : Macbook Pro 13" Retina / SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone X 256 Go


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 

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