Texel |
|
Les fichiers an8 d'Anim8or
Mode objet Avec uniquement des Meshes Note: Cet article a été écrit il y a plusieurs année, alors que les specs du format de fichier .an8 d'Anim8or n'étaient pas disponibles. Depuis l'auteur d'Anim8or a publié des specs sur le site officiel d'Anim8or. Elle sont néanmoins incomplètes à l'heure où j'écris ces lignes. Les quelques informations ci-dessous vous fournirons peut-être quelques bases pour comprendre le fonctionnement du format de fichier Anim8or. Je vous invite en outre à tester LibAn8, ma librairie de chargement de fichiers Anim8or dont le code source est disponible. Anim8or est un modeleur 3D gratuit et facile à utiliser. Je vous conseil de l'essayer avant de lire ces specs.(Site Officiel d'Anim8or) Ces specs ne sont pas complètes. Mais elles vous permettrons de gagner du temps. Pour plus d'infos, faites comme moi...des tests. Il est beaucoup plus facile d'importer ou d'exporter un fichier Anim8or contenant seulement des meshes. Utilisez dans Anim8or "Build -> convert to mesh" Voici le contenu d'un fichier an8 décrivant un cube texturé: Légende: Toujours présent. Présent seulement si une texture est utilisé dans l'objet. Présent seulement si un material est utilisé dans l'objet. Toujours présent si un material est utilisé. Présent seulement si les paramètre par defaut ont été modifié Présent sous certaines conditions
Bloc header
version: Numéro de version d'anim8or utiliser pour générer le fichier. build: Date de création du fichier. Bloc environment grid: ? framerate: Nombre d'images par seconde. Bloc texture Le nom de la texture suit le nom du bloc. Le bloc "file" contient le chemin complet de la texture. Il peut ressembler à ça: file { "D:\\MyProjects\\divers\\anim8or\\an8demo_02-09-06\\Debug\\Data\\sand.bmp" } or file { "D:\\MyProjects\\divers\\anim8or\\an8demo_02-09-06\\Debug\\Data\\sand.bmp" } Bloc object Le nom de l'objet suit le nom du bloc. Un seul objet est exporté en mode "object", plusieurs en mode scène. Ce bloc contient les blocs mesh et material. Dans un objet, plusieurs meshes peuvent être inclus dans un ou plusieurs blocs group.
Le bloc base: bloc origin: coordonnée du repère local du groupe. bloc orientation: Quaternion pour l'orientation du groupe (x, y, z, w) (présent seulement en cas de rotation). Les coordonnées des meshes sont alors exprimées dans le repère du groupe.
Le nom du "material" suit le nom du bloc. Ce bloc n'apparaît qu'au cas où un "material" a été créer dans Anim8or. Le bloc surface est toujours présent et semble être le seul sous bloc direct du bloc "material".
Présent si le bouton "=" est sélectionné dans Anim8or (boîte de dialogue des matériaux).
Toujours présent si un "material" est créer. Et toujours dans le même ordre (ambiant,diffuse,speculare). Sous bloc "rgb" (couleur rouge,bleu, vert) et "factor" (facteur) toujours présent. Sous bloc texturename,textureparams présent seulement si le "material" a une texture.
Suivit du nom de la texture.
Contient le mode de blending et alph dans ses sous bloc correspondants.
Toujours présent si "material" présent. Correspond au paramètre "Rough" d'Anim8or. Pas de sous bloc.
Présent si paramètres par défaut modifié dans Anim8or. Sous bloc "rgb" (couleur rouge,bleu, vert) et "factor" (facteur) toujours présent. Sous bloc texturename,textureparams présent seulement si le "material" a une texture.
Présent si paramètres par défaut modifié dans Anim8or. Correspond au paramètres "Trans" et "brillance" d'Anim8or. Pas de sous bloc.
Present seulement si une texture est affecté à la transparence ou au bumpmapping. Present après phongsize. Le sous bloc "kind" indique si le bloc décrit une transparence ou un bumpmapping (l'un peu être présent sans l'autre). Bloc Mesh Contient un mesh. Plusieurs meshes possible par objet. Note: Un bloc "group" peut contenir plusieur meshes. Il contient alors un bloc "name", "base" puis les blocs "mesh". Bloc name Toujours présent Nom du mesh. Bloc base Présent Lorsque le mesh est déplacé dans l'éditeur d'objets de Anim8or. Sous bloc origin: coordonnée du repère local du mesh. Sous bloc orientation Quaternion pour l'orientation de l'objet (x, y, z, w) (présent seulement en cas de rotation). Les coordonnées du mesh sont alors exprimées dans le repère de cette base. Bloc material Material par defaut de la mesh ? Bloc smoothangle Lorsqu'un vertex appartient à plusieurs polygones, il possède des normales différentes pour chaques polygones (suivant la normal des face des polygone). Le smoothangle est l'angle à partir du quel les différentes normales d'un même vertex son additionnées pour tromper la lumière et lisser les objets . Commentaire /* n points, m faces, k uvCoords */ Nombre n de points. Nombre m de faces. Nombre k de coordonnées de texture. Bloc materiallist Liste par nom des materiaux utilisés dans par la mesh dans le sous bloc "materialname". Un bloc "materialname" par nom de "material". Toujours au moins un nom (" -- default --"). L'ordre d'apparition dans la liste est important (cf bloc face) Bloc points Liste des points et leurs coordonnées (x,y,z). Le nombre de points par ligne est variable. Note: Un point peur être utilisé par plusieurs faces (cf bloc face). Bloc texcoords Liste des coordonnées de texture utilisé dans le programme. Note: une coordonnée de texture peut être utilisé par plusieurs vertices (cf bloc face). Bloc normals Présent seulement si on a demandé à Animor d'exporter les normals. Liste des coordonnées des normals. Bloc faces Une ligne par face. Quatre nombres précèdent la liste des indices de la face. Ces quatre nombres correspondent: _ 1er: Nombre de vertices pour cette face (triangle, quad,...). _ 2ième: Masque. Nombre binaire converti en décimal. Ce nombre a été calculé de la façon suivante: Soit un nombre binaire à trois chiffres. Le premier bit (à droite) est mis à 1 par Anim8or si les faces arrières doivent être affichées (backfaces) ou 0 sinon (valeur par défaut). Le deuxième bit est mis à 1 si les vertices ont chacun leur normal ou 0 sinon (valeur par défaut). Le troisième bit est mis à 1 si on utilise les coordonnées de texture ou 0 sinon (valeur par défaut). Ce nombre binaire est ensuite converti en décimal. Anim8or met dans la majorité des cas ce nombre à 4 et il est assez rare que ce masque soit différent pour chaques faces. Quelques exemples: 0: Pas d'indices de textures 1: Montre les faces arrières des faces. 2: Les faces utilisent les normales par vertex exporté par Anim8or (avec "debug"). 4: La face a des coordonnées de texture. 6: Les faces utilisent les normales par vertex exporté par Anim8or (avec "debug") + les coordonnées de textures. _ 3ième: Numéro du material utilisé pour cette face. Ce numéro correspond à l'ordre dans lequel les matériaux apparaissent dans le bloc "materiallist" de la mesh courante. _ 4ième: Si plus grand ou égale à 0, index de la normale de la face elle-même (et pas de ses vertices) Trois types d'indices peuvent être stockés: les indices de points et les indices des coordonnées de texture et les indices de normales. A l'intérieur de deux parenthèses, les indices de chaques vertices de face sont eux même listé à l'intérieur de deux parenthèses. Il peut y avoir 1, 2 ou 3 indices par vertex: _ L'indice d'un point de la face (toujours présent et en premier). _ L'indice d'une coordonnée de texture pour un point de la face (présent si le masque l'indique). _ L'indice d'une normale d'un point de la face (présent si le masque l'indique). Les indices sont listés avec une orientation dans le sens des aiguilles d'une montre. Anim8or recalcule automatiquement les normales si elles ne sont pas définies dans le fichier. Si les normales sont stockées dans le fichier, elles le sont de la même façon que pour les points ou les coordonnées de texture. Attention: Une face n'est pas forcement décrit sur une seule ligne( lorsque le nombre de vertex est important), mais les indices d'un vertex (les 2 ou 3 indices de vertex, d'uv, et de normale entre "()") sont toujours sur une même ligne. Exemple:
|