Les fichiers CSCN sont au format texte et sont donc modifiables assez facilement (pour peu que l'on comprenne quelque chose à la syntaxe)
Types de données
Les types de données qui apparaissent dans les fichiers de scène sont les suivants :
- entier : un entier tout con
- réel : un nombre réel, le séparateur des décimales est le point '.'
- 2, 3, 4 entiers : 2, 3 ou 4 entiers, séparés par des ',' ou des ' '
- 2, 3, 4 réels : 2, 3 ou 4 réels, séparés par des ',' ou des ' '
- matrice de 2x2, 3x3, 4x4 réels : 2, 3 ou 4 groupes séparés par des ';' de 2, 3 ou 4 réels séparés par des ',' ou des ' '
- couleur : les 4 composantes (RGBA) d'une couleur, exprimées en réels compris entre 0.0 et 1.0
- nom : chaîne de caractère
Sections
Description
Le fichier est décomposé en sections décrites de la manière suivante:
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [type_section] [nom_section] { // informations de la section }
Certaines sections peuvent avoir des sous-sections :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 light Light0 { type directional position 0.0 0.0 1.0 }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 material Bronze { pass { ambient 0.2125 0.1275 0.054 1.0 diffuse 0.714 0.4284 0.12144 1.0 emissive 0.0 0.0 0.0 1.0 specular 0.393548 0.271906 0.166721 1.0 shininess 25.6 } }
Liste des directives utilisables hors section
Certaines directives peuvent être utilisées hors section, et ne peuvent pas l'être dans une section :
- 'ambient_light' : couleur
Définit la couleur de l'éclairage ambiant
Liste des sections
Les différentes sections possibles sont les suivantes:
- light
- scene_node
- material
- object
- Section 'light'
Sert à définir une lumière pour la scène.
Les informations à renseigner sont les suivantes :
- 'type' : nom
3 types de lumières existent dans Castor3D :
- directional : lumière directionnelle (telle le soleil).
- point_light : une lumière située à un endroit et émettant dans toutes les directions.
- spot_light : une lumière située à un endroit et émettant dans un cône orienté dans une direction.
- 'position' : 3 réels
Définit la position de la source de lumière. Pour les lumières directionnelles, définit la direction d'où la lumière arrive.- 'attenuation' : 3 réels, spot_light et point_light uniquement
Définit les 3 composantes d'atténuation de la lumière en fonction de l'éloignement de la source : constante, linéaire et quadratique.- 'cut_off' : 1 réel, spot_light uniquement
Ouverture de l'angle du cône du spot.- 'exponent' : 1 réel, spot_light uniquement
Attenuation fonction de la distance entre le point éclairé et le centre du cône lumineux.- 'orientation' : 4 réels, spot_light uniquement
Orientation du spot. Il s'agit d'un quaternion.- 'parent' : nom
Définit le nom du scene_node auquel la lumière est attachée
- Sections 'scene_node'
Définit les propriétés d'un SceneNode. Les lumières, géométries et caméras ont besoin d'être attachées à un SceneNode pour être affichées dans la scène.
- 'attach_to' : nom
Définit le Node parent de celui-ci. Par défaut le parent est le RootNode. Le fait de transformer (tranlate, rotate, scale) un node parent transforme ses enfants.- 'position' : 3 réels
La position du node par rapport à son parent.- 'orientation' : 4 réels
Quaternion représentant l'orientation du node par rapport à son parent.- 'scale' : 3 réels
Echelle du node par rapport à son parent.
- Section 'material'
- 'pass' : nouvelle section
Commence un nouvelle section décrivant les propriétés de la passe.
- Section 'pass'
Section décrivant les propriétés d'une passe
- 'ambient' : couleur
Définit la couleur ambiante de cette passe.- 'diffuse' : couleur
Définit la couleur diffuse de cette passe.- 'emissive' : couleur
Définit la couleur émise par cette passe.- 'specular' : couleur
Définit la couleur réfléchie par cette passe.- 'shininess' : 1 réel
Définit la façon dont la lumière est réfléchie.- 'texture_unit' : nouvelle section
Définit une nouvelle section concernant une texture- 'shader_program' : nouvelle section
Définit une nouvelle section concernant un shader
- Section 'texture_unit'
Cette section décrit les informations d'une texture unit.
- 'image' : nom
Définit le chemin où trouver l'image- 'colour' : couleur
Définit la couleur de base- 'map_type' : entier entre 0 et 3
Définit la façon dont l'image est mappée sur l'objet :
- 0 : aucun effet particulier
- 1 : reflexion mapping
- 2 : sphere mapping
- Section 'shader_program'
Décrit un programme de shader (vertex + fragment/pixel)
- 'vertex_program' : nouvelle section
Définit une section décrivant le programme utilisé pour la partie Vertex du shader- 'pixel_program' : nouvelle section
Définit une section décrivant le programme utilisé pour la partie Pixel (Fragment) du shader- 'geometry_program' : nouvelle section
Définit une section décrivant le programme utilisé pour la partie Geometry du shader- Sections 'vertex_program', 'pixel_program', 'geometry_program'
Décrit un programme vertex, pixel ou geometry pour le shader courant
- 'file' : nom
Définit le nom du fichier utilisé pour le programme utilisé- 'variable' : nouvelle section
Définit une section de propriétés d'une variable à passer au shader
- Section 'variable'
Décrit une variable à passer au shader
- 'type' : nom
Nom du type de la variable, peut être :
- int : 1 entier
- float : 1 réel
- vec2i : 2 entiers
- vec3i : 3 entiers
- vec4i : 4 entiers
- vec2f : 2 réels
- vec3f : 3 réels
- vec4f : 4 réels
- mat2f : matrice 2x2 réels
- mat3f : matrice 3x3 réels
- mat4f : matrice 4x4 réels
- 'name' : nom
Nom de la variable telle qu'elle apparaît dans les fichiers de shader- 'value' :
Valeur de la variable, fonction du type choisi- Section 'object'
Permet de définir un objet (géométrie). Cet objet doit être attaché à un SceneNode pour être visible et doit contenir un mesh décrivant son aspect.
- 'parent' : nom
Nom du SceneNode auquel la géométrie est attachée- 'mesh' : nom, nouvelle section
Crée le mesh ayant pour nom le nom donné à la balise. Ouvre une sous-section de description du mesh
- Section 'mesh'
Permet de définir un mesh (type, material, submeshes, ...)
- 'type' : nom
Nom du type de mesh. Peut être:
- custom : mesh défini manuellement ou dans un fichier .csmesh
- cube : cube, il faut définir ses 3 dimensions par la suite
- cone : cône, il faut définir son rayon et sa hauteur par la suite
- cylinder : cylindre, dont il faut entrer ensuite le rayon et la hauteur
- sphere : sphère à faces quad, il faut définir le nombre de subdivision et le rayon
- icosaedron : sphère à faces tri, il faut définir le nombre de subdivision et le rayon
- torus : torre, il est nécessaire de définir le nombre de subdivisions internes, externes et les rayons interne et externe
- 'material' : nom
Nom d'un material défini dans un fichier .csmat ou dans ce fichier. Applique le material à tous les submeshes- 'submesh' : nouvelle section
Définit un submesh, uniquement si le type du mesh est 'custom'
- Section 'submesh'
Permet de définir un submesh (vertex, smoothing groups, materials)
- 'material' : nom
Nom d'un material défini dans un fichier .csmat ou dans ce fichier. Applique le material au submesh- 'vertex' : 3 coordonnées
Ajoute le vertex défini par les coordonnées au submesh- 'smoothing_group' : nouvelle section
Ajoute un smoothing group à définir au submesh.
- Section 'smoothing_group'
Permet de définir une groupe de faces dont les normales smooth seront calculées uniquement dans le groupe
- ' face' : 3 ou 4 indices
Définit une face qui utilise les 3 ou 4 indices de vertex. S'il y a plus de 3 indices, crée autant de faces triangulaires que nécessaire- 'uv' : autant d'uv que d'indices de la face précédente
Définit les uv à utiliser pour la face déclarée précédemment.
[EDIT :]
Le 23 janvier 2011
Mise à jour pour rester cohérent avec la version 0.6.1.1
Partager