PureBasic

Forums PureBasic
Nous sommes le Lun 17/Juin/2019 11:47

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: Soucis de texture de dès
MessagePosté: Mer 27/Jan/2016 19:40 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 898
Citation:
Ajoute #PB_Engine3D_DebugLog en paramètre de initEngine3D() pour créer le fichier log.


C'est bien ce que j'a fait, initEngine3D(#PB_Engine3D_DebugLog) et initEngine3D(#PB_Engine3D_DebugOutput) pour la console.

M.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Soucis de texture de dès
MessagePosté: Mer 27/Jan/2016 21:56 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5161
Mesa a écrit:
Citation:
Ajoute #PB_Engine3D_DebugLog en paramètre de initEngine3D() pour créer le fichier log.


C'est bien ce que j'a fait, initEngine3D(#PB_Engine3D_DebugLog) et initEngine3D(#PB_Engine3D_DebugOutput) pour la console.

M.

D'accord, et tu n'as pas de fichier en faisant initEngine3D(#PB_Engine3D_DebugLog) ? C'est étonnant

Si tu veux les 2 à la fois tu dois faire :
InitEngine3D(#PB_Engine3D_DebugLog | #PB_Engine3D_DebugOutput)

_________________
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: Re: Soucis de texture de dès
MessagePosté: Jeu 28/Jan/2016 9:21 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 898
Toujours pareil.

Avec les exemples fournis avec pb (et qui marchent), j'ai bien un log mais la console ne s'ouvre pas.

M.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Soucis de texture de dès
MessagePosté: Jeu 28/Jan/2016 10:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8666
Tu as essayé sur une installation "fraiche" de pb ?

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Soucis de texture de dès
MessagePosté: Jeu 28/Jan/2016 11:53 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 898
@Ars: j'hésite car plein de code fonctionnent quand même, comme celui-ci viewtopic.php?f=13&t=15498 ou celui-là viewtopic.php?f=13&t=15604 (en enlevant l'antialiasing).

C'est quand même plus que bizarre. :?

M.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Soucis de texture de dès
MessagePosté: Jeu 28/Jan/2016 14:35 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5161
Tu le sais sûrement, mais juste pour être sûr qu'on se comprenne bien:
Pour que la console s'affiche, il faut aller dans les options du compilo et sélectionner 'Console' pour le format de l'exécutable.

_________________
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: Re: Soucis de texture de dès
MessagePosté: Jeu 28/Jan/2016 15:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Un code permettant de créer un cube mesh composé de 6 submeshs matérialisant chacune des faces.

Comment ça fonctionne ?
Au lieu d'utiliser la fonction CreateCube(), utiliser la fonction CreateCubeMesh(Mesh.i, Size.f = 1.0)

Exemple : CreateCubeMesh(1) 1 est l'identifiant du mesh.

Les faces sont composées de submeshs numérotés de 0 à 5.

    0 : UP face
    1 : Down face
    2 : Front face
    3 : Back face
    4 : Left face
    5 : Right face

La fonction native SetMeshMaterial() va permettre de texturer chacune de ces faces.
Syntax SetMeshMaterial(#Mesh, MaterialID , SubMesh)

Exemple pour texturer la face du dessus (Submesh 0) avec un material : SetMeshMaterial(1, MaterialID(1), 0)

Créer ensuite l'entité correspondante avec la fonction native CreateEntity() sans indiquer de material (#PB_Material_None).

Vous pouvez aussi utiliser la fonction ScaleEntity() pour redimensionner le cube et en faire un parallélépipède par exemple.

■ Avec ce code, les faces supérieur et inférieur d'un cube seront texturées avec la texture Caisse.png. Les autres faces seront texturées avec la texture Geebee2.bmp. Ces textures se trouvent dans le dossier d'installation de PureBasic.

Le cube tombe sur un sol. Pour le faire rebondir utiliser la touche Espace.

Escape permet de quitter l'application.
Code:
EnableExplicit

Global Event, Collide.b

Declare CreateCubeMesh(Mesh.i, Size.f = 1.0)
Declare AddMesh(Mesh, NewX.f=0 , NewY.f=0, NewZ.f=0, ScaleX.f=1, ScaleY.f=1, ScaleZ.f=1, RotateX.f=0, RotateY.f=0, RotateZ.f=0)

InitEngine3D() : InitKeyboard() : InitSprite()

OpenWindow(0,0,0,1024,768,"Demo CreateCubeMesh")
OpenWindowedScreen(WindowID(0),0,0,1024,768)

;Les textures se trouvent dans le dossier d'installation de PureBasic
Add3DArchive(#PB_Compiler_Home + "Examples\3D\Data\Textures", #PB_3DArchive_FileSystem)

;Caméra, Lumiere & Ombre
CreateCamera(0, 0, 0, 100, 100)
CameraBackColor(0, RGB(245, 222, 179))
MoveCamera(0, 5, 15, 60)
CameraLookAt(0, 0, 0, 0)
CreateLight(0, RGB(255, 255, 255), -100, 200, 100)
WorldShadows(#PB_Shadow_Additive)

;Création des materiaux (Les textures)
CreateMaterial(0, TextureID(LoadTexture(-1, "Dirt.jpg")))   ;Sol
CreateMaterial(1, TextureID(LoadTexture(-1, "Caisse.png"))) ;Dessus et dessous du cube
CreateMaterial(2, TextureID(LoadTexture(-1, "Geebee2.bmp")));Les autres faces

;Creation du sol ((Identifiant 0))
CreatePlane(0, 500, 500, 100, 100, 25, 25)
CreateEntity(0, MeshID(0), MaterialID(0))
CreateEntityBody(0, #PB_Entity_StaticBody, 1, 0.1, 1)   

;Création du cube (Identifiant 1)
; 1 - Création du mesh  : CreateCubeMesh(#Mesh, Size.f)
CreateCubeMesh(1)

; 2 - Application du material sur chaque face du mesh
SetMeshMaterial(1, MaterialID(1), 0)  ;UP face
SetMeshMaterial(1, MaterialID(1), 1)  ;Down face
SetMeshMaterial(1, MaterialID(2), 2)  ;Front face
SetMeshMaterial(1, MaterialID(2), 3)  ;Back face
SetMeshMaterial(1, MaterialID(2), 4)  ;Left face
SetMeshMaterial(1, MaterialID(2), 5)  ;Right face

; 3 - Creation de l'entité (physic)
CreateEntity(1, MeshID(1), #PB_Material_None, 0, 10, 10)
CreateEntityBody(1, #PB_Entity_BoxBody, 1, 1, 1)   

ScaleEntity(1, 3, 3, 3)

While #True 
  ;Evenement window
  Repeat
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event = 0   
 
  ;Evenement clavier
  If ExamineKeyboard() 
    If KeyboardReleased(#PB_Key_Escape)
      Break
    EndIf
   
    If KeyboardReleased(#PB_Key_Space) And Collide = #True
      ApplyEntityImpulse(1, 0, 15, 0)
    EndIf
  EndIf
 
  ;Le cube est en l'air ou Collision avec le sol ?
  If Not EntityCollide(0, 1)
    RotateEntity(1, 1, 1, 1, #PB_Relative)
    Collide = #False
  Else
    Collide = #True
  EndIf
     
  RenderWorld()
  FlipBuffers()
Wend

;Ce qui suit peut etre placé dans un include (module ou pas)

;Result = CreateCubeMesh(#Mesh, Size)
Procedure CreateCubeMesh(Mesh.i, Size.f = 1.0)
  Protected Dim SubMesh(5)
  Protected CubeMesh = CreateMesh(#PB_Any, #PB_Mesh_TriangleList, #PB_Mesh_Dynamic)
 
  If Mesh = #PB_Any
    Mesh = CreateMesh(#PB_Any, #PB_Mesh_TriangleList, #PB_Mesh_Dynamic)
  Else
    CreateMesh(Mesh, #PB_Mesh_TriangleList, #PB_Mesh_Dynamic)
  EndIf
 
  AddMesh(CreatePlane(-1, Size, Size, 1, 1, 1, 1),     0.0,  Size/2,     0.0, 1, 1, 1,   0, 180,   0)  ;SubMesh 0 UP face
  AddMesh(CreatePlane(-1, Size, Size, 1, 1, 1, 1),     0.0, -Size/2,     0.0, 1, 1, 1, 180, 180,   0)  ;SubMesh 1 Down face
  AddMesh(CreatePlane(-1, Size, Size, 1, 1, 1, 1),     0.0,       0,  Size/2, 1, 1, 1, -90, 180,   0)  ;SubMesh 2 FRont face
  AddMesh(CreatePlane(-1, Size, Size, 1, 1, 1, 1),     0.0,       0, -Size/2, 1, 1, 1, -90,   0,   0)  ;SubMesh 3 BacK face
  AddMesh(CreatePlane(-1, Size, Size, 1, 1, 1, 1), -Size/2,       0,     0.0, 1, 1, 1, -90,   0, -90)  ;SubMesh 4 LeFt face
  AddMesh(CreatePlane(-1, Size, Size, 1, 1, 1, 1),  Size/2,       0,     0.0, 1, 1, 1, -90,   0,  90)  ;SubMesh 5 RighT face
 
  FinishMesh(#True)
 
  ProcedureReturn Mesh
EndProcedure


Procedure AddMesh(Mesh, NewX.f=0 , NewY.f=0, NewZ.f=0, ScaleX.f=1, ScaleY.f=1, ScaleZ.f=1, RotateX.f=0, RotateY.f=0, RotateZ.f=0)
  Protected Dim MeshData.PB_MeshVertex(0)
  Protected Dim MeshDataInd.PB_MeshFace(0)
  Protected ArrSize, ArrSizeInd, c, i, x.f, y.f, z.f
 
  TransformMesh(Mesh, NewX,NewY,NewZ, ScaleX,ScaleY,ScaleZ, RotateX,RotateY,RotateZ)
  GetMeshData(Mesh,0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
  GetMeshData(Mesh,0, MeshDataInd(), #PB_Mesh_Face, 0, MeshIndexCount(Mesh, 0)-1)
 
  ArrSize = ArraySize(MeshData())
  For c=0 To ArrSize   
    x = MeshData(c)\x
    y = MeshData(c)\y
    z = MeshData(c)\z
    MeshVertexPosition(x,y,z)
    MeshVertexTextureCoordinate(MeshData(c)\u, MeshData(c)\v)       
  Next   
 
  ArrSizeInd = ArraySize(MeshDataInd())
  For i=0 To ArrSizeInd Step 3
    MeshFace(MeshDataInd(i)\Index, MeshDataInd(i+1)\Index,MeshDataInd(i+2)\Index)
  Next
 
  AddSubMesh(#PB_Mesh_TriangleList)
EndProcedure
La procédure AddMesh() est pratique pour créer des meshs personnalisés.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Soucis de texture de dès
MessagePosté: Ven 29/Jan/2016 10:30 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 898
Ça y est !
C'est mon antivirus qui a décidé de bloquer tout exe et toute dll dans certains dossiers et pas dans d'autres et même en le désactivant, il s'en fiche, il bloque quand même ! ! ! 8O

C'est sans doute pour ça qu'il ni avait pas de log, et une console vide.

J'avais oublié qu'il fallait mettre le flag console du compilo, je vais l'ajouter dans la doc car je ne l'ai vu nulle part.

Désolé du ramdam :mrgreen:
S'il faut faire gaffe aux bugs des antivirus maintenant, on n'est pas arrivé :D

M.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


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