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.

Vous pouvez ajouter un SpatialMaterial à un objet en choisissant « New SpatialMaterial » dans la propriété Material de l’Inspecteur.

Drapeaux

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é

Sans ombre

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

Aucun 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.

Ensure Correct Normals

Fixes normals when non-uniform scaling is used.

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 de fusion

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 de Culling

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

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.

Billboard Keep Scale

Enables scaling a mesh in billboard mode.

Croître

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

../../_images/spatial_material10.png

Cette option est communément utilisée pour créer des contours simplement. Ajoutez un second « material », de couleur noire et sans ombres, inversez son « culling » (Cull Front) et augmentez le « grow » :

../../_images/spatial_material11.png

Utiliser Alpha Scissor

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 :

Albedo

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

Rugosité

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 GI Probes 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

Normalmap

Une carte de normale permet l’utilisation d’une texture pour ajouter des détails fins à une forme. Ce n’est pas la géométrie de l’objet qui est modifiée, mais seulement l’angle d’incidence de la lumière sur sa surface. Dans Godot, seulement les canaux rouges et verts des cartes de normale sont utilisés pour une plus grande compatibilité.

../../_images/spatial_material16.png

Rim

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.

Vernis transparent

This feature is only available when using the GLES3 backend.

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 goutte spéculaire plus petite ajoutée sur le matériau existant.

Anisotropie

This feature is only available when using the GLES3 backend.

Cela change la forme de la goutte 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éparer. 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 Screen-Space Ambient Occlusion (SSAO) pour générer l’occlusion ambiante, rien ne vaut la qualité d’une carte d’AO bien faite. Il est recommandé de préparer l’occlusion ambiante dans la mesure du possible.

../../_images/spatial_material19.png

Profondeur

This feature is only available when using the GLES3 backend.

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. La profondeur devrait être utilisé avec une carte de normales.

../../_images/spatial_material20.png

Diffusion souterraine

This feature is only available when using the GLES3 backend.

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

This feature is only available when using the GLES3 backend.

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 cartes 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

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