Blender渲染
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

541 lines
34 KiB

  1. <?php
  2. namespace Blobt\Luxcore\scene;
  3. include dirname(dirname(__FILE__)) . "/vendor/autoload.php";
  4. const OPEN = true;
  5. const CLOSE = false;
  6. $scene = new Scene(); // 创建一个场景
  7. // 一、创建光场:
  8. // 1、创建 面片光001
  9. $obj = new objects\Objects(); // 创建 面片光001 的实体
  10. $obj->ply = './ply/FaceLight001.ply'; // 指定 面片光001 实体网格数据
  11. $materials = new materials\Matte(); // 创建一个材质
  12. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  13. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  14. $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色
  15. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  16. $obj->setMaterial($materials); // 为 面片光001 指定一个自发光材质
  17. $scene->registerObjects($obj); // 将 面片光001 注册到 scene 中
  18. // 2、创建 面片光002
  19. $obj = new objects\Objects(); // 创建 面片光002 的实体
  20. $obj->ply = './ply/FaceLight002.ply'; // 指定 面片光002 实体网格数据
  21. $materials = new materials\Matte(); // 创建一个材质
  22. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  23. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  24. $materials->setEmission('0 0 0'); // 设置材质为一个自发光材质,并指定发光颜色
  25. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  26. [
  27. 'gain' => "30 30 30", // 设置发光增益
  28. ]
  29. );
  30. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  31. $obj->setMaterial($materials); // 为 面片光002 指定一个自发光材质
  32. $scene->registerObjects($obj); // 将 面片光002 注册到 scene 中
  33. // 3、创建 面片光003
  34. $obj = new objects\Objects(); // 创建 面片光003 的实体
  35. $obj->ply = './ply/FaceLight003.ply'; // 指定 面片光003 实体网格数据
  36. $materials = new materials\Matte(); // 创建一个材质
  37. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  38. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  39. $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色
  40. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  41. [
  42. 'gain' => "50 50 50", // 设置发光增益
  43. ]
  44. );
  45. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  46. $obj->setMaterial($materials); // 为 面片光003 指定一个自发光材质
  47. $scene->registerObjects($obj); // 将 面片光003 注册到 scene 中
  48. // 4、创建 面片光004
  49. $obj = new objects\Objects(); // 创建 面片光004 的实体
  50. $obj->ply = './ply/FaceLight004.ply'; // 指定 面片光004 实体网格数据
  51. $materials = new materials\Matte(); // 创建一个材质
  52. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  53. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  54. $materials->setEmission('0 0 0'); // 设置材质为一个自发光材质,并指定发光颜色
  55. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  56. [
  57. 'gain' => "4 4 4", // 设置发光增益
  58. ]
  59. );
  60. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  61. $obj->setMaterial($materials); // 为 面片光004 指定一个自发光材质
  62. $scene->registerObjects($obj); // 将 面片光004 注册到 scene 中
  63. // 5、创建 面片光005
  64. $obj = new objects\Objects(); // 创建 面片光005 的实体
  65. $obj->ply = './ply/FaceLight005.ply'; // 指定 面片光005 实体网格数据
  66. $materials = new materials\Matte(); // 创建一个材质
  67. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  68. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  69. $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色
  70. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  71. [
  72. 'gain' => "10 10 10", // 设置发光增益
  73. ]
  74. );
  75. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  76. $obj->setMaterial($materials); // 为 面片光005 指定一个自发光材质
  77. $scene->registerObjects($obj); // 将 面片光005 注册到 scene 中
  78. // 6、创建 面片光006
  79. $obj = new objects\Objects(); // 创建 面片光006 的实体
  80. $obj->ply = './ply/FaceLight006.ply'; // 指定 面片光006 实体网格数据
  81. $materials = new materials\Matte(); // 创建一个材质
  82. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  83. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  84. $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色
  85. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  86. [
  87. 'gain' => "8 8 8", // 设置发光增益
  88. 'mapfile' => "./map/SD-037.exr", // 加载一个光域文件
  89. 'gamma' => 1, // 设置校正光域文件的gamma值
  90. 'storage' => "float" // 声明光域文件表示色值的数据类型
  91. ]
  92. );
  93. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  94. $obj->setMaterial($materials); // 为 面片光006 指定一个自发光材质
  95. $scene->registerObjects($obj); // 将 面片光006 注册到 scene 中
  96. // 7、创建 面片光000
  97. $obj = new objects\Objects(); // 创建 面片光 的实体
  98. $obj->ply = './ply/FaceLight000.ply'; // 指定 面片光 实体网格数据
  99. $materials = new materials\Matte(); // 创建一个材质
  100. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  101. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  102. $materials->setEmission('1 1 1'); // 设置材质为一个自发光材质,并指定发光颜色
  103. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  104. [
  105. 'gain' => "3.3 3.3 3.3", // 设置发光增益
  106. ]
  107. );
  108. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  109. $obj->setMaterial($materials); // 为 面片光 指定一个自发光材质
  110. $scene->registerObjects($obj); // 将 面片光 注册到 scene 中
  111. // 8、创建环境光
  112. $light = new lights\env\HdrImage( // new 一个环境光对象
  113. [
  114. 'gain' => "1.25 1.25 1.25", // 设置颜色增益
  115. 'transformation' => "0.1736481 -0.9848078 0 0 -0.9848078 -0.1736481 0 0 0 0 1 0 0 0 0 1",
  116. //设置对象变换
  117. 'file' => "./map/env.png", // 加载一个全景图像文件
  118. 'gamma' => 1, // 设置一个校正全景图像文件的 gamma 值
  119. 'storage' => "byte" // 声明这个图像文件表示色值的数据类型
  120. ]
  121. );
  122. $light->id = 0; // 一个场景只能有一个环境光对象,并且 id 必须为 0
  123. $scene->registerLight($light); // 将环境光注册到 scene 中
  124. // 二、添加要渲染的模型
  125. // 1、创建地面模型
  126. $obj = new objects\Objects(); // 创建 地面 模型
  127. $obj->ply = './ply/ground.ply'; // 指定 地面 模型网格数据
  128. $mapping = new texture\mapping\Mapping(); // 创建一个铺贴对象
  129. $mapping->useUVMapping2d( // 使用"uvmapping2d"类型的铺贴对象
  130. 0, // uv通道
  131. "0", // 旋转角度
  132. "0.4 -0.966", // 缩放比例
  133. "0.3 0.983" // 偏移量
  134. );
  135. $texture = new texture\procedural\ImageMap( // 创建一个纹理
  136. [
  137. 'file' => "./map/方形阴影遮照.png", // 加载一个图像文件
  138. 'gain' => 0.6, // 设置颜色增益
  139. 'gamma' => 1, // 设置校正图像文件的gamma值
  140. ]
  141. );
  142. $texture->mapping = $mapping; // 将铺贴对象赋值给纹理的“mapping”属性
  143. $scene->registerTexture($texture); // 将纹理注册到 scene 中
  144. $materials = new materials\Disney( // 创建一个材质
  145. [
  146. 'shadowcatcherEnable' => OPEN, // 设置为阴影捕捉器
  147. 'photongiEnable' => CLOSE // 关闭此材质的全局光缓存
  148. ]
  149. );
  150. $materials->setBaseColor('1 1 1'); // 设置材质的漫反射
  151. $materials->setTransparencyFront($texture); // 将纹理设置为材质的正面透明度
  152. $materials->setTransparencyBack($texture); // 将纹理设置为材质的背面透明度
  153. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  154. $obj->setMaterial($materials); // 设置 地面模型 的材质属性
  155. $scene->registerObjects($obj); // 将 地面模型 注册到 scene 中
  156. // 2、创建 刷毛003 模型
  157. $obj = new objects\Objects(); // 创建 刷毛003 模型
  158. $obj->ply = './ply/ShuaMao003.ply'; // 指定 刷毛003 模型网格数据
  159. $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";
  160. // 设置模型的变换
  161. $materials = new materials\Disney(); // 创建一个材质
  162. $materials->setBaseColor( '0.233238 0.567919 0.654361' ); // 设置材质的漫反射
  163. $materials->setSpecular('1'); // 设置材质的高光反射强度
  164. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  165. $obj->setMaterial($materials); // 设置 刷毛003 的材质属性
  166. $scene->registerObjects($obj); // 将 刷毛003 注册到 scene 中
  167. // 3、创建 刷毛002 模型
  168. $obj = new objects\Objects(); // 创建 刷毛002 模型
  169. $obj->ply = './ply/ShuaMao002.ply'; // 指定 刷毛002 模型网格数据
  170. $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";
  171. // 设置模型的变换
  172. $materials = new materials\Disney(); // 创建一个材质
  173. $materials->setBaseColor( '0.0739024 0.0739024 0.0739024' );// 设置材质的漫反射
  174. $materials->setSpecular('1'); // 设置材质的高光反射强度
  175. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  176. $obj->setMaterial($materials); // 设置 刷毛002 的材质属性
  177. $scene->registerObjects($obj); // 将 刷毛002 注册到 scene 中
  178. // 3、创建 刷毛001 模型
  179. $obj = new objects\Objects(); // 创建 刷毛001 模型
  180. $obj->ply = './ply/ShuaMao001.ply'; // 指定 刷毛001 模型网格数据
  181. $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";
  182. // 设置模型的变换
  183. $materials = new materials\Disney(); // 创建一个材质
  184. $materials->setBaseColor( '0.857449 0.857449 0.857449' ); // 设置材质的漫反射
  185. $materials->setSpecular('1'); // 设置材质的高光反射强度
  186. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  187. $obj->setMaterial($materials); // 设置 刷毛001 的材质属性
  188. $scene->registerObjects($obj); // 将 刷毛001 注册到 scene 中
  189. // 4、创建 牙刷头 模型
  190. $obj = new objects\Objects(); // 创建 牙刷头 模型
  191. $obj->ply = './ply/YaShuaTou.ply'; // 指定 牙刷头 模型网格数据
  192. $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";
  193. // 设置模型的变换
  194. $materials = new materials\Disney(); // 创建一个材质
  195. $materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射
  196. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  197. $materials->setRoughness('0.05'); // 设置粗糙度
  198. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  199. $obj->setMaterial($materials); // 设置 牙刷头 的材质属性
  200. $scene->registerObjects($obj); // 将 牙刷头 注册到 scene 中
  201. // 5、创建 牙刷头文字 模型
  202. $obj = new objects\Objects(); // 创建 牙刷头文字 模型
  203. $obj->ply = './ply/YaShuaTouWenZi.ply'; // 指定 牙刷头文字 模型网格数据
  204. $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";
  205. // 设置模型的变换
  206. $materials = new materials\Disney(); // 创建一个材质
  207. $materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射
  208. $materials->setSpecular('1'); // 设置材质的高光反射强度
  209. $materials->setRoughness('0'); // 设置粗糙度
  210. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  211. $obj->setMaterial($materials); // 设置 牙刷头文字 的材质属性
  212. $scene->registerObjects($obj); // 将 牙刷头文字 注册到 scene 中
  213. // 6、创建 金属振动轴 模型
  214. $obj = new objects\Objects(); // 创建 金属振动轴 模型
  215. $obj->ply = './ply/JinShuZhenDongZhou.ply'; // 指定 金属振动轴 模型网格数据
  216. $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";
  217. // 设置模型的变换
  218. $texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理
  219. $texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色
  220. $scene->registerTexture($texture); // 将纹理注册到 scene 中
  221. $materials = new materials\Metal(); // 创建一个材质
  222. $materials->setFresnel($texture); // 设置材质的金属度
  223. $materials->setUroughness('0.15'); // 设置U向粗糙度
  224. $materials->setVroughness('0.15'); // 设置V向粗糙度
  225. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  226. $obj->setMaterial($materials); // 设置 金属振动轴 的材质属性
  227. $scene->registerObjects($obj); // 将 金属振动轴 注册到 scene 中
  228. // 7、创建 金属按扭底坐 模型
  229. $obj = new objects\Objects(); // 创建 金属按扭底坐 模型
  230. $obj->ply = './ply/JinShuAnNiuDiZuo.ply'; // 指定 金属按扭底坐 模型网格数据
  231. $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";
  232. // 设置模型的变换
  233. $texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理
  234. $texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色
  235. $scene->registerTexture($texture); // 将纹理注册到 scene 中
  236. $materials = new materials\Metal(); // 创建一个材质
  237. $materials->setFresnel($texture); // 设置材质的金属度
  238. $materials->setUroughness('0.05'); // 设置U向粗糙度
  239. $materials->setVroughness('0.05'); // 设置V向粗糙度
  240. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  241. $obj->setMaterial($materials); // 设置 金属按扭底坐 的材质属性
  242. $scene->registerObjects($obj); // 将 金属按扭底坐 注册到 scene 中
  243. // 8、创建 刷毛样本金属圆管 模型
  244. $obj = new objects\Objects(); // 创建 刷毛样本金属圆管 模型
  245. $obj->ply = './ply/ShuaMaoYangBenJinShuYuanGuan.ply'; // 指定 刷毛样本金属圆管 模型网格数据
  246. $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";
  247. // 设置模型的变换
  248. $obj->setMaterial($materials); // 将上一个相同的材质设置为 刷毛样本金属圆管 的材质属性
  249. $scene->registerObjects($obj); // 将 刷毛样本金属圆管 注册到 scene 中
  250. // 9、创建 金属印字 模型
  251. $obj = new objects\Objects(); // 创建 金属印字 模型
  252. $obj->ply = './ply/JinShuYinZi.ply'; // 指定 金属印字 模型网格数据
  253. $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";
  254. // 设置模型的变换
  255. $obj->setMaterial($materials); // 将上一个相同的材质设置为 金属印字 的材质属性
  256. $scene->registerObjects($obj); // 将 金属印字 注册到 scene 中
  257. // 10、创建 刷毛样本印字 模型
  258. $obj = new objects\Objects(); // 创建 刷毛样本印字 模型
  259. $obj->ply = './ply/ShuaMaoYangBenYinZi.ply'; // 指定 刷毛样本印字 模型网格数据
  260. $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";
  261. // 设置模型的变换
  262. $materials = new materials\Disney(); // 创建一个材质
  263. $materials->setBaseColor( '0.248287 0.0124709 0.0377595' ); // 设置材质的漫反射
  264. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  265. $materials->setRoughness('0.2'); // 设置粗糙度
  266. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  267. $obj->setMaterial($materials); // 设置 刷毛样本印字 的材质属性
  268. $scene->registerObjects($obj); // 将 刷毛样本印字 注册到 scene 中
  269. // 11、创建 刷毛样本001 模型
  270. $obj = new objects\Objects(); // 创建 刷毛样本001 模型
  271. $obj->ply = './ply/ShuaMaoYangBen001.ply'; // 指定 刷毛样本001 模型网格数据
  272. $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";
  273. // 设置模型的变换
  274. $materials = new materials\Disney(); // 创建一个材质
  275. $materials->setBaseColor( '0.0204376 0.29558 0.16471' ); // 设置材质的漫反射
  276. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  277. $materials->setRoughness('0.2'); // 设置粗糙度
  278. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  279. $obj->setMaterial($materials); // 设置 刷毛样本001 的材质属性
  280. $scene->registerObjects($obj); // 将 刷毛样本001 注册到 scene 中
  281. // 12、创建 刷毛样本002 模型
  282. $obj = new objects\Objects(); // 创建 刷毛样本002 模型
  283. $obj->ply = './ply/ShuaMaoYangBen002.ply'; // 指定 刷毛样本002 模型网格数据
  284. $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";
  285. // 设置模型的变换
  286. $materials = new materials\Glass(); // 创建一个材质
  287. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  288. $obj->setMaterial($materials); // 设置 刷毛样本002 的材质属性
  289. $scene->registerObjects($obj); // 将 刷毛样本002 注册到 scene 中
  290. // 13、创建 透明塑料壳 模型
  291. $obj = new objects\Objects(); // 创建 透明塑料壳 模型
  292. $obj->ply = './ply/TouMingSuLiaoKe.ply'; // 指定 透明塑料壳 模型网格数据
  293. $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";
  294. // 设置模型的变换
  295. $obj->setMaterial($materials); // 将上一个相同的材质设置为 透明塑料壳 的材质属性
  296. $scene->registerObjects($obj); // 将 透明塑料壳 注册到 scene 中
  297. // 14、创建 圆柱形塑料壳 模型
  298. $obj = new objects\Objects(); // 创建 圆柱形塑料壳 模型
  299. $obj->ply = './ply/YuanZhuXingSuLiaoKe.ply'; // 指定 圆柱形塑料壳 模型网格数据
  300. $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";
  301. // 设置模型的变换
  302. $materials = new materials\Disney(); // 创建一个材质
  303. $materials->setBaseColor( '0.291771 0.361307 0.701102' ); // 设置材质的漫反射
  304. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  305. $materials->setRoughness('0.0470588'); // 设置粗糙度
  306. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  307. $obj->setMaterial($materials); // 设置 圆柱形塑料壳 的材质属性
  308. $scene->registerObjects($obj); // 将 圆柱形塑料壳 注册到 scene 中
  309. // 15、创建 塑料垫子 模型
  310. $obj = new objects\Objects(); // 创建 塑料垫子 模型
  311. $obj->ply = './ply/SuLiaoDianZi.ply'; // 指定 塑料垫子 模型网格数据
  312. $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";
  313. // 设置模型的变换
  314. $materials = new materials\Disney(); // 创建一个材质
  315. $materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射
  316. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  317. $materials->setRoughness('0.05'); // 设置粗糙度
  318. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  319. $obj->setMaterial($materials); // 设置 塑料垫子 的材质属性
  320. $scene->registerObjects($obj); // 将 塑料垫子 注册到 scene 中
  321. // 16、创建 按扭印字 模型
  322. $obj = new objects\Objects(); // 创建 按扭印字 模型
  323. $obj->ply = './ply/AnNiuYinZi.ply'; // 指定 按扭印字 模型网格数据
  324. $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";
  325. // 设置模型的变换
  326. $materials = new materials\Disney(); // 创建一个材质
  327. $materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射
  328. $materials->setSpecular('1'); // 设置材质的高光反射强度
  329. $materials->setRoughness('0'); // 设置粗糙度
  330. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  331. $obj->setMaterial($materials); // 设置 按扭印字 的材质属性
  332. $scene->registerObjects($obj); // 将 按扭印字 注册到 scene 中
  333. // 17、创建 散光灯罩 模型
  334. $obj = new objects\Objects(); // 创建 散光灯罩 模型
  335. $obj->ply = './ply/SanGuangDengZhao.ply'; // 指定 散光灯罩 模型网格数据
  336. $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";
  337. // 设置模型的变换
  338. $materials = new materials\Disney(); // 创建一个材质
  339. $materials->setBaseColor( '0.7 0.7 0.7' ); // 设置材质的漫反射
  340. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  341. $materials->setRoughness('1'); // 设置粗糙度
  342. $materials->setTransparencyFront('0.85');
  343. $materials->setTransparencyBack('0.85');
  344. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  345. $obj->setMaterial($materials); // 设置 散光灯罩 的材质属性
  346. $scene->registerObjects($obj); // 将 散光灯罩 注册到 scene 中
  347. // 18、创建 蓝色灯光 模型
  348. $obj = new objects\Objects(); // 创建 蓝色灯光 模型
  349. $obj->ply = './ply/LanSeDengGuang.ply'; // 指定 蓝色灯光 模型网格数据
  350. $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 -0.0006325925 0 1";
  351. // 设置模型的变换
  352. $materials = new materials\Matte(); // 创建一个材质
  353. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  354. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  355. $materials->setEmission('0.00604871 0.278894 1'); // 设置材质为一个自发光材质,并指定发光颜色
  356. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  357. [
  358. 'gain' => "40 40 40", // 设置发光增益
  359. ]
  360. );
  361. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  362. $obj->setMaterial($materials); // 为 蓝色灯光 指定一个自发光材质
  363. $scene->registerObjects($obj); // 将 蓝色灯光 注册到 scene 中
  364. // 19、创建 櫈色灯光 模型
  365. $obj = new objects\Objects(); // 创建 櫈色灯光 模型
  366. $obj->ply = './ply/DengSeDengGuang.ply'; // 指定 櫈色灯光 模型网格数据
  367. $obj->appliedtransformation = "0.001 0 0 0 0 -1.629207e-10 0.001 0 0 -0.001 -1.629207e-10 0 0 -0.0006325925 0 1";
  368. // 设置模型的变换
  369. $materials = new materials\Matte(); // 创建一个材质
  370. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  371. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  372. $materials->setEmission('1 0.0722717 0'); // 设置材质为一个自发光材质,并指定发光颜色
  373. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  374. [
  375. 'gain' => "40 40 40", // 设置发光增益
  376. ]
  377. );
  378. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  379. $obj->setMaterial($materials); // 为 櫈色灯光 指定一个自发光材质
  380. $scene->registerObjects($obj);
  381. // 三、创建相机
  382. $camera = new camera\Perspective( // 创建一个相机
  383. [
  384. 'autovolumeEnable' => 0, // 关闭自动体积效果
  385. 'lookatOrig' => "-3.197486 -4.560584 0.8914337", // 视点坐标位置
  386. 'lookatTarget' => "-2.632151 -3.747173 0.7544713", // 目标点坐标位置
  387. 'up' => "0.0781663 0.1124666 0.9905763", // 旋转参数
  388. 'screenwindow' => "-1 1 -1 1", // 视野比例
  389. 'autofocusEnable' => 0, // 关闭自动对焦
  390. 'fieldofview' => 3.40608, // 视野角度大小
  391. 'cliphither' => 0.1 // 剪切成像起始位置,单位跟随系统
  392. ]
  393. );
  394. $camera->bokeh->blades = 0; // 模拟镜头模糊效果的光圈数
  395. $scene->registerCamera($camera); // 将相机注册到 scene 中
  396. // 四、设置渲染参数
  397. $render = '';
  398. $renderEngine = new render\RenderEngine(); // 设置 渲染引擎 的配置参数,默认使用了 PATHOCL,意义着将使用 GPU 设备渲染
  399. $render .= $renderEngine;
  400. $openCL = new render\OpenCL(); // 设置 GPU 渲染参数,这里使用一个默认的参数
  401. $render .= $openCL;
  402. $path = new render\Path(); // 设置 光线跟踪 参数,这里使用一个默认的参数
  403. $render .= $path;
  404. $sampler = new render\Sampler(); // 设置 采样器 配置参数,默认使用 Sobol 类型的自适应采样器
  405. $render .= $sampler;
  406. $lightStrategy = new render\LightStrategy(); // 设置 灯光策略 类型,默认使用 LOG_POWER 类型
  407. $render .= $lightStrategy;
  408. $filesaver = new render\FileSaver(); // 设置 文件储存格式 配置参数
  409. $render .= $filesaver;
  410. $batch = new render\Batch(); // 设置 渲染终止 参数,
  411. $batch->haltspp = 1000; // 设置 每像素 采样达 800 则终止渲染
  412. // $batch->halttime = 2000; // 设置 渲染 超时参数,
  413. $render .= $batch;
  414. $sceneCfg = new render\Scene(); // 设置 场景属性 参数
  415. $render .= $sceneCfg;
  416. $film = new render\Film(); // 添加一个渲染胶片
  417. $film->width = 3000; // 设置渲染胶片宽度,单位像素
  418. $film->heigth = 3000; // 设置渲染胶片宽度,单位像素
  419. $img = new render\Image(); // 添加一个图像输出
  420. $img->effect = [new render\effect\Pretreatment(),new render\effect\ToneMapLinear(),new render\effect\CammaCorrection()];
  421. // 为该图像添加效果管线
  422. $film->addImage($img); // 将该图像输出添加到渲染胶片
  423. $film->addImage(new render\Image(['type' => render\Image::TYPE_OBJECT_ID])); // 为渲染胶片添加一个 通道图类型 的图像输出
  424. $film->addImage(new render\Image(['type' => render\Image::TYPE_RGBA])); // 添加一个 透明底 的图像输出
  425. $img = new render\Image(); // 添加一个图像输出,使用默认参数
  426. $img->effect[] = new render\effect\NoiseReducerOIDN(); // 添加降噪效果管线,使用默认参数
  427. $img->effect[] = new render\effect\Pretreatment(); //
  428. $img->effect[] = new render\effect\ToneMapLinear(); // 添加一亮度效果管线,使用默认参数
  429. $img->effect[] = new render\effect\Synthesis(); // 添加一个合成效果管线,使用默认参数
  430. $img->effect[] = new render\effect\BackgroundImg( // 添加一个背景图像,使用默认参数
  431. [
  432. 'file' => "./map/纯白242.png"
  433. ]
  434. );
  435. $img->effect[] = new render\effect\CammaCorrection(); // 添加一个 gamma 校正,,使用默认参数
  436. $film->addImage($img); // 将该图像输出添加到渲染胶片
  437. $render .= $film;
  438. // 五、输出场景文件 scene.scn,及渲染文件 render.cfg
  439. echo $scene;
  440. $handle = fopen( "./DemoScene/scene.scn",'w+');
  441. fwrite($handle,$scene);
  442. fclose($handle);
  443. echo $render ;
  444. $handle = fopen( "./DemoScene/render.cfg",'w+');
  445. fwrite($handle,$render);
  446. fclose($handle);
  447. // 六、启动渲染器
  448. $cmd = "luxcoreconsole -o ./DemoScene/render.cfg -f ./DemoScene/scene.scn 1>./DemoScene/render.log 2>&1";
  449. $output;
  450. $returnVar;
  451. exec($cmd,$output,$returnVar);
  452. if( $returnVar == 127 ) throw new \Exception("Please install the luxcorerender bin file in the system directory correctly,Or add to the system environment variable");
  453. ?>