From 924f6501743c4e7de95e4c618b7b512f4e8c7884 Mon Sep 17 00:00:00 2001 From: yuanjiajia <1139393632@qq.com> Date: Tue, 28 Mar 2023 08:56:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scene/materials/Disney.php | 42 ++++++++-------- src/scene/materials/Glossy.php | 17 +++++-- src/scene/materials/GlossyCoating.php | 17 +++++-- src/scene/materials/GlossyTranslucent.php | 26 ++++++---- src/scene/materials/MaterialsBase.php | 60 ++++++++++++++++------- 5 files changed, 103 insertions(+), 59 deletions(-) diff --git a/src/scene/materials/Disney.php b/src/scene/materials/Disney.php index a0ba2ef..6c19b9e 100644 --- a/src/scene/materials/Disney.php +++ b/src/scene/materials/Disney.php @@ -9,75 +9,75 @@ class Disney extends MaterialsBase { /** - * @var string 漫反射颜色,一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名 + * @var string 基础颜色,一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名 */ public $basecolor = "0.7 0.7 0.7"; - /** - * @var float 次表面参数,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 次表面参数,控制光线 从物体表面 射入 物体内部 时的 衰减速率,一个0-1的小数,或是 + * 一个textures(贴图数组)中的某个键名 */ public $subsurface = 0; - /** * @var float 金属度,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $metallic = 0; - /** - * @var float 高光反射强度,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 用于控制非金属材质的的反射强度,当材质越接近金属特性,高光反射强度控制力越弱, + * 这里是一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $specular = 0.5; - /** - * @var float 高光染色,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 高光染色,控制非金属材质的反射颜色 趋近于 金属反射特性 的强度 ,一个0-1的小数,或是一个 + * textures(贴图数组)中的某个键名 */ public $speculartint = 0; - /** * @var float 粗糙度,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $roughness = 0.2; - /** * @var float 各向异性反射,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $anisotropic = 0; + /** - * @var float 光泽反射强度,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 一些特殊材质(如丝绸,缎子等丝织物)的反射具有特殊的形状,此参数用于模拟此类材质的反射效果。 + * 当材质越接近金属特性,高光反射强度控制力越弱,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $sheen = 0; - /** - * @var float 光泽反射染色,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float sheen 染色 */ public $sheentint = 0; + /** - * @var float 清漆涂层,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 透明涂层(透明车漆),由于BRDF(双向反射分存函数)不足以表达透明车漆这种效果,所以采用这个参 + * 数控制整个 材质趋近于 汽车透明漆特性 的强度。 一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $clearcoat = 0; - /** - * @var float 透明清漆涂层光泽,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 透明车漆涂层光泽度,一个0-1的小数,或是一个textures(贴图数组)中的某个键名 */ public $clearcoatgloss = 1; + /** - * @var float 薄膜数量,一个0-1的小数,1表示一层,最多一层,或是一个textures(贴图数组)中的某个键名(默认:1) + * @var float 镀膜数量,一个0-1的小数,1表示一层,最多一层,或是一个textures(贴图数组)中的某个键名(默认:1) */ public $filmamount; - /** - * @var float 薄膜厚度,一个大于等于0的小数,或是一个textures(贴图数组)中的某个键名(默认:300) + * @var float 镀膜厚度,一个大于等于0的小数,或是一个textures(贴图数组)中的某个键名(默认:300) */ public $filmthickness; - /** - * @var float 薄膜菲列尔反射率,一个0-1的小数,或是一个textures(贴图数组)中的某个键名,(默认:1.5) + * @var float 薄膜菲列尔反射率,(0表示镀膜为非金属特性的薄膜,大于0或小于等于1,表示镀膜为接近或完全为金属特性的薄膜), + * 一个0-1的小数,或是一个textures(贴图数组)中的某个键名,(默认:1.5) */ public $filmior; + /** * @param array $config 接收一个数组,可以初始化当前实例化对象的各种属性 */ diff --git a/src/scene/materials/Glossy.php b/src/scene/materials/Glossy.php index 772ee6f..cd1189f 100644 --- a/src/scene/materials/Glossy.php +++ b/src/scene/materials/Glossy.php @@ -13,17 +13,23 @@ class Glossy extends MaterialsBase public $kd = "0.7 0.7 0.7"; /** - * @var string 高光反射颜色,如果设置使用了 IOR 参数,此出只能固定为"1 1 1",否则是一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名; + * @var string 高光反射颜色,如果设置使用了 IOR 参数,此出只能固定为"1 1 1",否则是一个小数 + * 形式的RGB色值,或是一个textures(贴图数组)中的某个键名; */ public $ks = "0.05 0.05 0.05"; /** - * @var string 吸收颜色,一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名 + * @var string 吸收颜色,穿透物体表面进入内部的颜色,用于模拟次表面材质,一个小数形式的RGB色值, + * 或是一个textures(贴图数组)中的某个键名 */ public $ka = "0 0 0"; /** - * @var float 吸收颜色深度,一个大于等于0的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 吸收颜色深度,由于进入物体内部的光线,在一些次表面物体中会被内部散射,此参数控制 穿 + * 透物体表面进入内部的颜色 所能到达的深度。如果此参数为0,意味着不允许任何颜色穿透表面,此时看到 + * 物体的颜色与漫反色给的颜色相同,当这个参数的值越大,那么进入物体内部的颜色被散射回到人眼的颜色 + * 就越少,此时看到的物体颜色将是漫反射减去没有被散射回人眼的颜色的差值。一个大于等于0的小数,或是 + * 一个textures(贴图数组)中的某个键名 */ public $d = 0; @@ -38,8 +44,9 @@ class Glossy extends MaterialsBase public $vroughness = 0.05; /** - * @var float 菲列尔反射率,如果设置为1-2的一个小数或一个textures(贴图数组)中的某个键名,表示使用这个数值的 IOR 参数, - * 如果设置为"0 0 0",表示不使用 IOR 参数 + * @var float 菲列尔反射率,用真实的物理效应模拟高光反射颜色,如果设置为1-2的一个小数或一个 + * textures(贴图数组)中的某个键名,表示使用这个数值的 IOR 参数,如果设置为"0 0 0",表示 + * 不使用 IOR 参数 */ public $index = "0 0 0"; diff --git a/src/scene/materials/GlossyCoating.php b/src/scene/materials/GlossyCoating.php index de1976f..bab9054 100644 --- a/src/scene/materials/GlossyCoating.php +++ b/src/scene/materials/GlossyCoating.php @@ -13,17 +13,23 @@ class GlossyCoating extends MaterialsBase public $base; /** - * @var string 高光反射颜色,如果设置使用了 IOR 参数,此出只能固定为"1 1 1",否则是一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名; + * @var string 高光反射颜色,如果设置使用了 IOR 参数,此出只能固定为"1 1 1",否则是一个小数 + * 形式的RGB色值,或是一个textures(贴图数组)中的某个键名; */ public $ks = "0.05 0.05 0.05"; /** - * @var string 吸收颜色,一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名 + * @var string 吸收颜色,穿透物体表面进入内部的颜色,用于模拟次表面材质,一个小数形式的RGB色值, + * 或是一个textures(贴图数组)中的某个键名 */ public $ka = "0 0 0"; /** - * @var float 吸收颜色深度,一个大于等于0的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 吸收颜色深度,由于进入物体内部的光线,在一些次表面物体中会被内部散射,此参数控制 穿 + * 透物体表面进入内部的颜色 所能到达的深度。如果此参数为0,意味着不允许任何颜色穿透表面,此时看到 + * 物体的颜色与漫反色给的颜色相同,当这个参数的值越大,那么进入物体内部的颜色被散射回到人眼的颜色 + * 就越少,此时看到的物体颜色将是漫反射减去没有被散射回人眼的颜色的差值。一个大于等于0的小数,或是 + * 一个textures(贴图数组)中的某个键名 */ public $d = 0; @@ -38,8 +44,9 @@ class GlossyCoating extends MaterialsBase public $vroughness = 0.05; /** - * @var float 菲列尔反射率,如果设置为1-2的一个小数或一个textures(贴图数组)中的某个键名,表示使用这个数值的 IOR 参数, - * 如果设置为"0 0 0",表示不使用 IOR 参数 + * @var float 菲列尔反射率,用真实的物理效应模拟高光反射颜色,如果设置为1-2的一个小数或一个 + * textures(贴图数组)中的某个键名,表示使用这个数值的 IOR 参数,如果设置为"0 0 0",表示 + * 不使用 IOR 参数 */ public $index = "0 0 0"; diff --git a/src/scene/materials/GlossyTranslucent.php b/src/scene/materials/GlossyTranslucent.php index 55e5108..0f3f98e 100644 --- a/src/scene/materials/GlossyTranslucent.php +++ b/src/scene/materials/GlossyTranslucent.php @@ -13,22 +13,29 @@ class GlossyTranslucent extends MaterialsBase public $kd = "0.7 0.7 0.7"; /** - * @var string 透射颜色,一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名 + * @var string 透射颜色,用于模拟半透明材质一个小数形式的RGB色值,或是一个textures(贴图数组) + * 中的某个键名 */ - public $kt = "0.7 0.7 0.7"; + public $kt = "0.7 0.7 0.7"; /** - * @var string 高光反射颜色,如果设置使用了 IOR 参数,此出只能固定为"1 1 1",否则是一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名; + * @var string 高光反射颜色,如果设置使用了 IOR 参数,此出只能固定为"1 1 1",否则是一个小数 + * 形式的RGB色值,或是一个textures(贴图数组)中的某个键名; */ - public $ks = "0.05 0.05 0.05"; + public $ks = "0.05 0.05 0.05"; /** - * @var string 吸收颜色,一个小数形式的RGB色值,或是一个textures(贴图数组)中的某个键名 + * @var string 吸收颜色,穿透物体表面进入内部的颜色,用于模拟次表面材质,一个小数形式的RGB色值, + * 或是一个textures(贴图数组)中的某个键名 */ - public $ka = "0 0 0"; + public $ka = "0 0 0"; /** - * @var float 吸收颜色深度,一个大于等于0的小数,或是一个textures(贴图数组)中的某个键名 + * @var float 吸收颜色深度,由于进入物体内部的光线,在一些次表面物体中会被内部散射,此参数控制 穿 + * 透物体表面进入内部的颜色 所能到达的深度。如果此参数为0,意味着不允许任何颜色穿透表面,此时看到 + * 物体的颜色与漫反色给的颜色相同,当这个参数的值越大,那么进入物体内部的颜色被散射回到人眼的颜色 + * 就越少,此时看到的物体颜色将是漫反射减去没有被散射回人眼的颜色的差值。一个大于等于0的小数,或是 + * 一个textures(贴图数组)中的某个键名 */ public $d = 0; @@ -43,8 +50,9 @@ class GlossyTranslucent extends MaterialsBase public $vroughness = 0.05; /** - * @var float 菲列尔反射率,如果设置为1-2的一个小数或一个textures(贴图数组)中的某个键名,表示使用这个数值的 IOR 参数, - * 如果设置为"0 0 0",表示不使用 IOR 参数 + * @var float 菲列尔反射率,用真实的物理效应模拟高光反射颜色,如果设置为1-2的一个小数或一个 + * textures(贴图数组)中的某个键名,表示使用这个数值的 IOR 参数,如果设置为"0 0 0",表示 + * 不使用 IOR 参数 */ public $index = "0 0 0"; diff --git a/src/scene/materials/MaterialsBase.php b/src/scene/materials/MaterialsBase.php index 2a6725a..bd011e8 100644 --- a/src/scene/materials/MaterialsBase.php +++ b/src/scene/materials/MaterialsBase.php @@ -13,30 +13,52 @@ class MaterialsBase extends BaseCfg /** * 材质类型 */ - const TYPE_DISNEY = 'disney'; //Disney材质,这是一种金属度流程的材质,但它将漫反射、高光反射、光泽反射、吸收的基本属性进行分离控制,并加入次表面、涂层、薄膜的效果控制, + const TYPE_DISNEY = 'disney'; //Disney材质,这是一种金属度流程的材质,并加入次表面、透明车漆、镀膜的物殊效果控制, //是满足大多数材质调节的一种通用材质。 - const TYPE_MIX = 'mix'; //材质混合 - const TYPE_TWOSIDED = 'twosided'; //双面材质 - const TYPE_MATTE = 'matte'; //磨砂材质,高光光泽度流程 - const TYPE_ROUGHMATTE = 'roughmatte'; //粗糙的磨砂材质,高光光泽度流程 - const TYPE_MATTETRANSLUCENT = 'mattetranslucent'; //半透明的磨砂材质,高光光泽度流程 - const TYPE_GLOSSY = 'glossy2'; //Glossy材质,这是一个高光光泽度流程的材质,但它将漫反射、高光反射、光泽反射、吸收的基本属性进行分离控制,是满足大多数以 高光光泽度流程 调 - //节材质的一种通用材质。 - const TYPE_GLOSSYCOATING = 'glossycoating'; //GlossyCoating材质,这是一个高光光泽度流程的材质,但它将漫反射、高光反射、光泽反射、吸收的基本属性进行分离控制,是满足大多数以 高光光泽 - //度流程 调节材质的一种通用材质。使用此类材质不能设置不透明度 - const TYPE_GLOSSYTRANSLUCENT = 'glossytranslucent'; //GlossyTranslucent材质,这是一个高光光泽度流程的半透明材质,但它将漫反射、高光反射、光泽反射、吸收的基本属性进行分离控制,是满足大多数以 + + const TYPE_METAL = 'metal2'; //金属度流程的金属材质 + + const TYPE_MIRROR = 'mirror'; //镜面材质,金属度 + + + + const TYPE_GLOSSY = 'glossy2'; //Glossy材质,这是一个高光光泽度流程的材质,是满足大多数以 高光光泽度流程 调节材质的 + //一种通用材质。 + + const TYPE_GLOSSYCOATING = 'glossycoating'; //GlossyCoating材质,这是一个高光光泽度流程的材质,是满足大多数以 高光光泽度流程 调 + //节材质的一种通用材质。使用此类材质不能设置不透明度 + + const TYPE_GLOSSYTRANSLUCENT = 'glossytranslucent'; //GlossyTranslucent材质,这是一个高光光泽度流程的半透明材质,是满足大多数以 //高光光泽度流程 调节材质的一种通用材质。使用此类材质不能设置不透明度 - const TYPE_GLASS = 'glass'; //普通的透明材质类型,高光光泽度流程 - const TYPE_ARCHGLASS = 'archglass'; //一种没色散属性的薄的透明材质类型,高光光泽度流程,使用这种类型的材质,色散参必须要被禁用。用于薄薄的玻璃,折射不重要的地方(在传输过程中跳 + + + const TYPE_GLASS = 'glass'; //普通的透明材质类型 + + const TYPE_ARCHGLASS = 'archglass'; //一种没色散属性的薄的透明材质类型,使用这种类型的材质,色散参必须要被禁用。用于薄薄的玻璃,折射不重要的地方(在传输过程中跳 //过折射,传播alpha和阴影光线。如果不使用此选项,还可以将输出节点中的阴影颜色设置为白色,从而实现相同的效果,同时保持相机光线的折射,如果玻 //璃板的边缘可见,效果会更好。) - const TYPE_ROUGHGLASS = 'roughglass'; //粗糙玻离材质类型,高光光泽度流程 + + const TYPE_ROUGHGLASS = 'roughglass'; //粗糙玻离材质类型 + + + const TYPE_MATTE = 'matte'; //磨砂材质 + + const TYPE_ROUGHMATTE = 'roughmatte'; //粗糙的磨砂材质 + + const TYPE_MATTETRANSLUCENT = 'mattetranslucent'; //半透明的磨砂材质 + + + const TYPE_CARPAINT = 'carpaint'; //车漆材质,使用此类材质不能设置不透明度 + + const TYPE_CLOTH = 'cloth'; //布料材质 + + const TYPE_VELVET = 'velvet'; //丝绒材质 + const TYPE_NULL = 'null'; //空的材质 - const TYPE_METAL = 'metal2'; //金属度流程的金属材质 - const TYPE_MIRROR = 'mirror'; //镜面材质,金属度 - const TYPE_CARPAINT = 'carpaint'; //车漆材质,高光光泽度流程,使用此类材质不能设置不透明度 - const TYPE_CLOTH = 'cloth'; //布料材质,高光光泽度流程 - const TYPE_VELVET = 'velvet'; //丝绒材质,,高光光泽度流程 + + const TYPE_MIX = 'mix'; //材质混合 + + const TYPE_TWOSIDED = 'twosided'; //双面材质 /** * @var string 材质类型