From 4cf6c79d4802b4bd90d9b78d941eaec923dc7e79 Mon Sep 17 00:00:00 2001 From: yuanjiajia <1139393632@qq.com> Date: Sat, 21 May 2022 09:57:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8D=E8=83=BD=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E5=B1=9E=E6=80=A7=E5=80=BC=E4=B8=BA0=E6=88=96flase?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/printScene.php | 843 ++++++++++++++++--------------- src/scene/BaseCfg.php | 10 - src/scene/Scene.php | 4 +- src/scene/camera/Perspective.php | 2 +- src/utils/StringHelper.php | 21 +- 5 files changed, 436 insertions(+), 444 deletions(-) diff --git a/examples/printScene.php b/examples/printScene.php index 23f885d..58e5a93 100644 --- a/examples/printScene.php +++ b/examples/printScene.php @@ -13,431 +13,434 @@ const CLOSE = false; $scene = new Scene(); // 创建一个场景 -// 一、创建光场: -// 1、创建 面片光001 -$obj = new objects\Objects(); // 创建 面片光001 的实体 -$obj->ply = './ply/面光.001.ply'; // 指定 面片光001 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光001 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光001 注册到 scene 中 - -// 2、创建 面片光002 -$obj = new objects\Objects(); // 创建 面片光002 的实体 -$obj->ply = './ply/面光.002.ply'; // 指定 面片光002 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('0 0 0'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "30 30 30", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光002 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光002 注册到 scene 中 - -// 3、创建 面片光003 -$obj = new objects\Objects(); // 创建 面片光003 的实体 -$obj->ply = './ply/面光.003.ply'; // 指定 面片光003 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "50 50 50", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光003 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光003 注册到 scene 中 - -// 4、创建 面片光004 -$obj = new objects\Objects(); // 创建 面片光004 的实体 -$obj->ply = './ply/面光.004.ply'; // 指定 面片光004 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('0 0 0'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "4 4 4", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光004 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光004 注册到 scene 中 - -// 5、创建 面片光005 -$obj = new objects\Objects(); // 创建 面片光005 的实体 -$obj->ply = './ply/面光.005.ply'; // 指定 面片光005 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "10 10 10", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光005 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光005 注册到 scene 中 - -// 6、创建 面片光006 -$obj = new objects\Objects(); // 创建 面片光006 的实体 -$obj->ply = './ply/面光.006.ply'; // 指定 面片光006 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "8 8 8", // 设置发光增益 - 'mapfile' => "SD-037.exr", // 加载一个光域文件 - 'gamma' => 1, // 设置校正光域文件的gamma值 - 'storage' => "float" // 声明光域文件表示色值的数据类型 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光006 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光006 注册到 scene 中 - -// 7、创建 面片光006 -$obj = new objects\Objects(); // 创建 面片光 的实体 -$obj->ply = './ply/面光.ply'; // 指定 面片光 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "3.3 3.3 3.3", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 面片光 指定一个自发光材质 -$scene->registerObjects($obj); // 将 面片光 注册到 scene 中 - -// 8、创建环境光 -$light = new lights\env\HdrImage( // new 一个环境光对象 - [ - 'gain' => "1.25 1.25 1.25", // 设置颜色增益 - 'transformation' => "0.1736481 -0.9848078 0 0 -0.9848078 -0.1736481 0 0 0 0 1 0 0 0 0 1", //设置对象变换 - 'file' => "env.png", // 加载一个全景图像文件 - 'gamma' => 1, // 设置一个校正全景图像文件的 gamma 值 - 'storage' => "byte" // 声明这个图像文件表示色值的数据类型 - ] -); -$scene->registerLight($light); // 将环境光注册到 scene 中 - - - - - - - - -// 二、添加要渲染的模型 -// 1、创建地面模型 -$obj = new objects\Objects(); // 创建 地面 的实体 -$obj->ply = './ply/地面.ply'; // 指定 地面 实体网格数据 - -$mapping = new texture\mapping\Mapping(); // 创建一个铺贴对象 -$mapping->useUVMapping2d( // 使用"uvmapping2d"类型的铺贴对象 - 0, // uv通道 - "0", // 旋转角度 - "0.4 -0.966", // 缩放比例 - "0.3 0.983" // 偏移量 -); - -$texture = new texture\procedural\ImageMap( // 创建一个纹理 - [ - 'file' => "方形阴影遮照 (3).png", // 加载一个图像文件 - 'gain' => 0.6, // 设置颜色增益 - 'gamma' => 1, // 设置校正图像文件的gamma值 - ] -); -$texture->mapping = $mapping; // 将铺贴对象赋值给纹理的“mapping”属性 -$scene->registerTexture($texture); // 将纹理注册到 scene 中 - -$materials = new materials\Disney( // 创建一个材质 - [ - 'shadowcatcherEnable' => OPEN, // 设置为阴影捕捉器 - 'photongiEnable' => CLOSE // 关闭此材质的全局光缓存 - ] -); -$materials->setBaseColor('1 1 1'); // 设置材质的漫反射 -$materials->setTransparencyFront($texture); // 将纹理设置为材质的正面透明度 -$materials->setTransparencyBack($texture); // 将纹理设置为材质的背面透明度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 地面模型 的材质属性 -$scene->registerObjects($obj); // 将 地面模型 注册到 scene 中 - - -// 2、创建 刷毛003 模型 -$obj = new objects\Objects(); // 创建 刷毛003 的实体 -$obj->ply = './ply/刷毛003.ply'; // 指定 刷毛003 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.233238 0.567919 0.654361' ); // 设置材质的漫反射 -$materials->setSpecular('1'); // 设置材质的高光反射强度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 刷毛003 的材质属性 -$scene->registerObjects($obj); // 将 刷毛003 注册到 scene 中 - - -// 3、创建 刷毛002 模型 -$obj = new objects\Objects(); // 创建 刷毛002 的实体 -$obj->ply = './ply/刷毛002.ply'; // 指定 刷毛002 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.0739024 0.0739024 0.0739024' );// 设置材质的漫反射 -$materials->setSpecular('1'); // 设置材质的高光反射强度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 刷毛002 的材质属性 -$scene->registerObjects($obj); // 将 刷毛002 注册到 scene 中 - -// 3、创建 刷毛001 模型 -$obj = new objects\Objects(); // 创建 刷毛001 的实体 -$obj->ply = './ply/刷毛001.ply'; // 指定 刷毛001 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.857449 0.857449 0.857449' ); // 设置材质的漫反射 -$materials->setSpecular('1'); // 设置材质的高光反射强度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 刷毛001 的材质属性 -$scene->registerObjects($obj); // 将 刷毛001 注册到 scene 中 - -// 4、创建 牙刷头 模型 -$obj = new objects\Objects(); // 创建 牙刷头 的实体 -$obj->ply = './ply/牙刷头.ply'; // 指定 牙刷头 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射 -$materials->setSpecular('0.5'); // 设置材质的高光反射强度 -$materials->setRoughness('0.05'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 牙刷头 的材质属性 -$scene->registerObjects($obj); // 将 牙刷头 注册到 scene 中 - -// 5、创建 牙刷头文字 模型 -$obj = new objects\Objects(); // 创建 牙刷头文字 的实体 -$obj->ply = './ply/牙刷头文字.ply'; // 指定 牙刷头文字 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射 -$materials->setSpecular('1'); // 设置材质的高光反射强度 -$materials->setRoughness('0'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 牙刷头文字 的材质属性 -$scene->registerObjects($obj); // 将 牙刷头文字 注册到 scene 中 - - -// 6、创建 金属振动轴 模型 -$obj = new objects\Objects(); // 创建 金属振动轴 的实体 -$obj->ply = './ply/金属振动轴.ply'; // 指定 金属振动轴 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理 -$texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色 -$scene->registerTexture($texture); // 将纹理注册到 scene 中 -$materials = new materials\Metal(); // 创建一个材质 -$materials->setFresnel($texture); // 设置材质的金属度 -$materials->setUroughness('0.15'); // 设置U向粗糙度 -$materials->setVroughness('0.15'); // 设置V向粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 金属振动轴 的材质属性 -$scene->registerObjects($obj); // 将 金属振动轴 注册到 scene 中 - - -// 7、创建 金属按扭底坐 模型 -$obj = new objects\Objects(); // 创建 金属按扭底坐 的实体 -$obj->ply = './ply/金属按扭底坐.ply'; // 指定 金属按扭底坐 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理 -$texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色 -$scene->registerTexture($texture); // 将纹理注册到 scene 中 -$materials = new materials\Metal(); // 创建一个材质 -$materials->setFresnel($texture); // 设置材质的金属度 -$materials->setUroughness('0.05'); // 设置U向粗糙度 -$materials->setVroughness('0.05'); // 设置V向粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 金属按扭底坐 的材质属性 -$scene->registerObjects($obj); // 将 金属按扭底坐 注册到 scene 中 - - -// 8、创建 刷毛样本金属圆管 模型 -$obj = new objects\Objects(); // 创建 刷毛样本金属圆管 的实体 -$obj->ply = './ply/刷毛样本金属圆管.ply'; // 指定 刷毛样本金属圆管 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$obj->setMaterial($materials); // 将上一个相同的材质设置为 刷毛样本金属圆管 的材质属性 -$scene->registerObjects($obj); // 将 刷毛样本金属圆管 注册到 scene 中 - - -// 9、创建 金属印字 模型 -$obj = new objects\Objects(); // 创建 金属印字 的实体 -$obj->ply = './ply/金属印字.ply'; // 指定 金属印字 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$obj->setMaterial($materials); // 将上一个相同的材质设置为 金属印字 的材质属性 -$scene->registerObjects($obj); // 将 金属印字 注册到 scene 中 - - -// 10、创建 刷毛样本印字 模型 -$obj = new objects\Objects(); // 创建 刷毛样本印字 的实体 -$obj->ply = './ply/刷毛样本印字.ply'; // 指定 刷毛样本印字 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.248287 0.0124709 0.0377595' ); // 设置材质的漫反射 -$materials->setSpecular('0.5'); // 设置材质的高光反射强度 -$materials->setRoughness('0.2'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 刷毛样本印字 的材质属性 -$scene->registerObjects($obj); // 将 刷毛样本印字 注册到 scene 中 - -// 11、创建 刷毛样本001 模型 -$obj = new objects\Objects(); // 创建 刷毛样本001 的实体 -$obj->ply = './ply/刷毛样本001.ply'; // 指定 刷毛样本001 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.0204376 0.29558 0.16471' ); // 设置材质的漫反射 -$materials->setSpecular('0.5'); // 设置材质的高光反射强度 -$materials->setRoughness('0.2'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 刷毛样本001 的材质属性 -$scene->registerObjects($obj); // 将 刷毛样本001 注册到 scene 中 - - -// 12、创建 刷毛样本002 模型 -$obj = new objects\Objects(); // 创建 刷毛样本002 的实体 -$obj->ply = './ply/刷毛样本002.ply'; // 指定 刷毛样本002 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Glass(); // 创建一个材质 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 刷毛样本002 的材质属性 -$scene->registerObjects($obj); // 将 刷毛样本002 注册到 scene 中 - - -// 13、创建 透明塑料壳 模型 -$obj = new objects\Objects(); // 创建 透明塑料壳 的实体 -$obj->ply = './ply/透明塑料壳.ply'; // 指定 透明塑料壳 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$obj->setMaterial($materials); // 将上一个相同的材质设置为 透明塑料壳 的材质属性 -$scene->registerObjects($obj); // 将 透明塑料壳 注册到 scene 中 - - -// 14、创建 圆柱形塑料壳 模型 -$obj = new objects\Objects(); // 创建 圆柱形塑料壳 的实体 -$obj->ply = './ply/圆柱形塑料壳.ply'; // 指定 圆柱形塑料壳 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.291771 0.361307 0.701102' ); // 设置材质的漫反射 -$materials->setSpecular('0.5'); // 设置材质的高光反射强度 -$materials->setRoughness('0.0470588'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 圆柱形塑料壳 的材质属性 -$scene->registerObjects($obj); // 将 圆柱形塑料壳 注册到 scene 中 - - -// 15、创建 塑料垫子 模型 -$obj = new objects\Objects(); // 创建 塑料垫子 的实体 -$obj->ply = './ply/塑料垫子.ply'; // 指定 塑料垫子 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射 -$materials->setSpecular('0.5'); // 设置材质的高光反射强度 -$materials->setRoughness('0.05'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 塑料垫子 的材质属性 -$scene->registerObjects($obj); // 将 塑料垫子 注册到 scene 中 - - -// 16、创建 按扭印字 模型 -$obj = new objects\Objects(); // 创建 按扭印字 的实体 -$obj->ply = './ply/按扭印字.ply'; // 指定 按扭印字 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射 -$materials->setSpecular('1'); // 设置材质的高光反射强度 -$materials->setRoughness('0'); // 设置粗糙度 -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 按扭印字 的材质属性 -$scene->registerObjects($obj); // 将 按扭印字 注册到 scene 中 - - -// 17、创建 散光灯罩 模型 -$obj = new objects\Objects(); // 创建 散光灯罩 的实体 -$obj->ply = './ply/散光灯罩.ply'; // 指定 散光灯罩 实体网格数据 -$obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; - // 设置模型的变换 -$materials = new materials\Disney(); // 创建一个材质 -$materials->setBaseColor( '0.7 0.7 0.7' ); // 设置材质的漫反射 -$materials->setSpecular('0.5'); // 设置材质的高光反射强度 -$materials->setRoughness('1'); // 设置粗糙度 -$materials->setTransparencyFront('0.75'); -$materials->setTransparencyBack('0.75'); -$scene->registerMaterial($materials); // 将材质注册到 scene 中 -$obj->setMaterial($materials); // 设置 散光灯罩 的材质属性 -$scene->registerObjects($obj); // 将 散光灯罩 注册到 scene 中 - - -// 18、创建 蓝色灯光 模型 -$obj = new objects\Objects(); // 创建 蓝色灯光 的实体 -$obj->ply = './ply/蓝色灯光.ply'; // 指定 蓝色灯光 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('0.00604871 0.278894 1'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "5 5 5", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 蓝色灯光 指定一个自发光材质 -$scene->registerObjects($obj); // 将 蓝色灯光 注册到 scene 中 - - -// 19、创建 櫈色灯光 模型 -$obj = new objects\Objects(); // 创建 櫈色灯光 的实体 -$obj->ply = './ply/櫈色灯光.ply'; // 指定 櫈色灯光 实体网格数据 -$materials = new materials\Matte(); // 创建一个材质 -$materials->setBaseColor('0 0 0'); // 设置材质的漫反射 -$materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 -$materials->setEmission('1 0.0722717 0'); // 设置材质为一个自发光材质,并指定发光颜色 -$materials->emissionCfg = new lights\Emission( // 设置发光属性 - [ - 'gain' => "10 10 10", // 设置发光增益 - ] -); -$scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 -$obj->setMaterial($materials); // 为 櫈色灯光 指定一个自发光材质 -$scene->registerObjects($obj); +// // 一、创建光场: +// // 1、创建 面片光001 +// $obj = new objects\Objects(); // 创建 面片光001 的实体 +// $obj->ply = './ply/面光.001.ply'; // 指定 面片光001 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光001 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光001 注册到 scene 中 + +// // 2、创建 面片光002 +// $obj = new objects\Objects(); // 创建 面片光002 的实体 +// $obj->ply = './ply/面光.002.ply'; // 指定 面片光002 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('0 0 0'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "30 30 30", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光002 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光002 注册到 scene 中 + +// // 3、创建 面片光003 +// $obj = new objects\Objects(); // 创建 面片光003 的实体 +// $obj->ply = './ply/面光.003.ply'; // 指定 面片光003 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "50 50 50", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光003 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光003 注册到 scene 中 + +// // 4、创建 面片光004 +// $obj = new objects\Objects(); // 创建 面片光004 的实体 +// $obj->ply = './ply/面光.004.ply'; // 指定 面片光004 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('0 0 0'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "4 4 4", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光004 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光004 注册到 scene 中 + +// // 5、创建 面片光005 +// $obj = new objects\Objects(); // 创建 面片光005 的实体 +// $obj->ply = './ply/面光.005.ply'; // 指定 面片光005 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "10 10 10", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光005 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光005 注册到 scene 中 + +// // 6、创建 面片光006 +// $obj = new objects\Objects(); // 创建 面片光006 的实体 +// $obj->ply = './ply/面光.006.ply'; // 指定 面片光006 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "8 8 8", // 设置发光增益 +// 'mapfile' => "SD-037.exr", // 加载一个光域文件 +// 'gamma' => 1, // 设置校正光域文件的gamma值 +// 'storage' => "float" // 声明光域文件表示色值的数据类型 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光006 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光006 注册到 scene 中 + +// // 7、创建 面片光006 +// $obj = new objects\Objects(); // 创建 面片光 的实体 +// $obj->ply = './ply/面光.ply'; // 指定 面片光 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "3.3 3.3 3.3", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 面片光 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 面片光 注册到 scene 中 + +// // 8、创建环境光 +// $light = new lights\env\HdrImage( // new 一个环境光对象 +// [ +// 'gain' => "1.25 1.25 1.25", // 设置颜色增益 +// 'transformation' => "0.1736481 -0.9848078 0 0 -0.9848078 -0.1736481 0 0 0 0 1 0 0 0 0 1", //设置对象变换 +// 'file' => "env.png", // 加载一个全景图像文件 +// 'gamma' => 1, // 设置一个校正全景图像文件的 gamma 值 +// 'storage' => "byte" // 声明这个图像文件表示色值的数据类型 +// ] +// ); +// $scene->registerLight($light); // 将环境光注册到 scene 中 + + + + + + + + +// // 二、添加要渲染的模型 +// // 1、创建地面模型 +// $obj = new objects\Objects(); // 创建 地面 的实体 +// $obj->ply = './ply/地面.ply'; // 指定 地面 实体网格数据 + +// $mapping = new texture\mapping\Mapping(); // 创建一个铺贴对象 +// $mapping->useUVMapping2d( // 使用"uvmapping2d"类型的铺贴对象 +// 0, // uv通道 +// "0", // 旋转角度 +// "0.4 -0.966", // 缩放比例 +// "0.3 0.983" // 偏移量 +// ); + +// $texture = new texture\procedural\ImageMap( // 创建一个纹理 +// [ +// 'file' => "方形阴影遮照 (3).png", // 加载一个图像文件 +// 'gain' => 0.6, // 设置颜色增益 +// 'gamma' => 1, // 设置校正图像文件的gamma值 +// ] +// ); +// $texture->mapping = $mapping; // 将铺贴对象赋值给纹理的“mapping”属性 +// $scene->registerTexture($texture); // 将纹理注册到 scene 中 + +// $materials = new materials\Disney( // 创建一个材质 +// [ +// 'shadowcatcherEnable' => OPEN, // 设置为阴影捕捉器 +// 'photongiEnable' => CLOSE // 关闭此材质的全局光缓存 +// ] +// ); +// $materials->setBaseColor('1 1 1'); // 设置材质的漫反射 +// $materials->setTransparencyFront($texture); // 将纹理设置为材质的正面透明度 +// $materials->setTransparencyBack($texture); // 将纹理设置为材质的背面透明度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 地面模型 的材质属性 +// $scene->registerObjects($obj); // 将 地面模型 注册到 scene 中 + + +// // 2、创建 刷毛003 模型 +// $obj = new objects\Objects(); // 创建 刷毛003 的实体 +// $obj->ply = './ply/刷毛003.ply'; // 指定 刷毛003 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.233238 0.567919 0.654361' ); // 设置材质的漫反射 +// $materials->setSpecular('1'); // 设置材质的高光反射强度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 刷毛003 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛003 注册到 scene 中 + + +// // 3、创建 刷毛002 模型 +// $obj = new objects\Objects(); // 创建 刷毛002 的实体 +// $obj->ply = './ply/刷毛002.ply'; // 指定 刷毛002 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.0739024 0.0739024 0.0739024' );// 设置材质的漫反射 +// $materials->setSpecular('1'); // 设置材质的高光反射强度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 刷毛002 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛002 注册到 scene 中 + +// // 3、创建 刷毛001 模型 +// $obj = new objects\Objects(); // 创建 刷毛001 的实体 +// $obj->ply = './ply/刷毛001.ply'; // 指定 刷毛001 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.857449 0.857449 0.857449' ); // 设置材质的漫反射 +// $materials->setSpecular('1'); // 设置材质的高光反射强度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 刷毛001 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛001 注册到 scene 中 + +// // 4、创建 牙刷头 模型 +// $obj = new objects\Objects(); // 创建 牙刷头 的实体 +// $obj->ply = './ply/牙刷头.ply'; // 指定 牙刷头 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射 +// $materials->setSpecular('0.5'); // 设置材质的高光反射强度 +// $materials->setRoughness('0.05'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 牙刷头 的材质属性 +// $scene->registerObjects($obj); // 将 牙刷头 注册到 scene 中 + +// // 5、创建 牙刷头文字 模型 +// $obj = new objects\Objects(); // 创建 牙刷头文字 的实体 +// $obj->ply = './ply/牙刷头文字.ply'; // 指定 牙刷头文字 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射 +// $materials->setSpecular('1'); // 设置材质的高光反射强度 +// $materials->setRoughness('0'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 牙刷头文字 的材质属性 +// $scene->registerObjects($obj); // 将 牙刷头文字 注册到 scene 中 + + +// // 6、创建 金属振动轴 模型 +// $obj = new objects\Objects(); // 创建 金属振动轴 的实体 +// $obj->ply = './ply/金属振动轴.ply'; // 指定 金属振动轴 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理 +// $texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色 +// $scene->registerTexture($texture); // 将纹理注册到 scene 中 +// $materials = new materials\Metal(); // 创建一个材质 +// $materials->setFresnel($texture); // 设置材质的金属度 +// $materials->setUroughness('0.15'); // 设置U向粗糙度 +// $materials->setVroughness('0.15'); // 设置V向粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 金属振动轴 的材质属性 +// $scene->registerObjects($obj); // 将 金属振动轴 注册到 scene 中 + + +// // 7、创建 金属按扭底坐 模型 +// $obj = new objects\Objects(); // 创建 金属按扭底坐 的实体 +// $obj->ply = './ply/金属按扭底坐.ply'; // 指定 金属按扭底坐 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理 +// $texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色 +// $scene->registerTexture($texture); // 将纹理注册到 scene 中 +// $materials = new materials\Metal(); // 创建一个材质 +// $materials->setFresnel($texture); // 设置材质的金属度 +// $materials->setUroughness('0.05'); // 设置U向粗糙度 +// $materials->setVroughness('0.05'); // 设置V向粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 金属按扭底坐 的材质属性 +// $scene->registerObjects($obj); // 将 金属按扭底坐 注册到 scene 中 + + +// // 8、创建 刷毛样本金属圆管 模型 +// $obj = new objects\Objects(); // 创建 刷毛样本金属圆管 的实体 +// $obj->ply = './ply/刷毛样本金属圆管.ply'; // 指定 刷毛样本金属圆管 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $obj->setMaterial($materials); // 将上一个相同的材质设置为 刷毛样本金属圆管 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛样本金属圆管 注册到 scene 中 + + +// // 9、创建 金属印字 模型 +// $obj = new objects\Objects(); // 创建 金属印字 的实体 +// $obj->ply = './ply/金属印字.ply'; // 指定 金属印字 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $obj->setMaterial($materials); // 将上一个相同的材质设置为 金属印字 的材质属性 +// $scene->registerObjects($obj); // 将 金属印字 注册到 scene 中 + + +// // 10、创建 刷毛样本印字 模型 +// $obj = new objects\Objects(); // 创建 刷毛样本印字 的实体 +// $obj->ply = './ply/刷毛样本印字.ply'; // 指定 刷毛样本印字 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.248287 0.0124709 0.0377595' ); // 设置材质的漫反射 +// $materials->setSpecular('0.5'); // 设置材质的高光反射强度 +// $materials->setRoughness('0.2'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 刷毛样本印字 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛样本印字 注册到 scene 中 + +// // 11、创建 刷毛样本001 模型 +// $obj = new objects\Objects(); // 创建 刷毛样本001 的实体 +// $obj->ply = './ply/刷毛样本001.ply'; // 指定 刷毛样本001 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.0204376 0.29558 0.16471' ); // 设置材质的漫反射 +// $materials->setSpecular('0.5'); // 设置材质的高光反射强度 +// $materials->setRoughness('0.2'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 刷毛样本001 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛样本001 注册到 scene 中 + + +// // 12、创建 刷毛样本002 模型 +// $obj = new objects\Objects(); // 创建 刷毛样本002 的实体 +// $obj->ply = './ply/刷毛样本002.ply'; // 指定 刷毛样本002 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Glass(); // 创建一个材质 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 刷毛样本002 的材质属性 +// $scene->registerObjects($obj); // 将 刷毛样本002 注册到 scene 中 + + +// // 13、创建 透明塑料壳 模型 +// $obj = new objects\Objects(); // 创建 透明塑料壳 的实体 +// $obj->ply = './ply/透明塑料壳.ply'; // 指定 透明塑料壳 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $obj->setMaterial($materials); // 将上一个相同的材质设置为 透明塑料壳 的材质属性 +// $scene->registerObjects($obj); // 将 透明塑料壳 注册到 scene 中 + + +// // 14、创建 圆柱形塑料壳 模型 +// $obj = new objects\Objects(); // 创建 圆柱形塑料壳 的实体 +// $obj->ply = './ply/圆柱形塑料壳.ply'; // 指定 圆柱形塑料壳 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.291771 0.361307 0.701102' ); // 设置材质的漫反射 +// $materials->setSpecular('0.5'); // 设置材质的高光反射强度 +// $materials->setRoughness('0.0470588'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 圆柱形塑料壳 的材质属性 +// $scene->registerObjects($obj); // 将 圆柱形塑料壳 注册到 scene 中 + + +// // 15、创建 塑料垫子 模型 +// $obj = new objects\Objects(); // 创建 塑料垫子 的实体 +// $obj->ply = './ply/塑料垫子.ply'; // 指定 塑料垫子 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射 +// $materials->setSpecular('0.5'); // 设置材质的高光反射强度 +// $materials->setRoughness('0.05'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 塑料垫子 的材质属性 +// $scene->registerObjects($obj); // 将 塑料垫子 注册到 scene 中 + + +// // 16、创建 按扭印字 模型 +// $obj = new objects\Objects(); // 创建 按扭印字 的实体 +// $obj->ply = './ply/按扭印字.ply'; // 指定 按扭印字 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射 +// $materials->setSpecular('1'); // 设置材质的高光反射强度 +// $materials->setRoughness('0'); // 设置粗糙度 +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 按扭印字 的材质属性 +// $scene->registerObjects($obj); // 将 按扭印字 注册到 scene 中 + + +// // 17、创建 散光灯罩 模型 +// $obj = new objects\Objects(); // 创建 散光灯罩 的实体 +// $obj->ply = './ply/散光灯罩.ply'; // 指定 散光灯罩 实体网格数据 +// $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 0 0 1"; +// // 设置模型的变换 +// $materials = new materials\Disney(); // 创建一个材质 +// $materials->setBaseColor( '0.7 0.7 0.7' ); // 设置材质的漫反射 +// $materials->setSpecular('0.5'); // 设置材质的高光反射强度 +// $materials->setRoughness('1'); // 设置粗糙度 +// $materials->setTransparencyFront('0.75'); +// $materials->setTransparencyBack('0.75'); +// $scene->registerMaterial($materials); // 将材质注册到 scene 中 +// $obj->setMaterial($materials); // 设置 散光灯罩 的材质属性 +// $scene->registerObjects($obj); // 将 散光灯罩 注册到 scene 中 + + +// // 18、创建 蓝色灯光 模型 +// $obj = new objects\Objects(); // 创建 蓝色灯光 的实体 +// $obj->ply = './ply/蓝色灯光.ply'; // 指定 蓝色灯光 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('0.00604871 0.278894 1'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "5 5 5", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 蓝色灯光 指定一个自发光材质 +// $scene->registerObjects($obj); // 将 蓝色灯光 注册到 scene 中 + + +// // 19、创建 櫈色灯光 模型 +// $obj = new objects\Objects(); // 创建 櫈色灯光 的实体 +// $obj->ply = './ply/櫈色灯光.ply'; // 指定 櫈色灯光 实体网格数据 +// $materials = new materials\Matte(); // 创建一个材质 +// $materials->setBaseColor('0 0 0'); // 设置材质的漫反射 +// $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度 +// $materials->setEmission('1 0.0722717 0'); // 设置材质为一个自发光材质,并指定发光颜色 +// $materials->emissionCfg = new lights\Emission( // 设置发光属性 +// [ +// 'gain' => "10 10 10", // 设置发光增益 +// ] +// ); +// $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中 +// $obj->setMaterial($materials); // 为 櫈色灯光 指定一个自发光材质 +// $scene->registerObjects($obj); + // 三、创建相机 $camera = new camera\Perspective(); +// echo $camera; + $scene->registerCamera($camera); @@ -451,7 +454,7 @@ $scene->registerCamera($camera); -echo $scene; + echo $scene; diff --git a/src/scene/BaseCfg.php b/src/scene/BaseCfg.php index 957c20d..1c90b96 100644 --- a/src/scene/BaseCfg.php +++ b/src/scene/BaseCfg.php @@ -50,14 +50,6 @@ class BaseCfg extends Base switch(gettype($value)) { case 'string': - // if( count(explode(" ", $value)) != 3 || in_array(false,array_map('is_numeric',explode(" ", $value))) ) - // { - // $ret .= "{$className}.{$name} = \"{$value}\"\n"; - // } - // else - // { - // $ret .= "{$className}.{$name} = {$value}\n"; - // } $ret .= "{$className}.{$name} = \"{$value}\"\n"; break; @@ -75,8 +67,6 @@ class BaseCfg extends Base break; case 'NULL': - // echo "已经从这里退出\n"; - // exit; break; case 'double': diff --git a/src/scene/Scene.php b/src/scene/Scene.php index caffd4c..ef37cb8 100644 --- a/src/scene/Scene.php +++ b/src/scene/Scene.php @@ -118,7 +118,7 @@ class Scene extends BaseCfg $this->cameras = []; foreach( get_object_vars($camera) as $key => $value ) { - if($value != null) + if( $value !== null ) { $key = implode(".", array_map('strtolower', StringHelper::camelStrToArray($key))); $this->cameras[$key] = $value; @@ -133,7 +133,7 @@ class Scene extends BaseCfg { foreach( get_object_vars($world) as $key => $value ) { - if($value != null) + if( $value !== null ) { $key = implode(".", array_map('strtolower', StringHelper::camelStrToArray($key))); $this->world[$key] = $value; diff --git a/src/scene/camera/Perspective.php b/src/scene/camera/Perspective.php index 83f370c..b49de31 100644 --- a/src/scene/camera/Perspective.php +++ b/src/scene/camera/Perspective.php @@ -32,7 +32,7 @@ class Perspective extends CameraBase /** * @var float 景深(取值:0.0001744423-0.2232861),使用较高的值可得到更大程度的散焦效果,使用较低的值可得到更锐利的图像效果 */ - public $lensradius = 0; //输不出 0 + public $lensradius = 0; /** * @var float 物距,相机成像焦点到被拍摄物体的距离 diff --git a/src/utils/StringHelper.php b/src/utils/StringHelper.php index b301d98..7a56a43 100644 --- a/src/utils/StringHelper.php +++ b/src/utils/StringHelper.php @@ -35,17 +35,7 @@ class StringHelper $retStr[] = "{$key}.{$value}"; } } - else if( is_string($value) ) - { - if( count(explode(" ", $value)) != 3 || in_array(false,array_map('is_numeric',explode(" ", $value))) ) - { - $retStr[] = "{$key} = \"{$value}\""; - } - else - { - $retStr[] = "{$key} = {$value}"; - } - } + else if(is_object($value) && $value instanceof BaseCfg) { foreach( explode("\n", $value->toString()) as $value ) @@ -57,6 +47,15 @@ class StringHelper } } } + else if( is_bool($value) ) + { + $value = $value ? 1 : 0; + $retStr[] = "{$key} = {$value}"; + } + else if( is_string($value) ) + { + $retStr[] = "{$key} = \"{$value}\""; + } else { $retStr[] = "{$key} = {$value}";