From 5222bf944dfa861145100bc3d8e907fae4e16948 Mon Sep 17 00:00:00 2001 From: yuanjiajia <1139393632@qq.com> Date: Mon, 17 Jul 2023 09:31:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B2=E6=9F=93=E6=B5=8B=E5=BC=8F=20?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/MatHelper.php | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/utils/MatHelper.php b/src/utils/MatHelper.php index 7de9dc3..f966094 100644 --- a/src/utils/MatHelper.php +++ b/src/utils/MatHelper.php @@ -34,7 +34,26 @@ class MatHelper{ return $floatColor; } + /** + * 获得 十六进制颜色 同色调 的 最大亮度 + */ + static function colorMaxBrightness($hexColor){ + $r = (hexdec(substr($hexColor, 1, 2))); + $g = (hexdec(substr($hexColor, 3, 2))); + $b = (hexdec(substr($hexColor, 5, 2))); + + $MaxBrightnessPass = 0; + foreach([$r, $g, $b] as $value){ + $MaxBrightnessPass = $value > $MaxBrightnessPass ? $value : $MaxBrightnessPass; + } + $scale = 255 / $MaxBrightnessPass; + $r =dechex(round($r * $scale)); + $g =dechex(round($g * $scale)); + $b =dechex(round($b * $scale)); + + return "#{$r}{$g}{$b}"; + } /** @@ -411,9 +430,17 @@ class MatHelper{ $matOriginal->matParams->translucencyColor )); $material->setBaseColor( self::hex2floatColor( - $matOriginal->matParams->translucencyColor, + self::colorMaxBrightness($matOriginal->matParams->translucencyColor), 1 - $translucencyIntensity )); + // $material->setSpecular( + // self::colorMaxBrightness($matOriginal->matParams->translucencyColor), + // 1 - $translucencyIntensity + // ); + // $material->setSpecular_BF( + // self::colorMaxBrightness($matOriginal->matParams->translucencyColor), + // 1 - $translucencyIntensity + // ); $material->setSpecular("0.04 0.04 0.04"); $material->setSpecular_BF("0.04 0.04 0.04"); $material->setUroughness($matOriginal->matParams->roughness ** 2.2);