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

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
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
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
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
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

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...