Cela fait déjà quelques années que le moteur de rendu de Pixar est disponible dans une version non-commerciale en libre téléchargement. Il n’existe pas à ma connaissance de tutoriel détaillé pour expliquer l’installation sous Ubuntu.
Après quelques essais infructueux, puis fructueux, je vous propose d’en présenter l’installation, ainsi qu’une utilisation sommaire. Suivez le guide…
Tout d’abord, rendez-vous sur le site officiel de Renderman en prenant soin de choisir la version non-commerciale : https://renderman.pixar.com/store
Cliquez sur le lien correspondant :
Vous devrez ensuite remplir un formulaire qui vous permettra de créer votre compte sur les forums de Renderman. Une fois cela réalisé, notez bien vos identifiant et mot de passe et téléchargez le logiciel d’installation pour Renderman.
Comme indiqué sur le site de Pixar, vous allez devoir faire une conversion du fichier comme ci-dessous :
Installez d’abord rpm :
sudo apt install rpm
Et convertissez le fichier que vous avez téléchargé précédemment :
sudo rpm -ivh $HOME/Téléchargements/RenderMan-InstallerNCR-22.3.0_1923604-linuxRHEL7_gcc48icc170.x86_64.rpm
Le fichier d’installation a été copié dans le répertoire /opt/pixar.
Patchs à réaliser
Deux problèmes vont être rencontrés si vous lancez l’installation directement :
- Il est nécessaire d’avoir la bibliothèque libSSL-dev
- Seul le répertoire « $HOME/Downloads » est reconnu au lieu de « $HOME/Téléchargements »
Pour éviter ces deux problèmes, faites les actions ci-dessous :
sudo apt-get install libssl1.0-dev mkdir $HOME/Downloads
Installation
Ensuite allez dans le répertoire /opt/pixar pour lancer l’installation :
cd /opt/pixar/ cd RenderMan-Installer-ncr-22.3/bin sudo ./RenderManInstaller
Normalement une fenêtre d’identification va apparaître :
Entrez vos identifiant et mot de passe précédemment créés. Attention votre identifiant n’est pas l’adresse email mais bien le pseudonyme indiqué au moment de l’inscription.
Choisissez d’installer en plus de RenderMan ProServer, les fichiers d’exemple :
Si tout se passe bien, vous devriez obtenir le résultat ci-dessous :
Tous les logiciels ont été installés dans le répertoire « /opt/pixar/RenderManProServer-22.3 ».
Pensez à vous attribuer les droits sur ce nouveau répertoire ($USER étant votre nom d’utilisateur et $GROUP le groupe auquel il appartient):
sudo chown -r $USER:$GROUP /opt/pixar/ sudo chmod -R 755 /opt/pixar/
Les fichiers d’exemple ont été installés -eux- dans « $HOME/Downloads ».
Pensez à les déplacer dans « /opt/pixar/RenderManProServer-22.3/lib/ ». Deux répertoires sont concernés : « scenes » et « plugins »
mv $HOME/Downloads/Renderman-PixarRenderMan-Examples-21.3_1715407-windows8_vc11icc150.x86_64.tgz /opt/pixar/RenderManProServer-22.3/lib/ cd /opt/pixar/RenderManProServer-22.3/lib/ tar -xvf Renderman-PixarRenderMan-Examples-21.3_1715407-windows8_vc11icc150.x86_64.tgz
Configuration
Notez bien qu’il est question uniquement du moteur de rendu et pas de l’interface utilisateur pour créer des scènes 3D. Vous pouvez tout à fait lier ce moteur de rendu à un logiciel type Blender 3D, mais ce n’est pas l’objet de cet article.
Pour que le moteur Renderman soit utilisable, indiquez en ligne de commande les variables ci-dessous :
export RMANTREE=/opt/pixar/RenderManProServer-22.3/ export PATH=$RMANTREE/bin:$PATH
La variable RMANTREE est la plus importante car elle est constamment utilisée par Renderman.
Enfin vérifiez que Renderman est utilisable :
prman --help Pixar PhotoRealistic RenderMan 22.3 linked Sun Dec 09 20:22:22 2018 PST @1923583 build linuxRHEL7_x86-64_gcc48icc170_external_release copyright (c) 1988-2018 Pixar.
Première utilisation
Si vous avez installé les fichiers d’exemple, vous devriez avoir l’arborescence complète ci-dessous:
$RMANTREE/
├── bin/
| ├── it
| ├── prman
| └── oslc
├── etc/
├── include/
└── lib/
├── scenes/
└── shaders/
Voici les programmes principaux :
- prman : « Pixar Renderman » est le programme pour lancer le moteur de rendu
- it : « Image Tool » permet la visualisation du rendu
- oslc : « Open Shading Language Compiler » sert à compiler les shaders
- scenes : ce répertoire contient différents exemples de scènes au format RIB
Commençons par lancer le rendu d’une scène :
cd $RMANTREE/lib/scenes cd integrator prman -d it -t:-2 PxrVisualizer.rib
Vous devriez avoir le résultat ci-dessous :
Le langage de description des scenes pour Renderman est le format RIB. Celui-ci n’est pas très documenté, car on n’est pas censé l’utiliser manuellement. On passe en général par un éditeur 3D pour créer et visualiser ses propres scènes.
Voici un exemple d’une autre scène disponible :
cd $RMANTREE/lib/scenes cd bxdf/hair prman -d it -t:-2 PxrMarschnerHair.rib
Au bout de quelques minutes vous devriez obtenir le résultat ci-dessous :
Avouez que cela a de la gueule 🙂
Tutoriel rapide du format RIB
Pour ceux que cela intéresse, il est tout à fait possible de décrire les scènes RIB bout par bout via un éditeur de texte.
Un peu comme d’autres logiciels type POVRay, DKB Trace, Appleseed, le langage sous-jacent permet de décrire les scènes dont on veut faire le rendu.
Créez tout d’abord un dossier « tutorial » :
cd $RMANTREE/lib/scenes mkdir tutorial cd tutorial
Enfin éditez le fichier « cylinder.rib » qui sera un premier exemple très simple pour illustrer le propos.
On va juste créer ici un objet composé d’un cylindre dont les extrémités sont composées chacun d’une sphère :
Display "Sample Cylinder" "framebuffer" "rgb" Projection "perspective" "fov" 40 Format 640 480 1 # View point Translate 0 0 3 Rotate 0 1 0 0 Rotate 90 0 1 0 Scale 1 1 -1 # Scene WorldBegin # 3 objects TransformBegin Cylinder 0.05 -0.5 0.5 360 Translate 0 0 -0.5 Sphere 0.15 -0.15 0.15 360 Translate 0 0 1 Sphere 0.15 -0.15 0.15 360 TransformEnd WorldEnd
Pour lancer le rendu de la scène lancez de nouveau prman :
prman -d it -t:-2 cylinder.rib
Vous devriez voir le résultat s’afficher dans « Image Tool » :
Exemple plus avancé
L’exemple précédent ne fait intervenir aucune source de lumière complexe, ni de texture sur l’objet.
Nous allons donc appliquer de nouveaux éléments dans la scène pour que celle-ci soit un peu plus riche visuellement.
La scène
Les premiers paramètres du fichier vont permettre d’indiquer quelle sera la taille de l’image, quel type de rendu va être réalisé, et où se trouve les fichiers « archive » (on y reviendra plus tard).
Ici la scène fait 640×480, utilise l’intégrateur « PxrPathTracer » et recherche les fichiers d’archive dans le répertoire courant « . » :
# Renderman RIB sample scene Hider "raytrace" "int incremental" [1] "int minsamples" [0] "int maxsamples" [128] "float darkfalloff" [0.025] Integrator "PxrPathTracer" "PxrPathTracer" "int maxPathLength" [10] "int allowCaustics" [0] Option "searchpath" "archive" ["."] Display "Sample Scene" "framebuffer" "rgb" Projection "perspective" "fov" 40 Format 640 480 1
La caméra
Le caméra arrive ensuite : c’est elle qui va permettre de voir la scène. Par défaut elle se trouve aux coordonnées <0 0 0> au départ, et en général on la déplace (translate) et on en fait des rotations autour de l’axe X, Y ou Z
Par défaut renderman est en mode « main gauche », comme ci-dessous :
Pourquoi main gauche ? Parce que tous les axes positifs sont dans le sens des doigts de votre main gauche : X pour le pouce, Y pour l’index et Z pour le majeur.
Dans d’autres systèmes comme OpenGL, c’est le mode « main droite » qui est utilisé comme ci-dessous :
L’axe des Z est alors inversé.
Pour en revenir à notre caméra, celle-ci sera définie dans un repère type « main gauche » et on appliquera une translation, suivi de deux rotations et d’une translation finale :
# Camera Translate 0 0 5.0 # X rotation Rotate -20 1 0 0 # Y rotation Rotate 45 0 1 0 Translate -0.5 0 -1.0 #scale 1 1 -1 # if world is right-handed
Notez que tous les éléments qui vont suivre (lumière, objets, textures…) sont englobés par les deux mots clefs ci-dessous pour la description de la scène :
WorldBegin ... WorldEnd
La lumière
Sans lumière vous ne verrez pas grande chose dans votre scène. Il est donc nécessaire d’indiquer sa position, sa couleur mais aussi son type.
Ici il s’agit d’une boîte à lumière rectangulaire (PxrRectLight), de couleur blanche (lightColor) et qui donne une couleur d’ombre entre gris-foncé et noir (shadowColor) :
# Light AttributeBegin Attribute "identifier" "string name" ["light1"] Rotate 40 0 1 0 # oribital Rotate -50 1 0 0 # elevation Translate 0 0 8 # dolly Scale 2 1 2 Attribute "visibility" "int indirect" [0] "int transmission" [0] Attribute "visibility" "int camera" [0] Rotate 180 0 1 0 # do not change Light "PxrRectLight" "PxrRectLightShape3" "float exposure" [7] "color lightColor" [1 1 1] "float coneAngle" [90] "int enableShadows" [1] "color shadowColor" [0.2 0.2 0.2] AttributeEnd
A noter : cette boite à lumière reste invisible au spectateur (visibility camera à 0).
Les objets
Nous allons inclure deux objets dans la scène : d’une part un objet représentant les différents axes dans l’espace (inspiré du cylindre précédent) et d’autre part une théière, objet emblématique de l’animation 3D :
Ceux-ci seront disponibles dans deux fichiers à part nommés « axis.rib » et « teapot.rib ». Voici comment les ajouter via la commande « ReadArchive » :
# Axis ReadArchive "axis.rib" # Teapot AttributeBegin Bxdf "PxrDisney" "PxrDisney1" Translate 1.5 0 0.5 Scale 0.25 0.25 0.25 Rotate -90 1 0 0 ReadArchive "teapot.rib" AttributeEnd
Le sol
Enfin nous allons ajouter un sol sur lequel vont reposer les objets. Celui-ci sera de couleur marron foncé :
# Ground AttributeBegin Bxdf "PxrSurface" "PxrSurface1" "color diffuseColor" [0.2 0.1 0.0] "float diffuseRoughness" [0.0] Scale 150 150 150 Polygon "P" [-0.5 0 -0.5 -0.5 0 0.5 0.5 0 0.5 0.5 0 -0.5] AttributeEnd
Votre scène principale est terminée, pensez à la sauvegarder sous le nom « scene.rib » dans le répertoire « tutorial ».
Par soucis de simplicité, j’ai aussi proposé le fichier en téléchargement.
Les archives
Il reste maintenant à ajouter les deux objets manquants : l’axe et la théière.
La commande ReadArchive est assez puissante car elle permet d’inclure des fichiers à une scène.
Tout d’abord éditez le fichier « axis.rib » représentant l’axe ci-dessous :
L’axe X sera en rouge, le Y en vert et le Z en bleu (à noter que l’axe Z sera dans l’autre sens dans notre scène) :
AttributeBegin # Z Axis TransformBegin Bxdf "PxrSurface" "PxrSurface1" "color diffuseColor" [0.0 0.0 0.3] "float diffuseRoughness" [0.0] "color specularFaceColor" [0.08 0.08 0.08] Attribute "identifier" "name" ["jack_z_axis"] Cylinder 0.05 -0.5 0.5 360 Translate 0 0 -0.5 Sphere 0.15 -0.15 0.15 360 Translate 0 0 1 Sphere 0.15 -0.15 0.15 360 TransformEnd # Y Axis TransformBegin Bxdf "PxrSurface" "PxrSurface1" "color diffuseColor" [0.0 0.3 0.0] "float diffuseRoughness" [0.0] "color specularFaceColor" [0.08 0.08 0.08] Attribute "identifier" "name" ["jack_y_axis"] Rotate 90 1 0 0 # Rotation around the x-axis Cylinder 0.05 -0.5 0.5 360 Translate 0 0 -0.5 Sphere 0.15 -0.15 0.15 360 Translate 0 0 1 Sphere 0.15 -0.15 0.15 360 TransformEnd # X Axis TransformBegin Bxdf "PxrSurface" "PxrSurface1" "color diffuseColor" [0.3 0.0 0.0] "float diffuseRoughness" [0.0] "color specularFaceColor" [0.08 0.08 0.08] Attribute "identifier" "name" ["jack_x_axis"] Rotate 90 0 1 0 # Rotation around the y-axis Cylinder 0.05 -0.5 0.5 360 Translate 0 0 -0.5 Sphere 0.15 -0.15 0.15 360 Translate 0 0 1 Sphere 0.15 -0.15 0.15 360 TransformEnd AttributeEnd
Et ensuite l’objet représentant la théière « teapot.rib » : disponible en téléchargeant le fichier associé.
Sauvegardez les fichiers « axis.rib » et « teapot.rib » dans le même répertoire que le fichier qui contiendra votre scène complète : c’est à dire dans le répertoire « tutorial ».
Il est tout à fait possible de créer un sous répertoire « archive » qui contiendra ces deux fichiers et dans ce cas là il faudra indiquer au début de votre scène le répertoire correspondant :
Option "searchpath" "archive" ["./archive"]
Rendu de la scène
Si tout s’est bien passé, la scène finale peut être générée via la commande :
prman -d it -t:-2 scene.rib
Et vous devriez voir comme résultat :
Voilà, vous êtes à présent un utilisateur averti de Renderman !
Pour aller plus loin
Le but de ce moteur de rendu est d’être utilisé dans d’autres logiciels 3D comme par exemple Blender3D ou encore Maya. Concernant Blender 3D, ce sera peut être l’occasion d’un prochain article.
Si vous souhaitez approfondir les notions utilisées par Renderman, voici les liens à conseiller :
- RIB tutorials
- Renderman command line
- After install of Renderman
- Renderman Forum
- Documentation Renderman 20
- Renderman plugin for Blender3D
Et enfin les fichiers utilisés dans cet article :