123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <!DOCTYPE html>
- <html lang="fr">
- <head>
- <meta charset="utf-8" />
- <base href="../../../" />
- <script src="page.js"></script>
- <link type="text/css" rel="stylesheet" href="page.css" />
- </head>
- <body>
- [page:Material] →
- <h1>[name]</h1>
- <p class="desc">
- Un matériau physique standard, utilisant le flux de travail Metallic-Roughness.<br /><br />
- 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].<br /><br />
- 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.<br /><br />
- 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.<br /><br />
- Notez que pour de meilleurs résultats, vous devez toujours spécifier une [page:.envMap environment map] lors de l'utilisation
- ce materiel.<br /><br />
- 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]:
- <ul>
- <li>
- [link:https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/ Basic Theory of Physically Based Rendering]
- </li>
- <li>
- [link:https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/ Physically Based Rendering and You Can Too]
- </li>
- </ul>
- </p>
- <p>
- 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.
- </p>
- <iframe id="scene" src="scenes/material-browser.html#MeshStandardMaterial"></iframe>
- <script>
- // iOS iframe auto-resize workaround
- if ( /(iPad|iPhone|iPod)/g.test( navigator.userAgent ) ) {
- const scene = document.getElementById( 'scene' );
- scene.style.width = getComputedStyle( scene ).width;
- scene.style.height = getComputedStyle( scene ).height;
- scene.setAttribute( 'scrolling', 'no' );
- }
- </script>
- <h2>Constructeur</h2>
- <h3>[name]( [param:Object parameters] )</h3>
- <p>
- [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.<br /><br />
- 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.
- </p>
- <h2>Propriétés</h2>
- <p>Voir la classe [page:Material] pour les propriétés communes.</p>
- <h3>[property:Texture alphaMap]</h3>
- <p>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.<br /><br />
-
- 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.
- </p>
- <h3>[property:Texture aoMap]</h3>
- <p>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.</p>
- <h3>[property:Float aoMapIntensity]</h3>
- <p>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.</p>
- <h3>[property:Texture bumpMap]</h3>
- <p>
- 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é.
- </p>
- <h3>[property:Float bumpScale]</h3>
- <p>A quel point la texture en relief affecte le matériau. Les plages typiques sont 0-1. La valeur par défaut est 1.</p>
- <h3>[property:Color color]</h3>
- <p>[page:Color], couleur du matériau, par défaut en blanc (0xffffff).</p>
- <h3>[property:Object defines]</h3>
- <p>Un objet de la forme :
- <code>
- { 'STANDARD': '' };
- </code>
- Est utilisé par [page:WebGLRenderer] pour choisir les shaders.
- </p>
- <h3>[property:Texture displacementMap]</h3>
- <p>
- 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.
- </p>
- <h3>[property:Float displacementScale]</h3>
- <p>
- 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.
- </p>
- <h3>[property:Float displacementBias]</h3>
- <p>
- 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.
- </p>
- <h3>[property:Color emissive]</h3>
- <p>
- Couleur émissive (claire) du matériau, essentiellement une couleur unie non affectée par un autre éclairage.
- La valeur par défaut est noire.
- </p>
- <h3>[property:Texture emissiveMap]</h3>
- <p>
- 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.
- </p>
- <h3>[property:Float emissiveIntensity]</h3>
- <p>Intensité de la lumière émissive. Module la couleur émissive. La valeur par défaut est 1.</p>
- <h3>[property:Texture envMap]</h3>
- <p>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.
- </p>
- <h3>[property:Float envMapIntensity]</h3>
- <p>Met à l'échelle l'effet de la carte d'environnement en multipliant sa couleur.</p>
- <h3>[property:Boolean flatShading]</h3>
- <p>
- Définit si le matériau est rendu avec un ombrage plat. La valeur par défaut est false.
- </p>
- <h3>[property:Boolean fog]</h3>
- <p>Si le matériau est affecté par le brouillard (fog) La valeur par défaut est `true`.</p>
- <h3>[property:Boolean isMeshStandardMaterial]</h3>
- <p>
- Booléen en lecture seule pour vérifier si un objet donné est de type [name].
- </p>
- <h3>[property:Texture lightMap]</h3>
- <p>La carte des lumières (light map). La valeur par défaut est null. La lightMap nécessite un deuxième ensemble d'UVs.</p>
- <h3>[property:Float lightMapIntensity]</h3>
- <p>Intensité de la lumière préparée. La valeur par défaut est 1.</p>
- <h3>[property:Texture map]</h3>
- <p>
- 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..
- </p>
- <h3>[property:Float metalness]</h3>
- <p>
- 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.
- </p>
- <h3>[property:Texture metalnessMap]</h3>
- <p>Le canal bleu de cette texture est utilisé pour modifier la métallité du matériau.</p>
- <h3>[property:Texture normalMap]</h3>
- <p>
- 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é.
- </p>
- <h3>[property:Integer normalMapType]</h3>
- <p>
- Le type de carte d'ombrage.<br /><br />
- Les options sont [page:constant THREE.TangentSpaceNormalMap] (par défaut), et [page:constant THREE.ObjectSpaceNormalMap].
- </p>
- <h3>[property:Vector2 normalScale]</h3>
- <p>
- 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).
- </p>
- <h3>[property:Float roughness]</h3>
- <p>
- 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.
- </p>
- <h3>[property:Texture roughnessMap]</h3>
- <p>Le canal vert de cette texture est utilisé pour modifier la rugosité du matériau.</p>
- <h3>[property:Boolean wireframe]</h3>
- <p>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).</p>
- <h3>[property:String wireframeLinecap]</h3>
- <p>
- 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'.<br /><br />
- 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].
- </p>
- <h3>[property:String wireframeLinejoin]</h3>
- <p>
- Définit l'apparence des jointures de lignes. Les valeurs possibles sont 'round', 'bevel' et 'miter'. La valeur par défaut est 'round'. <br /><br />
- 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].
- </p>
- <h3>[property:Float wireframeLinewidth]</h3>
- <p>Contrôle l'épaisseur du filaire. La valeur par défaut est 1.<br /><br />
- 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.
- </p>
- <h2>Méthodes</h2>
- <p>Voir la classe [page:Material] pour les méthodes communes.</p>
- <h2>Source</h2>
- <p>
- [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
- </p>
- </body>
- </html>
|