Nodes builtin bsdf (mentalray)
Sources
Plus d'informations ici:
- BSDF/BRDF shaders in Maya 2011
- mental ray Release Notes Maya 2011
- Bidirectional scattering distribution function (Page Wikipedia)
- Bidirectional reflectance distribution function (Page Wikipedia)
Activer les nodes
Créez un fichier BSDF.mi dans:
C:\Program Files\Autodesk\Maya20xx\mentalray\include
Ajoutez les lignes suivante au fichier:
declare shader color "builtin_bsdf_lambert" (
color "diffuse",
array light "lights",
integer "mode" )
version 1
apply material, shadow, photon
end declare
declare shader color "builtin_bsdf_phong" (
color "diffuse",
color "glossy",
scalar "exponent",
array light "lights",
integer "mode" )
version 1
apply material, shadow, photon
end declare
declare shader color "builtin_bsdf_ashikhmin" (
color "diffuse",
color "glossy",
scalar "exp_u",
scalar "exp_v",
array light "lights",
integer "mode" )
version 1
apply material, shadow, photon
end declare
declare shader color "builtin_bsdf_mirror" (
color "reflection" default 0 0 0 1)
apply material, shadow, photon
end declare
declare shader color "builtin_bsdf_carpaint" (
color "base_color" default 1 0 0 1,
color "reflectivity0" default 0.1 0.1 0.1 1,
color "reflectivity90" default 0.3 0.3 0.3 1,
scalar "fresnel_falloff" default 5,
scalar "metallic" default 0.3,
color "metallic_color" default 1 1 1 1,
scalar "metallic_falloff" default 8,
color "edge_color" default 1 0 0 1,
scalar "edge_falloff" default 2,
scalar "unit_scale" default 1,
scalar "sparkle_weight" default 0.05,
scalar "sparkle_falloff" default 1,
integer "mode",
array light "lights")
apply material, shadow, photon
end declare
declare shader color "builtin_bsdf_architectural" (
color "diffuse_refl" default 0 0 0 1,
scalar "diffuse_refl_scalar" default 1,
scalar "diffuse_dev",
color "specular_refl" default 0 0 0 1,
scalar "specular_refl_scalar" default 1,
scalar "refl_gloss" default 1,
boolean "metal_material" default on,
color "specular_trans" default 0 0 0 1,
scalar "specular_trans_scalar" default 1,
scalar "trans_gloss" default 1,
color "diffuse_trans" default 0 0 0 1,
scalar "diffuse_trans_scalar" default 1,
scalar "anisotropy",
scalar "anisotropy_rotation",
integer "mode",
array light "lights")
apply material, shadow, photon
end declare
declare shader color "builtin_bsdf_architectural_comp" (
color "diffuse" default 0.5 0.5 0.5 1,
scalar "diffuse_weight" default 1,
scalar "diffuse_roughness",
color "refl_color" default 1 1 1 1,
scalar "reflectivity" default 0.6,
scalar "refl_gloss" default 1,
boolean "refl_is_metal" default off,
scalar "brdf_0_degree_refl" default 0.2,
scalar "brdf_90_degree_refl" default 1,
color "refr_color" default 1 1 1 1,
scalar "transparency",
scalar "refr_gloss" default 1,
color "refr_trans_color" default 0.7 0.6 0.5 1,
scalar "refr_trans_weight" default 0.5,
scalar "anisotropy" default 1,
scalar "anisotropy_rotation",
integer "mode",
array light "lights",
scalar "refr_ior",
boolean "brdf_fresnel",
boolean "refr_translucency",
integer "anisotropy_channel",
integer "refl_gloss_samples" default 8,
boolean "refl_interpolate",
boolean "refl_hl_only",
integer "refr_gloss_samples" default 8,
boolean "refr_interpolate",
scalar "brdf_curve" default 5,
boolean "brdf_conserve_energy" default on,
integer "intr_grid_density",
integer "intr_refl_samples",
boolean "intr_refl_ddist_on",
scalar "intr_refl_ddist",
integer "intr_refr_samples",
boolean "single_env_sample",
boolean "refl_falloff_on",
scalar "refl_falloff_dist",
boolean "refl_falloff_color_on",
color "refl_falloff_color",
integer "refl_depth",
scalar "refl_cutoff",
boolean "refr_falloff_on",
scalar "refr_falloff_dist",
boolean "refr_falloff_color_on",
color "refr_falloff_color",
integer "refr_depth",
scalar "refr_cutoff",
scalar "indirect_multiplier",
scalar "fg_quality",
scalar "fg_quality_w",
boolean "ao_on",
integer "ao_samples",
scalar "ao_distance",
color "ao_dark",
color "ao_ambient",
boolean "ao_do_details",
boolean "thin_walled",
boolean "no_visible_area_hl",
boolean "skip_inside_refl",
boolean "do_refractive_caustics",
boolean "backface_cull",
boolean "propagate_alpha",
scalar "hl_vs_refl_balance",
scalar "cutout_opacity",
color "additional_color",
shader "bump",
boolean "no_diffuse_bump")
apply material, shadow, photon
end declare
Créer un node
Il suffit maintenant de taper:
createNode builtin_bsdf_ashikhmin
Pour créer un node.
Appliquez les comme des shaders normaux mais une fois appliqué, allez sur le shading group et décochez Export with Shading Engine.
Traduction des posts de Bitter
Post original ici: http://forum.mentalimages.com/showthread.php?7289-BSDF-BRDF-shaders-in-Maya-2011&p=30345#post30345
Introduction
Il y a eu quelques discussions concernant les shaders BSDF sur CGTalk pour Maya 2011 et mental ray 3.8. Bart fait mention des shaders ici: Maya 2011 SP1
Ce type de shading model réduit la quantité de paramètre d'un material à ceux de base qui ne concerne que sont appearance. Ce material est requière généralement moins de samples pour obtenir une meilleure qualité d'éclairage et de reflection de la surface. Combiné à d'autres techniques plus “brut force”, vous pouvez obtenir un rendu de meilleur qualité plus rapidement en évitant les tweaks.
Quand on travail sur le look d'un material BSDF, on doit plus penser au propriétés de la surface qu'a son look direct. Dans la réalité, une surface rugueuse peut être faite depuis la même matière que celle qui vous donnerait un miroir mais la distribution et le niveau de microfacet le ferait apparaître diffuse a la place.
Vous pouvez constater cet effet en jouant avec le glossiness de certains de ces materials. Un gloss très large ressemblera à un objet rugueux et diffuse. En réalité, cela est plus intuitif que les trucages des materials précédent.
J'ai inclue une image de Maya 2011 SP1 des Built In BSDF/BRDF Materials. La scène est illuminée via une Built-in IBL (j'en parlerai plus tard) et l'EXR Grace Cathedral.
Lambert > Phong > Ashikhmin > Mirror > Architectural BSDF
Je n'ai pas présenté le BSDF Architectural Comp car il génère beaucoup de NaN pour l'instant (Il n'est pas supporté par Maya au même titre que les autres donc soyez prudent quand vous l'utiliser). EDIT: Un Hotfixes récent devrait atténuer les problèmes de transparence avec ce shader (2012 Hotfix 2 et plus je suppose).
Limitations connues:
- Ces shaders ne supportent pas le layering dans cette version.
- Si vous souhaitez appliquer du bump dessus, vous devez utiliser la vieille méthode DGS (mib_bump_passthrough).
- Ces shaders sont des fois instables et génèrent des valeurs NaN. Évitez ça en conservant un shading graph simple et en utilisant builtin_bsdf_architectural_comp avec parcimonie, voir pas du tout.
Pourquoi utiliser l'IBL
Alors, pourquoi utiliser l'IBL?
Le Built-In IBL utilise une sorte d'importance sampling. Les zones très éclairées contribuent généralement plus aux valeurs du pixel final que les zones sombres. Le Built-In IBL peut créer une structure d'acceleration qui permet d'envoyer plus de samples dans ces zones.
Les BSDF/BRDF materials prennent également l'importance de leur environnement en compte. Couplé à d'autres méthodes tel que le Built-In IBL ou les Irradiance Particles, vous pouvez obtenir un résultat juste plus rapidement avec (presque) pas de tweaks.
J'ai attaché une image avec les différences entre le mia_material_x et le bsdf_mirror rendu en même temps.
Notez que le BSDF material rend correctement l'éclairage et les propriétés de reflection alors que le mia_material lutte pour y arriver.
Également, les BSDF/BRDF materials répondent de façon cohérente et prévisible à la lumière, quel que soit la scène. Donc un asset créé via ces materials peut vraisemblablement être utilisé sans changement suivant les différents environnements et restera “correct”.
Les materials Non-BSDF “burneront” sous un Built-In IBL (Notez le glare sur le mia_material). Je dois généralement diviser l'intensité par pi pour créer un éclairage correct sur les “regular materials”. De plus, le paramètre de Quality à 0.3 est généralement suffisant pour moi. Ces images sont rendus avec le Progressive Renderer.
setAttr -type "string" miDefaultOptions.stringOptions[28].name "environment lighting mode";
setAttr -type "string" miDefaultOptions.stringOptions[28].type "string";
setAttr -type "string" miDefaultOptions.stringOptions[28].value "automatic";
setAttr -type "string" miDefaultOptions.stringOptions[29].name "environment lighting quality";
setAttr -type "string" miDefaultOptions.stringOptions[29].type "float";
setAttr -type "string" miDefaultOptions.stringOptions[29].value "0.5";
setAttr -type "string" miDefaultOptions.stringOptions[30].name "environment lighting scale";
setAttr -type "string" miDefaultOptions.stringOptions[30].type "scalar";
setAttr -type "string" miDefaultOptions.stringOptions[30].value "1.0";
Plus d'infos sur le Built-IN IBL ici: Built In IBL 3.7.50
Dernière mise à jour : ven. 08 mai 2020