Page 3 sur 5

Publié : lun. 16/oct./2006 19:19
par Anonyme
je viens de regarder , meme le flingue déconne, met en WireFrame, tu verras.

Code : Tout sélectionner

      If ExamineMouse()
        MouseX = -MouseDeltaX()*2
        MouseY = -MouseDeltaY()*2
      EndIf
      
     CameraRenderMode(0,#PB_Camera_Wireframe)
      RotateCamera(0, MouseX*#PI/180, MouseY*#PI/180, RollZ)
      MoveCamera(0, KeyX, 0, KeyY)
J'ai mis ca aussi pour rendre la souris plus fluide.

Publié : lun. 16/oct./2006 19:52
par Anonyme
je viens de verifier tes listes de triangles et de vertex


j'ai rajouté ca, je m'apercois alors que le dernier element , à tout à 0 pareil pour les vertices

Code : Tout sélectionner

  For i = 0 To NbEntity_Triangles-1
  Debug Triangles(i)\v0
  Debug Triangles(i)\v1
  Debug Triangles(i)\v2
  Next
    SetMeshData(0,#PB_Mesh_Vertex|#PB_Mesh_UVCoordinate,@Vertices(),NbEntity_Vertices)
  SetMeshData(0,#PB_Mesh_Face,@Triangles(),NbEntity_Triangles)
  ProcedureReturn CreateEntity(#PB_Any, MeshID(0),MaterialID(0))
EndProcedure

je suis passer en mode plot pour voir box2.b3d, si c'est deux Boite bien fermé, il manque un Vertex sur l'une d'elle, donc, le parsing est faux, et je comprends rien au format B3D :?
Donc, il y a une erreur lors de la lecture du fichier.

Publié : lun. 16/oct./2006 20:11
par Anonyme
Peut on ouvrir les B3D avec 3DSMAX ?

car j'ai compter les vertices visible de box2 , y en a 15 , le debugger m'en donne 36 :s

j'ai regarder plus en profondeur le code, c'est le bordel les chunk norris :D
Ta un lien avec des infos sur le B3D ? j'en ai trouvé un , mais c'est quasi le meme code que le tiens et en English en plus :?
Si tu as des infos sur le header, je suis preneur. :D

@++

Publié : mar. 17/oct./2006 8:13
par Progi1984
Pour 3DSMax, je ne connais que l'exporter : http://www.onigirl.com/pipeline/

Pour la doc :
- Specs : http://www.blitzbasic.com/sdkspecs/sdks ... _specs.txt
- La page dédié : http://www.blitzbasic.com/sdkspecs/sdkspecs.php

Sinon un HackerB3D (fonctionne par drag and drop du fichier):
B3d.Hacker.exe
Image

Et un Viewer B3D (lancer puis ouvrir en bas à gauche):
B3D.Viewer.exe
Image

Sinon je regarde pour ce que tu m'as dit !

Publié : mar. 17/oct./2006 9:13
par Progi1984
J'ai mis à jour le loader pour le problème que tu as trouvé ( http://purebasic.hmt-forum.com/viewtopi ... 6267#56267 ).

Sinon va voir le premier post du topic car j'ai séparé les B3D du loader, afin d'améliorer la vitesse du DL !

[EDIT 1200] MAJ du loader : Fonctionne parfaitement avec les UN MESH - UN ou PL TEXS... mais bugge avec n'importe quel PL MESH - PL TEXS.

Redl le package de B3DSamples (1er post du topic) et le loader !

Publié : mar. 17/oct./2006 12:17
par Anonyme
Je vais regarder dans le courant de la journée.
A mon avis, tu dois refaire completement la procédure de chargement.
Car la, tout est imbriqué, ce qui ne rend pas facile le chargement et la compréhension.

Voici théoriquement coment je ferais :

Lecture du B3D

-Comptage des Meshs
-Comptage des Triangles & faces par mesh
-Comptage des Textures

pour le premier mesh :

Chargement des vertices
" " des uvw
" " des liste de triangles

pour le second mesh (si il y a)

idem

Fermeture du B3D.


je vais regarder le "header", si j'ai le temps, j'en fait un :D

@++

Publié : mar. 17/oct./2006 13:13
par Progi1984
A mon avis, la procédure de chargement est correcte car tiré du site de blitzbasic...

PS : il peut y avoir plusieurs meshs (1-2-3-etc...) et à chaque fois l'organisation peut etre différente. regarde avec B3D Hacker.

Publié : mar. 17/oct./2006 13:15
par Anonyme
oui j'ai vu que ton code est tiré du site de blitz, j'ai commencer a faire à ma facon, dès que j'ai des resultat, je te tiens au courant.
Nickel le p'tit logiciel pour regarder au fin fond d'un B3D :D

@++

Publié : mar. 17/oct./2006 13:20
par Progi1984
Il ya un hacker et un viewer :)

Publié : mar. 17/oct./2006 14:21
par Anonyme
oui , je l'ai déjà téléchager dans ton pack de 8mo (1°post) :P

Publié : mar. 17/oct./2006 14:30
par Progi1984
Oki, sinon ca avance ?

Publié : mar. 17/oct./2006 15:04
par Anonyme
oui , tranquilou , j'ai fini les tags faculatifs de l'entete , j'attaques les vertices.

Publié : mar. 17/oct./2006 16:02
par Progi1984
Bon travail @demain

Publié : mar. 17/oct./2006 17:47
par Anonyme
Bon , j'ai trouvé ton problème.
ton chargeur de fichier B3D est fonctionnel qu'avec de simple objet, pas d'objet complexe. car il suit un "squelette" linéaire :

- Chargement des textures
- des brush
- d'une serie de nodes ( le problème est là)
- charge tout les vertex/uv/normale

En fait , un Node peut pointer soit sur un MESH ou un BONE , qui eux meme peuvent repointer sur d'autre NODE etc...
je n'ai pas cerner le véritable coupable de l'erreur, mais je pense que c'est un problème de pointeur de fichier.
un un simple mesh , ca marche, mais avec des meshs tout les vertices ne sont pas chargé. d'ou l'erreur sur Box2.B3D ou meme le flingue.B3D
en suivant le sdk, ca me mene à la meme erreur que toi avec un code différent.
Compare avec le B3D viewer.
en tout cas c'est un format casse cou... :D
j'vais trouvé une soluce.

Publié : mar. 17/oct./2006 18:47
par Anonyme
J'ai trouvé ! oublie le code blitz :D


C'est très simple, déjà il y a une erreur de comptage de vertices
la manip avec la variable sz est bizarre, le problème venais en partit de là.

Voici du pseudo code :


Code : Tout sélectionner

BB3D
ChunkSize  <- Sert a rien :s
VERSION

While EOF(0)=0

   Lecture TAG

      Si TAG = MESH

         SubChunkSize = ReadLong(0)
         BrushID          = ReadLong(0)
         SUB_TAG.s      = READ_TAG()

              SI SUB_TAG = VRTS
             
                       SubChunkSize = ReadLong(0)
                       flags   = ReadLong(0) 
                       tc_sets = ReadLong(0)
                       tc_size = ReadLong(0)
   
                       TOTAL VERTEX = SubChunkSize / 40
                      
                       For i = 0 to TOTAL VERTEX -1
                       
                       Lecture des vertex
                  
                       next i



              FINSI
              

      FinSi 


wend


En fait , tu as plusieurs posibilité de rangement
une linéraire (ta facon)
une avec des nodes
une autres avec des mesh sans node


donc lorsque tu rencontre un tag "NODE"
tu lis le node normalement sans oublier de relire le tag suivant
qui peut etre "MESH"
une fois MESH lu, tu relis le tag suivant, qui peut etre "VRTS" ou "TRIS"
et tu fait en fonction

je vais faire un code potable, et je te le file.

@++