Un matériau physique standard, utilisant le flux de travail Metallic-Roughness.
Le rendu basé sur la physique (PBR) est récemment devenu la norme dans de nombreuses applications 3D, telles que
[link:https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/ Unity],
[link:https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/ Unreal] et
[link:http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017 3D Studio Max].
Cette approche diffère des approches plus anciennes, au lieu d'utiliser des approximations pour la manière dont
la lumière interagit avec une surface, un modèle physiquement correct est utilisé. L'idée est de choisir
un matériau qui réagira « correctement » dans tous les scénarios d'éclairage, au lieu d'essayer de manipuler les matériaux
pour qu'ils aient un bon rendu avec une lumière spécifique.
En pratique, cela donne un résultat plus précis et réaliste que le [page:MeshLambertMaterial]
ou [page:MeshPhongMaterial],au prix d'être un peu plus coûteux en calcul. [name] utilise un ombrage par fragment.
Notez que pour de meilleurs résultats, vous devez toujours spécifier une [page:.envMap environment map] lors de l'utilisation
ce materiel.
Pour une introduction non technique au concept de PBR et comment mettre en place un matériel PBR,
consultez ces articles rédigés par des personnes de [link:https://www.marmoset.co marmoset]:
Les détails techniques de l'approche utilisée dans three.js (et la plupart des autres systèmes PBR) peuvent être trouvés sur ce pdf : [link:https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf paper from Disney], de Brent Burley.
[page:Object parameters] - (optionnel) un objet avec une ou plusieurs propriétés définissant l'apparence du matériau.
Toute propriété du matériau (y compris toute proprioété héritée de [page:Material]) peut être passée dans l'objet.
L'exception est la propriété [page:Hexadecimal color], qui peut être passée comme une chaine de caractères hexadécimale,
ayant la valeur `0xffffff` (blanc) par défaut. [page:Color.set]( color ) est appelée en interne.
Voir la classe [page:Material] pour les propriétés communes.
La carte alpha est une texture en niveaux de gris qui contrôle l'opacité sur la surface
(noir : entièrement transparent ; blanc : entièrement opaque). La valeur par défaut est nulle.
Seule la couleur de la texture est utilisée, en ignorant le canal alpha s'il en existe un.
Pour les textures RGB et RGBA, le moteur de rendu [page:WebGLRenderer WebGL] utilisera le
canal vert lors de l'échantillonnage de cette texture en raison du peu de précision supplémentaire fourni
pour le vert dans les formats RVB 565 compressés DXT et non compressés.
Les textures avec uniquement de la luminance ou les textures luminance/alpha fonctionneront également comme prévu.
Le canal rouge de cette texture est utilisé comme carte d'occlusion ambiante. La valeur par défaut est nulle. L'aoMap nécessite un deuxième ensemble d'UV.
Intensité de l'effet d'occlusion ambiante. La valeur par défaut est 1. Zéro signifie qu'il n'y a pas d'effet d'occlusion.
La texture pour créer une carte en relief. Les valeurs de noir et blanc correspondent à la profondeur perçue par rapport aux lumières. Bump n'affecte pas réellement la géométrie de l'objet, seulement l'éclairage. Si une carte normale est définie, cela sera ignoré.
A quel point la texture en relief affecte le matériau. Les plages typiques sont 0-1. La valeur par défaut est 1.
[page:Color], couleur du matériau, par défaut en blanc (0xffffff).
Un objet de la forme :
{ 'STANDARD': '' };
Est utilisé par [page:WebGLRenderer] pour choisir les shaders.
La carte de déplacement affecte la position des sommets du maillage. Contrairement aux autres cartes qui n'affectent que la lumière et l'ombre du matériau, les sommets déplacés peuvent projeter des ombres, bloquer d'autres objets et agir autrement comme une géométrie réelle. La texture de déplacement est une image sur laquelle la valeur de chaque pixel (le blanc étant le plus élevé) est mappée, et repositionne, les sommets du maillage.
Dans quelle mesure la carte de déplacement affecte le maillage (où le noir n'est pas un déplacement, et le blanc est le déplacement maximal). Sans ensemble de cartes de déplacement, cette valeur n'est pas appliquée. La valeur par défaut est 1.
Le décalage des valeurs de la carte de déplacement sur les sommets du maillage. Sans ensemble de cartes de déplacement, cette valeur n'est pas appliquée. La valeur par défaut est 0.
Couleur émissive (claire) du matériau, essentiellement une couleur unie non affectée par un autre éclairage. La valeur par défaut est noire.
Définit la carte émissive (lueur). La valeur par défaut est nulle. La couleur de la carte émissive est modulée par la couleur émissive et l'intensité émissive. Si vous avez une carte émissive, assurez-vous de régler la couleur émissive sur autre chose que le noir.
Intensité de la lumière émissive. Module la couleur émissive. La valeur par défaut est 1.
La carte de l'environnement. Pour garantir un rendu physiquement correct, vous ne devez ajouter que des cartes d'environnement qui ont été prétraitées par [page: PMREMGenerator]. La valeur par défaut est null.
Met à l'échelle l'effet de la carte d'environnement en multipliant sa couleur.
Définit si le matériau est rendu avec un ombrage plat. La valeur par défaut est false.
Si le matériau est affecté par le brouillard (fog) La valeur par défaut est `true`.
Booléen en lecture seule pour vérifier si un objet donné est de type [name].
La carte des lumières (light map). La valeur par défaut est null. La lightMap nécessite un deuxième ensemble d'UVs.
Intensité de la lumière préparée. La valeur par défaut est 1.
La carte des couleurs. Peut éventuellement inclure un canal alpha, généralement combiné avec [page:Material.transparent .transparent] ou [page:Material.alphaTest .alphaTest]. La valeur par défaut est null. La couleur de la carte de texture est modulée par la couleur ([page:.color]) diffuse..
Combien le matériau est comme un métal. Les matériaux non métalliques tels que le bois ou la pierre utilisent 0,0, les métaux utilisent 1,0, sans rien (généralement) entre les deux. La valeur par défaut est 0.0. Une valeur comprise entre 0,0 et 1,0 peut être utilisée pour un aspect de métal rouillé. Si metalnessMap est également fourni, les deux valeurs sont multipliées.
Le canal bleu de cette texture est utilisé pour modifier la métallité du matériau.
La texture pour créer une carte normale. Les valeurs RVB affectent la surface normale pour chaque fragment de pixel et changent la façon dont la couleur est illuminée. Les cartes normales ne changent pas la forme réelle de la surface, seulement l'éclairage. Dans le cas où le matériau a une carte normale créée en utilisant la convention "left handed", le composant y de normalScale devrait être négatif pour compenser les différences de latéralité.
Le type de carte d'ombrage.
Les options sont [page:constant THREE.TangentSpaceNormalMap] (par défaut), et [page:constant THREE.ObjectSpaceNormalMap].
A quel point la carte normale affecte le matériau. Les plages typiques sont 0-1. La valeur par défaut est un [page:Vector2] défini sur (1,1).
La rugosité du matériau apparaît. 0,0 signifie une réflexion miroir lisse, 1,0 signifie entièrement diffus. La valeur par défaut est 1.0. Si roughnessMap est également fourni, les deux valeurs sont multipliées.
Le canal vert de cette texture est utilisé pour modifier la rugosité du matériau.
Rendre la géométrie en fil de fer. La valeur par défaut est "false" (c'est-à-dire rendre sous forme de polygones plats).
Définit l'apparence de la fin de la ligne. les valeurs possibles sont 'butt', 'round' et 'square'.
La valeur par défaut est 'round'.
Cela correspond à la propriété [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap]
et est ignorée par le moteur de rendu [page:WebGLRenderer WebGL].
Définit l'apparence des jointures de lignes. Les valeurs possibles sont 'round', 'bevel' et 'miter'. La valeur par défaut est 'round'.
Cela correspond à la propriété [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin]
et est ignorée par le moteur de rendu [page:WebGLRenderer WebGL].
Contrôle l'épaisseur du filaire. La valeur par défaut est 1.
A cause des limitations de [link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf OpenGL Core Profile]
avec le moteur de rendu [page:WebGLRenderer WebGL] sur la plupârt des plateformes, l'épaisseur de ligne (linewidth) sera toujours
à 1, indépendamment de la valeur définie.
Voir la classe [page:Material] pour les méthodes communes.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]