Page 2 sur 4

Re: [3D] Quelques suggestions

Publié : mar. 05/juin/2012 10:08
par Cool Dji
Hello Comtois,

Dans mon éditeur de decor 3D, cela permet de coller des entitys les unes aux autres de manière précise avec une fonction magnétisme. Pour l'instant, effectivement je recalcule chaque position des points composant l'Entity pour la placer correctement et ça marche bien (sauf pour l'option scale que je n'ai pas encore intégrée).

Même si le décor est construit en grande partie dans un outil 3D (Deled, Blender...), l'éditeur permet de positionner dans le décor des élements mobiles qui peuvent être touchables, attrapables ou déplaçables par le joueur. Je peux aussi coller entre-elles des briques de décor préfabriquées.

Re: [3D] Quelques suggestions

Publié : ven. 08/juin/2012 9:47
par Cool Dji
Pour compléter le message précédent sur l'utilisation des coordonnées des points des Entitys.

Mettre un texte en 3D dans le décor.

J'ai construis une police de caractère en mesh et connaitre la taille des caractères-entity me permet de construire les textes en positionnant correctement chaque lettre d'un mot en fonction de sa taille (un "W" est plus large qu'un "i").
C'est en cours, je posterai le zinzin une fois fini...

Re: [3D] Quelques suggestions

Publié : sam. 09/juin/2012 9:57
par comtois
12) Pouvoir supprimer un skydom, une skybox, ou un fog : pour un fog, on met intensity à zéro et on ne le voit plus, mais pour les autres ?
J'ai ajouté ça dans la boucle de l'exemple SkyBox , et ça fonctionne :

Code : Tout sélectionner

        If KeyboardReleased(#PB_Key_F2)
          SkyBox("desert07.jpg")
        ElseIf KeyboardReleased(#PB_Key_F3)
          SkyBox("")
        EndIf
Si le fichier est vide on désactive le skyBox ou le SkyDom
13) pouvoir modifier la texture d'un skydom ou d'une skybox une fois créé : le fait de refaire skydom() modifie la texture ou ajoute un deuxième skydom ?
ça modifie la texture, tu ne peux avoir qu'une seule SkyBox

Pour changer de skybox j'ai ajouter un nouveau fichier dans l'exemple SkyBox :

Code : Tout sélectionner

  Add3DArchive("Data/Packs/desert.zip", #PB_3DArchive_Zip)
  Add3DArchive("Data/Packs/skybox.zip", #PB_3DArchive_Zip)
Et ceci dans la boucle :

Code : Tout sélectionner

        If KeyboardReleased(#PB_Key_F2)
          SkyBox("stevecube.jpg")
        ElseIf KeyboardReleased(#PB_Key_F3)  
          SkyBox("desert07.jpg")
        ElseIf KeyboardReleased(#PB_Key_F4)
          SkyBox("")
        EndIf

Re: [3D] Quelques suggestions

Publié : sam. 09/juin/2012 14:12
par blendman
Ah super ça, merci Comtois , c'est une bonne nouvelle :D

Re: [3D] Quelques suggestions

Publié : sam. 09/juin/2012 19:10
par comtois
bonsoir,

Quelqu'un saurait créer un mesh avec du morph animation ?

Un truc tout simple, ça serait pour faire des essais avec Ogre et comme je suis nul avec les éditeurs 3D, je ne sais pas faire ça :cry:

Ou quelqu'un saurait convertir en mesh cet exemple blender ?

http://jmsoler.free.fr/util/blenderfile ... hing.blend

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 9:32
par blendman
comtois a écrit :bonsoir,

Quelqu'un saurait créer un mesh avec du morph animation ?

Un truc tout simple, ça serait pour faire des essais avec Ogre et comme je suis nul avec les éditeurs 3D, je ne sais pas faire ça :cry:

Ou quelqu'un saurait convertir en mesh cet exemple blender ?

http://jmsoler.free.fr/util/blenderfile ... hing.blend
salut

Je vais regarder ça et tenter d'obtenir un fichier mesh, mais je n'ai vu nullepart qu'on pouvait sortir les morph depuis blender en ogre (je continue de regarder).

Edit :
ok, j'ai trouvé, je t'ai fait un truc super hyper simple : un cube qui devient une pyramide :)
http://blendman.free.fr/dev/pb/3D/pureb ... apekey.zip

Tu me diras si tout est ok pour toi et surtout comment tu fais pour lancer le morph (les shapekey) ;)

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 9:42
par comtois
Je viens de regarder , apparemment c'est possible d'exporter du pose ou morph animations.

http://www.ogre3d.org/tikiwiki/Blender+Exporter

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 9:47
par blendman
comtois a écrit :Je viens de regarder , apparemment c'est possible d'exporter du pose ou morph animations.

http://www.ogre3d.org/tikiwiki/Blender+Exporter
exact, j'avais édité mon message entre temps ;) (j'utilise blender 2.63, donc, pas du tout ce script-là, mais y'a une option pour exporter les shape key (morph))

"ok, j'ai trouvé, je t'ai fait un truc super hyper simple : un cube qui devient une pyramide :)"
http://blendman.free.fr/dev/pb/3D/pureb ... apekey.zip

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 10:27
par comtois
Je viens de tester ton mesh et malheureusement je ne peux pas créer d'entity avec, j'ai cette erreur :
+ CreateEntity(): OGRE EXCEPTION(2:InvalidParametersException): Index out of bounds. in Mesh::getSubMesh at OgreMesh.cpp (line 213)
Faut que j'analyse pourquoi !

Sinon ton mesh comporte du pose animation et pas du morph animation.

Mais c'est bien, ça me permettra de valider aussi le pose animation. Pour le pose animation il y a un modèle dans le SDK d'ogre et ce modèle fonctionne, il faut donc que je compare ton modèle avec celui d'ogre.

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 11:25
par blendman
comtois a écrit :Je viens de tester ton mesh et malheureusement je ne peux pas créer d'entity avec, j'ai cette erreur :
+ CreateEntity(): OGRE EXCEPTION(2:InvalidParametersException): Index out of bounds. in Mesh::getSubMesh at OgreMesh.cpp (line 213)
Faut que j'analyse pourquoi !
bizarre, je l'ai ouvert sans problème avec la 4.60 (et mon éditeur de level 3D).
Sinon ton mesh comporte du pose animation et pas du morph animation.

Mais c'est bien, ça me permettra de valider aussi le pose animation. Pour le pose animation il y a un modèle dans le SDK d'ogre et ce modèle fonctionne, il faut donc que je compare ton modèle avec celui d'ogre.
pourtant, j'ai exporté les shapekey (morph), alors, peut être que le script modifie ça en pose animation et non en shapekey (morph).

EDIT :
bon, visiblement, blender n'exporte que ça (shape animation qu'il doit convertir en pose animation) ou l'armature (skeleton).

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 11:40
par comtois
J'ai refait un code plus simple pour tester et cette fois ci j'arrive à ouvrir le mesh et créer une entity , il me reste à animer tout ça.
Pour le morph animation j'ai lu que très peu d'éditeurs permettaient l'export, il faut souvent construire le fichier à la main ou des utilitaires permettent de simplifier les opérations, mais ça passe par du code :cry:

http://www.ogre3d.org/tikiwiki/Morph+an ... _animation

Bon ben pas grave, je vais déjà tester ton pose animation, avec l'animation par skeleton ça donnera 2 possibilités :)

Et je vais essayer de convertir en mesh le fichier xml proposé par le site, ça me permettra quand même d'avoir un fichier pour tester.

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 16:58
par comtois
Et je vais essayer de convertir en mesh le fichier xml proposé par le site, ça me permettra quand même d'avoir un fichier pour tester.
J'ai créé un mesh à partir de l'exemple xml du site, et l'animation morph fonctionne bien, il n'y a rien à faire côté PB, c'est identique à l'animation d'un skeleton.

Par contre pour le pose animation, c'est pas encore ça.
Pour l'instant je peux lire le nom de l'animation, obtenir le nombre d'animation dispo dans le mesh, mais rien ne bouge ! C'est une question de temps, j'y arriverai :)

Re: [3D] Quelques suggestions

Publié : dim. 10/juin/2012 19:01
par comtois
C'est bon j'arrive à animer ton mesh avec la pose animation :P

Re: [3D] Quelques suggestions

Publié : mar. 11/sept./2012 22:22
par comtois
maintenant que la 5.00 est sortie je peux te donner mon code de test Tu peux copier ce code dans mon archive 'exemples', de mémoire les médias nécessaires sont présents.

Code : Tout sélectionner

;Use [PageUp] and [PageDown]

IncludeFile "Screen3DRequester.pb"

Define.f MouseX, MouseY, Pose 

#Mesh = 1

Macro Clamp(num, min, max)
  If num<min
    num=min
  ElseIf num>max
    num=max
  EndIf  
EndMacro

If InitEngine3D()
    
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Packs/Desert.zip", #PB_3DArchive_Zip)
  Parse3DScripts()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    WorldShadows(#PB_Shadow_Modulative)
    
    ;Ground
    ;
    CreateMaterial(0, LoadTexture(0, "Dirt.jpg"))
    CreatePlane(0, 1500, 1500, 40, 40, 15, 15)
    CreateEntity(0,MeshID(0),MaterialID(0))
    
    ;- Mesh
    
    LoadMesh(#Mesh, "shapekey.mesh")
    
    ; Create a animation state For each vertex pose, using the pose name 
    Track     = 0 
    KeyFrame  = 0 
    PoseIndex = 0
    Animation$ = MeshPoseName(#Mesh, PoseIndex)
    
    CreateVertexAnimation(#Mesh, Animation$, 0)                 ; Create animation just for this pose
    CreateVertexTrack(#Mesh, Animation$, Track)                 ; Create track for this pose
    CreateVertexPoseKeyFrame(#Mesh, Animation$, Track, KeyFrame); Create a keyframe for this pose.
        
    ;- Entity
    CreateEntity(1, MeshID(#Mesh), #PB_Material_None, 0, 50, 0)
    ScaleEntity(1, 3, 3, 3)
    StartEntityAnimation(1, Animation$)  
   
    ;- SkyBox
    SkyBox("Desert07.jpg")
    
    ;- Camera
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 10, EntityY(1) + 4, -10)
    CameraLookAt(0, EntityX(1), EntityY(1), EntityZ(1))
    
    ;- Light
    CreateLight(0, RGB(255, 255, 255), -40, 100, 80)
    AmbientColor(RGB(80, 80, 80))
     
    Repeat
      Screen3DEvents()
      
      If ExamineMouse()
        MouseX = -MouseDeltaX()/10 
        MouseY = -MouseDeltaY()/10
      EndIf
      
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_PageDown) And Pose < 1
          Pose + 0.01
          Clamp(Pose, 0, 1)
        ElseIf KeyboardPushed(#PB_Key_PageUp) And Pose > 0
          Pose - 0.01
          Clamp(Pose, 0, 1) 
        EndIf
        
      EndIf
      
      ; update the pose reference
      UpdateVertexPoseReference(#Mesh, Animation$, Track, KeyFrame, PoseIndex, Pose)
      
      ; update animation state since we're fudging this manually
      UpdateEntityAnimation(1, Animation$)
      
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      
      RenderWorld() 
      
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End

Re: [3D] Quelques suggestions

Publié : mer. 12/sept./2012 9:55
par Cool Dji
Salut Comtois,

Je viens de tester le code que tu as posé.
Sur Windows7, le RenderWorld() ne passe pas : Accès mémoire Invalide (tes autres sources fonctionnent).

J'ai bien mis le code dans ton répertoire d'exemple et j'ai vérifié que les data sont bien accessibles via le Add3DArchive.
Lors de la Compil, PB ne trouvait pas la librairie D3dx9_42.dll que j'ai placé dans le répertoire exemples.

As-tu besoin d'éléments complémentaires ?
Je testerai à la maison sur d'autres postes...