From 2120ba0b6fb3529f813baedbfdcec871eb22641d Mon Sep 17 00:00:00 2001 From: yuanjiajia <1139393632@qq.com> Date: Wed, 7 Jun 2023 15:01:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B2=E6=9F=93=E6=B5=8B=E5=BC=8F=20?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=20=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 | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/utils/MatHelper.php b/src/utils/MatHelper.php index 746a137..c6fae71 100644 --- a/src/utils/MatHelper.php +++ b/src/utils/MatHelper.php @@ -8,6 +8,7 @@ use Blobt\Luxcore\scene\texture\procedural\ImageMap; use Blobt\Luxcore\scene\texture\transform\NormalMap; use GuzzleHttp\Client; use GuzzleHttp\RequestOptions; +use Imagick; class MatHelper{ @@ -73,15 +74,23 @@ class MatHelper{ $textureHandle = fopen($textureSavaPath, "w"); (new Client())->get($textureUrl, [RequestOptions::SINK => $textureHandle]); - $metallicTexture = new ImageMap( - ['file' => $textureSavaPath] + $metalnessTextureSavaPath = $downloadDir.'metalness_'.basename($textureUrl); + $metalnessTexture = new Imagick($textureSavaPath); + $metalnessTexture->separateImageChannel(Imagick::CHANNEL_BLUE); + $metalnessTexture->writeImage($metalnessTextureSavaPath); + $metalnessTexture = new ImageMap( + ['file' => $metalnessTextureSavaPath] ); - $metallicTexture->mapping = $mapping; - $scene->registerTexture($metallicTexture); - $material->setMetallic($metallicTexture); - + $metalnessTexture->mapping = $mapping; + $scene->registerTexture($metalnessTexture); + $material->setMetallic($metalnessTexture); + + $roughnessTextureSavaPath = $downloadDir.'roughness'.basename($textureUrl); + $roughnessTexture = new Imagick($textureSavaPath); + $roughnessTexture->separateImageChannel(Imagick::CHANNEL_BLUE); + $roughnessTexture->writeImage($roughnessTextureSavaPath); $roughnessTexture = new ImageMap( - ['file' => $textureSavaPath] + ['file' => $roughnessTextureSavaPath] ); $roughnessTexture->mapping = $mapping; $scene->registerTexture($roughnessTexture); @@ -106,7 +115,7 @@ class MatHelper{ $material->setBumptex($normalTexture); } - //TODO: 更多通道贴图处理,待后续完善 + //TODO: 更多贴图通道处理,待后续完善 return $material; }