Sphere avec projection

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

Sphere avec projection

Message par MetalOS »

Salut les amis,

J'aurai besoin de vos avis sur la possibilité de créer la planète Terre en 3D avec possibilité de projeter des points avec coordonnées géographique.

Voici la carte que je compte utiliser comme texture sur une sphère.

http://www.shadedrelief.com/natural3/pa ... tures.html

Pensez vous que c'est réalisable et si oui faut il créer l'objet en 3D d'une certaine manière pour utiliser la projection de la carte ?

Merci d'avance pour votre aide.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Sphere avec projection

Message par kernadec »

bonjour MetalOS
il y a un très bon post sur le forum anglais qui traite des projections sans OpenGL
Mickael Vogel à fait un truc top
Mais voir aussi le code de BasicallyPure qui me semble intéressant.
http://www.purebasic.fr/english/viewtop ... 3&start=25

Cordialement
Dernière modification par kernadec le mar. 18/nov./2014 10:44, modifié 2 fois.
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

Je vais regarder ça merci kernadec.
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

Je ne comprend pas la texture sur ma terre ne s'applique pas. Voici une archive avec un code de test le mesh et sa texture.

http://infoprojectsoftware.free.fr/Earth.zip

Si quelqu'un peut tester et me dire si il à le même problème.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Sphere avec projection

Message par Cool Dji »

Hello MetalOs,

Idemtout blanc, pas certain que l'UV du Mesh soit ok
Only PureBasic makes it possible
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

J'ai essayé de faire le mesh sur blender mais je ne connais pas ce logiciel.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Sphere avec projection

Message par Cool Dji »

Ok, je ne suis pas un pro dans Blender mais il me semble que si tu ne génère pas d'UV de ton Mesh, la material ne sera pas placé correctement...
Il y a quelques Youtube sur le sujet...

https://www.youtube.com/watch?v=MfQCmQHcVY8

Sinon, pour la transformation en mesh, tu réussi à générer l'export depuis Blender ?
Avec la 2.71, je n'ai pas réussi à refaire marcher l'export Ogre => j'exporte donc en .obj depuis blender et convertit avec Delengine en .mesh :?
Only PureBasic makes it possible
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

J'utilise la version 2.65 pour pouvoir exporter en *.mesh.xml puis ensuite j'utilise un outils de chez Ogre pour convertir le xml en *.mesh.

Je vais regarder la video. Merci Cool Dji.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Sphere avec projection

Message par graph100 »

Magnifique le site de ressource pour des cartes de la planète !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

graph100 a écrit :Magnifique le site de ressource pour des cartes de la planète !
Je suis tombé dessus par hasard. Impossible d'appliquer la texture à l'UV Sphere sous Blender malgré le tuto vidéo. C'est une vrai usine à gaz se truc.
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

Toujours pour ce projet je cherche à tester l'exemple SkyDome de PB dans une fenêtre avec OpenWindowedScreen() mais je rencontre un problème. Il faut que je bouge la souris ou que j'actionne les touches du clavier pour faire bouger le monde 3D. Voici mon exemple.

Code : Tout sélectionner

;By MetalOS

InitEngine3D()

Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/GUI", #PB_3DArchive_FileSystem)
Parse3DScripts()

InitSprite()
InitKeyboard()

#CameraSpeed = 1

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Form1
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue

Define.f KeyX, KeyY

;- Gadget Constants
Enumeration 1
  ;Window_Form1
  

EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


Procedure.l Window_Form1()
  If OpenWindow(#Window_Form1,124,63,710,565,"Test 3D.",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
    
    If OpenWindowedScreen(WindowID(#Window_Form1), 5, 5, 700, 500, 0,0,0)
      
    
    AmbientColor(RGB(255, 255, 255))
    
    CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
    CreateEntity  (0, LoadMesh(0, "robot.mesh"), MaterialID(0), 0, 0, 0)
    RotateEntity(0, 30, 180, 0)
    SkyDome("clouds.jpg", 30)
    
    ;- Camera
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 0, 0, 400, #PB_Absolute)
    CameraBackColor(0, RGB(19, 34, 49))
    
    EndIf

    HideWindow(#Window_Form1,0)
    ProcedureReturn WindowID(#Window_Form1)
  EndIf
EndProcedure


;- Main Loop
If Window_Form1()

  quitForm1=0
  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()
    
    If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf

      EndIf

    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Form1
          quitForm1=1
        EndIf


      Case #PB_Event_Gadget
        Select GadgetID
          

        EndSelect

    EndSelect
    
    MoveCamera  (0, KeyX, 0, KeyY)
    
    RenderWorld()
    FlipBuffers()
    
  Until quitForm1
  CloseWindow(#Window_Form1)
EndIf
End
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sphere avec projection

Message par falsam »

Dans WaitWindowEvent() il y a ...... wait :mrgreen:
Remplace WaitWindowEvent() par WindowEvent()
Configuration : Windows 11 Famille 64-bit - PB 6.03 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 : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

falsam a écrit :Dans WaitWindowEvent() il y a ...... wait :mrgreen:
Remplace WaitWindowEvent() par WindowEvent()
:oops: :mrgreen: :mrgreen: :mrgreen: Merci
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sphere avec projection

Message par falsam »

Je pense que ta boucle événementielle n'est pas stable car elle ne vide pas systématiquement la pile des événements windows ce qui pourrait provoquer un crash de ton application (Il est vrai qu'avec ton code actuel la probabilité est faible)

Code : Tout sélectionner

If Window_Form1()
  Repeat
    ;Evenement Windows
    Repeat
      Event    = WindowEvent()
    
      MenuID   = EventMenu()
      GadgetID = EventGadget()
      WindowID = EventWindow()
    
      Select Event  
        Case #PB_Event_CloseWindow
          End
          
      EndSelect
    Until Event = 0
  
    ;Evenements 3D
    If ExamineKeyboard()
      If KeyboardPushed(#PB_Key_Left)
        KeyX = -#CameraSpeed 
      ElseIf KeyboardPushed(#PB_Key_Right)
        KeyX = #CameraSpeed   
      Else
        KeyX = 0
      EndIf
         
      If KeyboardPushed(#PB_Key_Up)
        KeyY = -#CameraSpeed   
      ElseIf KeyboardPushed(#PB_Key_Down)
        KeyY = #CameraSpeed   
      Else
        KeyY = 0  
      EndIf  
    
      If KeyboardPushed (#PB_Key_Escape)
        Break
      EndIf
    EndIf
    
    MoveCamera  (0, KeyX, 0, KeyY)
  
    ; Affiche le rendu de la scéne
    RenderWorld(80)
    FlipBuffers()  
  
  ForEver
EndIf 
Tu noteras l'apparition de 2 repeat dont un pour les événements windows.
Configuration : Windows 11 Famille 64-bit - PB 6.03 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 : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Sphere avec projection

Message par MetalOS »

Ca me permet aussi de m'y retrouver plus facilement entre la gestion de la 3D et la gestion des Gadget de la Window. Merci falsam.
Répondre