Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Castor3D Discussion :

[Mode d'emploi] Format des fichiers de scène


Sujet :

Castor3D

  1. #1
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    juin 2005
    Messages
    1 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 1 937
    Points : 10 171
    Points
    10 171
    Billets dans le blog
    4
    Par défaut [Mode d'emploi] Format des fichiers de scène
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [type_section] [nom_section]
    {
    	// informations de la section
    }
    Exemple:
    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
    }
    Certaines sections peuvent avoir des sous-sections :
    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 :

    1. '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



    1. Section 'light'
      Sert à définir une lumière pour la scène.
      Les informations à renseigner sont les suivantes :

      1. '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.
      2. '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.
      3. '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.
      4. 'cut_off' : 1 réel, spot_light uniquement
        Ouverture de l'angle du cône du spot.
      5. 'exponent' : 1 réel, spot_light uniquement
        Attenuation fonction de la distance entre le point éclairé et le centre du cône lumineux.
      6. 'orientation' : 4 réels, spot_light uniquement
        Orientation du spot. Il s'agit d'un quaternion.
      7. 'parent' : nom
        Définit le nom du scene_node auquel la lumière est attachée


    2. 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.

      1. '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.
      2. 'position' : 3 réels
        La position du node par rapport à son parent.
      3. 'orientation' : 4 réels
        Quaternion représentant l'orientation du node par rapport à son parent.
      4. 'scale' : 3 réels
        Echelle du node par rapport à son parent.


    3. Section 'material'
      1. '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

        1. 'ambient' : couleur
          Définit la couleur ambiante de cette passe.
        2. 'diffuse' : couleur
          Définit la couleur diffuse de cette passe.
        3. 'emissive' : couleur
          Définit la couleur émise par cette passe.
        4. 'specular' : couleur
          Définit la couleur réfléchie par cette passe.
        5. 'shininess' : 1 réel
          Définit la façon dont la lumière est réfléchie.
        6. 'texture_unit' : nouvelle section
          Définit une nouvelle section concernant une texture
        7. '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.

          1. 'image' : nom
            Définit le chemin où trouver l'image
          2. 'colour' : couleur
            Définit la couleur de base
          3. '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)

          1. 'vertex_program' : nouvelle section
            Définit une section décrivant le programme utilisé pour la partie Vertex du shader
          2. 'pixel_program' : nouvelle section
            Définit une section décrivant le programme utilisé pour la partie Pixel (Fragment) du shader
          3. 'geometry_program' : nouvelle section
            Définit une section décrivant le programme utilisé pour la partie Geometry du shader
          4. 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

              1. '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
              2. 'name' : nom
                Nom de la variable telle qu'elle apparaît dans les fichiers de shader
              3. 'value' :
                Valeur de la variable, fonction du type choisi

    4. 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.

      1. 'parent' : nom
        Nom du SceneNode auquel la géométrie est attachée
      2. 'mesh' : nom, nouvelle section
        Crée le mesh ayant pour nom le nom donné à la balise. Ouvre une sous-section de description du mesh


    5. Section 'mesh'
      Permet de définir un mesh (type, material, submeshes, ...)

      1. '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
      2. 'material' : nom
        Nom d'un material défini dans un fichier .csmat ou dans ce fichier. Applique le material à tous les submeshes
      3. '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)

        1. 'material' : nom
          Nom d'un material défini dans un fichier .csmat ou dans ce fichier. Applique le material au submesh
        2. 'vertex' : 3 coordonnées
          Ajoute le vertex défini par les coordonnées au submesh
        3. '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

          1. ' 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
          2. '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
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    juin 2005
    Messages
    1 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 1 937
    Points : 10 171
    Points
    10 171
    Billets dans le blog
    4
    Par défaut Exemple de material
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    material Relief
    {
    	pass
    	{
    		ambient 0.5 0.5 0.5 1.0
    		diffuse 0.4 0.4 0.4 1.0
    		emissive 0.0 0.0 0.0 1.0
    		specular 0.774597 0.774597 0.774597 1.0
    		shininess 76.8
    
    		texture_unit
    		{
    			image rockbump.jpg
    			colour 1.0 1.0 1.0 1.0
    		}
    
    		texture_unit
    		{
    			image rockbump.tga
    			colour 1.0 1.0 1.0 1.0
    		}
    
    		shader_program
    		{
    			vertex_file Relief.vert
    			pixel_file Relief.frag
    
    			variable
    			{
    				type int
    				name in_Texture
    				value 0
    			}
    
    			variable
    			{
    				type int
    				name in_Relief
    				value 1
    			}
    
    			variable
    			{
    				type int
    				name in_LinearSearchSteps
    				value 20
    			}
    
    			variable
    			{
    				type int
    				name in_BinarySearchSteps
    				value 5
    			}
    
    			variable
    			{
    				type float
    				name in_Depth
    				value 0.075
    			}
    
    			variable
    			{
    				type float
    				name in_Tile
    				value 1.0
    			}
    		}
    	}
    }
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    juin 2005
    Messages
    1 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 1 937
    Points : 10 171
    Points
    10 171
    Billets dans le blog
    4
    Par défaut Exemple de scène
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ambient_light 1.0 0.0 0.0 1.0
    
    light_node Light_Node
    {
    	position 1.0 1.0 0.0
    }
    
    light Light
    {
    	parent Light_Node
    	type directional
    	diffuse 1.0 0.0 0.0
    	specular 1.0 0.0 0.0
    	ambient 0.2 0.2 0.2
    }
    
    geometry_node Quad_Node
    {
    }
    
    object Quad
    {
    	parent Quad_Node
    
    	mesh Quad
    	{
    		type custom
    
    		submesh
    		{
    			material Relief
    
    			vertex 0.0 0.0 0.0
    			vertex 0.0 1.0 0.0
    			vertex 1.0 1.0 0.0
    			vertex 1.0 0.0 0.0
    			
    			smoothing_group
    			{
    				face 0 1 2 3
    				uv 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0
    			}
    		}
    	}
    }
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Ou trouver le format des fichiers log de nessus
    Par hella.essafi dans le forum Sécurité
    Réponses: 1
    Dernier message: 06/02/2014, 16h53
  2. Format des fichiers PDF-1.5
    Par mustapha_terbah dans le forum Langage
    Réponses: 1
    Dernier message: 28/02/2013, 17h41
  3. Sql loader format des fichiers de controle
    Par Bouga74 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 14/04/2011, 11h41
  4. [10g] - format des fichiers dmp de datapump
    Par isa06 dans le forum Administration
    Réponses: 2
    Dernier message: 11/01/2008, 15h31
  5. Format des fichiers d'aides
    Par cjacquel dans le forum Windows
    Réponses: 1
    Dernier message: 22/05/2006, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo