Author Topic: Blender, .obj, Model et mesh  (Read 33014 times)

0 Members and 1 Guest are viewing this topic.

Shimegi

  • Thug
  • *
  • Posts: 27
    • Njaro.org
Blender, .obj, Model et mesh
« on: February 17, 2009, 04:57:12 PM »
Bonsoir,

J'ai commencé aujourd'hui à explorer un peu Demoniak, et j'ai essayé de refaire pas mal de choses qui sont dispos en samples, globalement avec réussite :p J'ai un soucis par contre en ce qui concerne les .obj exportés depuis blender, je n'arrive pas à récupérer un mesh depuis un objet, alors que d'après lynx lite et une comparaison de ce que j'obtient avec les 3ds des samples, le nom du mesh devrait être bon (a savoir : obj_mesh). En éditant le fichier obj, je en retrouve pas le nom du mesh à l'intérieur (juste : Suzanne qui est le nom de l'objet et du mesh dans blender, si je différencie les noms j'obtient un Suzanna_Suzanne par exemple dans le fichier). Bref, j'ai essayé dans tout les sens mais sans aucun résultat pour le moment, et j'ai pas trouvé d'info sur ce problème particulier dans le forum ... si vous avez des idées :p
Concepteur Infographiste en Bijouterie Joaillerie

Shimegi

  • Thug
  • *
  • Posts: 27
    • Njaro.org
Re: Blender, .obj, Model et mesh
« Reply #1 on: February 18, 2009, 10:05:55 AM »
J'ai fini par mettre la main sur un fichier obj composé d'un objet et de plusieurs mesh, du coup j'ai fait la modif manuellement dans le fichier, et après essai il faut exporter depuis blender avec l'option "object groups" activée. A priori je n'ai plus d'erreur, et je trouve avec lynx le nom attendu pour le mesh, mais pour le moment quand je change le materiau sur le mesh, celui ci disparait, je dois me planter dans les options :p Je continue mes investigations, quand j'arrive à avoir un truc potable je vous montrerais ça :)
Concepteur Infographiste en Bijouterie Joaillerie

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: Blender, .obj, Model et mesh
« Reply #2 on: February 18, 2009, 10:35:19 AM »
Continue   nous tenir informé.

J'avais écrit ce petit billet   l'époque: http://www.ozone3d.net/blogs/demoniak3d/?p=45
Il y a peut etre des infos intéressantes.


shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Blender, .obj, Model et mesh
« Reply #3 on: February 18, 2009, 11:29:07 AM »
J'avais déjà eu ce genre de souci, et je m'étais aussi arraché les cheveux...

Exemple concret : cubetest.obj, exporté par wings3D. Un seul mesh (le cube), nommé cube1.
En éditant le .obj on trouve ça :

Code: [Select]
# Exported from Wings 3D 0.99.00b
mtllib cubetest.mtl
o cube1
#8 vertices, 6 faces
v -1.00000000 -1.00000000 1.00000000
v -1.00000000 1.00000000 1.00000000
v 1.00000000 1.00000000 1.00000000
v 1.00000000 -1.00000000 1.00000000
v -1.00000000 -1.00000000 -1.00000000
v -1.00000000 1.00000000 -1.00000000
v 1.00000000 1.00000000 -1.00000000
v 1.00000000 -1.00000000 -1.00000000
vn -0.57735027 -0.57735027 0.57735027
vn -0.57735027 0.57735027 0.57735027
vn 0.57735027 0.57735027 0.57735027
vn 0.57735027 -0.57735027 0.57735027
vn -0.57735027 -0.57735027 -0.57735027
vn -0.57735027 0.57735027 -0.57735027
vn 0.57735027 0.57735027 -0.57735027
vn 0.57735027 -0.57735027 -0.57735027
g cube1_default
usemtl default
f 1//1 4//4 3//3 2//2
f 1//1 5//5 8//8 4//4
f 2//2 6//6 5//5 1//1
f 3//3 7//7 6//6 2//2
f 4//4 8//8 7//7 3//3
f 6//6 7//7 8//8 5//5

Sauf que lynx considère que le mesh s'appelle cube1_default, pas cube1... Autrement dit il semble prendre en compte le nom "g nom" et pas "o nom" ; le groupe, pas l'objet (= mesh?).
3D, photos panoramiques : http://www.shadows.fr

Shimegi

  • Thug
  • *
  • Posts: 27
    • Njaro.org
Re: Blender, .obj, Model et mesh
« Reply #4 on: February 18, 2009, 11:50:31 AM »
Yep, j'ai remarqué ça, du coup j'arrive à agir sur les mesh indépendamment des objets. Mais si j'ajoute la balise attach_material le mesh disparait, j'ai essayé un paquet d'option en regardant sur différents samples.

Voici le code actuel, c'est basé sur un des samples :

Code: [Select]
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!--
==============================================================================
FILE: HyperGraph Tutorial 48.
AUTHOR: JeGX
DATE: 05.01.2005
PURPOSE: Shows a cartoon shader.


This file is part of Hyperion Demo-System.
For the latest info, see http://www.oZone3D.net
Copyright (C)2004 Jerome "JeGX" GUINOT
==============================================================================
-->

<hyperion version="1.0">

<scene name="hypergraph_48" display_fps="TRUE" show_ref_grid="TRUE" >
<window_size width="1024" height="768" />
<background_color r="0.2" g="0.4" b="0.6" />
<ref_grid_color r="0.9" g="0.9" b="0.9" />

<check_hardware_caps oglsl="TRUE"
                     error_message="Sorry, this demo requires OpenGL Shading Language support. Demo startup failed. Bye..." />

</scene>

<camera name="my_camera" navigation_mode="FLY" fov="50.0" >
<position x="0.0" y="50.0" z="150.0" />
</camera>

<light name="my_light" type="OMNI" render="FALSE" >
<position x="0.0" y="100.0" z="100.0" />
<diffuse r="1.0" g="1.0" b="1.0" a="1.0" />
</light>
<!--
====== TEXTURE ================================================================
-->

<!--
 Here is the effect: by specifying SPHERE_ENV_MAP, you
tell to the Hyperion 3D engine how calculate texture coordinates
to simulate environment reflection.
-->
<texture name="env2" filename="03_textures/Oj_64.png" addressing_mode="MIRROR"
         gen_coord_mode="SPHERE_ENV_MAP" />


<material name="mat_torus" shader_program_name="toonShader" >
<diffuse_reflection_factor r="0.8" g="0.75" b="0.35" a="1.0" />
<specular_reflection_factor r="0.95" g="0.93" b="0.7" a="1.0" />
</material>

<material name="mat01" >
<diffuse_reflection_factor r="0.5" g="0.35" b="0.35" a="1.0" />
<specular_reflection_factor r="0.05" g="0.03" b="0.92" a="1.0" />
</material>

====== MODEL =================================================================
-->

<model name="spheres" filename="02_models/spheres.obj" lighting="TRUE" texturing="TRUE" render="TRUE" >
<position x="0.0" y="0.0" z="0.0" />
<scale x="2.0" y="2.0" z="2.0" />
</model>


<!--
====== MESH =================================================================

-->
<mesh name="sphereA" parent_name="spheres" shape_type="MODEL_SUB_MESH" texturing="TRUE" lighting="FALSE" polygon_mode="SOLID" auto_spin="TRUE" >
<optimize method="VERTICES" />
<spin_values x="10.0" y="0.0" z="0.0" />
<vertices_color r="0.10" g="1.0" b="1.0" a="1.0" />
</mesh>

<mesh name="sphereB" parent_name="spheres" shape_type="MODEL_SUB_MESH" texturing="TRUE" lighting="TRUE" polygon_mode="SOLID" auto_spin="TRUE">
<optimize method="VERTICES" />
<attach_material name="mat01" />
<spin_values x="0.0" y="10.0" z="0.0" />
</mesh>

<mesh name="sphereC" parent_name="spheres" shape_type="MODEL_SUB_MESH" texturing="TRUE" lighting="TRUE" polygon_mode="SOLID" auto_spin="TRUE">
<optimize method="VERTICES" />
<spin_values x="0.0" y="0.0" z="10.0" />
</mesh>


<mesh name="my_torus" render="TRUE" shape_type="TORUS" lighting="TRUE" texturing="TRUE"
      auto_spin="TRUE" polygon_mode="SOLID" >
<position x="0.0" y="0.0" z="0.0" />
<torus radius="50.0" vertex_density="100" section_radius="1.0" />
<optimize method="VERTICES" />
<attach_material name="mat01" />
<vertices_color r="1.0" g="1.0" b="1.0" a="1.0" />
<spin_values x="10.0" y="0.0" z="20.0" />
</mesh>

Ici la sphere A est bien affichée, et sa couleur correspond à ce qui est indiqué dans la balise vertices_color. La sphere B a disparue. La sphere C est affichée avec la couleur par défaut. Le tore qui a aussi le "mat01", est visible et sa couleur correspond bien au mat01 (donc le souci ne vient pas, a priori, du matériau en lui même). Bref a part la balise attach_material je ne vois rien qui influe sur le rendu, à moins que je ne doivent réinitialiser certains paramètres des matériaux avant d'en affecter un autre ?
Concepteur Infographiste en Bijouterie Joaillerie

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: Blender, .obj, Model et mesh
« Reply #5 on: February 18, 2009, 01:55:46 PM »
En fait je ne crois pas que tu puisses modifier le materiau deja affecté à un sub-mesh d'un model. Peut etre en LUA mais pas en XML. Modifie manuellement dans ton fichier OBJ les materiaux que tu veux affecter aux sous meshes.

Avec les OBJ exportés depuis 3DS par exemple, il te suffit de modifier (ou d'ajouter selon le cas) la commande usemtl après le groupe de faces. Exemple:

g ChamferBox01
usemtl blue
f 1/1/1 3/3/3 4/4/4
f 1/1/1 4/4/4 2/2/2
f 1/1/1 5/5/5 6/6/6
...
...
usemtl green
f 16/16/16 32/32/32 33/33/33
f 16/16/16 33/33/33 17/17/17
f 17/17/17 33/33/33 34/34/34
f 17/17/17 34/34/34 18/18/18

En gros dans cet exemple tu as deux materiaux qui sont affectés à un seul mesh. Pour ton cas, ca sera plutot quelque chose comme:

g ChamferBox01
usemtl blue
...
...
g ChamferBox02
usemtl green
...
...

Ensuite au niveau XML dans Demoniak, si tu veux ajouter un shader GLSL our modifier les propriétés des materiaux du fichier OBJ, il te suffit de créer un noeud material avec comme nom le nom du materiau contenu dans le fichier OBJ:

<material name="blue" />

<material name="green" />

Au niveau XML, tu n'as pas besoin d'attacher ces materiaux aux sous-meshes car ils le sont deja.

J'espère que c'est un peu plus clair....


Shimegi

  • Thug
  • *
  • Posts: 27
    • Njaro.org
Re: Blender, .obj, Model et mesh
« Reply #6 on: February 18, 2009, 02:03:59 PM »
Yep ça l'est, merci :) J'avais exporté les éléments sans leur affecter de matériau, du coup il n'y avais aucune référence matériau dans le .obj, je pensais qu'on pouvais s'en passer en l'attribuant dans le xml mais il ne semble pas que ce soit possible. Ca fonctionne sans pb avec des matériaux affectés au départ.

Du coup, le xml ne sert qu'a modifier des matériaux existant? J'ai fait quelques tests et je pense commencer à comprendre le fonctionnement général de la chose. Me reste à trouver parcourir les tutos sur le texturing pour approfondir les options disponibles et attaquer ensuite les shaders glsl :)
Concepteur Infographiste en Bijouterie Joaillerie

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: Blender, .obj, Model et mesh
« Reply #7 on: February 18, 2009, 02:12:26 PM »
Ca fonctionne sans pb avec des matériaux affectés au départ.
c'est le fonctionnement normal.

Du coup, le xml ne sert qu'a modifier des matériaux existant?
Exactement!

Et n'hesiste pas à flooder le forum avec des questions de ce type, ca permet d'améliorer la doc.

shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Blender, .obj, Model et mesh
« Reply #8 on: February 18, 2009, 02:41:43 PM »
Petite suggestion de code sample :
-un fichier obj chargé dans demoniak
-deux meshes dans cet obj, avec chacun leur matériau, et deux shaders dans le xml pour bien montrer les deux matériaux.

Ca permettrait de reprendre ce que tu viens d'expliquer, et d'éviter bien des soucis aux débutants : moi-même j'ai pas mal lutté au début, notamment parce que la plupart des codes samples n'utilisent pas des objets complexes mais des meshes demoniak de base (sphere, cube) qui ne s'utilisent pas de la même façon.
Cf le concours TDT3D, si tu te souviens bien j'avais fini par importer séparément chaque sous mesh...
Ca permettrait aussi de clarifier ce qu'est la notion de "mesh" démoniak quand on importe un obj ('g nom' et pas 'o nom').

Avantage, ça ne devrait pas être un code sample long à coder. ;-)
3D, photos panoramiques : http://www.shadows.fr

Shimegi

  • Thug
  • *
  • Posts: 27
    • Njaro.org
Re: Blender, .obj, Model et mesh
« Reply #9 on: February 18, 2009, 03:51:04 PM »
je vais essayer d'avancer, j'ai trouvé déjà pour la reflexion -facile- du coup là je me penche sur les méthodes pour faire un matériau simple (diffuse, speculaire, et ambiant) du type de ceux qu'on peut faire pour un rendu de base, avec la reflexion. J'essaie de pondre un fichier d'exemple qui prend en compte les quelques soucis que j'ai rencontrés, mais je promet rien avant la fin de semaine prochaine, j'ai un week end chargé (enterrement de vide de garçon d'un pote, ça occupe :p)
Concepteur Infographiste en Bijouterie Joaillerie

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: Blender, .obj, Model et mesh
« Reply #10 on: February 18, 2009, 04:36:54 PM »
Petite suggestion de code sample :
-un fichier obj chargé dans demoniak
-deux meshes dans cet obj, avec chacun leur matériau, et deux shaders dans le xml pour bien montrer les deux matériaux.
Oui je vais le faire pour le successeur de Demoniak3D (qui à la fin ne s'appellera sans doute pas Demoniak3D vu tous les changements...  :crazy: ).

shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Blender, .obj, Model et mesh
« Reply #11 on: February 18, 2009, 05:31:54 PM »
Quote
Oui je vais le faire pour le successeur de Demoniak3D (qui à la fin ne s'appellera sans doute pas Demoniak3D vu tous les changements... ).
Ok !
Pour le successeur en question, si tu as fait des prévisions avec échéances sur les dates de release (version beta, version finale), je suis preneur... Et je ne suis pas le seul !  :medite:
3D, photos panoramiques : http://www.shadows.fr

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Re: Blender, .obj, Model et mesh
« Reply #12 on: February 18, 2009, 06:43:43 PM »
je commence à avoir une version qui tourne pas trop mal mais j'ai encore quelques coups de platre à ajouter. Je vais peut etre releaser une beta avec un nom à deux balles (genre DemonLab) histoire de bien differencier le Demoniak3D actuel de cette nouvelle version.

En attendant, voila un petit DoF  :twisted:


Steph3D

  • Capo Regime
  • ***
  • Posts: 399
Re: Blender, .obj, Model et mesh
« Reply #13 on: February 18, 2009, 07:41:11 PM »
Tiens, c'est drôle, depuis que je fait du c++, ça me fait le même effet quand je regarde de loin :confused: vas me falloir des lunettes  :roll: Non, m'en fou, t'en que je peu coller mon pif sur l'écran, je souffre pas du DOF :lol:

Pour différencier un programme on met V2 ou V2 bêta ou alpha, ça évite surtout au graphiste de devoir refaire un autre logo  :transpi:


shadow

  • Capo Regime
  • ***
  • Posts: 353
Re: Blender, .obj, Model et mesh
« Reply #14 on: February 19, 2009, 01:23:04 AM »
Les curseurs, c'est un nouveau type d'objet ou bien c'est fait en LUA avec les objets déjà existant dans Demoniak 1.0 ?

Jolie capture, en tous cas ! Ce serait encore mieux avec de l'AA, parce que du couple flou fait un effet étrange sur les lignes de la grille (comme des "taches" ).
3D, photos panoramiques : http://www.shadows.fr