バージョン 3.7.1.23
2008 年 6 月 26 日
自動車の塗装関連のシェーダは、ペイント ライブラリに含まれています。シェーダとフェノメナの宣言は、ファイル paint.mi
で提供されます。シェーダを使用するには、宣言ファイルをインクルードし、ライブラリをリンクする必要があります。
link "paint.so" $include "paint.mi"
自動車の塗装には固有の特性がいくつかあります。自動車のボディの上には、薄い顔料の層があります。この層は、見る角度や入射光の入射角に応じて、色が変化して見えるという特性があります。
この層には非常に小さな金属片(フレーク)が浮いています。金属片は光を反射し、晴れた日にはキラキラ輝いて見えます。これは、個々の金属片が太陽光を直接反射するためです。
この層の上にはクリア コート層があります。この層の反射と光沢は、クリア コート層の性質や、ワックス コーティングが施されているかどうかに応じて異なります。この層は特にフレネル効果が顕著に現れ、浅い視射角から見たときほど反射が強くなります。
mi_car_paint_phen または mi_car_paint_phen_x は、マテリアルのサーフェス シェーダとして適用する必要があります。mi_car_paint_phen_x 変数は、mi_car_paint_phen 変数と同じ計算を実行しますが、最終的なカラーに合成する前に個別のチャンネルとして個々のコンポーネントを返します。このフェノメナは以下をサポートします。
フェノメナの宣言は以下のとおりです。
declare phenomenon "mi_car_paint_phen" ( color "ambient", color "base_color", color "edge_color", scalar "edge_color_bias", color "lit_color", scalar "lit_color_bias", scalar "diffuse_weight", scalar "diffuse_bias", color "flake_color", scalar "flake_weight", scalar "flake_reflect", scalar "flake_exp", scalar "flake_density", scalar "flake_decay", scalar "flake_strength", scalar "flake_scale", color "spec", scalar "spec_weight", scalar "spec_exp", color "spec_sec", scalar "spec_sec_weight", scalar "spec_sec_exp", boolean "spec_glazing", color "reflection_color", scalar "edge_factor", scalar "reflection_edge_weight", scalar "reflection_base_weight", integer "samples", scalar "glossy_spread", scalar "max_distance", boolean "single_env_sample", color "dirt_color", scalar "dirt_weight", scalar "irradiance_weight", scalar "global_weight", integer "mode", array light "lights" )
declare phenomenon struct { color "result", # main output color "ambient_result", color "ambient_raw", color "ambient_level", color "diffuse_result", color "diffuse_raw", color "diffuse_level", color "indirect_result", color "indirect_raw", color "indirect_level", color "spec1_result", color "spec1_raw", color "spec1_level", color "spec2_result", color "spec2_raw", color "spec2_level", color "flake_result", color "flake_raw", color "flake_level", color "flake_refl_result", color "flake_refl_raw", color "flake_refl_level", vector "flake_normal", color "dirt_result", color "dirt_raw", color "dirt_level", color "reflection_result", color "reflection_raw", color "reflection_level" } "mi_car_paint_phen_x" ( color "ambient", color "base_color", color "edge_color", scalar "edge_color_bias", color "lit_color", scalar "lit_color_bias", scalar "diffuse_weight", scalar "diffuse_bias", color "flake_color", scalar "flake_weight", scalar "flake_reflect", scalar "flake_exp", scalar "flake_density", scalar "flake_decay", scalar "flake_strength", scalar "flake_scale", color "spec", scalar "spec_weight", scalar "spec_exp", color "spec_sec", scalar "spec_sec_weight", scalar "spec_sec_exp", boolean "spec_glazing", color "reflection_color", scalar "edge_factor", scalar "reflection_edge_weight", scalar "reflection_base_weight", integer "samples", scalar "glossy_spread", scalar "max_distance", boolean "single_env_sample", color "dirt_color", scalar "dirt_weight", scalar "irradiance_weight", scalar "global_weight", integer "mode", array light "lights" )
クリア コートは一般的に、浅い角度から見たとき(エッジ)ほど反射が強くなります。オプションで、クリア コート層に光沢を与えることができます。
光沢反射は、基本シェーダ mib_glossy_reflections を使用して作成されるため、パラメータ max_distance(反射レイの到達範囲を制限します)と single_env_sample(環境マップのルックアップを最適化します)はシェーダ mib_glossy_reflection のエクスポーズされたパラメータです。パラメータのサブセットのみがエクスポーズされ、さらに必要な場合は、カスタム シェーディング グラフを作成するか、mi_car_paint_phen フェノメナの独自のバリエーションを作成します。
シンプルな汚れの均等拡散層で、その下にある顔料層とクリア コート層を覆います。
このシェーダは、メタリック ペイントを表現するために使用します。ただし、顔料とフレーク(金属片)には対応しますが、非常に重要なクリア コートの反射には対応していません。完全な効果を得るには、反射シェーダと組み合わせて使用する必要があります(たとえば、mib_glossy_reflection の base_material パラメータに接続します)。また、フレークを再現するには、mi_bump_flakes のようなバンプ シェーダも必要です。
また、汚れの層をサポートする mi_car_paint_phen などのフェノメナも使用できるので便利です。フェノメナのドキュメントには、パラメータに関するもう少し詳しい説明がサンプル イメージと共に記載されています。
このシェーダは以下をサポートします。
このシェーダには次の 2 つのバリエーションがあります。mi_metallic_paint は単一の最終的な合成カラーを返し、mi_metallic_paint_x は合成前の個別のコンポーネントの個別のチャンネルを返します。
declare shader color "mi_metallic_paint" ( color "ambient" default 0 0 0 1, color "base_color" default 0.8 0.1 0.0 1, color "edge_color" default 0.0 0.0 0.0, scalar "edge_color_bias" default 1.0, color "lit_color" default 0.6 0.0 0.2, scalar "lit_color_bias" default 8.0, scalar "diffuse_weight" default 1.0, scalar "diffuse_bias" default 1.5, scalar "irradiance_weight" default 1.0, color "spec" default 1 1 1 1, scalar "spec_weight" default 0.2, scalar "spec_exp" default 60.0, color "spec_sec" default 1 1 1 1, scalar "spec_sec_weight" default 0.3, scalar "spec_sec_exp" default 25.0, boolean "spec_glazing" default on, color "flake_color" default 1.0 1.0 1.0 1, scalar "flake_weight" default 1.0, scalar "flake_reflect" default 0.0, scalar "flake_exp" default 45.0, scalar "flake_decay" default 0.0, shader "flake_bump", scalar "global_weight" default 1.0, integer "mode" default 3, array light "lights" ) version 2 apply material end declare
declare shader struct { color "result", color "ambient_result", color "ambient_raw", color "ambient_level", color "diffuse_result", color "diffuse_raw", color "diffuse_level", color "indirect_result", color "indirect_raw", color "indirect_level", color "spec1_result", color "spec1_raw", color "spec1_level", color "spec2_result", color "spec2_raw", color "spec2_level", color "flake_result", color "flake_raw", color "flake_level", color "flake_refl_result", color "flake_refl_raw", color "flake_refl_level", vector "flake_normal" } "mi_metallic_paint_x" ( color "ambient" default 0 0 0 1, color "base_color" default 0.8 0.1 0.0 1, color "edge_color" default 0.0 0.0 0.0, scalar "edge_color_bias" default 1.0, color "lit_color" default 0.6 0.0 0.2, scalar "lit_color_bias" default 8.0, scalar "diffuse_weight" default 1.0, scalar "diffuse_bias" default 1.5, scalar "irradiance_weight" default 1.0, color "spec" default 1 1 1 1, scalar "spec_weight" default 0.2, scalar "spec_exp" default 60.0, color "spec_sec" default 1 1 1 1, scalar "spec_sec_weight" default 0.3, scalar "spec_sec_exp" default 25.0, boolean "spec_glazing" default on, color "flake_color" default 1.0 1.0 1.0 1, scalar "flake_weight" default 1.0, scalar "flake_reflect" default 0.0, scalar "flake_exp" default 45.0, scalar "flake_decay" default 0.0, shader "flake_bump", scalar "global_weight" default 1.0, integer "mode" default 3, array light "lights" ) version 2 apply material end declare
このシェーダは、わずかに異なる方向を向いた個々の小さなフレークの外観を表すバンプ マップを作成するために設計されています。このシェーダは、手続き的に生成されたフレーク テクスチャに基づいて現在の法線ベクトルを少し変更します。また、そのフレークの "強度" を示すカラーも返します。
declare shader "mi_bump_flakes" ( scalar "flake_density" default 0.5, scalar "flake_strength" default 0.8, scalar "flake_scale" default 0.2, ) version 1 apply texture end declare
Copyright (©) 1986-2008 by mental images GmbH