Pixar Renderman sous Ubuntu

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 :

download

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/binsudo ./RenderManInstaller

Normalement une fenêtre d’identification va apparaître :

install3

 

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 :

install4

Si tout se passe bien, vous devriez obtenir le résultat ci-dessous  :

install6

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

install2

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 :

scene1

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 :

scene2

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 » :

tuto1.png

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 :

coord-left-handed

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 :

coord-right-handed

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

lumiere2

 

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) :

axis-color

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 :

scene-finale

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 :

Et enfin les fichiers utilisés dans cet article  :

 

 

 

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s