PureBasic

Forums PureBasic
Nous sommes le Mar 23/Juil/2019 14:53

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 21 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: [Résolu] Génération de fichiers mesh pour Purebasic
MessagePosté: Lun 04/Jan/2016 21:16 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Bonjour,
J'essaie vainement de créer des fichiers mesh pour Purebasic à partir de Blender avec l'exporter blender2ogre-0.6.0
Ici, un simple rectangle tout plat, tout rose.
J'obtiens un fichier "plane.mesh.xml" et un fichier "Material.001.material"
J'utilise ensuite OgreXmlConverter comme indiqué un peu partout. Cela me donne un fichier "plane.mesh" (si je l'ouvre avec un éditeur de texte, la première ligne indique [MeshSerializer_v1.41]
Jusqu'ici, pas de surprise.
Par contre, si je veux charger mon "plane.mesh" dans Purebasic (en modifiant l'exemple fourni "camera.pb" par exemple), la fonction loadMesh() me retourne la valeur 0 comme si elle n'avait pas trouvé le fichier (que j'ai pourtant placé au même endroit que les mesh d'exemple, qui eux aussi contiennent "[MeshSerializer_v1.41]" et se chargent sans problème).
J'ai aussi essayé "OgreAssimpConverter.exe" à partir de mon "plane.blend", et même de mon "plane.mesh.xml". cela me donne à chaque fois des "plane.mesh" que PB ne peut pas charger, loadMesh retourne invariablement 0.
Quelqu'un saurait-il me dire ce qui cloche avec mon "plane.mesh", car moi je sèche...
Mon fichier est dans l'archive zip ici : http://lecartablededudule.pagesperso-orange.fr/plane.zip

Merci par avance.


Dernière édition par Dudule le Lun 11/Jan/2016 20:46, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mar 05/Jan/2016 13:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4217
Localisation: Arras, France
Ce serait sympa que tu inclues ton code dans l'archive, que nous n'ayons qu'un minimum de manips à faire... Merci !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mar 05/Jan/2016 13:55 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
Pour info tu peux obtenir des infos lors du chargement l'ogre, en ajoutant un paramètre à InitEngine3D() (voir la doc pour plus de choix)
Code:
If InitEngine3D(#PB_Engine3D_DebugLog)

Et j'obtiens ceci
Citation:
13:49:34: WARNING: robot.mesh is an older format ([MeshSerializer_v1.41]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool.
13:49:34: Texture: r2skin.jpg: Loading 1 faces(PF_R8G8B8,512x512x1) Internal format is PF_X8R8G8B8,512x512x1.
13:49:34: Mesh: Loading plane.mesh.
13:49:34: WARNING: plane.mesh is an older format ([MeshSerializer_v1.41]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool.


Conclusion, ton mesh est bien chargé, il n'y a pas d'erreur.

Pour voir ton mesh, dans l'exemple camera.pb j'ai ajouté
Code:
    CreateEntity(1, LoadMesh(1, "plane.mesh"), MaterialID(0))
    ScaleEntity(1,30,30,30)

Et dans la boucle
Code:
      RotateEntity(1, 1, 1, 1, #PB_Relative)

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mar 05/Jan/2016 19:13 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Merci pour les infos. Moi je n'ai pas les WARNING dans le log lors du chargement des mesh (ni pour robot, ni pour mon plane), et le fait que la fonction retourne 0 me fait dire qu'il ne le charge pas. Il faut peut-être que je mette à jour mon Purebasic qui est resté à la version 5.31. Ça doit venir de là.
Merci !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mar 05/Jan/2016 21:37 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Eh bien non, même avec la version 5.41 x64, j'obtiens la même erreur.
Comme je le disais, le log ne me mets aucun WARNING, mais au moment du CreateEntity, j'ai [ERROR] The specified #Mesh is not initialised.
J'ai testé avec un nom bidon, l'erreur est la même, comme si c'était plus un problème d'accès au fichier que de Mesh.
Mon code :

Code:
#CameraSpeed = 1

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D(#PB_Engine3D_DebugLog)

  Add3DArchive("./Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("./Data/Models", #PB_3DArchive_FileSystem); Ici, je fais bien attention que mon plane.mesh y soit, il est à côté du robot.mesh
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
   
    AmbientColor(RGB(255, 255, 255))

    Debug(LoadMesh(0, "plane.mesh")); Là, pas de WARNING, mais la fonction retourne 0
    ;Debug(LoadMesh(0, "robot.mesh")); Ici, elle retourne un nombre
   
    CreateTexture(0, 256, 256)
    StartDrawing(TextureOutput(0))
    Box(0, 0, 256, 256, RGB(255, 0, 0))
    StopDrawing()
    CreateMaterial(0,TextureID(0))
    CreateEntity(0, MeshID(0), MaterialID(0))
       
    CreateCamera(0, 0, 0, 100, 100)  ; Front camera
    MoveCamera(0, 0, 20, 250, #PB_Absolute)
    CameraBackColor(0, RGB(55, 0, 0))
   
    Repeat
      Screen3DEvents()
     
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
     
      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
     
      RotateEntity(0, 0, 0.1, 0, #PB_Relative)
     
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
     
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
   
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
 
End


Comprends pas...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mar 05/Jan/2016 22:15 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
C'est curieux, ton code fonctionne bien chez moi.

Affiche ton fichier log complet, ça peut aider.

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mar 05/Jan/2016 22:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 19/Juil/2010 19:17
Messages: 14
Hi, you forget Parse3DScript() after Add3dArchive() function ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 10:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4217
Localisation: Arras, France
Il a raison Bill. J'ai réussi à faire fonctionner ton exemple avec un peu de mal au début car je n'avais pas mis les fichiers au bon endroit. Assure-toi toujours d'envoyer une archive complète avec les dossiers et sous-dossiers. Et n'oublie pas que windows protège les dossiers des programmes, donc tu DOIS travailler dans un dossier utilisateur (par exemple dans "mes documents").
J'ai modifié 2/3 bricoles pour charger le "materiau" natif de l'objet.

Comtois> Truc qui me gonfle, la fenêtre passe à l'arrière-plan 9 fois sur 10. Et le truc de mettre 0 dans createentity() pour charger le material par défaut n'est pas indiqué dans la doc. D'ailleurs, ça devrait être un paramètre optionnel, non ?

Code:
#CameraSpeed = 1

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D(#PB_Engine3D_DebugLog)

  ;Add3DArchive(#PB_Compiler_FilePath, #PB_3DArchive_FileSystem)
  Add3DArchive("./Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("./Data/Models", #PB_3DArchive_FileSystem); Ici, je fais bien attention que mon plane.mesh y soit, il est à côté du robot.mesh
  Add3DArchive("./Data/Scripts", #PB_3DArchive_FileSystem)
  Parse3DScripts()  ;Le parse est indispensable pour charger les matériaux
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
   
    AmbientColor(RGB(255, 255, 255))

    Error = LoadMesh(0, "plane.mesh")
    ;Error = LoadMesh(0, "robot.mesh")
    ;Debug Error   
   
;     CreateTexture(0, 256, 256)
;     StartDrawing(TextureOutput(0))
;     Box(0, 0, 256, 256, RGB(255, 0, 0))
;     StopDrawing()
;     CreateMaterial(0,TextureID(0))
    CreateEntity(0, MeshID(0), 0) ;Le 0 revient à reprendre le material par défaut (équivalent à GetScriptMaterial(0, "Material.001"))
       
    CreateCamera(0, 0, 0, 100, 100)  ; Front camera
    MoveCamera(0, 0, 0, 10, #PB_Absolute) ;je la recule un peu
    CameraBackColor(0, RGB(55, 0, 0))
   
    Repeat
      Screen3DEvents()
     
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
     
      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
     
      RotateEntity(0, 1, 1, 1, #PB_Relative)
     
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
     
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
   
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
 
End


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 12:47 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
Comtois a écrit:
djes a écrit:
Comtois> Truc qui me gonfle, la fenêtre passe à l'arrière-plan 9 fois sur 10. Et le truc de mettre 0 dans createentity() pour charger le material par défaut n'est pas indiqué dans la doc. D'ailleurs, ça devrait être un paramètre optionnel, non ?


Quelle fenêtre ?
Ah oui pardon, il s'agit de la fenêtre du programme quand on le lance en mode fenêtré plutôt qu'en plein écran.

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 14:27 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Non, y'a rien à faire, pas moyen de charger mon fichu plane.mesh
Le log de PureBasic ne donne rien :
Citation:
[14:22:34] Waiting for executable to start...
[14:22:34] Executable type: Windows - x64 (64bit, Unicode)
[14:22:34] Executable started.
[14:22:36] [ERROR] OPCycle.pb (Line: 38)
[14:22:36] [ERROR] The specified #Mesh is not initialised.


Par contre, j'ai un fichier log d'OGRE dans mon dossier qui me dit :
Citation:
14:19:19: Mesh: Loading plane.mesh.
14:19:19: OGRE EXCEPTION(7:InternalErrorException): Missing M_EDGE_GROUP stream in MeshSerializerImpl_v1_3::readEdgeListLodInfo at OgreMeshSerializerImpl.cpp (line 2985)


Bon, autant vous dire que je ne sais pas de quoi il s'agit, mais je vois bien que c'est au chargement de mon mesh.

Bizarre que ça fonctionne chez vous, ou plutôt que ça ne fonctionne pas chez moi.
Je ne mets pas de Parse3DScripts() parce que j'ai la version démo de PB. Mais je ne pense pas que ça vienne de là...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 14:49 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
Dudule a écrit:
Par contre, j'ai un fichier log d'OGRE dans mon dossier qui me dit :

Citation:
14:19:19: Mesh: Loading plane.mesh.
14:19:19: OGRE EXCEPTION(7:InternalErrorException): Missing M_EDGE_GROUP stream in MeshSerializerImpl_v1_3::readEdgeListLodInfo at OgreMeshSerializerImpl.cpp (line 2985)



C'est curieux ce message, fais une recherche sur le fichier engine3D.dll ,est-ce que tu utilises le bon ?


Citation:
Je ne mets pas de Parse3DScripts() parce que j'ai la version démo de PB. Mais je ne pense pas que ça vienne de là...

Parse3DScripts() fonctionne aussi avec la version démo, mais c'est vrai que ça ne vient pas de là.

si tu ne mets pas le parsescript() tu as ce message
Citation:
14:42:26: Can't assign material Material.001 to SubEntity of E0 because this Material does not exist. Have you forgotten to define it in a .material script?

Mais ça n'empêche pas de charger le mesh.
Citation:
14:42:26: Mesh: Loading plane.mesh.
14:42:26: WARNING: plane.mesh is an older format ([MeshSerializer_v1.41]); you should upgrade it as soon as possible using the OgreMeshUpgrade tool.

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 15:24 
Hors ligne

Inscription: Lun 04/Jan/2016 20:18
Messages: 17
Je ne connais pas la version du engine3D.dll
Il s'est installé avec purebasic dans C:\Program Files\PureBasic\Compilers
J'imagine que c'est la dernière version.
Je vais essayer avec un autre mesh pris ailleurs. Où est-ce qu'on trouver des mesh tout simples ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 16:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4217
Localisation: Arras, France
Je viens de tester avec la version démo (x64), ça fonctionne pour moi... 8O


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 17:02 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8705
Vous avez remarqué que #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
donne : C:\Program Files (x86)\PB5.4x\examples/3d/Screen3DRequester.pb

Les slash et antislash ça pique les yeux.

J'arrive pas non plus à charger son mesh sur mon portable.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Génération de fichiers mesh pour Purebasic
MessagePosté: Mer 06/Jan/2016 23:47 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
Pouvez-vous faire l'essai avec la version x86 ? Si vous avez aussi le problème, est-ce que vous pouvez essayer avec cette dll (en version x86) ?
http://herved25.free.fr/sources/Engine3D.zip

Avant de tester allez dans les options du compilateur, et choisir 'Console' pour le format de l'exécutable.
si le mesh se charge bien la console affichera :
test 1
test 2
test 3
test 4
test 5
test 6
test 7
test 8
test 9

Sinon dites moi à quel numéro l'affichage s'arrête.

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 21 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 2 invités


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