Depuis pas mal de temps déjà, un plugin d’intégration d’Octane à Cinema 4D est en cours de développement. La transposition du système nodal d’Octane a Cinema 4D n’étant pas simple à intégrer ni à appréhender, j’ai pensé qu’un article d’introduction pouvait être utile aux débutants. Bien entendu, avoir déjà ouvert et exploré la version standalone d’Octane render sera un réel plus pour retirer tout le bénéfice de cet article. Aussi, comme le plugin est toujours en cours de développement, cet article n’est qu’un instantané de l’outil en ce début d’année 2014.

L’interface

En l’état actuel, l’interface du plugin d’Octane pour Cinema 4D se compose de trois éléments regroupés dans un menu ‘Octane’ intégré à l’interface par défaut. Comme toujours dans Cinema 4D, il suffit de construire une interface adaptée à ses besoins pour disposer ces nouvelles fenêtres comme on le désire.
Ces trois éléments sont la fenêtre des ‘Settings’, la fenêtre de ‘Live Viewer window’ ainsi que le module de pilotage de la prévisualisation et des objets ‘Octane dialog’. Ces trois fenêtres peuvent être intégrées n’importe où dans l’interface Cinema 4D, ensembles ou séparées.

Un exemple d'intégration du plugin Octane dans Cinema 4D R14.

Un exemple d’intégration du plugin Octane dans Cinema 4D.

La fenêtre de Settings contient plusieurs onglet et sous-onglets

Le Kernel est le centre de pilotage des paramètres globaux du rendu proprement dit avec le choix de type de rendu :

  • Directlighting : une sorte de raytracing avancé ou de rendu semi-biaisé extrêmement rapide et parfaitement adapté pour l’animation ou les rendus avec peu de reflets, de transparences ou de subsurface scattering. Il contient plusieurs sous-modes comme l’occlusion ambiante, la diffusion globale, etc.
  • Pathtracing : rendu non-biaisé standard. Il possède un paramètre de limite de calcul de samples (passes) paramétrable pour plus de commodités mais en théorie on peut laisser le rendu calculer à l’infini. Ce mode convient pour tous les calculs fins et supporte tous les types de transparences, reflets et translucidités. Il supporte précisément les propriétés physiques comme des indices de réflexion et de réfraction. Il est le plus adapté pour les environnements ouverts ou à éclairage direct.
  • PMC : rendu non-biaisé optimisé, propre à Octane. Ce mode est en tous points équivalent au Pathtracing mais est optimisé pour les environnements peu éclairés ou à éclairage indirect nécessitants beaucoup de rebonds indirects et peu de rebonds directs, ce pour des calculs sur GPU.
  • Deep Channel : module de rendu pour les passes de compositing comme z-depth, masque de matériaux, masque alpha, etc.

C’est aussi dans le Kernel qu’on règle des paramètres comme le calcul d’un canal alpha – avec conservation de l’environnement ou non -, la finesse du calcul des caustiques ou la prise en compte des transparences alpha des matériaux pour le calcul des ombres (shadow alpha).

L’onglet CameraImager pilote tous les paramètres généraux d’éclairage, à la manière d’un appareil photo, comme le degré d’exposition, l’ouverture de diaphragme, l’ISO et le gamma ainsi que le camera response, le vignetting ou la balance des blancs. À l’exception de la case à cocher premultiplied alpha (indispensable si on veut un masque alpha de qualité erratum : l’affichage du canal alpha n’est pas de bonne qualité mais la version enregistrée sera de bonne qualité, le premultiplied alpha à tendance à générer un liseré donc il est plutôt à déconseiller, à l’exception de cas particuliers), aucun de ces paramètres ne fera redémarrer le rendu de prévisualisation. Ce qui permet de tester en temps réel divers paramètres d’éclairage ou de courbes colorimétriques sans relancer le rendu.

L’onglet Post gère les effets de post-productions comme les blooms (lumière débordant des objets surexposés sur les parties sous-exposées) ou les lens flares (effets d’étoile de certains objectifs sur les zones lumineuses). Les effets de post-production ne relancent pas le rendu de prévisualisation. Il est donc possible de les tester en temps réel.

Dans Preview on peut régler le calcul d’une prévisualisation rapide d’une animation à partir du prévisualiseur. C’est une fonction miroir à l’équivalent dans Octane standalone pour faire un turntable rapide, etc. Pour ma part, ne faisant jamais d’animation, je n’ai pas encore testé cette fonctionnalité donc je ne peux pas en dire grand-chose…

Et pour finir, l’onglet Settings permet de régler les paramètres spécifiques au plugin comme les paramètres propres à la prévisualisation des matériaux, la gestion des GPUs et des priorités, la fonction de Shader to bitmap (conversion à la volée des shaders 2D de Cinema 4D en fichier bitmap, voir l’article Cinema 4D : textures procédurales et Octane), les données utilisateur, les chemins de textures spécifiques à Octane (pas récursifs, le sous-dossier tex est lui pris en compte automatiquement), la console Octane, les préférences, etc. Je vous invite à parcourir les onglets et à vous référer au manuel ou au forum Otoy pour cette section.

La fenêtre de Octane dialog : plus que de simples boutons

Outre l’ensemble de boutons qui permettent de piloter le Live Viewer window Octane, comme relancer/actualiser, redémarrer, pause et démarrer, cette fenêtre contient toute la boîte à outils ainsi qu’une série de fonctions dérivées de la version standalone comme l’activation de matériau ou la définition du point focale par clic dans le Live Viewer window, le Clay mode pour tester l’éclairage, etc. C’est le centre névralgique du plugin.

On y trouve un ensemble de menus :

  • File : rassemble toutes les fonctions d’enregistrement des rendus calculés dans le prévisualiseur, d’enregistrement du projet tenant compte des textures propres aux matériaux Octane, enregistrement ou ouverture de fichiers .OCS, etc. Les noms parlent d’eux-mêmes.
  • Objects : dans ce menu sont rassemblées toutes les fonctions de création d’objets avec les tags Octane correspondants. Il est évidemment possible de ne pas passer par ce menu pour les créer. C’est juste un gain de temps. On y trouve les objets d’environnement, les caméras et les éclairages avec ou sans objet cible.
  • Materials : contient toutes les fonctions associées à la gestion des matériaux comme la création, la conversion de matériaux Cinema 4D, etc. C’est ici aussi qu’on accède au LiveBD d’Octane (bibliothèque participative de matériaux) ainsi qu’à une bibliothèque locale de matériaux (encore en cours de développement mais fonctionnelle).
  • Updates : gère les éléments à mettre à jour automatiquement dans le Live Viewer window ou dans le gestionnaire de matériaux à chaque changement. La mise à jour des objets eux-mêmes en temps réel pouvant être assez lourde, elle est gérée en combinaison avec un tag spécial pour permettre de sélectionner ce qui doit être mis à jour ou pas. Voir plus bas pour des explications plus complètes dans la section Animation.
  • Help : l’accès à l’aide en ligne, etc.

On y trouve les boutons :

  • Relancer/actualiser : pour recharger l’entièreté de la scène Cinema 4D dans le Live Viewer window.
  • Redémarrer : pour recommencer le rendu depuis le début sans renvoyer les objets de la scène au GPU.
  • Pause : pour mettre le rendu en pause (utile pour les utilisateurs qui ne possèdent qu’un seul GPU, en cas de grosse scène avec un affichage ralenti par exemple)
  • Démarrer : pour poursuivre un rendu qui a été mis en pause.
  • RES : pour stopper le rendu et vider complètement la mémoire du GPU.
  • Settings : pour afficher la fenêtre des Settings (expliqués plus haut).
  • Lock : permet activer ou non un rendu contraint par les proportions de sortie définies dans les préférences de rendu de Cinema 4D. Attention, il n’y a pas de rétrécissement du rendu, donc si la définition déterminée dans les paramètres de rendu est supérieure à la taille du Live Viewer window à l’écran, vous n’en verrez que le coin supérieur gauche. Le système n’est pas encore tout à fait au point selon moi mais ça permet tout de même de visualiser le cadrage tel qu’il sera au rendu final, moyennant une adaptation temporaire des préférences de rendu (ou l’activation d’un profil distinct).
  • Clay mode : permet de visualiser la scène sans les matériaux, pour évaluer l’éclairage ou l’occlusion par exemple.
  • Point Focale : permet de déterminer le point focal (profondeur de champ) par simple clic sur un objet du Live Viewer window.
  • Pick material : permet d’activer un matériau dans le gestionnaire de matériaux par simple clic sur un objet dans le Live Viewer window.
  • Fréquence de rafraichissement : le chiffre dans le champ de saisie détermine la fréquence de rafraichissement du Live Viewer window pendant le déplacement d’une caméra ou d’une lampe par exemple. Sur les ordinateurs plus lents ou avec un seul GPU, cela peut faciliter la navigation dans la scène. À tester selon les cas. Très utile sur les grosses scènes.
  • Grph. : fonction expérimentale de déboggage permettant d’afficher la structure nodale de la scène envoyée au GPU. Attention, cette fonction peut faire planter Cinema 4D dans certains cas. Surtout utile pour le développeur.
  • NV (Node editor) : fonction expérimentale de création de matériaux dans un mode nodal similaire au système nodal de la version standalone d’Octane. Le système est encore incomplet et mis à disposition des utilisateurs uniquement en vue de tests. Cette fonction n’est actuellement absolument pas stable et peut même altérer vos matériaux. À utiliser uniquement sur des scènes de test donc mais très intéressant à explorer pour avoir une idée du futur du plugin
  • Chn (Channels) : accès direct aux différents modes de rendu pour le compositing comme z-depth, materialID, etc. Les paramètres de ces modes étant gérés dans l’onglet Kernel des Settings (voir plus haut).

Le Live Viewer window : uniquement pour la prévisualisation

La confusion est aisée : comme le Live Viewer window semble être la seule fenêtre d’affichage de rendu d’Octane, les débutants pensent souvent qu’il s’agit de la fenêtre de rendu final. Il n’en est rien. Il s’agit uniquement de la fenêtre de travail pour préparer la scène avant le rendu final. Il est bien entendu possible d’enregistrer son contenu mais ce n’est pas sa fonction de base.
Le rendu final se fait, comme pour le moteur de rendu intégré à Cinema 4D, dans la fenêtre du visualiseur de Cinema 4D, après avoir défini Octane render comme moteur de rendu dans les préférences de rendu de Cinema 4D (dans le menu déroulant en haut à gauche de la fenêtre).
On peut aussi utiliser la file de rendu avec les mêmes pré-requis que pour Cinema 4D : indiquer un nom de fichier d’enregistrement et un chemin, définir Octane Render comme moteur, etc.

J’ai lu sur le forum dédié au plugin Octane pour Cinema 4D chez Otoy qu’il est également possible d’effectuer ses rendus via le NetRender moyennant quelques manipulations complémentaires mais comme je n’ai pas testé cette fonctionnalité, je vous renvoie vers le forum pour plus d’informations (Board Index).

Comme les rendus définitifs se font via les canaux classiques de Cinema 4D, il est possible de poursuivre son travail sur Cinema 4D pendant qu’un rendu s’effectue dans le visualiseur (ou la file de rendu). Comme l’envoi de la scène est dans ce cas ponctuel (un instantané de la scène en cours) – et non constant comme dans le cas du Live Viewer window – les changements n’interfèrent pas avec le rendu en cours.

Dans tous les cas, il n’est pas possible d’effectuer un rendu final tout en affichant une scène dans le Live Viewer window. Cela n’est pas non plus possible si on possède plus d’un GPU, intégrés à l’ordinateur ou dans un boitier d’extension PCI-Express comme le Cubix Xpander par exemple. Ce n’est d’ailleurs pas possible non plus dans la version standalone puisqu’il n’y a pas de distinction entre rendu de travail et rendu final. Les deux sont confondus.

La logique des matériaux Octane dans Cinema 4D

Dans la version standalone, l’éditeur nodal de matériaux profite d’un affichage par codes couleur indiquants quels nœuds ou paramètres peuvent être connectés/partagés entre eux. Dans le cas du plugin pour Cinema 4D, tant que l’éditeur nodal n’est pas achevé, on dispose d’un sous-menu avec une liste de nœuds sans hiérarchie ni structure particulière. Il est donc difficile d’appréhender le système sans avoir au moins été faire quelques tests dans la version standalone ou téléchargé quelques matériaux d’exemple. Ce que je vous conseille vivement de faire avant de vous lancer dans la construction de matériaux Octane complexes sous Cinema 4D.

Le très gros désavantage de la version plugin actuelle en regard de la version standalone est l’impossibilité dans Cinema 4D de partager un ou des paramètres entre plusieurs matériaux. Il n’est donc pas possible, par exemple, de changer à la volée une texture de relief partagée par plusieurs matériaux d’un seul clic. Ce que permet la version standalone, pour peu que les nœuds aient été construits dans ce sens. Dans Cinema 4D il faut donc jouer du copier/coller pour compenser. Ça devrait changer à l’avenir puisque dans la version de test liée au dernier SDK est présent un nœud spécial de partage de paramètres.

Un aperçu de l'avenir du plugin : le Node Editor

Un aperçu de l’avenir du plugin : le Node Editor

Octane utilise trois matériaux de base : Diffuse, Glossy et Specular ; un nœud spécial de MixMaterial et un cas à part : le nœud Portal. Ces trois matériaux de base possèdent leurs ensembles d’onglets spécifiques. Le matériau Diffuse par exemple ne possède pas d’onglets specular, roughness et index.

  • Diffuse correspond à un matériau mat sans reflets. Il peut contenir un nœud Emission (pour émettre de la lumière) ou un nœud Medium (pour du subsurface scattering). Il contient aussi un paramètre spécifique matte qui permet de capturer les ombres portées/l’illumination sur l’objet associé au matériau tout en masquant l’objet lui-même du canal alpha. Ce paramètre, associé à une couleur diffuse sombre, permet de faciliter grandement le compositing.
  • Glossy correspond à un matériau brillant et/ou réfléchissant (les deux notions sont confondues dans Octane, ce sont les paramètres d’index, de specular et de roughness qui définissent le degré de réflexion et de brillance). Il ne peut pas contenir ni Emission ni Medium.
  • Specular correspond à un matériau réfractif et réflexif comme du verre, du vin ou de l’eau. Il peut contenir un nœud Medium mais pas de nœud Emission. Outre un ensemble d’onglets assez différents des deux premiers matériaux, il possède un paramètre supplémentaire : le fake shadow ; pour simuler entre autre du brouillard ou de la fumée, s’il est combiné avec le nœud Medium.
  • MixMaterial permet de mixer deux matériaux entre eux de n’importe lequel des trois types ci-dessus, ou même un ou deux autres MixMaterial, selon un critère de mélange quelconque : une moyenne Float Texture, une texture (les valeurs foncées correspondants à un matériau et les valeurs claires à l’autre), un nœud de bruit comme le Marble Texture ou le Turbulence Texture, un nœud de FallofMap (similaire au Fresnel de C4D), un nœud Dirt Texture (similaire à l’occlusion ambiante de C4D), etc.
  • Portal est un matériau invisible au rendu qui sert à concentrer le calcul de l’illumination sur les ouvertures (les fenêtres pour une scène d’intérieur par exemple) afin d’accélérer le rendu. Il est conseillé de placer ce matériau sur un objet avec le moins de polygones possible (un plan d’un seul quadrangle par exemple) et ajusté au plus près de la taille des ouvertures.

Une remarque sur les Bump et Normal maps : Octane ne peut accepter que l’un ou l’autre de ces deux canaux mais pas les deux en même temps. S’ils sont toutefois tous les deux présents, c’est la Normal map qui sera prise en compte au détriment du Bump. Ce n’est pas une limite du plugin mais bien d’Octane. Si j’ai bien lu cette limite devrait disparaître avec la version 1.5 du moteur de rendu.

Par ce système de matériaux et MixMaterial, il est possible d’élaborer des matériaux très complexes constitués d’un nombre quasi illimité de sous-ensembles. Il est vrai que l’affichage en liste de C4D ne facilite pas la compréhension du système mais avec un peu de rigueur dans la nomenclature des matériaux et éventuellement des calques de matériaux il est possible de s’y retrouver. À condition d’avoir bien compris la logique de fond bien entendu… Pour ce faire, un passage par la version standalone d’Octane et son éditeur nodal devrait grandement vous aider.

Et ce qui est vrai entre plusieurs matériaux mixés entre eux est vrai aussi à l’intérieur d’un même matériau puisque, parmi les nœuds disponibles dans le système de matériaux d’Octane, sont présents des nœuds de mixage de texture comme MixTexture, Multiply, etc. Il est donc possible de mixer également un ensemble de textures et/ou de bruits à l’intérieur d’un même canal de matériau ; ce matériau pouvant lui même être mixé avec d’autres matériaux par le biais de MixMaterial en cascade, etc.

Les nœuds disponibles

Les nœuds d’Octane sont la plus petite partie de la structure des matériaux. En soi, ils semblent peu nombreux et parfois très basiques. Cette simplicité n’est qu’apparente car, un fois combinés entre eux, ces nœuds peuvent produire des shaders extrêmement complexes et très évolués. Ils se combinent, à la manière d’ordinogrammes, quasi à l’infini. N’hésitez donc pas à tester des combinaisons, à tenter des assemblages improbables, vous serez surpris de tout ce qu’il est possible de faire mais aussi de la rapidité des rendus.

Dans Octane, pas de matériaux tout faits comme des essences de bois de toutes sortes ou tel ou tel métal. Par contre vous avez accès à une bibliothèque en ligne participative toujours grandissante de matériaux réalisés par la communauté ou de matériaux validés par l’équipe d’Otoy. Parmi eux, un bon nombre utilisent des textures bitmap. Mais une bonne quantité des matériaux disponibles sont aussi construits uniquement à l’aide des nœuds paramétriques internes à Octane.

Les nœuds sont répartis en trois grands groupes :

Les nœuds de base servant à intégrer une couleur, un bitmap, masque alpha, etc. Octane distingue les types Float (pour valeurs de gris, entre autres) et RGB (couleurs). Le type RGB permettant bien entendu de définir une valeur de gris également via les 3 entrées R, V et B mais consommant plus de mémoire GPU.

  • RgbSpectrum : une couleur en RVB. Peut être utilisé comme couleur simple mais aussi, par exemple, comme valeur colorée pour un paramètre Power d’un nœud ImageTexture. Ce qui a pour effet de teinter la texture à la manière du mode de fusion Multiply de Photoshop (pour colorer une texture sans altérer sa luminosité, il faut utiliser le nœud ColorCorrection).
  • GaussianSpectrum : une couleur définie selon un autre système de valeurs (Gaussian distribution spectrum). Utilisable de la même manière que le nœud RGBSpectrum.
  • FloatTexture : dans le cadre d’une texture, une valeur de gris. Les valeurs de type Float peuvent contenir de 1 à 3 valeurs selon les cas. Par exemple des valeurs de gris (Float1), les axes U et V (Float2) ou une position X, Y et Z (Float3). Dans le cas présent, on parle de FloatTexture, il s’agit donc d’une seule valeur.
  • ImageTexture (Float/Color/Alpha images) : un fichier bitmap pouvant contenir des valeurs de gris en 8 ou 16 bits (Float), des couleurs en 8, 16 ou 32 bits (Color, selon le format de fichier) ou un canal Alpha (Alpha, uniquement au format PNG ou TIFF, utilise la transparence de calque et pas les canaux multiples).

Les générateurs de textures servant à générer des bruits, des structures aléatoires ou des structures organisées (damiers, lignes, etc) dans l’espace 3D. Ce sont des nœuds 3D et non des nœuds 2D utilisant les dépliages UV, les résultats sont donc parfois inattendus. Les paramètres sont variables selon les nœuds. Ces nœuds peuvent être utilisés seuls (ils génèrent alors des valeurs de gris), être utilisés comme nœuds constituants et/ou directeurs de MixTexture, Multiply, etc, ou encore être utilisés en remplacement d’une valeur Float (le paramètre Power d’un nœud ImageTexture par exemple)

  • Checks : un simple damier 3D.
  • MarbleTexture : un bruit de type marbre.
  • RidgetFractal : un bruit linéaire en anneaux.
  • TurbulenceTexture : le système de bruit infini standard.
  • SineWave : de simples bandes floues (3 modes : Sine, Saw et Triangle). Combiné au nœud Clamp, ce nœud permet d’obtenir des lignes nettes, par exemple.

Les nœuds de mapping servent à combiner ou transformer les résultats des nœuds de base et des générateurs de textures. Utilisés seuls, ils ne produisent aucune texture. Pour faire une analogie simpliste, ils sont similaires aux modes de fusion de calques de Photoshop.

  • Multiply : nœud additionnant le résultat de deux autres nœuds à la manière du mode de fusion Multiply de Photoshop (une addition dans le mode soustractif donc).
  • MixTexture : nœud mixant le résultat de deux autres nœuds selon un troisième critère linéaire. Ce troisième critère pouvant contenir une simple valeur moyenne (Float), un nœud FallofMap par exemple, un ensemble complexe de nœuds ou même une texture bitmap. Ce critère ne prenant en compte comme valeur que le résultat en valeurs de gris. Les valeurs sombres correspondants à l’un des deux nœuds d’entrée et les valeurs claires à l’autre nœud d’entrée. Le MixTexture est l’exact reflet du MixMaterial mais au sein d’un même canal de matériau.
  • CosineMix : similaire au nœud MixTexture mais utilisant un critère de mélange de type cosinus. S’utilise généralement en combinaison avec un nœud de type GaussianSpectrum. Très honnêtement d’un usage encore un peu flou pour moi…
  • Clamp : nœud de contrainte selon un critère maximum et un critère minimum.
  • Invert : transforme le nœud inclus en son négatif. Le nœud inclus peut être en couleur ou en valeurs de gris. Le résultat produit sera son négatif en couleur ou en valeurs de gris.
  • ColorCorrection : le nom du nœud parle de lui-même. Le nœud sert à effectuer des corrections colorimétriques sur d’autres nœuds.
  • Fallof Map : le nœud sert à projeter le résultat de deux autres nœuds selon un critère d’orientation des normales de l’objet. L’un des nœuds s’affichant plutôt sur les faces de l’objet perpendiculaires au plan de la caméra et l’autre s’affichant plutôt sur les faces parallèles au plan de la caméra. Ce nœud est similaire au shader Fresnel bien connu de Cinema 4D.
  • Dirt Texture : ce nœud sert à projeter le résultat de deux autres nœuds selon un critère d’angle des faces de l’objet les unes par rapport autres. L’un des nœuds s’affichant plutôt sur les faces de l’objet formant un angle et l’autre s’affichant plutôt sur les faces planes. Ce nœud est similaire à l’effet occlusion ambiante bien connu de Cinema 4D.

Tous ces nœuds seront intégrés dans le gestionnaire de matériaux avec un ensemble de nœuds prédéfinis (Power, Gamma, etc, pour un nœud ImageTexture par exemple). Ces nœuds ne doivent pas nécessairement être conservés tels quels. Il vous est toujours loisible de les remplacer par d’autres. Par exemple le nœud Power de notre ImageTexture est à la base un simple nœud FloatTexture (ou Float, ce qui revient quasi au même) mais il est tout à fait possible de le remplacer par un RGBSpectrum (pour colorer le bitmap) ou un Dirt Texture (pour ne faire apparaître le bitmap que dans les creux et ailleurs du noir, même si ce n’est pas un usage très utile…). Quasiment toutes les combinaisons sont possibles. La seule contrainte est qu’il faut respecter la valeur attendue par le paramètre : si le paramètre attend une valeur déterminée, comme l’indice de réfraction index par exemple (valeur comprise entre 1 et 8), il ne faut pas essayer de lui donner une texture Float (valeurs comprises entre 0 et 1). Mais pas d’inquiétude, si cette combinaison n’est pas autorisée, soit il vous sera impossible de changer le nœud de la valeur en question ou ce changement ne produira aucun résultat (ou un résultat totalement inattendu). Dans de rares cas, ce type de changement peut faire planter Cinema 4D mais vous les aurez vite repérés ou ils auront été corrigés depuis l’écriture de cet article. Comme le plugin est encore en phase beta, sauvegardez tout de même régulièrement ou expérimentez sur des fichiers de test avant de copier-coller un matériau dans votre scène…

Des nœuds pour un simple bitmap ?

Pour ajouter une simple texture bitmap sans paramètre particulier dans un canal pouvant la recevoir, le plugin ne demande pas nécessairement d’intégrer un nœud ImageTexture. Il suffit d’ajouter une texture tout comme on le ferait pour un materiau Cinema 4D en cliquant sur les points de suspension (…). L’avantage de cette technique est qu’elle permet également insérer des séquences d’images (attention, le format de fichier a son importance, le JPEG est, je crois, supporté mais c’est à tester). Pour ce type d’insertion de bitmap, vous trouverez dans les Octane settings > Settings > Others les paramètres à appliquer par défaut à ces bitmaps (Texture power et gamma).

Dans chaque canal pouvant accepter un fichier bitmap ou un ensemble de nœuds Octane sont également présent les paramètres Color, Float et Mix. En définissant une couleur et en jouant sur le paramètre Mix, on peut mélanger le bitmap ou tout autre ensemble de nœuds avec la couleur définie dans Color.

Le paramètre Float sert quant à lui à modifier la valeur par défaut du canal. Par exemple : par défaut le canal specular est sur 1 (soit du blanc). Sans ajouter de nœud et en modifiant la valeur Float, on peut faire varier la valeur par défaut vers le noir (ou n’importe quel gris intermédiaire). Dès qu’on ajoute un nœud ou un bitmap à ce type de canal, la valeur Float n’est plus utilisée.

Translucidité et luminosité

Les nœuds medium sont des sous-ensembles de nœuds servant à définir la luminosité ou la translucidité d’un matériau. Ils fonctionnent uniquement sur les matériaux de type specular et diffuse pour la translucidité et de type diffuse uniquement pour la luminosité. Ils se logent respectivement dans l’emplacement medium pour la translucidité et emission pour la luminosité.

La translucidité (subsurface scattering, absorption) fonctionne en étroite collaboration avec le canal transmission. Ce canal est vide par défaut. Il faut donc lui attribuer une valeur grise ou colorée pour voir un résultat. La translucidité sur un matériau specular nécessite d’utiliser le kernel en Pathtracing ou PMC. Pour la translucidité sur un matériau diffuse, le kernel DirectLight en mode 4 peut être utilisé également (Diffuse GI mode).

Le nœud medium a deux modes : absorption et Subsurface Scattering. Le nœud emission a également deux modes : Blackbody (luminosité en ° kelvin) et Texture emission (luminosité colorée, texture bitmap, générateur de texture, fichier IES, etc).

Attention, plus un objet lumineux contient de polygones, plus il sera susceptible de générer des fireflies (petits points blancs) et plus sa luminosité sera longue à calculer. Il est donc préférable de rendre lumineux des objets le moins de polygones possibles. Quitte à les rendre invisibles à l’aide de l’opacité et à utiliser un objet visible non lumineux plus complexe. Et si un objet lumineux se trouve derrière une vitre ou à l’intérieur d’un objet partiellement fermé (un abat-jour par exemple), ne pas hésiter à utiliser le matériau Portal sur un objet très simple ajusté autant que possible au(x) trou(s) pour concentrer les rayons lumineux et raccourcir les temps de rendu.

Je ne vais pas développer plus avant ici les nœuds medium. Ils mériteraient à eux seuls un article tant leurs applications sont vastes. Vous trouverez sur la LiveDB plusieurs matériaux qui les utilisent ainsi que des exemples dans les fichiers de démo joints au plugin.

Les objets

Via le menu « Objects » du panneau de contrôle d’Octane, il est possible de générer les principaux objets de scène avec les tags Octane correspondants comme les objets OctaneSky (Maps, DayLight ou HDRI), OctaneCamera (avec ou sans cible) et OctaneLight (avec ou sans cible). La cible étant soit l’objet actuellement sélectionné dans le gestionnaire d’objets ou, à défaut, un neutre automatiquement créé au centre de la scène. Bien entendu, ces objets peuvent aussi être créé comme d’habitude puis adaptés à Octane en ajoutant les tags correspondants.

À savoir

Ces différents objets sont pré-construits mais nécessitent parfois des ajustements comme le OctaneSky en mode DayLight pour lequel il faut activer le paramètre du Soleil pour que l’éclairage change en fonction de l’heure et de la localisation, le Importance Sampling qui n’est pas coché par défaut en mode TextureEnvironment (bien qu’il soit nettement préférable dans tous les cas et indispensable avec des matériaux de type matte) ou le Shadow Alpha qui n’est pas coché par défaut dans le kernel (ce qui peut donner des ombres très décevantes avec les matériaux specular et qui est indispensable avec les matériaux de type matte).

Ce sont des petites pétouilles qui seront probablement corrigées avec le temps mais qui peuvent parfois déstabiliser le nouveau venu et lui faire perdre pas mal de temps. Donc autant que vous le sachiez tout de suite…

Quels objets sont supportés dans Octane ?

Cinema 4D est aujourd’hui tellement vaste qu’il m’est impossible de tout tester ni même de vous faire une liste de toutes les fonctionnalités. Toutefois un peu de bon sens permet d’anticiper à peu près tous les cas.
Octane effectue le rendu des éléments polygonaux donc tout ce qui peut être converti en polygones peut être rendu dans Octane. Tout ce qui reste en paramétrique lors d’un rendu dans Cinema 4D et qui est spécifique au moteur de rendu de Cinema 4D ne sera pas compatible avec Octane.

Le meilleur exemple est la fourrure : comme la fourrure reste paramétrique durant le processus de rendu C4D, elle ne peut pas être rendue dans Octane. Par contre, les cheveux peuvent l’être s’ils sont définis dans Générer > Type avec un profil polygonal (n’importe quoi à l’exception de sans et spline) et si on ajoute à l’objet cheveux un tag de matériau Octane (pour gérer la couleur des cheveux, sans quoi ils seront blancs). Toutefois les cheveux de remplissage ne seront pas pris en compte (puisqu’il s’agit d’un « truc » au niveau du rendu C4D).

Les éléments Mograph seront rendus comme des instances si on le demande. Les Xrefs sont supportées, les déformateurs sont supportés, les particules sont supportées, les cloths sont supportés, les instances sont supportées comme des instances, les objets Sculpt sont supportés, etc.

Par exemple, Carbon Scatter d’Eon est supporté au niveau des instances (mais demandes des petites adaptations au niveau des matériaux : inversion des alphas et désactivation du paramètre « image alpha » dans les matériaux). Bien entendu il ne faut pas s’attendre à des miracles : on peut vite saturer la mémoire du/des GPU et ça reste très lourd à rendre, même avec Octane.

Il est possible d'utiliser Carbon Scatter d'Eon avec Octane mais ça reste lourd à rendre.

Il est possible d’utiliser Carbon Scatter d’Eon avec Octane mais ça reste lourd à rendre.

L’animation ?

Donc quasi tout est supporté, au moins partiellement, dans tous les cas. Par contre l’emploi de certaines techniques aura un impact très important dans le temps de préparation de la scène avant le rendu (variable selon la puissance de l’ordinateur bien entendu). Ce qui peut avoir un impact considérable lors du rendu d’une animation.
D’où l’intérêt en animation (mais pas seulement) de bien comprendre l’usage du tag Octane ObjectTag et des fonctions d’Updates tant au niveau de l’Octane dialog pour la prévisualisation que des réglages de rendu d’Octane pour le rendu final dans le visualiseur.

Le tag Octane ObjectTag a pour fonction de limiter au strict minimum nécessaire le rechargement des objets polygonaux dans la mémoire du GPU. Il vous donne la main sur ce qui doit être mis à jour dans la mémoire, frame après frame. Qui plus est, ce tag peut être animé (comme tous les autres paramètres d’Octane d’ailleurs) ce qui permet, par exemple, de désactiver la mise à jour de tel objet (ou groupe d’objets) dès qu’il sort du champ de la caméra.
Donc si vous êtes animateur, il est indispensable de bien identifier et comprendre quels seront les objets qui devront être mis à jour frame par frame et quels seront les objets pour lesquels ce sera inutile. Tout en sachant que mettre à jour un objet signifie bien recharger le maillage sur le GPU, pas simplement effectuer une opération de type PSR (position/scale/rotation) ou l’ajout d’instances d’un objet. Cela n’a non plus rien à voir avec la mise à jour d’un matériau.

Attention ! Par défaut, l’ID du tag Octane ObjectTag est défini sur 0. Mais en fait le 0 équivaut à une désactivation de la mise à jour de cet objet… Donc il ne faut pas oublier de choisir un chiffre autre que le 0 pour que l’objet se mette à jour comme prévu à chaque frame. Aussi, par défaut « Update geometries » est décoché dans le menu Updates du Octane dialog. Donc si on veut afficher un maximum de changements sur la géométrie dans le prévisualiseur, il faut activer cette fonction (tous les types de changements ne sont pas supportés en temps réel, dans certains cas il faut actualiser manuellement avec le bouton « relancer/actualiser »). Pour un rendu final dans le visualiseur, cette option n’a pas d’impact. Ce sont les réglages de rendu et le tag Octane ObjectTag qui priment.

Par exemple : le déplacement et la rotation d’un cube ne nécessitent pas de mettre à jour l’objet dans la mémoire du GPU. La mise à jour à chaque frame sera donc très rapide. Par contre, le morphing d’un cube en une sphère demandera de mettre à jour le maillage de l’objet dans la mémoire du GPU à chaque frame. Mais ce n’est pas pour autant nécessaire de mettre à jour tous les autres objets fixes de la scène dans la mémoire du GPU. D’où l’intérêt du tag pour effectuer une mise à jour sélective.

Dans la version stable actuelle du plugin, le tag Octane ObjectTag n’a pas encore beaucoup évolué mais il sera amené à changer fortement dans peu de temps. La nouvelle version d’Octane standalone étant en cours d’évolution rapide avec l’ajout récent du support d’alembic (support de contenu animé directement dans Octane) et du scripting LUA, des fonctionnalités de masque/visibilité d’objet et de masque d’ombre viennent d’être ajoutées au nouveau SDK Octane depuis peu. Une nouvelle version incomplète et temporaire du plugin a déjà été mise en ligne par le développeur sur le forum réservé aux utilisateurs enregistrés avec un tag largement complété.

Voici un exemple de fonctionnement du tag. Cette vidéo a été réalisée avec une ancienne version du plugin mais le principe de fonctionnement reste le même.

[youtube=http://www.youtube.com/watch?v=hY-345F1PdM&w=560&rel=0]

Le flux de production colorimétrique

Octane fonctionne sur un flux de production linéaire. Ce qui signifie que tous les gammas équivalent à 1.0. Sur Mac, le gamma standard est 1.8 et sur Windows 2.2. Cette différence peut donc avoir un sérieux impact sur l’affichage des couleurs des vignettes et sur l’affichage du rendu dans le Live Viewer window par rapport au visualiseur (pour le rendu final).

Donc, pour obtenir des affichages plus fiables d’une fenêtre à l’autre, il est nécessaire de faire une petite adaptation : dans les réglages du projet (Edition > Préférences du projet…) il faut s’assurer que « Flux de production linéaire » est coché et mettre « Entrée profil de couleur » sur désactivé. Il n’est pas nécessaire changer les autres paramètres et on peut laisser les préférences générales de Vue sur sRGB ou sur un profil d’écran au choix.

Par contre, comme on est à priori sur un gamma de 1.0, si on veut obtenir un résultat plus fiable du rendu Octane, il est préférable de définir le gamma du CameraImager d’Octane (à 1.0 par défaut) sur 1.8 ou 2.2 puis de jouer sur l’exposition, l’ISO, etc, pour régler la luminosité. On peut s’en passer mais j’ai constaté qu’avec pas mal de profils camera response, les résultats étaient bien meilleurs. C’est d’ailleurs ce qui est conseillé par le team Otoy (Linear workflow in Octane).

Idem pour les gammas des textures : les textures RGB seront plutôt en gamma 1.8 ou 2.2 et les textures en valeurs de gris sur 1.0. Sans que ce soit une règle absolue, c’est à adapter au cas par cas, mais il faut être conscient que le gamma peut avoir un impact très important sur le résultat final.

 

Voilà tout pour cette introduction à l’utilisation du plugin Octane dans Cinema 4D. J’aurais pu en dire beaucoup plus mais il me semble que vous avez déjà eu beaucoup de courage de me lire jusqu’ici… Je vous souhaite bon amusement et bonne exploration de ce fabuleux outil. N’hésitez pas à me faire part de vos remarques ou de vos suggestions. Il se peut aussi qu’une erreur se soit glissée dans mes explications. Merci de m’en avertir, je corrigerai aussitôt que possible. Top

 

Pin It on Pinterest

Share This