Page 5 sur 14
Publié : ven. 03/févr./2006 21:39
par comtois
CameleonTH a écrit :Tu peut donner ta source, et un conseil change le fov de la camera car sa fait un effet de zoom et c'est desagrable.

Pour le camerafov tu n'as pas tort

Je vais ajouter un fichier préférence pour changer quelques paramètres , dont le camerafov.
ma source ? tu parles du code ? c'est le même que ci dessus pour les collisions. et j'ai fait le mesh avec l'éditeur DeleD.
Ensuite, j'ai passé le mesh à la moulinette pour en faire un Xml , et j'ai fait un petit code pour récupérer les triangles à partir du fichier Xml.
C'est les fichiers Triangles.HD.
Ensuite je colle ces triangles dans une liste chainée , comme dans le code ci dessus. Je mettrai sûrement le code sur le forum plus tard, quand j'aurai dépoussiéré

Publié : ven. 03/févr./2006 21:55
par Progi1984
Comtois, pas mal ! N'as tu pas l'idée de te lancer dans un jeu ou d'un wrapper genre Blitz3D ?
Tes applis tournent en moyenne à60fps
Tes codes sources pour ses applis font combien de lignes ?
Publié : ven. 03/févr./2006 22:05
par comtois
Progi1984 a écrit :Comtois, pas mal ! N'as tu pas l'idée de te lancer dans un jeu ou d'un wrapper genre Blitz3D ?
Un jeu ça demande trop de disponibilité , et aussi trop de compétences que je n'ai pas.
Je préfère procéder par petites touches, apprendre à réaliser des portions d'un jeu , comme le pathfinding, la détection de collision , etc .
Il y a encore bcp de sujets à apprendre avant que j'envisage de me lancer dans un jeu
Pour le wrapper , je ne comprends pas ta question , que veux-tu dire ?
Tes applis tournent en moyenne à60fps
Merci pour l'info , c'est incroyable comme PB tourne vite !! dans la démo WareHouse , je calcule 14000 triangles en permanence !
(Je ferai un tri plus tard , depuis le temps que j'y songe ...)
Tes codes sources pour ses applis font combien de lignes ?
800 lignes environ , peut-être moins si j'enlève tout ce qui ne sert à rien

Publié : ven. 03/févr./2006 22:27
par Progi1984
un wrappeur : en fait, le problème au niveau du Pure3D (la 3D dans PureBasic :p), c'est que l'on gère soit meme les triangles ! Alors que des fonctions genre loadmesh, createcube, etc... (cf les commandes de Blitz3D :
http://www.blitzbasic.com/b3ddocs/comma ... 3d_cat.php)
seraient plus faciles d'accés !
Publié : ven. 03/févr./2006 22:31
par comtois
tu as une fonction loadMesh dans pureBasic , et avec le moteur physique ODE, tu n'as plus à te préoccuper des triangles , tu as regardé les nouveautés de la 3D

Publié : jeu. 09/févr./2006 15:40
par Coolman
Etonnant

, un vrai petit fps, manque plus que le flingue, je serais curieux de voir le code source
Bravo en tous les cas....
Publié : jeu. 09/févr./2006 17:31
par comtois
pour le flingue j'avais commencé , mais ça ne rend pas bien avec un flingue 3D , ça serait plus simple avec un sprite
Pour le source , c'est exactement le même que dans ma première démo , et il est déjà dispo , tu peux le lire en remontant de quelques lignes.
La seule différence , c'est que je ne construis plus les meshs manuellement , je charge un mesh créé par DeleD ( un éditeur 3D) , c'est encore plus simple.
Publié : jeu. 09/févr./2006 18:42
par Coolman
comtois a écrit :pour le flingue j'avais commencé , mais ça ne rend pas bien avec un flingue 3D , ça serait plus simple avec un sprite
Pour le source , c'est exactement le même que dans ma première démo , et il est déjà dispo , tu peux le lire en remontant de quelques lignes.
La seule différence , c'est que je ne construis plus les meshs manuellement , je charge un mesh créé par DeleD ( un éditeur 3D) , c'est encore plus simple.
ok

, j'avais pas lu tout le post, juste essayé l'exe de l'archive, je vais revoir ca des le debut...
Publié : mar. 14/févr./2006 12:23
par Progi1984
comtois a écrit :Pour le source , c'est exactement le même que dans ma première démo , et il est déjà dispo , tu peux le lire en remontant de quelques lignes.
La seule différence , c'est que je ne construis plus les meshs manuellement , je charge un mesh créé par DeleD ( un éditeur 3D) , c'est encore plus simple.
Donc au final on n'a pls besoin de gérer les triangles. ON utilise (deled vraoment trop cool cet outil), on fait un load mesh, et ensuite on s'amuse comme des petits fous avec la 3D

C'est ca ?
Publié : mar. 14/févr./2006 18:01
par comtois
Progi1984 a écrit :Donc au final on n'a pls besoin de gérer les triangles. ON utilise (deled vraoment trop cool cet outil), on fait un load mesh, et ensuite on s'amuse comme des petits fous avec la 3D

C'est ca ?
Presque ! Disons qu'avec DeleD tu as un bon éditeur de niveau , qui te génère les mesh et les fichiers materials ainsi que les lightmap .
Ensuite ,si tu veux ajouter des collisions , tu devras toujours gérer les triangles . Avant je devais les gérer pour l'affichage et les collisions , avec DeleD , je n'en ai besoin que pour les collisions.
Ou alors tu peux utiliser ODE , et définir ton mesh comme un #PB_Entity_StaticBody.
mais tu ne pourras faire que du lâcher d'objets , j'ai déjà essayé de diriger une entity en utilisant ODE , mais je n'arrive à rien , il manque des paramètres (vitesse, direction etc) pour qu'ODE puisse gérer les déplacements, enfin il me semble , je peux me tromper , je ne maitrise pas le sujet

Publié : mar. 14/févr./2006 18:18
par comtois
Et ça c'est le code que j'utilise pour l'instant ( en attendant mieux ) pour récupérer les triangles du mesh pour gérer les collisions
La première amélioration à faire c'est de prendre en compte la normale de chaque triangle depuis l'éditeur , ça me permettrait déviter de calculer un triangle si je lui tourne le dos.
Code : Tout sélectionner
;Comtois 10/02/06
;PB4.0 Beta 2
Source$="D:\Test3D\temple.xml" ; <<<< Fichier du mesh dans le format Xml
Destination$="D:\Test3D\TempleTriangles.HD" ; <<<< Fichier contenant la liste des triangles
Structure Face
v1.l
v2.l
v3.l
EndStructure
Structure Vertex
x.f
y.f
z.f
EndStructure
Structure Point3D
x.f
y.f
z.f
EndStructure
Structure Vecteur
x.f
y.f
z.f
EndStructure
Structure Triangle
P1.Point3D
P2.Point3D
P3.Point3D
Constante.f
Normale.Vecteur
EndStructure
NewList Face.Face()
Global NewList ListTriangle.Triangle()
Procedure.s StringFieldPerso(T$,Index)
Champ=0
Deb=0
Chaine$=""
For i=1 To Len(T$)
Car$=Mid(T$,i,1)
If Car$=Chr(34)
If Deb=0
Deb=1
Champ + 1
Continue
Else
Deb=0
EndIf
EndIf
If Champ=Index And Deb
Chaine$=Chaine$+Car$
EndIf
Next i
ProcedureReturn Chaine$
EndProcedure
OpenConsole()
SubMesh = 0
If OpenFile(0,Source$)
PrintN("Ouverture du fichier Xml : " + Source$)
While Eof(0)=0
Ligne$=ReadString(0)
If FindString(Ligne$,"<faces count=",1)
Pos=FindString(Ligne$,"count=",1)
Pos + 7
NbFace=Val(Mid(Ligne$,Pos,Len(Ligne$)-Pos-1))
SubMesh + 1
PrintN("SubMesh No : " + Str(SubMesh))
PrintN("Nombre de triangles : " + Str(NbFace))
;Lecture des Faces
ClearList(Face())
For i=1 To NbFace
Ligne$=ReadString(0)
AddElement(Face())
Face()\v1=Val(StringFieldPerso(Ligne$,1))
Face()\v2=Val(StringFieldPerso(Ligne$,2))
Face()\v3=Val(StringFieldPerso(Ligne$,3))
Next i
EndIf
;Cherche les vertices
If FindString(Ligne$,"<geometry vertexcount=",1)
Pos=FindString(Ligne$,"count=",1)
Pos + 7
NbVertex=Val(Mid(Ligne$,Pos,Len(Ligne$)-Pos-1))
PrintN("Nombre de sommets : " + Str(NbVertex))
Dim Vertex.Vertex(NbVertex)
EndIf
If FindString(Ligne$,"<vertexbuffer",1)
Index=0
EndIf
;Lecture des vertex
If FindString(Ligne$,"<position",1)
Vertex(Index)\x=ValF(StringFieldPerso(Ligne$,1))
Vertex(Index)\y=ValF(StringFieldPerso(Ligne$,2))
Vertex(Index)\z=ValF(StringFieldPerso(Ligne$,3))
Index + 1
EndIf
;On peut enregistrer ce submesh
If FindString(Ligne$,"</vertexbuffer>",1)
ForEach Face()
AddElement(ListTriangle())
;v1
ListTriangle()\P1\x=Vertex(Face()\v1)\x
ListTriangle()\P1\y=Vertex(Face()\v1)\y
ListTriangle()\P1\z=Vertex(Face()\v1)\z
;v2
ListTriangle()\P2\x=Vertex(Face()\v2)\x
ListTriangle()\P2\y=Vertex(Face()\v2)\y
ListTriangle()\P2\z=Vertex(Face()\v2)\z
;v3
ListTriangle()\P3\x=Vertex(Face()\v3)\x
ListTriangle()\P3\y=Vertex(Face()\v3)\y
ListTriangle()\P3\z=Vertex(Face()\v3)\z
Next
EndIf
Wend
CloseFile(0)
PrintN("Total triangles : " + Str(CountList(ListTriangle())))
EndIf
;Génère un fichier contenant la liste des triangles
If CreateFile(0,Destination$)
PrintN("Creation du fichier triangle : " + Destination$)
ForEach ListTriangle()
WriteData(0,@ListTriangle(),SizeOf(Triangle))
Next
CloseFile(0)
PrintN("Operation terminee")
PrintN("Pressez la touche [Entree] pour quitter")
EndIf
Input()
CloseConsole()
End
Publié : mar. 14/févr./2006 18:20
par Progi1984
Tu penses qu'il serait possible de créer une lib pour les collisions ? ca arrangerait du monde

Publié : mar. 14/févr./2006 18:23
par comtois
sûrement , j'attends que tailbite sorte.
mais bon c'est pas vraiment au point ma gestion , je vois plein de défauts ,et je ne sais pas comment les corriger

Publié : mar. 14/févr./2006 18:52
par Polo
comptois, si tu créais un "code générique", c'est à dire sans liste chaînées ou structures, juste une procédure à laquelle on envoie la liste de triangles et deux ou 3 trucs, et qui te renvoie deux ou 3 trucs, ben, là, je pourrais t'aider, mais le problème, c'est que j'ai trop de mal a comprendre ton code (c'est toujours plus dur de comprendre le code des autres

)
Publié : mar. 14/févr./2006 19:39
par comtois
purée j'ai pourtant mis des belles variables en français !
Avec la v4 , Je vais sûrement tout réécrire pour supprimer toutes les variables globales et listes globales.et remplacer quelques procédures par des macros ? . et voir si dans certains calculs il ne serait pas plus judicieux d'utiliser les doubles ? dès que je trouve un peu de temps et du courage, je m'y colle.