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.

522 lines
33 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/面光.001.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/面光.002.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/面光.003.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/面光.004.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/面光.005.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/面光.006.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' => "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、创建 面片光006
  97. $obj = new objects\Objects(); // 创建 面片光 的实体
  98. $obj->ply = './ply/面光.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. 'file' => "env.png", // 加载一个全景图像文件
  117. 'gamma' => 1, // 设置一个校正全景图像文件的 gamma 值
  118. 'storage' => "byte" // 声明这个图像文件表示色值的数据类型
  119. ]
  120. );
  121. $scene->registerLight($light); // 将环境光注册到 scene 中
  122. // 二、添加要渲染的模型
  123. // 1、创建地面模型
  124. $obj = new objects\Objects(); // 创建 地面 的实体
  125. $obj->ply = './ply/地面.ply'; // 指定 地面 实体网格数据
  126. $mapping = new texture\mapping\Mapping(); // 创建一个铺贴对象
  127. $mapping->useUVMapping2d( // 使用"uvmapping2d"类型的铺贴对象
  128. 0, // uv通道
  129. "0", // 旋转角度
  130. "0.4 -0.966", // 缩放比例
  131. "0.3 0.983" // 偏移量
  132. );
  133. $texture = new texture\procedural\ImageMap( // 创建一个纹理
  134. [
  135. 'file' => "方形阴影遮照.png", // 加载一个图像文件
  136. 'gain' => 0.6, // 设置颜色增益
  137. 'gamma' => 1, // 设置校正图像文件的gamma值
  138. ]
  139. );
  140. $texture->mapping = $mapping; // 将铺贴对象赋值给纹理的“mapping”属性
  141. $scene->registerTexture($texture); // 将纹理注册到 scene 中
  142. $materials = new materials\Disney( // 创建一个材质
  143. [
  144. 'shadowcatcherEnable' => OPEN, // 设置为阴影捕捉器
  145. 'photongiEnable' => CLOSE // 关闭此材质的全局光缓存
  146. ]
  147. );
  148. $materials->setBaseColor('1 1 1'); // 设置材质的漫反射
  149. $materials->setTransparencyFront($texture); // 将纹理设置为材质的正面透明度
  150. $materials->setTransparencyBack($texture); // 将纹理设置为材质的背面透明度
  151. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  152. $obj->setMaterial($materials); // 设置 地面模型 的材质属性
  153. $scene->registerObjects($obj); // 将 地面模型 注册到 scene 中
  154. // 2、创建 刷毛003 模型
  155. $obj = new objects\Objects(); // 创建 刷毛003 的实体
  156. $obj->ply = './ply/刷毛003.ply'; // 指定 刷毛003 实体网格数据
  157. $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"; // 设置模型的变换
  158. $materials = new materials\Disney(); // 创建一个材质
  159. $materials->setBaseColor( '0.233238 0.567919 0.654361' ); // 设置材质的漫反射
  160. $materials->setSpecular('1'); // 设置材质的高光反射强度
  161. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  162. $obj->setMaterial($materials); // 设置 刷毛003 的材质属性
  163. $scene->registerObjects($obj); // 将 刷毛003 注册到 scene 中
  164. // 3、创建 刷毛002 模型
  165. $obj = new objects\Objects(); // 创建 刷毛002 的实体
  166. $obj->ply = './ply/刷毛002.ply'; // 指定 刷毛002 实体网格数据
  167. $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";
  168. // 设置模型的变换
  169. $materials = new materials\Disney(); // 创建一个材质
  170. $materials->setBaseColor( '0.0739024 0.0739024 0.0739024' );// 设置材质的漫反射
  171. $materials->setSpecular('1'); // 设置材质的高光反射强度
  172. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  173. $obj->setMaterial($materials); // 设置 刷毛002 的材质属性
  174. $scene->registerObjects($obj); // 将 刷毛002 注册到 scene 中
  175. // 3、创建 刷毛001 模型
  176. $obj = new objects\Objects(); // 创建 刷毛001 的实体
  177. $obj->ply = './ply/刷毛001.ply'; // 指定 刷毛001 实体网格数据
  178. $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";
  179. // 设置模型的变换
  180. $materials = new materials\Disney(); // 创建一个材质
  181. $materials->setBaseColor( '0.857449 0.857449 0.857449' ); // 设置材质的漫反射
  182. $materials->setSpecular('1'); // 设置材质的高光反射强度
  183. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  184. $obj->setMaterial($materials); // 设置 刷毛001 的材质属性
  185. $scene->registerObjects($obj); // 将 刷毛001 注册到 scene 中
  186. // 4、创建 牙刷头 模型
  187. $obj = new objects\Objects(); // 创建 牙刷头 的实体
  188. $obj->ply = './ply/牙刷头.ply'; // 指定 牙刷头 实体网格数据
  189. $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";
  190. // 设置模型的变换
  191. $materials = new materials\Disney(); // 创建一个材质
  192. $materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射
  193. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  194. $materials->setRoughness('0.05'); // 设置粗糙度
  195. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  196. $obj->setMaterial($materials); // 设置 牙刷头 的材质属性
  197. $scene->registerObjects($obj); // 将 牙刷头 注册到 scene 中
  198. // 5、创建 牙刷头文字 模型
  199. $obj = new objects\Objects(); // 创建 牙刷头文字 的实体
  200. $obj->ply = './ply/牙刷头文字.ply'; // 指定 牙刷头文字 实体网格数据
  201. $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";
  202. // 设置模型的变换
  203. $materials = new materials\Disney(); // 创建一个材质
  204. $materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射
  205. $materials->setSpecular('1'); // 设置材质的高光反射强度
  206. $materials->setRoughness('0'); // 设置粗糙度
  207. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  208. $obj->setMaterial($materials); // 设置 牙刷头文字 的材质属性
  209. $scene->registerObjects($obj); // 将 牙刷头文字 注册到 scene 中
  210. // 6、创建 金属振动轴 模型
  211. $obj = new objects\Objects(); // 创建 金属振动轴 的实体
  212. $obj->ply = './ply/金属振动轴.ply'; // 指定 金属振动轴 实体网格数据
  213. $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";
  214. // 设置模型的变换
  215. $texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理
  216. $texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色
  217. $scene->registerTexture($texture); // 将纹理注册到 scene 中
  218. $materials = new materials\Metal(); // 创建一个材质
  219. $materials->setFresnel($texture); // 设置材质的金属度
  220. $materials->setUroughness('0.15'); // 设置U向粗糙度
  221. $materials->setVroughness('0.15'); // 设置V向粗糙度
  222. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  223. $obj->setMaterial($materials); // 设置 金属振动轴 的材质属性
  224. $scene->registerObjects($obj); // 将 金属振动轴 注册到 scene 中
  225. // 7、创建 金属按扭底坐 模型
  226. $obj = new objects\Objects(); // 创建 金属按扭底坐 的实体
  227. $obj->ply = './ply/金属按扭底坐.ply'; // 指定 金属按扭底坐 实体网格数据
  228. $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";
  229. // 设置模型的变换
  230. $texture = new texture\procedural\Fresnelcolor(); // 创建一个菲涅尔反射纹理
  231. $texture->setRefraction('0.7 0.7 0.7'); // 设置反射颜色
  232. $scene->registerTexture($texture); // 将纹理注册到 scene 中
  233. $materials = new materials\Metal(); // 创建一个材质
  234. $materials->setFresnel($texture); // 设置材质的金属度
  235. $materials->setUroughness('0.05'); // 设置U向粗糙度
  236. $materials->setVroughness('0.05'); // 设置V向粗糙度
  237. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  238. $obj->setMaterial($materials); // 设置 金属按扭底坐 的材质属性
  239. $scene->registerObjects($obj); // 将 金属按扭底坐 注册到 scene 中
  240. // 8、创建 刷毛样本金属圆管 模型
  241. $obj = new objects\Objects(); // 创建 刷毛样本金属圆管 的实体
  242. $obj->ply = './ply/刷毛样本金属圆管.ply'; // 指定 刷毛样本金属圆管 实体网格数据
  243. $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";
  244. // 设置模型的变换
  245. $obj->setMaterial($materials); // 将上一个相同的材质设置为 刷毛样本金属圆管 的材质属性
  246. $scene->registerObjects($obj); // 将 刷毛样本金属圆管 注册到 scene 中
  247. // 9、创建 金属印字 模型
  248. $obj = new objects\Objects(); // 创建 金属印字 的实体
  249. $obj->ply = './ply/金属印字.ply'; // 指定 金属印字 实体网格数据
  250. $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";
  251. // 设置模型的变换
  252. $obj->setMaterial($materials); // 将上一个相同的材质设置为 金属印字 的材质属性
  253. $scene->registerObjects($obj); // 将 金属印字 注册到 scene 中
  254. // 10、创建 刷毛样本印字 模型
  255. $obj = new objects\Objects(); // 创建 刷毛样本印字 的实体
  256. $obj->ply = './ply/刷毛样本印字.ply'; // 指定 刷毛样本印字 实体网格数据
  257. $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";
  258. // 设置模型的变换
  259. $materials = new materials\Disney(); // 创建一个材质
  260. $materials->setBaseColor( '0.248287 0.0124709 0.0377595' ); // 设置材质的漫反射
  261. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  262. $materials->setRoughness('0.2'); // 设置粗糙度
  263. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  264. $obj->setMaterial($materials); // 设置 刷毛样本印字 的材质属性
  265. $scene->registerObjects($obj); // 将 刷毛样本印字 注册到 scene 中
  266. // 11、创建 刷毛样本001 模型
  267. $obj = new objects\Objects(); // 创建 刷毛样本001 的实体
  268. $obj->ply = './ply/刷毛样本001.ply'; // 指定 刷毛样本001 实体网格数据
  269. $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";
  270. // 设置模型的变换
  271. $materials = new materials\Disney(); // 创建一个材质
  272. $materials->setBaseColor( '0.0204376 0.29558 0.16471' ); // 设置材质的漫反射
  273. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  274. $materials->setRoughness('0.2'); // 设置粗糙度
  275. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  276. $obj->setMaterial($materials); // 设置 刷毛样本001 的材质属性
  277. $scene->registerObjects($obj); // 将 刷毛样本001 注册到 scene 中
  278. // 12、创建 刷毛样本002 模型
  279. $obj = new objects\Objects(); // 创建 刷毛样本002 的实体
  280. $obj->ply = './ply/刷毛样本002.ply'; // 指定 刷毛样本002 实体网格数据
  281. $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";
  282. // 设置模型的变换
  283. $materials = new materials\Glass(); // 创建一个材质
  284. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  285. $obj->setMaterial($materials); // 设置 刷毛样本002 的材质属性
  286. $scene->registerObjects($obj); // 将 刷毛样本002 注册到 scene 中
  287. // 13、创建 透明塑料壳 模型
  288. $obj = new objects\Objects(); // 创建 透明塑料壳 的实体
  289. $obj->ply = './ply/透明塑料壳.ply'; // 指定 透明塑料壳 实体网格数据
  290. $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";
  291. // 设置模型的变换
  292. $obj->setMaterial($materials); // 将上一个相同的材质设置为 透明塑料壳 的材质属性
  293. $scene->registerObjects($obj); // 将 透明塑料壳 注册到 scene 中
  294. // 14、创建 圆柱形塑料壳 模型
  295. $obj = new objects\Objects(); // 创建 圆柱形塑料壳 的实体
  296. $obj->ply = './ply/圆柱形塑料壳.ply'; // 指定 圆柱形塑料壳 实体网格数据
  297. $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";
  298. // 设置模型的变换
  299. $materials = new materials\Disney(); // 创建一个材质
  300. $materials->setBaseColor( '0.291771 0.361307 0.701102' ); // 设置材质的漫反射
  301. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  302. $materials->setRoughness('0.0470588'); // 设置粗糙度
  303. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  304. $obj->setMaterial($materials); // 设置 圆柱形塑料壳 的材质属性
  305. $scene->registerObjects($obj); // 将 圆柱形塑料壳 注册到 scene 中
  306. // 15、创建 塑料垫子 模型
  307. $obj = new objects\Objects(); // 创建 塑料垫子 的实体
  308. $obj->ply = './ply/塑料垫子.ply'; // 指定 塑料垫子 实体网格数据
  309. $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";
  310. // 设置模型的变换
  311. $materials = new materials\Disney(); // 创建一个材质
  312. $materials->setBaseColor( '0.701102 0.701102 0.701102' ); // 设置材质的漫反射
  313. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  314. $materials->setRoughness('0.05'); // 设置粗糙度
  315. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  316. $obj->setMaterial($materials); // 设置 塑料垫子 的材质属性
  317. $scene->registerObjects($obj); // 将 塑料垫子 注册到 scene 中
  318. // 16、创建 按扭印字 模型
  319. $obj = new objects\Objects(); // 创建 按扭印字 的实体
  320. $obj->ply = './ply/按扭印字.ply'; // 指定 按扭印字 实体网格数据
  321. $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";
  322. // 设置模型的变换
  323. $materials = new materials\Disney(); // 创建一个材质
  324. $materials->setBaseColor( '0.0144817 0.0144817 0.0144817' );// 设置材质的漫反射
  325. $materials->setSpecular('1'); // 设置材质的高光反射强度
  326. $materials->setRoughness('0'); // 设置粗糙度
  327. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  328. $obj->setMaterial($materials); // 设置 按扭印字 的材质属性
  329. $scene->registerObjects($obj); // 将 按扭印字 注册到 scene 中
  330. // 17、创建 散光灯罩 模型
  331. $obj = new objects\Objects(); // 创建 散光灯罩 的实体
  332. $obj->ply = './ply/散光灯罩.ply'; // 指定 散光灯罩 实体网格数据
  333. $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";
  334. // 设置模型的变换
  335. $materials = new materials\Disney(); // 创建一个材质
  336. $materials->setBaseColor( '0.7 0.7 0.7' ); // 设置材质的漫反射
  337. $materials->setSpecular('0.5'); // 设置材质的高光反射强度
  338. $materials->setRoughness('1'); // 设置粗糙度
  339. $materials->setTransparencyFront('0.75');
  340. $materials->setTransparencyBack('0.75');
  341. $scene->registerMaterial($materials); // 将材质注册到 scene 中
  342. $obj->setMaterial($materials); // 设置 散光灯罩 的材质属性
  343. $scene->registerObjects($obj); // 将 散光灯罩 注册到 scene 中
  344. // 18、创建 蓝色灯光 模型
  345. $obj = new objects\Objects(); // 创建 蓝色灯光 的实体
  346. $obj->ply = './ply/蓝色灯光.ply'; // 指定 蓝色灯光 实体网格数据
  347. $materials = new materials\Matte(); // 创建一个材质
  348. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  349. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  350. $materials->setEmission('0.00604871 0.278894 1'); // 设置材质为一个自发光材质,并指定发光颜色
  351. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  352. [
  353. 'gain' => "5 5 5", // 设置发光增益
  354. ]
  355. );
  356. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  357. $obj->setMaterial($materials); // 为 蓝色灯光 指定一个自发光材质
  358. $scene->registerObjects($obj); // 将 蓝色灯光 注册到 scene 中
  359. // 19、创建 櫈色灯光 模型
  360. $obj = new objects\Objects(); // 创建 櫈色灯光 的实体
  361. $obj->ply = './ply/櫈色灯光.ply'; // 指定 櫈色灯光 实体网格数据
  362. $materials = new materials\Matte(); // 创建一个材质
  363. $materials->setBaseColor('0 0 0'); // 设置材质的漫反射
  364. $materials->setTransparencyShadow('1 1 1'); // 设置材质产生阴影的透明度
  365. $materials->setEmission('1 0.0722717 0'); // 设置材质为一个自发光材质,并指定发光颜色
  366. $materials->emissionCfg = new lights\Emission( // 设置发光属性
  367. [
  368. 'gain' => "10 10 10", // 设置发光增益
  369. ]
  370. );
  371. $scene->registerMaterial($materials); // 将的自发光材质注册到 scene 中
  372. $obj->setMaterial($materials); // 为 櫈色灯光 指定一个自发光材质
  373. $scene->registerObjects($obj);
  374. // 三、创建相机
  375. $camera = new camera\Perspective( // 创建一个相机
  376. [
  377. 'autovolumeEnable' => 0, // 关闭自动体积效果
  378. 'lookatOrig' => "-3.197486 -4.560584 0.8914337", // 视点坐标位置
  379. 'lookatTarget' => "-2.632151 -3.747173 0.7544713", // 目标点坐标位置
  380. 'up' => "0.0781663 0.1124666 0.9905763", // 旋转参数
  381. 'screenwindow' => "-1 1 -1 1", // 视野比例
  382. 'autofocusEnable' => 0, // 关闭自动对焦
  383. 'fieldofview' => 3.40608, // 视野角度大小
  384. 'cliphither' => 0.1 // 剪切成像起始位置,单位跟随系统
  385. ]
  386. );
  387. $camera->bokeh->blades = 0; // 模拟镜头模糊效果的光圈数
  388. $scene->registerCamera($camera); // 将相机注册到 scene 中
  389. echo $scene;
  390. $handle = fopen( "/home/yuanjiajia/Desktop/blender/blender_test/scene/scene.scn",'w+');
  391. fwrite($handle,$scene);
  392. fclose($handle);
  393. // 四、设置渲染参数
  394. $render = '';
  395. $renderEngine = new render\RenderEngine(); // 设置 渲染引擎 的配置参数,默认使用了 PATHOCL,意义着将使用 GPU 设备渲染
  396. $render .= $renderEngine;
  397. $openCL = new render\OpenCL(); // 设置 GPU 渲染参数,这里使用一个默认的参数
  398. $render .= $openCL;
  399. $path = new render\Path(); // 设置 光线跟踪 参数,这里使用一个默认的参数
  400. $render .= $path;
  401. $sampler = new render\Sampler(); // 设置 采样器 配置参数,默认使用 Sobol 类型的自适应采样器
  402. $sampler->sampling->superSampling = render\Sobol::POW_TWO_SIX; // 设置采样基数的倍数
  403. $render .= $sampler;
  404. $lightStrategy = new render\LightStrategy(); // 设置 灯光策略 类型,默认使用 LOG_POWER 类型
  405. $render .= $lightStrategy;
  406. $filesaver = new render\FileSaver(); // 设置 文件储存格式 配置参数
  407. $render .= $filesaver;
  408. $batch = new render\Batch(); // 设置 渲染终止 参数,
  409. $batch->halttime = 600; // 设置 渲染 超时参数,
  410. $render .= $batch;
  411. $scene = new render\Scene(); // 设置 场景属性 参数
  412. $render .= $scene;
  413. $film = new render\Film(); // 添加一个渲染胶片
  414. $film->width = 3000; // 设置渲染胶片宽度,单位像素
  415. $film->heigth = 3000; // 设置渲染胶片宽度,单位像素
  416. $img = new render\Image(); // 添加一个图像输出
  417. $img->effect = [new render\effect\Pretreatment(),new render\effect\ToneMapLinear(),new render\effect\CammaCorrection()];
  418. // 为该图像添加效果管线
  419. $film->addImage($img); // 将该图像输出添加到渲染胶片
  420. $film->addImage(new render\Image(['type' => render\Image::TYPE_OBJECT_ID])); // 为渲染胶片添加一个 通道图类型 的图像输出
  421. $film->addImage(new render\Image(['type' => render\Image::TYPE_RGBA]));
  422. $img = new render\Image(); // 添加一个图像输出,使用默认参数
  423. $img->effect[] = new render\effect\NoiseReducerOIDN(); // 添加降噪效果管线,使用默认参数
  424. $img->effect[] = new render\effect\Pretreatment(); //
  425. $img->effect[] = new render\effect\ToneMapLinear(); // 添加一亮度效果管线,使用默认参数
  426. $img->effect[] = new render\effect\Synthesis(); // 添加一个合成效果管线,使用默认参数
  427. $img->effect[] = new render\effect\BackgroundImg( // 添加一个背景图像,使用默认参数
  428. [
  429. 'file' => "./纯白242.png"
  430. ]
  431. );
  432. $img->effect[] = new render\effect\CammaCorrection(); // 添加一个 gamma 校正,,使用默认参数
  433. $film->addImage($img); // 将该图像输出添加到渲染胶片
  434. $render .= $film;
  435. echo $render ;
  436. $handle = fopen( "/home/yuanjiajia/Desktop/blender/blender_test/scene/render.cfg",'w+');
  437. fwrite($handle,$render);
  438. fclose($handle);
  439. ?>