Page 2 sur 4

Publié : dim. 19/déc./2004 16:25
par comtois
Pacificator a écrit :
If LoadMesh(0,"savant2.max.mesh")= 0
Debug "le fichier n'est pas chargé"
EndIf
S'il ne t'a rien affiché, c'est que le fichier est chargé.
Le prob est qu'elle est chargée, n'est pas visible.
Faudrait juste que tu crée un materiau que t'associe a la mesh, pour qu'elle soit visible.

exemple:

LoadMesh (0, "Robot.mesh")
CreateMaterial(1, LoadTexture(2, "r2skin.jpg"))
CreateEntity(0, MeshID(0), MaterialID(1), 300, 0, 300)
oui , ça manque tu as raison , je n'ai pas fait attention à ça .

Mais pour l'instant son problème c'est le fichier qui ne se charge pas.

comme il a fait ce test

Code : Tout sélectionner

If LoadMesh(0,"savant2.max.mesh")= 1 
          Debug "le fichier est  bien  chargé" 
     EndIf 
et que rien ne s'affiche , c'est que soit il ne passe pas par cette ligne, soit il n'a pas le débuggeur activé .

Publié : dim. 19/déc./2004 17:29
par Pacificator
ah oui, exact
et le debuger on l'active comment?

Publié : dim. 19/déc./2004 19:42
par vedder
merci de m'aidet , ca me touche , j'ai legerement modifié mon code, j'utilise comme editeur celui de purebasic et je sais activer le debbugueur , d'ailleur je passe cette ligne : If Screen3DRequester()

Code : Tout sélectionner

IncludeFile "Screen3DRequester.pb"

DefType.f KeyX, KeyY, MouseX, MouseY
  
If InitEngine3D()


  Add3DArchive("Data\" , #PB_3DArchive_FileSystem)
  Add3DArchive("Data\camp.zip", #PB_3DArchive_Zip)
  Add3DArchive("Data\savant.zip", #PB_3DArchive_Zip)
  Add3DArchive("savant.zip", #PB_3DArchive_Zip)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
   
  If Screen3DRequester()
 
    LoadMesh(0,"savant2.max.mesh")
    CreateMaterial(1, LoadTexture(2, "savant.jpg")) 
    CreateEntity(0, MeshID(0), MaterialID(1), 300, 0, 300)  
             
    CreateLight(0, RGB(0,0,255), 100.0, 0, 0)
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0)
        
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0,0,0,100)
       
    Repeat
      Screen3DEvents()
           
      If ExamineKeyboard()
      
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -1
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = 1
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -1
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = 1
        Else
          KeyY = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_PageUp)
          RollZ = 3
        Else
          RollZ = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Add)
          Frame.f+0.005
        EndIf
        
      EndIf
      
      If ExamineMouse()
        MouseX = -MouseDeltaX()/10 
        MouseY = -MouseDeltaY()/10
      EndIf
      
     
      RotateCamera(0, MouseX, MouseY, RollZ)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      RenderWorld()
      
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
    
End
; ExecutableFormat=Windows
; DisableDebugger
; EOF
voici le mesh :
http://fo3dteam1.free.fr/Infographie/Ve ... 2.max.mesh

Publié : dim. 19/déc./2004 20:06
par comtois
Comme je n'avais pas ton fichier pour la texture, j'en ai créé une .
Et j'ai orienté la camera vers ton entity
CameraLookAt(0,EntityX(0),EntityY(0),EntityZ(0))
Et maintenant ,tout fonctionne .

C'est toi qui a fait le modèle ? il est super.

Code : Tout sélectionner

IncludeFile "Screen3DRequester.pb" 
#Speed=5
DefType.f KeyX, KeyY, MouseX, MouseY 
  
If InitEngine3D() 


  Add3DArchive("Data\" , #PB_3DArchive_FileSystem) 
  Add3DArchive("Data\camp.zip", #PB_3DArchive_Zip) 
  Add3DArchive("Data\savant.zip", #PB_3DArchive_Zip) 
  Add3DArchive("savant.zip", #PB_3DArchive_Zip) 
  
  InitSprite() 
  InitKeyboard() 
  InitMouse() 
    
  If Screen3DRequester() 
  
    If LoadMesh(0,"savant2.max.mesh")=0
    End
    EndIf
    CreateTexture(0,64,64)
    StartDrawing(TextureOutput(0))
    Box(0,0,64,64,RGB(255,0,0))
    StopDrawing()
    CreateMaterial(1, TextureID(0)) 
    CreateEntity(0, MeshID(0), MaterialID(1), 300, 0, 300)  
              
    CreateLight(0, RGB(0,0,255), 100.0, 0, 0) 
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0) 
        
    CreateCamera(0, 0, 0, 100, 100) 
    CameraLocate(0,0,0,100) 
    CameraLookAt(0,EntityX(0),EntityY(0),EntityZ(0))   
    Repeat 
      Screen3DEvents() 
            
      If ExamineKeyboard() 
      
        If KeyboardPushed(#PB_Key_Left) 
          KeyX = -1 
        ElseIf KeyboardPushed(#PB_Key_Right) 
          KeyX = 1 
        Else 
          KeyX = 0 
        EndIf 
        
        If KeyboardPushed(#PB_Key_Up) 
          KeyY = -#Speed 
        ElseIf KeyboardPushed(#PB_Key_Down) 
          KeyY = #Speed 
        Else 
          KeyY = 0 
        EndIf 
        
        If KeyboardPushed(#PB_Key_PageUp) 
          RollZ = 3 
        Else 
          RollZ = 0 
        EndIf 
        
        If KeyboardPushed(#PB_Key_Add) 
          Frame.f+0.005 
        EndIf 
        
      EndIf 
      
      If ExamineMouse() 
        MouseX = -MouseDeltaX()/10 
        MouseY = -MouseDeltaY()/10 
      EndIf 
      
      RotateEntity(0,0.5,0,0)
      RotateCamera(0, MouseX, MouseY, RollZ) 
      MoveCamera  (0, KeyX, 0, KeyY) 
      
      RenderWorld() 
      
      FlipBuffers() 
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1 
  EndIf 
    
Else 
  MessageRequester("Error", "The 3D Engine can't be initialized",0) 
EndIf 
    
End 
; ExecutableFormat=Windows 
; DisableDebugger 
; EOF 

Publié : dim. 19/déc./2004 20:07
par comtois
Pacificator a écrit :ah oui, exact
et le debuger on l'active comment?
regarde dans le menu , "Compilateur"

Publié : lun. 20/déc./2004 21:42
par vedder
merci merci c'est genial ca marche !!!
il me reste encore un truc , on ne voit pas la texture a cause des eclairages et encore je sais pas si la texture se charge car je n'ai rien dans le debbuger lors de ma condition :

Code : Tout sélectionner

IncludeFile "Screen3DRequester.pb" 
#Speed=5 
DefType.f KeyX, KeyY, MouseX, MouseY 
  
If InitEngine3D() 

  Add3DArchive("Data\" , #PB_3DArchive_FileSystem) 
  Add3DArchive("Data\camp.zip", #PB_3DArchive_Zip) 
  Add3DArchive("Data\savant.zip", #PB_3DArchive_Zip) 
  Add3DArchive("savant.zip", #PB_3DArchive_Zip) 
  
  InitSprite() 
  InitKeyboard() 
  InitMouse() 
    
  If Screen3DRequester() 
  
    If LoadMesh(0,"savant2.max.mesh")=0 
    End 
    EndIf 
    
    If LoadTexture(0,"savant.jpg") = 1
    Debug "la texture est bien chargée"
    EndIf
     
        
    StartDrawing(TextureOutput(0)) 
    Box(0,0,64,64,RGB(255,255,255)) 
    StopDrawing() 
    
    CreateMaterial(1, TextureID(0)) 
    CreateEntity(0, MeshID(0), MaterialID(1), 100, 0, 0)  
              
    CreateLight(0, RGB(0,0,255), 100.0, 0, 0) 
    CreateLight(1, RGB(255,0,0), -100.0, 0, 0) 
        
    CreateCamera(0, 0, 0, 100, 100) 
    CameraLocate(0,0,50,200)
    CameraLookAt(0,EntityX(0),EntityY(0),EntityZ(0))  
      
    Repeat 
      Screen3DEvents() 
            
      If ExamineKeyboard() 
      
        If KeyboardPushed(#PB_Key_Left) 
          KeyX = -1 
        ElseIf KeyboardPushed(#PB_Key_Right) 
          KeyX = 1 
        Else 
          KeyX = 0 
        EndIf 
        
        If KeyboardPushed(#PB_Key_Up) 
          KeyY = -#Speed 
        ElseIf KeyboardPushed(#PB_Key_Down) 
          KeyY = #Speed 
        Else 
          KeyY = 0 
        EndIf 
        
        If KeyboardPushed(#PB_Key_PageUp) 
          RollZ = 3 
        Else 
          RollZ = 0 
        EndIf 
        
        If KeyboardPushed(#PB_Key_Add) 
          Frame.f+0.005 
        EndIf 
        
      EndIf 
      
      If ExamineMouse() 
        MouseX = -MouseDeltaX()/10 
        MouseY = -MouseDeltaY()/10 
      EndIf 
      
      ;RotateEntity(0,0.5,0,0) 
      RotateCamera(0, MouseX, MouseY, RollZ) 
      MoveCamera  (0, KeyX, 0, KeyY) 
      
      RenderWorld() 
      
      FlipBuffers() 
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1 
  EndIf 
    
Else 
  MessageRequester("Error", "The 3D Engine can't be initialized",0) 
EndIf 
    
End 
; ExecutableFormat=Windows 
; DisableDebugger 
; EOF 

Publié : lun. 20/déc./2004 22:10
par comtois
ben tu peux déjà supprimer ces lignes :

Code : Tout sélectionner

    StartDrawing(TextureOutput(0)) 
    Box(0,0,64,64,RGB(255,255,255)) 
    StopDrawing() 
tu as placé ta texture dans le même répertoire que ton programme ?

et si tu mets

Code : Tout sélectionner

If LoadTexture(0,"savant.jpg") = 0 
    Debug "la texture n'est pas chargée" 
    EndIf 
tu as quelque chose dans le debuggeur ?

Publié : mar. 21/déc./2004 9:07
par vedder
oui j'ai mis la texture dans le meme repertoire que mon programme , et le test avec le debbuguer ne donne rien

Publié : mar. 21/déc./2004 12:19
par comtois
comme d'habitude ,si tu veux que je fasse un test , il faut mettre ton fichier texture quelque part .

Publié : mar. 21/déc./2004 19:39
par vedder
voila la texture merci comtois pour tout ce que tu fais c'est super !!
http://fo3dteam1.free.fr/Infographie/Vedder/savant.jpg

Publié : mar. 21/déc./2004 20:02
par comtois
alors ta texture se charge bien , et elle est appliquée au mesh .
Mais elle est dupliquée sur chaque facette qui compose ton mesh, en clair , c'est sûrement une mauvaise définition de la texture du mesh .
Je ne connais pas les logiciels de modélisation , il faudrait que quelqu'un te donne des infos sur la façon de procéder .
Est-ce que tu peux mettre ton fichier au format 3DS , je voudrais déjà voir si je peux le charger correctement avec la texture avec un explorateur 3D.
ensuite je pourrai essayer de le convertir avec un utilitaire que j'ai bricolé .

Publié : mar. 21/déc./2004 21:07
par Pacificator
alors ta texture se charge bien , et elle est appliquée au mesh .
Mais elle est dupliquée sur chaque facette qui compose ton mesh, en clair , c'est sûrement une mauvaise définition de la texture du mesh.
Oui, et je connais une méthode pour texturer facilement sous 3ds Max5, je vais expliquer de tête:

Pour commencer télécharge le plugin "Texporter" et installe le (il est gratuit).
Ensuite lorsque tu a terminé ta mesh, tu va dans modificateur, tu fait "Develloper UVW" , et le menu généré, tu fais "editer"
Une fenetre apparait tu fais "correspondance" puis "applatir correspondance". Tu ferme la fenetre.
Tu lance Texporter, et tu génère une texture de ta mesh tu la sauve, puis tu prend un logiciel genre photoshop pour "peindre" ta texture.

Et voila, une texture sur mesure pour ta mesh :)


Edit => si la texture se répète sur chaque face, c'est que les coordonnées UVW de la mesh n'ont pas été définis. C'est pour cela qu'il faut faire "Develloper UVW" dans 3dsmax, pour integrer a la mesh des coordonées uvw

Publié : mer. 22/déc./2004 22:59
par vedder

Publié : jeu. 23/déc./2004 12:46
par comtois
je viens de faire un essai de conversion de ton fichier 3DS en mesh avec mon utilitaire , c'est déjà mieux.la texture est bien répartie.

Au premier essai j'ai cru que ça n'allait pas , mais ensuite je me suis souvenu que pour l'instant l'axe V des textures est inversé , il faut passer par une image pour inverser les textures .ou tout simplement retourner l'image dans un éditeur et l'enregistrer .
(normalement , il ne faudra plus le faire avec la prochaine version d'ogre )


ce soir je mettrai en ligne le résultat de mes tests .
tu verras ce que ça donne.

Je vais essayer de corriger un bug dans mon convertisseur , il m'oblige à modifier quelques valeurs de vertex à la main , on ne peut pas dire que ça soit le top :)

Publié : jeu. 23/déc./2004 18:04
par comtois
Voila l'exemple complet

http://perso.wanadoo.fr/comtois/sources/savant2.zip


maintenant , je vais voir comment je peux améliorer mon convertisseur.

[EDIT]
Voila , c'est corrigé , du moins , pour ton fichier ça passe bien maintenant.

http://perso.wanadoo.fr/comtois/sources/makeMesh.zip

à la prochaine étape , il faudrait que je convetisse les datas en fichier mesh utilisable avec LoadMesh() , ça serait plus simple, quelqu'un connait le format des fichiers meshs ?