dimanche 29 mars 2015

Programmation : Un projet OpenGL (GLUT) sous Code::Blocks

J'avais déjà programmer un algorithme de Raytracing lors de ma formation, je voudrais le compiler et le relancer dans un environnement actuel. (ici Code::Blocks). Puisque ce programme était fait pour afficher le résultat dans une fenetre X11, en OpenGL avec la librairie GLUT, je recrée cet environnement dans CODE::Block.

Nouveau projet GLUT dans Code::Blocks

Pour compiler le code, je crée un nouveau projet 'Glut'. Il faut installer le paquet freeglut-dev3, et ensuite créer des liens symbolique pour que Code::Blocks trouve la librairie : (source)

$sudo apt-get install freeglut3-dev
$sudo ln -s /usr/lib/x86_64-linux-gnu/libglut.a /usr/lib/libglut.a
$sudo ln -s /usr/lib/x86_64-linux-gnu/libglut.so.3 /usr/lib/libglut.so.3
Le projet Glut d'origine ne compile pas sans lier la librairie X11 : Aller dans Project > Build Options > linker settings puis ajouter pthread et X11 à la liste des librairies liées. (source)

De même, nous avons besoin de l'extension de X11 libXi. Il faut installer le package libxi-dev et ajouter "xi" à la liste des librairies liées. (source)

Le projet Glut fonctionne et affiche différentes formes 3D animées :

L'environnement semble fonctionnel, j'inclue mon code source au projet, je peut donc retrouver mon premier algorithme de RayTracing fonctionner à nouveau :



Je parlerais de cet algorithme dans une prochaine note,  je vais réorganiser le code pour le rendre plus évolutif et pouvoir expérimenter de nouvelle fonctionnalités... 

vendredi 27 mars 2015

Modélisation d'un personnage sous Blender : le haut du corps


Troisième étape de  la modélisation d'un personnage : le haut du corps.

C'est la suite du tutoriel de Darrin Lile, partie 3/10.

Nous formons le cou à partir des bords ouverts sous la tête. Puis nous l'étirons pour former le tronc du personnage. La deuxième partie consiste à créer les bras en supprimant les faces correspondante au niveau des épaules puis, comme pour le cou, en étirant les bords ouverts le long des bras.



Raccourcis utiles ;

Alt + clique : sélection de tout un "edge loop", cliquer sur un bord de cette manière permet de sélectionner tout le contour correspondant : très utile pour la sélection du bord ouvert pour former le cou ou les bras.

jeudi 26 mars 2015

Moteur de rendu : Compilation de Aqsis.


Afin de comprendre et de tester un moteur de rendu Renderman, je me lance dans la compilation du code source d'un moteur de rendu : Aqsis.
Environnement : Ubuntu 14.04 64bits

prérequis :

installations :
ccmake, Boost, Qt, libtiff.lib, flex, bison, libzlib, libjpeg, libpng libilmbase, OpenEXR, nsis

$ sudo apt-get update
$ sudo apt-get install cmake
$sudo apt-get install cmake-curses-gui
$ sudo apt-get install libboost-all-dev
$ sudo apt-get install qt-sdk
$ sudo apt-get install libtiff-dev
$ sudo apt-get install flex
$ sudo apt-get install bison
$ sudo apt-get install zlibc
$ sudo apt-get install libjpeg8
$ sudo apt-get install libpng-dev
$ sudo apt-get install libilmbase6
$ sudo apt-get install openexr
$ sudo apt-get install nsis
Cela parait assez trivial mais, si un package n'existe pas assurez vous d'avoir le bon nom. Une recherche avec aptitude peut-être utile :
$sudo aptitude search libjpeg

Configuration :

créer un dossier build a coté du dossier aqsis :
$mkdir aqsis-build

lancer cmake depuis ce dossier :
$cd aqsis-build
$ccmake ../aqsis-1.8.1

ccmake est optionnel mais permet d'avoir une "interface graphique" (en mode console) afin de mieux voir les dépendances manquantes ou éditer la configuration
donc si ccmake n'est pas installé : 
$cmake ../aqsis-X.X.X 
devrais fonctionner en utilisant la configuration par défaut.

Compilation :


Aprés un 'cmake' réussi, le Makefile ayant été généré, lançons l'installation avec un simple :
$sudo make install

Test :

C'est là que commence le fun : Aqsis permet de générer une image à partir d'un fichier .rib décrivant une scene 3D. Plusieurs fichier RIB sont fournis à titre d'exemple dans le dossier :
/usr/local/share/aqsis/examples/

Nous pouvons donc tenter :

$aqsis -d /usr/local/share/aqsis/examples/scenes/vase/vase.rib

Cela fonctionne avec un résultat qui est loin d'être parfait : 
ERROR: Invalid texture file - Could not find file "shad2.shad" in path: ".:/usr/local:"

C'est pourquoi les objets affichés ont l'air de flotter sur une table irréaliste. ...il doit me manquer des fichiers de shader... (à suivre)

Image générée : 

Avec une scène plus simple et aucun de fichier de shader à charger, l'image est générée sans erreur :
(Exemple de fichier RIB donné sur  la page "your-first-steps-with-aqsis")




Références :

http://lab.aqsis.org/dev/index

http://www.aqsis.org/documentation/tutorials/your-first-steps-with-aqsis/


Pour aller plus loin :

Quelqu'un s'est amusé à rendre la même scène en ayant compilé Aqsis sur un raspberry Pi et étudie les performances : https://raspberryments.wordpress.com/2012/07/30/3d-rendering-on-raspberry-pi-using-aqsis-renderer/

mardi 24 mars 2015

Modélisation d'une tête sous Blender

Deuxième étape de  la modélisation d'un personnage : la modélisation de la tête.

C'est la suite directe du tutoriel de Darrin Lile, partie 2/10.

Dans cette partie, après avoir affiné le visage par rapport au rendu souhaité, on étend le front pour faire le tour de la tête par le haut jusque la nuque puis on complète le coté, au niveau de l'oreille.



Voilà le résultat :




Raccourcis utilisés :

TAB : mode objet / mode édition

Sélection :
A noter qu'il peut être intéressant de régler la sélection sur le clique gauche de la souris si comme moi cela vous semble naturel : User preference > inputs > Select  with : Left

Ctrl+TAB : mode de sélection Points / Edges / Faces
Shift + clique : Sélection de plusieurs éléments disjoints
Ctrl + clique : Sélection de plusieurs élément et des éléments les liants les uns aux autres.
a : Tout désélectionner / tout sélectionner
: Sélection rectangulaire
Ctrl + drag click droit : sélection avec un outil 'lasso'

Modifications :
(en mode édition, en ayant sélectionné des point(s) / edge(s) / face(s)

e : extrude
s : scale
r : rotation
f : création d'une face entre les éléments sélectionnés
Alt + m : menu de 'Merge' pour fusionner des éléments.
Shift + s : menu de 'Snap' pour aligner la sélection ou le curseur sur d'autres éléments.


Attention : J'ai du changer la position du point d'ancrage de la sélection ( pour faire un scale ou une rotation autour de ce point). Lorsqu'on se met en mode "point d'ancrage sur le curseur" ce réglage reste actif, ainsi, chaque déplacement du curseur déplacera à nouveau le point d'ancrage. Il faut penser à retirer ce réglage lorsqu'il n'est plus nécessaire.

vendredi 20 mars 2015

Modélisation d'un visage sous Blender

Petit projet de Modélisation sous Blender : la modélisation d'un personnage.

C'est un sujet que je connais peu, ma formation ayant mis l'accent sur l'animation, l'interactivité et le rendu,. Je n'ai modéliser que très peu d'objets organiques lors de quelques tests sous Autodesk Softimage.

N'ayant que quelques notions de Blender, j'ai d'abord visionné quelques vidéos de prise en main sur la chaine blenderLounge pour me remettre à niveau. Ces vidéos montrent aussi l'installation de Blender et ses options de configuration, même si cela n'est pas très compliqué, c'est assez intéressant.


j'ai ensuite suivi le tutoriel de Darrin Lile. pour la création du visage. 


Le résultat est assez satisfaisant et m'encourage à continuer avec la suite des vidéos de Darrin. Ses explications sont claires et cette vidéo n'est que la première d'une série de 10 sur la modélisation d'un personnage.

J’espère pouvoir montrer un personnage entier assez rapidement, prochaine étape : le reste de la tête !