PureBasic

Forums PureBasic
Nous sommes le Mer 21/Aoû/2019 21:10

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: [v4 beta 3] : EntityRenderMode()
MessagePosté: Sam 18/Fév/2006 9:28 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
Pour tester il faut copier le fichier dans le répertoire Examples/Sources.

Le mode WireFrame ne fonctionne pas avec EntityRenderMode(0, 1)
ou du moins , dans le code qui suit , ça fonctionne partiellement , en se baladant sur la matrice , on peut voir une texture grise apparaitre.

Je viens juste de m'apercevoir que si je changeais la valeur 1000 ici CreateMesh(0,1000) :

- En diminuant la valeur , la texture n'apparait plus , mais c'est le mesh qui disparait .
- En augmentant la valeur , le mesh est bien présent, mais la texture grise apparait en permanence.

Autre phénomène étrange , si je commente ces lignes :
Code:
;LoadMesh   (1, "Robot.mesh")
;LoadTexture(1, "r2skin.jpg")
;CreateEntity (1, MeshID(1), CreateMaterial(1, TextureID(1)))
;AnimateEntity(1, "Walk") 

le mode WireFrame ne fonctionne plus du tout !

Code:
;{- Initialisation
If InitEngine3D() = 0
   MessageRequester( "Erreur" , "Impossible d'initialiser la 3D , vérifiez la présence de engine3D.dll" , 0 )
   End
ElseIf InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse()=0
   MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
   End
ElseIf OpenScreen( 800 , 600 , 32 , "M3D_Matrix3D" ) = 0
   MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
   End
EndIf

Add3DArchive("Data\", #PB_3DArchive_FileSystem)

#CameraSpeed = 10

Define.f KeyX, KeyY, MouseX, MouseY
Structure Vertex
   px.f
   py.f
   pz.f
   nx.f
   ny.f
   nz.f
   U.f
   V.f
EndStructure
Structure Facette
   P1.Vertex
   P2.vertex
   P3.Vertex
   P4.Vertex
EndStructure
Structure Face
   f1.w
    f2.w
    f3.w
    f4.w
    f5.w
    f6.w
EndStructure   

Declare MakeMatrice()

;-Pourquoi ces constantes ne sont pas dans les résidents ? une raison particulière ?
#PB_Entity_Solid      = 0
#PB_Entity_Wireframe  = 1 << 0
#PB_Entity_Plot       = 1 << 1
#PB_Entity_CastShadow = 1 << 2

WorldShadows(#PB_Shadow_Additive)

;-Mesh
MakeMatrice()
       
;-Texture
CreateTexture(0,64,64)
StartDrawing(TextureOutput(0))
Box(0,0,64,64,RGB(0,200,0))
StopDrawing()

;-Material
CreateMaterial(0, LoadTexture(0,"background.png"))

;-Entity
CreateEntity(0, MeshID(0), MaterialID(0))
EntityRenderMode(0, 1)

;-Light   
AmbientColor(RGB(128,128,128))
CreateLight(0, RGB(255,255,255))

;-Camera
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0,0,200,500)
CameraLookAt(0,0,50,100)

;-Robot
LoadMesh   (1, "Robot.mesh")
LoadTexture(1, "r2skin.jpg")

CreateEntity (1, MeshID(1), CreateMaterial(1, TextureID(1)))
AnimateEntity(1, "Walk") 
     
Repeat

  ClearScreen(0)
       
  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

  If ExamineMouse()
    MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
    MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
  EndIf
 
  RotateCamera(0, MouseX, MouseY, RollZ)
  MoveCamera  (0, KeyX, 0, KeyY)

  RenderWorld()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1

End


Procedure MakeMatrice()
   CreateMesh(0,1000)
   NbFacetteX=50
   NbFacetteZ=50
   TailleFacetteX=40
   TailleFacetteZ=40
   *VBuffer=AllocateMemory(SizeOf(Facette) * NbFacetteX * NbFacetteZ )
   *PtrV.Facette=*VBuffer

     For b=0 To NbFacetteZ-1
       For a=0 To NbFacetteX-1

         ;Point 1
         ;Position
         *PtrV\P1\px=a * TailleFacetteX
         *PtrV\P1\py=0
         *PtrV\P1\pz=b * TailleFacetteZ
         ;Normale
         *PtrV\P1\nx=0
         *PtrV\P1\ny=1
         *PtrV\P1\nz=0
         ;Coordonnées texture
         *PtrV\P1\u =0
         *PtrV\P1\v =0
               
         ;Point 2
         ;Position
         *PtrV\P2\px=(a + 1) * TailleFacetteX
         *PtrV\P2\py=0
         *PtrV\P2\pz=b * TailleFacetteZ
         ;Normale
         *PtrV\P2\nx=0
         *PtrV\P2\ny=1
         *PtrV\P2\nz=0
         ;Coordonnées texture
         *PtrV\P2\u =1
         *PtrV\P2\v =0
   
         ;Point 3
         *PtrV\P3\px=(a + 1) * TailleFacetteX
         *PtrV\P3\py=0
         *PtrV\P3\pz=(b + 1) * TailleFacetteZ
       
         *PtrV\P3\nx=0
         *PtrV\P3\ny=1
         *PtrV\P3\nz=0
     
         *PtrV\P3\u =1
         *PtrV\P3\v =1
       
         ;Point 4
         *PtrV\P4\px=a * TailleFacetteX
         *PtrV\P4\py=0
         *PtrV\P4\pz=(b + 1) * TailleFacetteZ
       
         *PtrV\P4\nx=0
         *PtrV\P4\ny=1
         *PtrV\P4\nz=0
       
         *PtrV\P4\u =0
         *PtrV\P4\v =1
       
         *PtrV + SizeOf(Facette)
     
       Next a
  Next b
  *IBuffer=AllocateMemory(SizeOf(Face) * NbFacetteX * NbFacetteZ * 2)
  *PtrF.Face  =  *IBuffer
  For b=0 To NbFacetteZ-1
       For a=0 To NbFacetteX-1
         P1=(a+(NbFacetteX*b))*4
          P2=P1+1
          P3=P2+1
          P4=P3+1
          ;Face 1
          *PtrF\f1=P4 : *PtrF\f2=P2 : *PtrF\f3=P1
          *PtrF\f4=P2 : *PtrF\f5=P4 : *PtrF\f6=P3
          *PtrF + SizeOf(Face)
       Next
  Next

  SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, *VBuffer,NbFacetteX * NbFacetteZ * 4)
  SetMeshData(0, #PB_Mesh_Face, *IBuffer, NbFacetteX * NbFacetteZ * 2)
EndProcedure

_________________
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:
MessagePosté: Lun 21/Avr/2008 11:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4222
Localisation: Arras, France
Hello! Je fais remonter ça pour savoir si tu avais trouvé une solution?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 21/Avr/2008 22:16 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
J'ai mis ça de côté , j'attends la 4.30 . Et pour tout dire je tourne au ralenti en ce moment.

_________________
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:
MessagePosté: Mar 22/Avr/2008 11:43 
Hors ligne

Inscription: Mer 21/Jan/2004 18:24
Messages: 1528
vu dans la doc de pb sur CreateMesh(#Mesh, TailleMaximum)

'TailleMaximum' permet de définir la dimension maximale de la mesh.
C'est important de bien renseigner 'TailleMaximum', faute de quoi il est possible que l'entité qui sera créée avec cette mesh ne soit pas affichée correctement.

cela vient peut-être de là ...

pat


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 22/Avr/2008 16:33 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
non , j'ai essayé

Citation:
Je viens juste de m'apercevoir que si je changeais la valeur 1000 ici CreateMesh(0,1000) :

- En diminuant la valeur , la texture n'apparait plus , mais c'est le mesh qui disparait .
- En augmentant la valeur , le mesh est bien présent, mais la texture grise apparait en permanence.

_________________
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:
MessagePosté: Mar 22/Avr/2008 17:10 
Hors ligne

Inscription: Mer 21/Jan/2004 18:24
Messages: 1528
je me disais aussi :roll:

pat


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 22/Avr/2008 18:43 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4222
Localisation: Arras, France
Oui, et puis moi je ne crée pas les meshs, je les charge ;)

J'ai essayé aussi en éditant les fichiers .material, rien n'y fait. J'ai regardé le code Ogre utilisé par fred, apparemment il n'y a rien à mettre en cause. Du coup je pense plutôt que l'initialisation d'ogre force les meshs à un material opaque par défaut...?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 22/Avr/2008 18:58 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5162
non je n'ai pas ce problème avec d'autres meshs fait main.

Mais encore une fois , je ne suis plus dans le coup , je reprendrai tout ça plus tard avec la 4.30 :)

_________________
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  [ 8 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


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

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye