Spatial Material

Introduction

Le SpatialMaterial est un matériau 3D par défaut qui vise à fournir la plupart des caractéristiques que les artistes recherchent dans un matériau, sans qu'il soit nécessaire d'écrire du code de shader. Cependant, il peut être converti en code shader si des fonctionnalités supplémentaires sont nécessaires.

Ce tutoriel explique la plupart des paramètres présents dans SpatialMaterial.

Il existe quatre façons d'ajouter un SpatialMaterial à un objet. Il peut être ajouté dans la propriété Material du maillage. Il peut être ajouté dans la propriété Material du nœud qui utilise le maillage (tel qu'un nœud MeshInstance), dans la propriété Material Override du nœud qui utilise le maillage et dans la propriété Material Overlay.

../../_images/add_material.png

Si vous ajoutez un matériau au maillage lui-même, à chaque fois que ce maillage est utilisé, il aura ce matériau. Si vous ajoutez un matériau au nœud qui utilise le maillage, le matériau ne sera utilisé que par ce nœud, et remplacera également la propriété de matériau du maillage. Si un matériau est ajouté dans la propriété Material Override du nœud, il ne sera utilisé que par ce nœud. Il remplacera également la propriété de matériau ordinaire du nœud et la propriété de matériau du maillage.

La propriété Material Overlay va rendre un matériau par-dessus le matériau actuellement utilisé par le maillage. Par exemple, cela peut être utilisé pour appliquer un effet de bouclier transparent sur le maillage.

Paramètres

Les SpatialMaterial ont de nombreuses options qui déterminent l'utilisation générale d'un matériau.

../../_images/spatial_material1.png

Transparent

Dans Godot, les matériaux ne sont pas transparents à moins qu'ils ne soient spécifiquement configurés pour l'être. La raison principale en est que les matériaux transparents sont rendus selon une technique différente (triés de l'arrière vers l'avant et rendus dans l'ordre).

Cette technique est moins efficace (de nombreux changements d'état se produisent) et rend les matériaux inutilisables avec de nombreux effets mi et post-traitement (tels que SSAO, SSR, etc.) qui nécessitent une géométrie parfaitement opaque.

Pour cette raison, les matériaux dans Godot sont supposés opaques, sauf indication contraire. Les principaux paramètres qui permettent la transparence sont :

  • L'option Transparent (celle-ci)

  • Mode de mélange réglé sur un mode autre que "Mix"

  • Activer le fondu de distance ou de proximité

Utiliser l'ombre pour l'opacité

L'éclairage modifie la transparence alpha de sorte que les zones ombrées soient opaques et les zones non ombrées soient transparentes. Cela peut servir à surimposer des ombres sur des images fournie par une caméra en réalité augmentée.

Sans ombrage

Dans la plupart des cas, il est courant que les matériaux soient affectés par l'éclairage (ombre).

Cependant, dans certains cas, vous pouvez afficher uniquement l'albédo (couleur) et ignorer le reste. L'activation de cette option supprimera toutes les ombres et affichera les couleurs pures et non éclairées.

../../_images/spatial_material26.png

Éclairage de sommet

Godot a un coût par pixel plus ou moins uniforme grâce au pré-passage de profondeur. Tous les calculs d'éclairage sont effectués en exécutant le shader d'éclairage sur chaque pixel.

Comme ces calculs sont coûteux, les performances peuvent être considérablement réduites dans certains cas particuliers, comme le dessin de plusieurs couches de transparence (ce qui est courant dans les systèmes de particules). Dans ces cas, il peut être utile de passer à l'éclairage par sommet.

De plus, sur les appareils bas de gamme ou mobiles, le passage à l'éclairage de sommet peut considérablement augmenter les performances de rendu.

../../_images/spatial_material2.png

Gardez à l'esprit que lorsque l'éclairage de sommet est activé, seul l'éclairage directionnel peut produire des ombres (pour des raisons de performance).

Pas de test de profondeur

Pour que des objets proches apparaissent au-dessus d'objets éloignés, des tests de profondeur sont effectués. Sa désactivation a pour conséquence l'apparition d'objets au-dessus (ou au-dessous) de tout le reste.

Désactiver cette option est utile pour dessiner des indicateurs dans l'espace du monde et fonctionne très bien avec la propriété Render Priority du matériel (voir le bas de cette page).

../../_images/spatial_material3.png

Utiliser la taille de point

Cette option n'est efficace que lorsque la géométrie rendue est constituée de points (en général, elle est constituée de triangles lorsqu'elle est importée d'un DCC 3D). Si c'est le cas, ces points peuvent être redimensionnés (voir ci-dessous).

Monde Triplanaire

Lors de l'utilisation de la cartographie triplanaire (voir ci-dessous, dans les réglages UV1 et UV2), le triplanaire est calculé dans l'espace local de l'objet. Cette option permet de faire fonctionner le triplanaire dans l'espace du monde.

Taille fixe

L'objet est ainsi rendu à la même taille quelle que soit la distance. Ceci est surtout utile pour les indicateurs (pas de test de profondeur et priorité de rendu élevée) et certains types de panneaux d’affichage.

Ne pas recevoir d'ombres

L'objet ne reçoit pas l'ombre qui aurait autrement été projetée sur lui.

Désactiver la lumière ambiante

L'objet ne reçoit aucun éclairage ambiant qui autrement l'éclairerait.

Assurer des Normales Correctes

Corrige les normales lorsque la mise à l'échelle n'est pas uniforme.

Couleur de sommet

Ce paramètre permet de choisir ce qui est fait par défaut pour les couleurs de sommet qui proviennent de votre application de modélisation 3D. Par défaut, elles sont ignorées.

../../_images/spatial_material4.png

Utiliser comme albedo

Choisir cette option signifie que la couleur du sommet est utilisée comme couleur albédo.

Est sRGB

La plupart des DCC 3D exporteront probablement les couleurs de sommet comme sRVB, donc activer cette option les aidera à paraître corrects.

Paramètres

SpatialMaterial possède également plusieurs paramètres configurables pour modifier de nombreux aspects du rendu :

../../_images/spatial_material5.png

Mode diffus

Spécifie l'algorithme utilisé pour la diffusion de la lumière lorsqu'elle frappe l'objet. La valeur par défaut est Burley. D'autres modes sont également disponibles :

  • Burley : Mode par défaut, l'algorithme de diffusion original Disney Principled PBS.

  • Lambert : n’est pas affecté par la dureté.

  • Lambert Wrap : Étend de Lambert pour couvrir plus de 90 degrés lorsque la rugosité augmente. Idéal pour les cheveux et pour simuler la diffusion sous-surface à bas prix. Cette implémentation conserve l'énergie.

  • Oren Nayar : Cette implémentation vise à prendre en compte le microrevêtement (via la rugosité). Convient bien aux matériaux argileux et à certains types de tissus.

  • Toon : Fournit une coupe dure pour l'éclairage, avec un lissage affecté par la rugosité. Il est recommandé de désactiver la contribution du ciel en fonction des réglages de la lumière ambiante de votre environnement ou de désactiver la lumière ambiante dans le spatial material pour obtenir un meilleur effet.

../../_images/spatial_material6.png

Mode spéculaire

Spécifie comment la tâche spéculaire sera rendue. La tâche spéculaire représente la forme d'une source lumineuse réfléchie dans l'objet.

  • ShlickGGGX : La tâche la plus communément utilisée par les moteurs 3D PBR de nos jours.

  • Blinn : Commun dans les moteurs des générations précédentes. Ne vaut pas la peine d'être utilisé de nos jours, mais laissé ici pour des raisons de compatibilité.

  • Phong : Comme au-dessus.

  • Toon : Crée une tâche toon, qui change de taille en fonction de la rugosité.

  • Disabled : Parfois, la tâche est en travers du chemin. Va-t'en !

../../_images/spatial_material7.png

Mode mélange

Contrôle le mode de mélange du matériau. Gardez à l'esprit que tout mode autre que Mix force l'objet à passer par le pipeline transparent.

  • Mix : Mode de mélange par défaut, alpha contrôle la visibilité de l'objet.

  • Add : L'objet est mélangé de façon additive, agréable pour les fusées éclairantes ou pour certains effets de type feu.

  • Sub : objet est soustrait.

  • Mul : objet est multiplié.

../../_images/spatial_material8.png

Mode Élagage

Détermine quel côté de l'objet n'est pas dessiné lorsque les faces arrière sont rendues :

  • Retour : L’arrière de l'objet est éliminé lorsqu'il n'est pas visible (par défaut).

  • Face avant : La face avant de l'objet est éliminée lorsqu'elle n'est pas visible.

  • Désactivé : Utilisé pour les objets qui sont recto-verso (aucune élimination n'est effectuée).

Note

Par défaut, Blender a désactivé l'élimination de la face arrière des matériaux et exporte les matériaux en fonction de leur rendu dans Blender. Cela signifie que les matériaux dans Godot auront leur mode d'élimination défini sur Disabled. Cela peut diminuer les performances puisque les faces arrière seront rendues, même si elles sont réduites par d'autres faces. Pour résoudre ce problème, activez Backface Culling (Suppression des faces arrières) dans l'onglet Materials (propriétés de matériaux) de Blender, puis exportez à nouveau la scène vers glTF.

Mode de dessin en profondeur

Indique quand le rendu de profondeur doit avoir lieu.

  • Opaque Only(par défaut) : La profondeur n'est dessinée que pour les objets opaques.

  • Always : Le dessin en profondeur est dessiné pour les objets opaques et transparents.

  • Never : Aucun dessin en profondeur n'a lieu (ne pas confondre avec l'option Aucun test de profondeur ci-dessus).

  • Pré-passe de profondeur : Pour les objets transparents, une première passe est effectuée sur les parties opaques, puis la transparence est tracée par-dessus. Utilisez cette option avec de l'herbe ou du feuillage transparent.

../../_images/material_depth_draw.png

Largeur de ligne

Lorsque vous tracez des lignes, indiquez la largeur des lignes à tracer. Cette option n'est pas disponible sur la plupart des hardware modernes.

Taille de point

Lorsque vous dessinez des points, spécifie la taille des points en pixels.

Mode Billboard

Active le mode Billboard pour le rendu du matériel. Ceci contrôle la façon dont l'objet est orienté par rapport à la caméra :

  • Désactivé : Le mode Billboard est désactivé.

  • Activé : Le mode Billboard est activé. L'axe Z de l'objet fera toujours face à la caméra.

  • Y-Billboard : L'axe X de l'objet fera toujours face à la caméra.

  • Particules : Plus adapté aux systèmes de particules, car il permet de spécifier des options d'animation.

../../_images/spatial_material9.png

Les options ci-dessus sont seulement activées pour les particules de type BillBoard.

Garder l'échelle du Billboard

Autorise la mise à l'échelle d'un maillage en mode "panneau d'affichage".

Croître

Pousse les sommets de l’objet dans le sens indiqué par leurs normales :

../../_images/spatial_material10.png

Ceci est couramment utilisé pour créer des contours bon marché. Ajoutez une deuxième passe de matériel, faites-le noir et sans ombres, faites une coupe inversée (Cull Front), et ajoutez un peu de grow :

../../_images/spatial_material11.png

Utiliser la découpe alpha

Lorsque la transparence autre que 0 ou 1 n'est pas nécessaire, il est possible de définir un seuil pour empêcher l'objet de rendre des pixels semi-transparents.

../../_images/spatial_material12.png

L'objet est ainsi rendu via le pipeline opaque, qui est plus rapide et lui permet d'utiliser des effets mi et post-processus tels que SSAO, SSR, etc.

Couleurs des matériaux, cartes et canaux

Outre les paramètres, ce qui définit les matériaux eux-mêmes sont les couleurs, les textures et les canaux. Godot en soutient une longue liste. Ils sont décrits en détail ci-dessous :

Albédo

Albedo est la couleur de base du matériau, sur laquelle tous les autres réglages fonctionnent. Lorsqu'il est réglé sur Unshaded, c'est la seule couleur qui est visible. Dans les versions précédentes de Godot, ce canal s'appelait Diffuse. Le changement de nom s'est produit principalement parce que, dans le PBR (Physically Based Rendering), cette couleur affecte beaucoup plus de calculs que seulement le chemin d'éclairage diffus.

La couleur d'albédo et la texture peuvent être utilisés ensemble, étant multipliés.

Le canal Alpha de la couleur d'albédo et des textures est également utilisé pour la transparence de l'objet. Si vous utilisez une couleur ou une texture avec un canal alpha, assurez-vous d'activer la transparence ou l'alpha scissoring pour que cela fonctionne.

Métallique

Godot utilise un modèle métallique par rapport aux modèles concurrents en raison de sa simplicité. Ce paramètre définit le degré de réflexion du matériau. Plus il est réfléchissant, moins la lumière diffuse/ambiante affecte le matériau et plus la lumière est réfléchie. Ce modèle est appelé "économie d'énergie".

Le paramètre Specular est une valeur générale pour la réflectivité (contrairement à Metallic, ce paramètre n'est pas économe en énergie, donc laissez-le à 0.5 et n'y touchez que si vous en avez besoin).

La réflectivité interne minimale est de "0,04", il est donc impossible de rendre un matériau complètement non-réfléchissant, comme dans la vraie vie.

../../_images/spatial_material13.png

Dureté

La rugosité affecte la façon dont la réflexion se produit. Une valeur de 0 en fait un miroir parfait tandis qu'une valeur de 1 brouille complètement la réflexion (simulant la surface naturelle au niveau microscopique). La plupart des types de matériaux courants peuvent être obtenus avec la bonne combinaison de Métallique et Rugosité.

../../_images/spatial_material14.png

Émission

Emission spécifie la quantité de lumière émise par le matériau (gardez à l'esprit que ceci n'inclut pas la géométrie de la lumière environnante sauf si Utilisation de GIProbe sont utilisés). Cette valeur est ajoutée à l'image finale résultante et n'est pas affectée par les autres éclairages de la scène.

../../_images/spatial_material15.png

Normal map (carte de normales)

Une normal map (carte de normales) vous permet de définir une texture qui représente un détail de forme plus fin. Cela ne modifie pas la géométrie, mais seulement l'angle d'incidence de la lumière. Dans Godot, seuls les canaux rouge et vert des normal maps sont utilisés pour une meilleure compression et une plus grande compatibilité.

../../_images/spatial_material16.png

Note

Godot exige que la normal map(carte de normale) utilise les coordonnées X+, Y+ et Z+, c'est ce qu'on appelle le style OpenGL. Si vous avez importé un matériau conçu pour être utilisé avec un autre moteur, il peut être de style DirectX, auquel cas la normal map doit être convertie afin que son axe Y soit inversé.

Vous trouverez plus d'informations sur les nomal map (incluant un tableau des coordonnées pour les moteurs les plus populaires) ici.

Bordure

Certains tissus ont de petites micro fourrures qui diffusent la lumière autour d'eux. Godot l'émule avec le paramètre Rim. Contrairement à d'autres systèmes d'éclairage Rim, qui n'utilisent que le canal d'émission, celui-ci prend en compte la lumière (pas de lumière signifie pas de Rim). Cela rend l'effet beaucoup plus crédible.

../../_images/spatial_material17.png

La taille de Rim dépend de la rugosité, et il existe un paramètre spécial pour spécifier comment elle doit être colorée. Si Tint est 0, la couleur de la lumière est utilisée pour le bord. Si Tint est 1, alors l'albédo du matériau est utilisé. L'utilisation de valeurs intermédiaires fonctionne généralement mieux.

Coucheclaire

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Le paramètre Clearcoat permet d'ajouter un second passage de couche transparente au matériau. C'est courant dans la peinture automobile et les jouets. En pratique, il s'agit d'une petite tache spéculaire ajoutée sur le matériau existant.

L'effet est extrêmement subtil dans Godot 3 et peut nécessiter un éclairage spécifique ou de regarder un matériau d'une manière spécifique pour remarquer une différence. On peut le voir dans l'image ci-dessous où le vernis transparent est activé à droite.

../../_images/clearcoat_comparison.png

Note

L'effet sera plus visible dans Godot 4.

Anisotropie

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Cela change la forme de la tache spéculaire et l'aligne sur l'espace tangent. L'anisotropie est couramment utilisée avec les cheveux, ou pour rendre des matériaux comme l'aluminium brossé plus réalistes. Il fonctionne particulièrement bien lorsqu'il est combiné avec des cartes de flux.

../../_images/spatial_material18.png

Occlusion ambiante

Il est possible de spécifier une carte d'occlusion ambiante pré-calculée. Cette carte affecte la quantité de lumière ambiante qui atteint chaque surface de l'objet (elle n'affecte pas la lumière directe par défaut). Bien qu'il soit possible d'utiliser le Screen-Space Ambiant Occlusion (SSAO) pour générer l'occlusion ambiante, rien ne vaut la qualité d'une bonne carte d'OA pré-calculée. Il est recommandé de générer l'occlusion ambiante chaque fois que cela est possible.

../../_images/spatial_material19.png

Profondeur

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Utiliser une carte de profondeur sur un matériau produit un balayage utilisant l'émission de rayons pour simuler le déplacement des reliefs dans la direction du point de vue. Il ne s'agit pas d'un ajout de géométrie mais d'une illusion de profondeur. Cela peut ne pas marcher pour les objets complexes, mais cela produit des effets réalistes sur les textures. Le paramètre Profondeur devrait être utilisé avec une normal map.

../../_images/spatial_material20.png

Transluminescence

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Cet effet émule la lumière qui pénètre la surface d'un objet, est diffusée, puis sort. Il est utile pour créer une peau réaliste, du marbre, des liquides colorés, etc.

../../_images/spatial_material21.png

Transmission

Contrôle la quantité de lumière du côté éclairé (visible à la lumière) qui est transférée vers le côté obscur (opposé à la lumière). Cela fonctionne bien pour les objets minces tels que les feuilles de plantes, l'herbe, les oreilles humaines, etc.

../../_images/spatial_material22.png

Réfraction

Cette fonction est disponible uniquement en utilisant l'arrière-plan GLES3

Lorsque la réfraction est activée, elle remplace le mélange alpha, et Godot tente de récupérer les informations derrière l'objet rendu. Cela permet de déformer la transparence d'une manière similaire à la réfraction dans la vie réelle.

../../_images/spatial_material23.png

Détail

Godot permet d'utiliser l'albédo secondaire et les normal maps (cartes de normales) pour générer une texture détaillée, qui peut être mélangée de plusieurs façons. En combinant cela avec des modes UV secondaires ou triplanaires, de nombreuses textures intéressantes peuvent être obtenues.

../../_images/spatial_material24.png

Il existe plusieurs paramètres qui contrôlent la façon dont le détail est utilisé.

Mask : Le masque de détail est une image en noir et blanc utilisée pour contrôler l'endroit où le mélange se fait sur une texture. Le blanc est pour les textures de détail, le noir est pour les textures matérielles régulières, les différentes nuances de gris sont pour le mélange partiel des textures matérielles et des textures de détail.

Blend Mode : Ces quatre modes contrôlent la façon dont les textures sont mélangées.

  • Mix : Combine les valeurs des pixels des deux textures. En noir, ne montre que la texture du matériau, en blanc, ne montre que la texture du détail. Les valeurs de gris créent un mélange lisse entre les deux.

  • Ajouter : Ajoute les valeurs des pixels d'une texture à l'autre. Contrairement au mode de mélange (mix mode), les deux textures sont complètement mélangées pour les parties blanches d'un masque et non dans les parties grises. La texture originale est pratiquement inchangée pour les parties noires

  • Sub : Soustrait les valeurs des pixels d'une texture à l'autre. La deuxième texture est entièrement soustraite dans les parties blanches d'un masque, avec seulement une petite soustraction dans les parties noires, les parties grises étant différents niveaux de soustraction basés sur la texture exacte.

  • Mul : Multiplie les nombres des canaux RVB pour chaque pixel de la texture supérieure par les valeurs du pixel correspondant de la texture inférieure.

Albedo : C'est ici que vous mettez une texture d'albédo que vous voulez mélanger. Si rien ne se trouve dans ce créneau, elle sera interprétée comme blanche par défaut.

Normal : C'est ici que vous mettez une texture de normales que vous voulez mélanger. Si rien ne se trouve dans ce créneau, elle sera interprétée comme une normal map (carte de normales) plate. Cette option peut être utilisée même si la normal map n'est pas activée pour le matériau.

UV1 et UV2

Godot supporte deux canaux UV par matériau. Les UV secondaires sont souvent utiles pour l'occlusion ou l'émission ambiante (lumière préparée). Les UV peuvent être mis à l'échelle et décalés, ce qui est utile lors de l'utilisation de textures répétitives.

Cartographie triplanaire

La cartographie triplanaire est disponible pour UV1 et UV2. C'est une méthode alternative permettant d'obtenir des coordonnées de textures, parfois appelée "texturage automatique". Les textures sont échantillonnées indépendamment suivant les axes X, Y et Z puis fusionnées selon la normale. La cartographie triplanaire peut être calculée dans le système de coordonnées global ou dans celui propre à l'objet.

Dans l'image ci-dessous, vous pouvez voir que toutes les primitives utilisent le même matériau avec l'option de triplan global, la texture de brique s'étend de façon ininterrompue d'un objet à l'autre.

../../_images/spatial_material25.png

Fondu de proximité et distance

Godot permet aux matériaux de s'estomper par proximité les uns des autres ainsi que selon la distance par rapport au spectateur. Le fondu de proximité est utile pour des effets tels que des particules molles ou une masse d'eau avec un mélange lisse jusqu'aux rivages. Le fondu à distance est utile pour les puits de lumière ou les indicateurs qui ne sont visibles qu'après une distance donnée.

Gardez à l'esprit que l'activation de ces options permet le mélange alpha, donc en abuser pour une scène entière n'est généralement pas une bonne idée.

../../_images/spatial_material_proxfade.gif

Priorité de rendu

L'ordre de rendu des objets peut être modifié, bien que cela soit surtout utile pour les objets transparents (ou les objets opaques qui dessinent en profondeur mais pas en couleur, comme les fissures sur le sol).