Page 2 sur 3

Publié : ven. 23/janv./2009 14:56
par Patrick88
djes a écrit :As-tu testé ma petite bibliothèque? http://www.purebasic.fr/french/viewtopi ... highlight=
à mon grand'dam, non...
ça y est, bon, euh, oui mais non,
le faite que les objets (le cube par exemple) soit des fichiers externes ne me plait pas, avec opengl je peux créer simplement un objet en utilisant la fonction glVertex3f_()
ce qui n'est pas possible avec ogre (à ma connaissance) ou alors il faut utiliser des tableaux dim (beurk) ou des data (beurkbeurk) !

Code : Tout sélectionner

Procedure objet_Z()

  glColor3f_(1.0,0.0,0.0)
  
; 5-             2 +---+ 1
;                  !   !
; 4-               !   !
;                3 ! A !
; 3- 4 +-----------+   !
;      ! \     B     \ !
; 2-   !   +-----------+ 8
;      !   ! 7
; 1-   ! C !
;      !   !
; 0- 5 +---+ 6          --- X
;      :   :   :   :   :
;      0   1   2   3   4 
;      :
;      Y
    
  ; Section A   
	glBegin_(#GL_POLYGON) ;Start Drawing 
		glVertex3f_(4.0, 5.0, 0.0) ; 1
		glVertex3f_(3.0, 5.0, 0.0) ; 2
		glVertex3f_(3.0, 3.0, 0.0) ; 3
		glVertex3f_(4.0, 2.0, 0.0) ; 8
	glEnd_() ;Done Drawing
	
	; Section B			
	glBegin_(#GL_POLYGON) ;Start Drawing 
		glVertex3f_(3.0, 3.0, 0.0) ; 3
		glVertex3f_(0.0, 3.0, 0.0) ; 4
		glVertex3f_(1.0, 2.0, 0.0) ; 7
		glVertex3f_(4.0, 2.0, 0.0) ; 8
	glEnd_() ;Done Drawing
	
	; Section C			
	glBegin_(#GL_POLYGON) ;Start Drawing 	
		glVertex3f_(0.0, 3.0, 0.0) ; 4
		glVertex3f_(0.0, 0.0, 0.0) ; 5
		glVertex3f_(1.0, 0.0, 0.0) ; 6
		glVertex3f_(1.0, 2.0, 0.0) ; 7
	glEnd_() ;Done Drawing
	
	;glRotatef_(rtri,0.0,1.0,0.0) l'objet tourne sur son axe Y
EndProcedure

bon, c'est tréééééééééééés lourdingue mais ça marche

pat

Publié : ven. 23/janv./2009 15:21
par djes
beauregard> Non, mark est surtout le créateur du BlitzBasic, qui a notamment inspiré Fred pour la création de PB. C'est un excellent programmeur! Je ne sais pas si c'est vraiment lui qui est intervenu sur le forum anglais, mais si oui, on peut espérer le port du moteur 3d de blitz dans PB.

Patrick88> Je sais bien, mais je me vois mal réaliser un modèle complexe de cette façon! Comtois fait ça depuis un moment mais moi ça ne me tente pas! Tu imagines réaliser un personnage humain complet, avec ses animations bras/jambes/faciales/etc.(!), et ses textures en code? Pour moi, le chargement "facile" de modèles réalisés dans un modeleur classique est obligatoire.

Publié : ven. 23/janv./2009 16:16
par beauregard
djes a écrit :beauregard> Non, mark est surtout le créateur du BlitzBasic, qui a notamment inspiré Fred pour la création de PB. C'est un excellent programmeur! Je ne sais pas si c'est vraiment lui qui est intervenu sur le forum anglais, mais si oui, on peut espérer le port du moteur 3d de blitz dans PB.
Pour moi, le chargement "facile" de modèles réalisés dans un modeleur classique est obligatoire.
oui, mille fois oui. si on arrive a afficher un model complexe, çà motive le cerveau.
vous avez testé ce petit truc là ? ;) :

Code : Tout sélectionner

EnableWorldPhysics(Mode)
Description

Active ou désactive le moteur physique dans l'environnement 3D. 

Publié : ven. 23/janv./2009 16:25
par comtois

Code : Tout sélectionner

EnableWorldPhysics(Mode)
Description

Active ou désactive le moteur physique dans l'environnement 3D.
C'est le point faible de la 3D avec PureBasic :)
La physique et les collisions.

Publié : ven. 23/janv./2009 17:27
par tmyke
djes a écrit :beauregard> Non, mark est surtout le créateur du BlitzBasic, qui a notamment inspiré Fred pour la création de PB. C'est un excellent programmeur! Je ne sais pas si c'est vraiment lui qui est intervenu sur le forum anglais, mais si oui, on peut espérer le port du moteur 3d de blitz dans PB.
En effet c'est le grand gourou de Blitz et de ces diverses déclinaison. C'est un prog de génie
mais surtout aussi une tête de lard et qui plus est pas mal vénale. Blitz se meurt,
il cherche d'autre terrain de chasse
La communauté francopjone de Blitz lui à d'ailleurs claquée la porte au nez si l'on peut dire. ;)

Quand à PB et la 3D, c'est un sujet récurent, et ou les espérance de réél évolution à court
terme sont assez limitées.

Publié : ven. 23/janv./2009 17:57
par beauregard
comtois a écrit :

Code : Tout sélectionner

EnableWorldPhysics(Mode)
Description

Active ou désactive le moteur physique dans l'environnement 3D.
C'est le point faible de la 3D avec PureBasic :)
La physique et les collisions.
j'ai appuyé là où çà fait mal alors ! :P
Mais dans le cadre d'un jeu FPS( sur 1 seul étage), il suffit d'appliquer les codes déjà paru dans notre joyeux forum, de, heu, franchissement de ligne. Ou même de mur circulaire, exemple avec un code huitbit

Code : Tout sélectionner

;collision_1
;auteur Huitbit
;pb v4.20
;*********************************
#largeur_ecran=1024
#hauteur_ecran=768

;boule n°1
#r_1=128
#m_1=4
x_1.f : y_1.f=100
x_1_centre.f=x_1+#r_1 : y_1_centre.f=y_1+#r_1
vx_1.f=4 : vy_1.f=2

;boule n°2
#r_2=16
#m_2=2
x_2.f=600 : y_2.f=300
x_2_centre.f=x_2+#r_2 : y_2_centre.f=y_2+#r_2
vx_2.f=-2 : vy_2.f=2

#d_carre=(#r_1+#r_2)*(#r_1+#r_2)
#beta=2.0*#m_2 /((#m_1+#m_2)*#d_carre)
alpha.f

test.s=""

Enumeration
  #spr_2
  #spr_1
EndEnumeration

Macro test_variation_distance(x1c,y1c,vx1,vy1,x2c,y2c,vx2,vy2)
If (x1c-x2c)*(vx1-vx2)+(y1c-y2c)*(vy1-vy2)<0
  test="Rapprochement"
Else
  test="Eloignement"
EndIf
EndMacro

Macro test_contact(x1c,y1c,vx1,vy1,x2c,y2c,vx2,vy2)
If (x1c-x2c)*(x1c-x2c)+(y1c-y2c)*(y1c-y2c)<=#d_carre  And test="Rapprochement"
  contact=1

  alpha=#beta*((x2c-x1c)*(vx2-vx1)+(y2c-y1c)*(vy2-vy1))
  vx1=vx1+alpha*(x2c-x1c)
  vy1=vy1+alpha*(y2c-y1c)
  vx2=vx2-alpha*#m_1/#m_2*(x2c-x1c)
  vy2=vy2-alpha*#m_1/#m_2*(y2c-y1c)
Else
  contact=0
EndIf
EndMacro

Macro test_bord_ecran(xc,yc,vx,vy,r)
If xc+r>#largeur_ecran Or xc<r
  vx=-vx
EndIf
If yc+r>#hauteur_ecran Or yc<r
  vy=-vy
EndIf
EndMacro

InitSprite()
InitKeyboard()
OpenWindow(0,0,0,#largeur_ecran,#hauteur_ecran,"Collision_2D",#PB_Window_ScreenCentered|#PB_Window_SystemMenu  )
OpenWindowedScreen(WindowID(0),0,0,#largeur_ecran,#hauteur_ecran,0,0,0)

CreateSprite(#spr_2,#r_2*2,#r_2*2)
StartDrawing(SpriteOutput(#spr_2))
DrawingMode(#PB_2DDrawing_Outlined)
Circle(#r_2,#r_2,#r_2,RGB(0,255,0))
Plot(#r_2,#r_2,RGB(255,255,255))
StopDrawing()

CreateSprite(#spr_1,#r_1*2,#r_1*2)
StartDrawing(SpriteOutput(#spr_1))
DrawingMode(#PB_2DDrawing_Outlined)
Circle(#r_1,#r_1,#r_1,RGB(255,0,0))
Plot(#r_1,#r_1,RGB(255,255,255))
StopDrawing()

Repeat
 
  Repeat
    Event = WindowEvent()     
    If  Event = #PB_Event_CloseWindow
      End
    EndIf
  Until Event = 0
 
  x_1_centre=x_1_centre+vx_1
  y_1_centre=y_1_centre+vy_1
  x_2_centre=x_2_centre+vx_2
  y_2_centre=y_2_centre+vy_2
 
  test_variation_distance(x_1_centre,y_1_centre,vx_1,vy_1,x_2_centre,y_2_centre,vx_2,vy_2)
  test_contact(x_1_centre,y_1_centre,vx_1,vy_1,x_2_centre,y_2_centre,vx_2,vy_2)
  test_bord_ecran(x_1_centre,y_1_centre,vx_1,vy_1,#r_1)
  test_bord_ecran(x_2_centre,y_2_centre,vx_2,vy_2,#r_2)
 
  ClearScreen(RGB(0,0,0))
  DisplayTransparentSprite(#spr_1,x_1_centre-#r_1,y_1_centre-#r_1)
  DisplayTransparentSprite(#spr_2, x_2_centre-#r_2,y_2_centre-#r_2)
  StartDrawing(ScreenOutput())
  DrawText(0,0,test)
  StopDrawing()
 
  Delay(1)
  FlipBuffers()
ForEver 
voir forum trucs et astuces:
http://www.purebasic.fr/french/viewtopi ... c&start=15

Publié : ven. 23/janv./2009 18:09
par Patrick88
djes a écrit :As-tu testé ma petite bibliothèque? http://www.purebasic.fr/french/viewtopi ... highlight=
je reviens la dessus...

comment fais tu pour générer les fichiers .lwo / .matérial / .mesh / .xml ?

est-ce par un soft de modélisation ?
sinon
ou trouver le format des fichiers .mesh ? j'ai cherché mais ...

pat

Publié : sam. 24/janv./2009 14:20
par djes
Patrick88 a écrit :
djes a écrit :As-tu testé ma petite bibliothèque? http://www.purebasic.fr/french/viewtopi ... highlight=
je reviens la dessus...

comment fais tu pour générer les fichiers .lwo / .matérial / .mesh / .xml ?

est-ce par un soft de modélisation ?
sinon
ou trouver le format des fichiers .mesh ? j'ai cherché mais ...

pat
Les fichiers lwo sont les fichiers des objets créés avec lightwave (un logiciel comme 3ds ou blender). Le format est totalement ouvert (je peux t'envoyer les specs). Les .material sont les fichiers qui servent à décrire les materiaux pour ogre (en gros tout ce qui concerne les couleurs et les textures). Ils peuvent agir sur plusieurs objets. Les .mesh sont les fichiers objets de ogre. Ils ont évolués mais ogre est toujours capable d'ouvrir les anciens. Un fichiers .mesh est en général créé à partir d'un fichier .xml (ASCII) qui représente l'objet : les points, les polygones, le nom des materiaux associés, et les éventuelles animations. Une fois le fichier xml créé, on le balance à une moulinette qui le convertit en .mesh. Toutes ces infos sont disponibles sur le site de Ogre, avec les outils associés, y compris les plugins et convertisseurs pour les différents outils de modélisation.
Perso j'utilise un plugin dans lightwave qui génére directement les .mesh et les .material. Je retouche éventuellement ces derniers pour les combiner dans un seul fichier ou pour ajouter des shaders.

Publié : sam. 24/janv./2009 17:00
par Patrick88
je serais plus "attiré" à faire un modeleur et "sortir" directement du ".mesh"
que de passer par tout un tas de bazar (modeleur->exporteur->convertisseur) pour arriver au fichier final...

j'ai cherché à convertir les fichiers sketchup en fichiers de point pour opengl, sketchup sauve ses fichiers en xml, (pas compris comment fonctionnait les routines pb xml), lu en texte donc, ça marche à peu près.

pour ogre... je nai pas trouvé comment était fait le .mesh...

pat

Publié : sam. 24/janv./2009 20:01
par beauregard
lors de l'installation de Blender, j'ai mis sans faire gaffe les scripts dans Documents and Settings...
J'obtiens un .xml et un . material
J'y suis presque ! :)

Pour que blender reconnaisse OgreXMLConverter, il faut:
- Depuis Blender, lance le script Ogre Mesh Exporter.
- Cliques sur préférences
- Selectionnes Manual
- Entres le chemin d'accès à OgreXMLConverter.exe
- Cliques sur OK
- Selectionnes OgreXMLConverter
- Cliques sur Export

Publié : dim. 25/janv./2009 17:48
par beauregard
kelebrindae a écrit :@Patrick88 et Beauregard:
Je suis d'accord avec vous deux: Blender est gratuit (:)), puissant et complet (:)), mais ergonomiquement parlant, c'est un cauchemar (:x).

Personnellement, pour les rares cas où j'essaie de de produire un modèle 3D, j'utilise une vieille version de 3DSmax. Problème: le seul exporteur 3dsmax -> mesh que j'ai trouvé (OgreMaxSceneExporter) ne semble pas fonctionner: les fichiers obtenus font planter PB :( .

J'ai donc essayé Blender, et je ne le trouve pas pratique du tout: les développeurs ont totalement négligé les normes et habitudes utilisées par ce genre de produits. (rien que le fait de sélectionner les objets par clic droit plutôt que par clic gauche, ça en dit long, je trouve). Par contre, l'exporteur fonctionne (même si c'est la croix et la bannière pour conserver les coordonnées UV et les textures).

Bref, pour l'instant, c'est la galère: j'en suis à modéliser sous MAX, puis à exporter en 3DS ou autre pour recharger dans Blender avant d'exporter en .mesh 8O ! Et je ne parle même pas de modèles avec squelette et animations...

=> il nous manque un outil essentiel, là. Comment font les développeurs qui utilisent Ogre? Qu'utilisent-ils?
Je sais que Djes utilise LightWave + plugin pour exporter, mais est-ce que ça marche pour les animations? Est-ce que ça garde les coordonnées UV avec plusieurs layers (texture + normal mapping, par exemple) ou les shaders?
on est le weekend, alors je vais prendre le temps de répondre. mmh, là, un gars doué qui prodigue avis et conseils précieux:
http://overstorm.dyndns.org/MonWiki/wak ... iki=Ogre3D

pour Blender, il y a effectivement cette inversion de bouton de souris, mais tu peux reconfigurer la chose*, et ils ont mis le panneau de commande au bas de l'écran, à l'horizontale: rien d'effrayant ! ;)

* place ton curseur juste sous la barre du menu, en haut, là oui, juste en dessous du menu, ton curseur devrai prendre la forme dune double flèche. Tu maintiens un bouton de la souris appuyé( ne me demande pas lequel) et dirige la souris vers le bas( comme on tire un tiroir quoi). Sous tes yeux brillant tu as plein de merveilles merveilleuses, comme Select with: avec 2 gros boutons Left et Right Mouse...
et voilà le travail ! C'est pas beau çà, mmh ? :)

Publié : dim. 25/janv./2009 18:08
par beauregard
djes a écrit :Bah, pas forcément plus qu'avec n'importe quel logiciel de 3D. Si vous êtes habitués, vous savez que modéliser, texturer, agencer correctement ses objets, et les animer prend un temps fou. Ce n'est pas pour rien que le moindre petit film 3D requiert des centaines d'animateurs. Un amateur seul et relativement doué peut faire un bon film de quelques minutes en... plusieurs mois.

Je peux déjà faire quelques démos, mais je suis sûr qu'elles seront un cran en dessous de ce que ferait une grosse équipe. Ça me décourage un peu.
quand tu es seul, il faut parler en nombre d'année. Cela fera presque 2 ans et demi que je suis sur mon jeu de plate-forme 2D, j'ai commencé à faire les niveaux au mois de décembre. Faut être patient mais d'autre on traçais la route avant nous( eric chahi...), donc si tu as les bon outils et que tu visualise exactement ce que tu veux faire dans ton esprit, ben tu peux le faire... en 2D. En 3D, depuis 2006, des choses ont bougés, mais je suis encore très réservé...

technique artistique ou une artistique technique

Publié : dim. 25/janv./2009 18:27
par beauregard
tmyke a écrit :Plus généralement il est clair, que celui qui souhaite mener un projet 3D à bien, c'est devenue aujourd'hui plutôt ardue.
Tout est devenu une affaire de spécialistes, que se soit le code en dur, la modélisation, la prog des shaders,
la gestion de la physique, etc...

Fini l'époque ou quelques surdoués de la prog et de la3D arrivaient, seul, à s'approcher de réalisations commerciales.

Quand je vois tout ces projets de la morts qui tues que tentent de monter certains, quand on voit les spécifications techniques
qu'ils s'imposent et qu'ils mettent en avant, la maitrise des moteurs 'next gen' qu'ils énoncent dont ils ne sauront le plus souvent
à peine exploiter le dixième des caractéristiques, cela me laisse toujours très dubitatif.

En tant qu'amateurs, il faut se fixer des objectif modeste, accessible, et surtout se faire plaisir...

;)
Pour le plaisir, toujours ! ;) pour en donner aux joueurs, il faut d'abord savoir comment, heu, produire ce plaisir vidéoludique...

Quand tu fais un jeu seul, faut anticiper ton propre travail et le facteur temps est primordial. Il faut aussi relativiser, la plupart des joueurs n'exigent plus d'avoir des jeux techniquement à la pointe, sinon mario galaxy ou kart et autre jeu gameboy seraient délaissés....

Si je devais faire un FPS, j'utiliserai des astuces, comme plonger le joueur dans un brouillard, ou pénombre, des bruitages qui mettent dans l'ambiance, voir à l'écran des silhouettes vaporeuses au yeux inquiétant, un scénario qui justifie la chose quand même, et tout en résolvant l'épineux problème de modélisation/animation/texture des personnages( trop complexe donc trop de temps), ben tu tiens là un fps où tu peux te concentrer sur les possibilités d'actions du personnage principal, des interactions, recherche artistique pour donner une âme... et se méfier de la technique(qui n'est qu'un moyen, pas un objectif).

un petit mot pour les fps*, ce sont des jeux d'action, et c'est un secteur un peu saturé et pas le plus important, donc pour commercialiser la chose, çà va pas être facile:
1 les sociétés de jeux occidentale ont déjà des équipes qui font ces jeux, mais les boites japonaises sont juste grave à la bourre dans ce domaine, donc il y a encore, heu, une fenêtre de tirs si j'ose dire.
2 xboxlive et psn offre une possibilité d'accès direct à des centaine de milliers de joueurs, mais, car il y a un mais, là y a l'aspect financier( voir interview de l'auteur de Braid, avec cette histoire de 30% à renégocier avant de se lancer, accompagné d'un bon avocat spécialisé).
Dans les 2 cas, faut sans l'ombre d'un doute faire une version PC de votre jeu( que vous avez imaginez étant môme), pour garder une certaine indépendance.

1 jeu de plate-forme( 2D principalement, si, si)
2 simulateur de vie( sims et autre simulateur de poney sur gameboy)
3 jeu d'action, sport, rpg...

Les petites machines avec écran tactiles vont se multiplier et tout le monde en sera équipés, quitte à ne pas renouvelle sa console de salon...

Publié : mer. 28/janv./2009 14:11
par djes
Patrick88 a écrit :je serais plus "attiré" à faire un modeleur et "sortir" directement du ".mesh"
que de passer par tout un tas de bazar (modeleur->exporteur->convertisseur) pour arriver au fichier final...

j'ai cherché à convertir les fichiers sketchup en fichiers de point pour opengl, sketchup sauve ses fichiers en xml, (pas compris comment fonctionnait les routines pb xml), lu en texte donc, ça marche à peu près.

pour ogre... je nai pas trouvé comment était fait le .mesh...

pat
Le .mesh doit être documenté dans la doc Ogre officielle (le moteur est open source); OgreXMLConverter est un outil en ligne de commande, il est donc très facile de l'utiliser en passant par un xml avant.

Publié : mer. 28/janv./2009 16:25
par Patrick88
djes a écrit : Le .mesh doit être documenté dans la doc Ogre officielle (le moteur est open source); OgreXMLConverter est un outil en ligne de commande, il est donc très facile de l'utiliser en passant par un xml avant.
pfuuu, j'ai téléchargé le sdk, la doc, les sources... nada rien quedalle

ou alors j'ai pas bien chercher

le seul truc que j'ai trouvé, et je sais pas si ça a un lien , c'est le format des fichier .obj http://people.sc.fsu.edu/~burkardt/data/obj/obj.html

bon, j'ai pensé regarder dans les sources pour voir comment est stocké puis écrit le fichier...

pat