Bibliothèque d'objets Ogre et visionneuse

Généralités sur la programmation 3D
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Bibliothèque d'objets Ogre et visionneuse

Message par djes »

Voici une petite bibliothèque d'objets de base pour appréhender en douceur le monde de la 3D avec Ogre et Purebasic (version 4.30b4 minimum).

Au menu :
Anneau
Capsule
Cone
Cube texturé
Cylindre texturé
Diamant
Disque texturé
Engrenages
Plan
Sphères
Téïère
Tore

J'ai aussi inclus une petite visionneuse afin de démarrer tout de suite.

L'archive : http://djes.free.fr/purebasic/OgreMeshesLibrary.zip

Image
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Une version Linux ?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Il n'y a que du source et des objets... Ca devrait fonctionner sous Linux, tu as essayé?
Necro
Messages : 72
Inscription : mar. 23/sept./2008 16:32

Message par Necro »

Sympa... et utile pour les débutants comme moi surtout!

Bonne continuation ;)

Cordialement,

Necro.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Sympa comme petit package, le viewer marche très bien, pas de soucis (sous windows XP).
;)
Force et sagesse...
Anonyme

Message par Anonyme »

Marche aussi sous linux , sauf , que j'ai pas de texture , et que j'ai du modifié la source , l'ajout de ressource avec un chemin absolu ne marche pas.

Code : Tout sélectionner

;
IncludeFile "Screen3DRequester.pb"

Global EXEDIR$ = GetCurrentDirectory()

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()

  InitSprite()
  InitKeyboard()
  InitMouse()

  Filter$ = " Mesh (*.mesh)|*.mesh;*.meshes|All files (*.*)|*.*"
  Filter  = 0
  File$   = OpenFileRequester("Choose a mesh to view", GetCurrentDirectory(), Filter$, Filter)
  If File$
    Path$ = GetPathPart(File$)
    MeshFileName$ = GetFilePart(File$)
    Debug Path$
  Else
    MessageRequester("Information", "No file selected", 0)
    End
  EndIf

  If Screen3DRequester()
    
    refresh_rate.l  =  60

    SetRefreshRate(refresh_rate)
    SetFrameRate(refresh_rate)


		path$=RemoveString(path$,EXEDIR$)
 		Add3DArchive(Path$, #PB_3DArchive_FileSystem)
		Add3DArchive("", #PB_3DArchive_FileSystem)


    LoadMesh   (1, MeshFileName$)

    CreateEntity(1, MeshID(1), #PB_Material_None)
    Parse3DScripts()
    AmbientColor(RGB(255, 255, 255))  
    
    CreateLight(0, RGB(255, 255, 255))
    LightLocate(0, -20000, 20000, 10000)

     ;--- Camera

    ;Little computation to convert our pixels window to the % ogre
    level_min_x  = 0
    level_min_y  = 0
    level_max_x  = 1024
    level_max_y  = 768
    level_width  = level_max_x - level_min_x
    level_height = level_max_y - level_min_y
    CreateCamera(0, (level_min_x * 100) / ScreenWidth, (level_min_y * 100) / ScreenHeight, (level_width * 100) / ScreenWidth, (level_width * 100) / ScreenWidth)

    cam_x.f = 0
    cam_y.f = 0
    cam_z.f = 5
    CameraLocate(0, cam_x, cam_y, cam_z)
                                             
    Repeat

      Screen3DEvents()
      
      ClearScreen(RGB(0, 0, 0))
                 
      i.f+0.002
      
      CameraLocate(0, (1 + Sin(i / 2)) * 5 * Sin(i * 0.4), 5 * Sin(i), (1 + Sin(i / 2)) * 5 * Cos(i * 0.4))
      CameraLookAt(0, 0 , 0, 0)
    
      RenderWorld()
      Screen3DStats()
      FlipBuffers(#PB_Screen_SmartSynchronization)

    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End
Dans l'include , pensez aussi a mettre data/ au lieu de Data/ , Sensible à la case le pingouin. Bon boulot djes.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Ah oui, je n'ai pas vérifié la casse (windows donne de mauvaises habitudes). Peut-être que tu n'as pas de textures à cause de ça aussi, il faudrait vérifier les .material.
Merci sinon :)
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message par kelebrindae »

Super, Djes! Ce petit exemple va m'être très utile!

Par contre, j'ai le même problème que Cpl.Bator (pourtant je suis sous XP): aucune texture ne s'affiche...

Dans "ogre.log", pour le mesh "cube", j'ai ceci:
10:44:46: Added resource location './cube/' of type 'FileSystem' to resource group 'General'
10:44:46: Added resource location './.' of type 'FileSystem' to resource group 'General'
10:44:46: Mesh: Loading cube.mesh.
10:44:46: WARNING: cube.mesh is an older format ([MeshSerializer_v1.30]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool.
10:44:46: Can't assign material cube to SubEntity of E1 because this Material does not exist. Have you forgotten to define it in a .material script?
Tu vois d'où ça peut venir?
Anonyme

Message par Anonyme »

n'utilise pas mon code pour XP ou vista :D
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Message par kelebrindae »

@cpl.Bator:
Ah bin oui, c'est pour ça...

Je me suis laissé avoir par le fait que le premier mesh que j'ai chargé avec la version de Djes n'avait pas de material. Du coup, j'ai switché sur ta version, et là plus aucun material ne se chargeait...

Bref: pas de problème, tout marche nickel!
Répondre