Cahier des charges VLOBJ - Tino3210/vlobj GitHub Wiki

Cahier des charges - VLOBJ

Introduction

Le but de ce projet est de compiler notre propre langage le VLOBJ en fichier .obj et .mtl lisible par blender.

Description

L'utilisateur va pouvoir créer une scène blender via le langage VLOBJ qui s'inspire du python. L'utilisateur peut créer des cubes et des pyramides.

VLOBJ

Voici, les fonctionnalités possibles du langage VLOBJ.

Shape

  • Création d'un cube avec comme arguments la position (x,y,z), du centre, la taille de la forme et une Color

    Square(1, 0, 1, 2, 'bleu')
    
  • Création d'une pyramide avec comme arguments la position (x,y,z), du centre, la taille de la forme et sans couleur se qui fait une forme de couleur blanche

    Pyramid(3, 2, 3, 4)
    

Dès que une forme est créé, elle sera ajouté dans le fichier ".obj".

Color

Une couleur peut être créer avec le mot clef Color. Les arguments contiennent le nom et les valeurs (r,g,b).

Color('bleu',0,0,255) # Couleur bleu

Boucle

  • Les boucles représentées par ^^

    x =) 0
    y =) 0
    z =) 0
    i =) 5
    ^^ (i > 0)
     :(
     Square(x+i,y,z,i)
     ):
    

Random

  • Valeurs aléatoires

    i =) xD(start, stop)
    
  • Forme aléatoire

    xS(x,y,z,taille)
    

Opérateur incrémentation et de décrémentation

i+_+ # incrémente de 1 la variable i
i-_- # Décremente de 2 la variable i

Les tests

:/ (taille == 4)
:(
	Square(1, 0, 1, 2, 'bleu')
):else:(
	Square(1, 0, 1, 2, 'red')
):

.obj

Le fichier .obj contient la géométrie des formes avec leurs positions et tailles. Blender peut importer un fichier pour ajouter à sa scène les éléments présents dans le document.

  • Un sommet est défini de la manière suivante :

    v 1.0 0.0 0.0
    
  • Une coordonnée de texture est définie de la manière suivante :

    vt 1.0 0.0
    
  • Une normale est définie de la manière suivante :

    vn 0.0 1.0 0.0
    
  • Chaque face est ensuite définie par un ensemble d'indices faisant référence aux coordonnées des points, de texture et des normales définies précédemment :

    f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3
    

.mtl

Le fichier .mtl contient les informations sur les matériaux utilisés pour colorier les formes dur fichier .obj. Donc à chaque "Color()", un nouvau metériel est créer dans le fichier ".mtl".

newmtl blue # nom du materiel
Ns 100
Ka 1.000000 1.000000 1.000000
Kd 0.000000 0.005973 0.800000 # L'unique paramètre à changer, pour modifier la couleur
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2