Les objets, après avoir été crées dans 3dsMax peuvent être "marqués" avec un certains nombre de paramètres particuliers de
NOVA. On appelle ces paramètres les "
proprétés NOVA", par opposition aux "propriétés 3dsMax" qui sont converties directement par l'exportateur
NOVA.
Pour accéder à ces propriétés, il suffit de séléectionner un objet dans 3dsMax, de faire un clic droit afin d'ouvrir le menu Quad et de sélectionner l'option
NOVA Properties. On peut aussi accéder à ces options via le menu
NOVA.
Une nouvelle fenêtre apparaît, contenant les groupes d'options suivants :
Le groupe d'options Renderer :
dans cette interface, vous pourrez définir les options propres au rendu temps réel des objets.
Don't Export : active/désactive l'exportation de l'objet, option utile, surtout lors de la phase de test.
Infinite Distance : permet de définir que la position de l'objet est liée à celle de la caméra. Cela autorise, lorsque cette option est active sur un dôme d'environnement, de ne jamais approcher des bords du dôme et de ne pas apercevoir sa courbure.
Disable EMBM : active / désactive l'EMBM. Si, dans le matériau de l'objet,
NOVA trouve à la fois une texture de réflexion et une texture de bump, il passe l'objet en mode EMBM (pour Environmental Map Bump Map). Cependant vous pouvez débrayer ce mode pour des raisons esthétiques, ou si la machine cible ne permet pas cette option.
Reverse Culling : permet d'inverser les normales d'un objet.
Uncompressed Animations : permet le traitement de l'animation de l'objet frame par frame (sampling) et non pas clef par clef. Ceci permet des animations plus justes mais induit un temps d'exportation plus long et un fichier MXB plus important.
Soften Normals : à l'opposé de
No Vertex Optimisation (voir plus bas), force le lissage de certains objets arrondis qui peuvent présenter des "coutures".
No Vertex Paint : permet de ne pas prendre en compte les informations du Vertex Paint et allège d'autant l'objet ainsi exporté.
Shade and Paint : permet d'affecter les information de vertex Paint au diffus de l'objet et non au diffus ET à l'ambiant.
Generate Glow : permet d'appliquer un effet de brillance à un objet, en fonction du paramètre
Glow des
propriétés NOVA de la scène (voir
Les propriétés NOVA de la scène).
Disable Depth Sorting : empèche pour cet objet le tri en profondeur.
Ambient Lum. Blending : Lorsque vous assignez une texture au canal d'ambiant du matériau de l'objet, cette texture est par défaut considérée comme multiplicative du diffus. Le luminosity Blending ajoute une fonctionnalité supplémentaire à ce traitement. En considérant la texture comme un ensemble de valeur lumineuse, les valeurs sombres sont considérées comme multiplicatives, et les valeurs claires comme additives. Cela permet de sur-éclairer les parties condidérées comme claires dans les textures de luminosité.
Le groupe d'options UI :
Dans cette interface, vous pourrez définir des options propres à l'interaction entre vous et l'objet dans la scène.
Picking Blocker : permet de spécifier qu'un objet stoppe la fonction de picking. Une entité située derrière un objet Picking Blocker ne peut plus être déclenchée par une interaction accidentellement.
Can Be Picked : permet de définir que l'objet peut être "attrapé", c'est-à-dire que l'objet peut-être ou non interactif. Cette case
DOIT être cochée si vous souhaitez rendre votre objet interactif ou si celui-ci doit commander une action.
Cannot Be Removed : empêche/autorise la suppression du rendu de l'objet via l'Entity Browser du
NOVA Studio.
Locked : permet de bloquer un objet interactif. Utile dans le cas où vous souhaitez pouvoir interagir avec l'objet sans le déplacer.
Don't Change Cursor : permet, lors du survol d'un objet pickable de garder le curseur par défaut de
NOVA.
Info : vous permet d'entrer une valeur afin de pouvoir repérer cette donnée dans un logiciel tiers ou dans le cas de développements de scripts.
Le groupe d'options Billboard :
La fonction billboard est la capacité d'un objet à rester toujours face à la caméra. Cette fonction existe déjà sous 3ds Max sous le nom de contrainte Look At, mais l'exportateur
NOVA propose des fonctions plus riches.
Attention ! Afin de définir l'axe d'orientation de l'objet, celui-ci doit être créé au préalable dans la vue Back (arrière) de la manière dont vous souhaitez le voir apparaître dans la scène. Vous pouvez ensuite réaffecter le pivot sur l'alignement de l'univers et réinitialiser les transformations de l'objet. Il est aussi préférable de rendre le matériau de l'objet Two Sided (deux faces).
Is Billboard : active/désactive la fonction billboard.
X, Y et Z : permettent de stipuler des contraintes sur un ou plusieurs axes. L'objet devient billboard sur l'axe déterminé seulement. Si aucune valeur n'est cochée, X, Y et Z sont actives par défaut.
Le groupe d'options Level Of Detail :
Le level of detail (LOD) est l'ensemble des fonctions de destruction de faces (d'optimisation) liée à la distance.
La case
On permet d'activer le LOD par
Render Radius. Cette option sert à déterminer une zone cylindrique autours de la caméra, dans laquelle les faces incluses de l'objet seront calculées. Cette option est utile si vous souhaitez calculer de la végétation, comme de l'herbe, par exemple, ou un objet visible de toute part.
Falloff : en rapport avec le Render Radius, cette option définit le niveau de transparence des faces de l'objet aux abords de la valeur de Render Radius. Avec une valeur de 0.1, les faces entrant dans le Render Radius passeront de transparentes à opaques progressivement. Avec une valeur de 1, les faces entrant dans le Render Radius passeront de l'état transparent à l'état opaque de manière brutale.
Inverse Falloff : permet d'inverser le sens du Render Radius. Ainsi, l'objet n'est plus éliminé avec la distance, mais avec la proximité à la caméra.
Render Radius : définit la taille du cylindre de calcul autour de la caméra.
Attention ! Comme les faces ne sont par défaut pas ordonnées par 3ds Max, on veillera à adapter la subdivision
NOVA d'un objet pour éviter l'apparition aléatoire des faces.
Max Dist. : permet de spécifier un plan de clip par objet. Cela est utile si vous devez découper un objet en fonction de la distance à la caméra. La coupure de l'objet est toutefois brutale.
Le groupe d'options Collisions :
Ce groupe permet de définir les options de collision pour l'objet.
Attention ! Ne pas confondre avec les collisions du moteur Physique. Il s'agit ici des collisions avec l'avatar représenté par la caméra. Les propriétés exposées ici sont reprises dans le chapitre sur les collisions dans
NOVA (voir
Fonctionnalités spécifiques - Les collisions).
Attention ! Pour que la résolution des collisions soit réaliste, il est impératif que l'objet soit à l'échelle et que votre univers soit cohérent, donc en mètre par unité!
Enable : active/désactive les collisions avec les caméras.
No Occlusion : permet à l'objet de laisser passer le rayon de test émis par une source lumineuse générant un lens flare et donc ne stoppera pas le lens flare.
Is Not Rigid : permet à un objet d'être collisionné mais traversable pour la caméra. Utile lorsque vous souhaitez faire des interactions de type On Collision sans que la caméra ne soit affectée.
Detect Intersections : permet à un objet de déclencher une interaction de type "On Intersection" (voir
The Actions Builder Tool) lorsque cet objet entre en intersection avec un autre.
Ellipsoid : permet de se représenter la formule ellipsoïdale de l'objet. N'est utile qu'avec le SDK de
NOVA.
Octree Depth : permet de spécifier le nombre de niveaux successifs d'octree de collision que doit générer
NOVA (voir le chapitre spécifique sur les collisions). Cette option est inutile si l'objet ne comporte pas de subdivisions (voir plus bas).
Le groupe d'options Physics :
Ce groupe permet d'affecter l'objet au moteur physique
VORTEX inclus dans
NOVA et de le désigner comme élément à prendre en compte dans la résolution dynamique. Les propriétés exposées ici sont reprises dans le chapitre sur la physique dynamique de
NOVA (voir
Fonctionnalités Spécifiques - la physique).
Attention ! Pour que la résolution soit réaliste, il est impératif que l'objet soit à l'échelle et que votre univers soit cohérent, donc en mètre par unité!
La case
Bounding Component permet de définir qu'un objet sert de boîte englobante physique à un autre. Cette option est utile si vous souhaitez faire entrer dans la résolution dynamique un objet très complexe. Si vous observez des ralentissements importants dans le frame rate, vous avez ainsi la possibilité de définir un autre objet plus simple en tant que proxy pour l'objet complexe. La contrainte est que l'objet "Bounding Component" doit être lié comme enfant à l'objet parent qu'il représente. Ainsi, cela vous autorise à créer plusieurs objets "Bounding Components" pour représenter un seul objet complexe dans
VORTEX. Cette option est généralement associée à l'option décochée Renderable dans les propriétés3dsMax par défaut (voir
Paramètres hérités de 3dsMax) de l'objet, afin que le proxy ne soit pas affiché lors du rendu temps réel.
No Gravity : interdit/autorise l'application de la gravité définie dans les paramètres
NOVA de la scène ( voir
Propriétés NOVA de la scène) à l'objet.
State définit l'état physique de l'objet :
- None : par défaut. L'objet est inactif et non calculé dans la résolution. Les objets dynamiques le traverseront sans le prendre en compte.
- Rigid Body : l'objet est dynamique, subit la gravité et est pleinement calculé dans la résolution.
- Animated : l'objet possède une animation et doit interagir avec les autres objets dynamiquement. Attention toutefois, cette animation ne doit pas être de type "No Animation Compression" car VORTEX ne saurait pas en extraire les informations nécessaires.
Bounding Type : permet de définir quel type de géométrie représentera votre objet dans le calcul dynamique. Les géométries suivantes sont crées à partir des points les plus éloignés de l'objet.
- Box : par défaut otre objet utilisera une boîte englobante classique.
- Sphere : votre objet sera représenté par une sphère dans le calcul sous VORTEX.
- Cylinder : votre objet sera représenté par un cylindre. Attention ! pour cette dernière option, il est nécessaire de créer l'objet dans la vue de haut afin que NOVA sache où se trouve le coté le plus long et définisse ainsi la forme du cylindre.
- Use Mesh : l'objet n'est pas dynamique mais possède la capacité d'être calculé au niveau du sous-objet face dans VORTEX . Cette option est surtout utile pour simuler des sols et surfaces accidentées. Attention ! Cette dernière option est très gourmande en terme de ressources processeur.
- Convex Hull : l'objet est considéré comme une coque convexe (dont la physique est entièrement tourné vers l'extérieur. Cela permet de modéliser physiquement des objets complexes sans passer par un "Use Mesh". Par exemple, une théière sera ici représentée par une sphère déformée.
- Multiple Convex Hull : Si votre objet est concave, on pourra utliser un paramètre "Use Mesh", mais celui-ci ne pourra pas être animé. Si votre objet doit être concave et animé, il vous faudra passer par un Multiple convex Hull. celui ci crée, dans la partie concave de votre objet un ensemble d'objets physique convexe, pour approximer la collision physique.
- Initial Speed : permet de contrecarrer une loi de la physique universelle. Dans le vide (sans friction), un marteau tombe aussi vite qu'une plume. VORTEX considère qu'il évolue dans le vide afin de simplifier le calcul de la résolution physique. Donc pour lui, deux objets de masses différentes tombent à la même vitesse avant d'être stoppés par un objet tiers. Pour définir une altération, ces champs vous permettent de donner une force de base à l'objet dans l'axe que vous choisirez (Y négatif dans le cas d'une force similaire à la gravité). Attention ! Cette force n'est calculée qu'une fois et ne se substitue pas à la gravité de la scène.
- Mass : permet de définir en kilos le poids de votre objet. Avec une masse nulle, l'objet ne subit plus la gravité mais reste calculé comme un objet fixe dans la scène (exemple : un mur).
- Damping : indique la force représentant l'air. Il s'agit d'une force de friction applicable en toutes directions.
- Force Field : cette opton est utile si vous souhaitez qu'un objet physique attire (valeurs négatives) ou repoussent (valeurs positives) les objets physique environnants.
Le groupe d'options Alpha :
Ce groupe permet de définir comment réagira un objet semi-transparent lors du rendu dans
NOVA.
Multi Pass : active/désactive le traitement en plusieurs passes d'un objet contenant une texture avec une couche alpha. Cela permet d'écrire l'objet dans le buffer d'affichage puis dans le Z-buffer et donc d'éviter des problèmes de tri de faces dans l'objet. Cette option permet aussi un filtrage de la texture d'alpha, donc des bords de textures plus doux.
Attention ! Cette technique est consommatrice en ressources du fait du double rendu.
First Render : permet à l'objet d'être calculé en premier, malgré l'ordre de tri. Cela permet d'éviter des effets de mauvais dégradés entre des objets transparents successifs.
Alpha Test : permet d'entrer une valeur au dessous de laquelle les pixels de l'alpha sont éliminés. Cela permet de choisir à quel niveau de gris de la couche alpha (entre 0 et 255) l'on souhaite commencer la transparence.
Le groupe d'options Mirrors :
Dans ce groupe, vous pourrez définir si un objet est un miroir.
Attention ! Cette option ne s'applique qu'aux plans et autres géométries planes ou pseudo-planes.
Pour réaliser un miroir performant,
NOVA doit récupérer plusieurs informations. Afin de faciliter ce traitement, un processus a été mis en place. Lorsque vous créez votre miroir, vous devrez créer un objet
NOVA spécifique nommé Mirror List (situé dans le menu
NOVA). Dans cette liste, vous ajouterez tous les objets qui doivent être réfléchis ou non par le miroir. (voir
Fonctionnalités spécifiques - les miroirs)
Is Mirror : active la fonction miroir pour le plan sélectionné.
Mirror Map Size : définit la taille de la texture générée pour le reflet. On veillera à utiliser des textures multiples de huit. Plus la taille est grande, meilleur est l'aspect dans le miroir, mais plus gourmand est le rendu.
Mirror Level : définit le taux de réflexion du miroir (entre 0 et 1.0).
Le groupe d'options Optimisations :
Ce groupe permet d'affecter à l'objet un ensemble d'optimisations destinées à alléger son rendu dans la scène
NOVA.
Subdivisions : permet de découper virtuellement l'objet en plusieurs parties (sans intervenir sur la géométrie propre) afin que le moteur ne calcule les collisions et le rendu que dans la partie où se trouve la caméra. Utile pour les sols et les grands espaces comprenant un grand nombre de faces.
Attention ! Un équilibre doit être trouvé entre une subdivision importante et une faible subdivision. En effet, une trop grande subdivision entraîne un surcroît de calculs. A l'inverse, une subdivision trop peu importante oblige le moteur à calculer trop de points de collision. De plus, cette fonction est cumulative avec les multi-matériaux. Exemple : un objet de 100 faces habillé d'un matériaux comportant 10 sous-matériaux et ayant une subdivision réglée sur 10 sera effectivement subdivisé sur toutes les faces ! On peut aussi coupler cette option au moteur d'octree, afin que
NOVA génère un arbre de possibilité pour les collisions.
Disable Z Test : permet de ne pas tester l'objet sur son écriture en Z. Cela permet de voir l'objet même si un autre objet est devant.
Disable Z-Write : active/désactive l'écriture de l'objet dans le Z-Buffer. En effet, dans le cas d'un dôme d'environnement, l'objet est le premier à être écrit, juste après la couleur du fond. Cet objet, puisqu'il ne recouvre pas un autre objet de la scène n'a pas besoin d'être inscrit dans le Z-buffer. Cette option peut faire gagner en performance. Elle peut-être également utile sur un objet semi-transparent en recouvrant un autre. Pour éviter des artefacts visuels, tentez de cocher cette case.
No Vertex Optimisation : permet/empêche l'optimisation des sommets lors de l'exportation. Très utile pour éviter le lissage exagéré des sommets et d'avoir des arêtes franches. Cette option est recommandée également dans le cadre d'objet subissant une transformation de maillage (Morpher, skinning,...).
Export Normals : utilisé en conjonction de
No Vertex Optimisation, cette option permet à
NOVA d'exporter les normales d'un objet et donc ses groupes de lissages hérités de 3dsMax.
Attention ! Par défaut, 3dsMax ne donne pas de smoothing groups aux objets. On veillera donc à les spécifier explicitement. Cette option est très importante avec le calcul des matériaux
NOVA Per Pixel, car c'est le calcul des normales de l'objet qui définit comment est rendu le spéculaire et le bump.
Optimize For Collisions : cette option permet d'affecter l'objet uniquement aux collisions. Dans ce mode, l'objet sera exporté sans matériau, sans coordonnées UV, sans Vertex Color et sans informations aux sommets. Cela permet un calcul beaucoup plus efficace des collisions et un export beaucoup plus rapide. Cependant, il est conseillé de rendre l'objet Not Renderable, dans les propriétés 3ds Max.
Pick Bounding Reference : permet, pour les objets possédant un skin ou pour les émetteurs de particules, de leur assigner un objet représentant leur boîte englobante. En effet,
NOVA n'élimine pas les objets avec un skin et les émetteurs de particules car ils peuvent avoir une influence à l'écran sans qu'ils soient eux-mêmes visibles
Mate : permet de rendre l'objet invisible mais sensible aux ombres temps réel (ombres au stencil uniquement). Cette option est comparable au matériau Mate/Shadow de 3ds Max.
Use Occlusion Predicate : dans ce mode,
NOVA lance en tache de fond un calcul prédictif d'occlusion de l'objet (si l'objet doit être caché par un autre potentiellement)
Depth Decal : permet de prioriser un objet par rapport à un autre. Si vous souhaitez disposer deux objets très proches l'un de l'autre, ils risquent, en fonction de l'éloignement de la caméra, et de votre carte graphique, de clignoter. Vous pouvez alors prioriser l'ordre de rendu de ces objets manuellement. Celui qui porte la valeur la plus haute est placé au dessus.
Disable Fusion : Cette option débraye la fusion Post Export de l'objet en cours (voir chapitre sur l'export). L'objet ne sera donc par fusionné au moment du lancement de la scène.
Le groupe d'options Shaders :
Ce groupe permet d'affecter à l'objet la propriété de taille de mapping dynamique pour calculer la réfraction.
Refraction Map Size : ce paramètre permet de définir la taille de la texture dynamique qui sera utilisée pour générer la réfraction de l'objet. Une taille multiple de deux est fortement recommandée.
Refraction Depth : permet de donner une épaisseur fictive de décalage du shader de verre. Dans la réalité, un objet vu à travers un objet réfringent apparaîtra décalé. C'est pour reproduire cet effet que cette option existe. Elle s'exprime en unité Max. Ceci représente l'effet loupe d'un matériau.
Max Shader : comme le système de repère de 3ds Max est différent de celui de DirectX, certains objets habillés avec des shaders customs peuvent apparaître inversés, ou non-éclairés. Vous pouvez cocher cette option pour rétablir automatiquement le type de repère employé par le shader.
A retenir :
N'activez la case Bounding Component qu'en cas de simulation physique.
N'activez la case Enable du menu Collisions que si c'est nécessaire.
Les fonctions de type Mirror ne s'utilisent que conjointement avec des objets
NOVA.
Le Render Radius peut être assez gourmand en ressources.