yuanjiajia
3 years ago
12 changed files with 543 additions and 39 deletions
-
73src/scene/lights/DistantStar.php
-
2src/scene/lights/LightBase.php
-
114src/scene/lights/Projection.php
-
106src/scene/lights/Sphere.php
-
102src/scene/lights/Spot.php
-
77src/scene/lights/Sun.php
-
2src/scene/lights/Visibility.php
-
14src/scene/lights/env/CorlorConst.php
-
20src/scene/lights/env/HdrImage.php
-
22src/scene/lights/env/Sky.php
-
38src/scene/materials/emission/Emission.php
-
2src/scene/render/cache/VisibilityMapCache.php
@ -0,0 +1,73 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Blobt\Luxcore\scene\lights; |
||||
|
use Blobt\Luxcore\scene\Scene; |
||||
|
use Blobt\Luxcore\core\Base; |
||||
|
|
||||
|
class DistantStar extends LightBase |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* 遥远的恒星 |
||||
|
*/ |
||||
|
const TYPE_DISTANT = 'distant'; |
||||
|
|
||||
|
/** |
||||
|
* @var string 增益,色彩模式的色值($color) 或 色温模式的色温值(会规格化为一个普通色值) 的增益倍数,这个倍数是 |
||||
|
* 由 UI界面中曝光参数(2的n次方,2底数,n是UI界面中曝光参数设置的值)、与UI界面中增益倍数 乘以 |
||||
|
* 10.47606(格规化开启后的一个因数) 的乘积 的计算结果 |
||||
|
* |
||||
|
*/ |
||||
|
public $gain = "1 1 1"; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 发光颜色,分两种情况:1、当色彩模式开启,色温模式半闭时,这里的参数是一组小数形式RGB三通道的色值 |
||||
|
* 2、当色彩模式关闭,色温模式开启时,这里只能取一个固定的色值 ”1 1 1“ |
||||
|
*/ |
||||
|
public $color = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 色温模式,开关状态与色彩模式互斥,1、当取值为0-13000的小数时(会被转化为一个普通色值),色温模式开启,色彩模式关闭。 |
||||
|
* 2、当取值为-1时,色温模式关闭,色彩模式启。 |
||||
|
*/ |
||||
|
public $temperature = -1; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否将色温模式下的色温值规格化为小数形式的RGB色值,色温模式开启,色彩模式关闭 |
||||
|
*/ |
||||
|
public $temperatureNormalize = self::CLOSE; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 一个由16个数据组成模型的空间位置参数,包抱位置坐标,旋转参数,缩放参数 |
||||
|
*/ |
||||
|
public $transformation = "1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 目标方向 |
||||
|
*/ |
||||
|
public $direction = "-0 0 -1"; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 恒星光源相对尺寸(取值:大于等于0.5的小数),1表示模拟 1个地日距离 的太阳光源尺寸,2表示模拟 2个地日距离 的太阳光 |
||||
|
* 源尺寸,以此类推 |
||||
|
*/ |
||||
|
public $theta = 10; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @param array $config 接收一个数组,可以初始化当前实例化对象的各种属性 |
||||
|
*/ |
||||
|
public function __construct($config = []) |
||||
|
{ |
||||
|
$this->type = self::TYPE_DISTANT; |
||||
|
$this->id = Scene::createID(); |
||||
|
Base::__construct($config); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
?>
|
@ -0,0 +1,114 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Blobt\Luxcore\scene\lights; |
||||
|
use Blobt\Luxcore\scene\Scene; |
||||
|
use Blobt\Luxcore\core\Base; |
||||
|
|
||||
|
class Projection extends LightBase |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* 有贴图的聚光灯 |
||||
|
*/ |
||||
|
const TYPE_PROJECTION = 'projection'; |
||||
|
|
||||
|
/** |
||||
|
* @var string 增益,当发光强度单位是 artistic 类型时,可以设置此参数,这个参数是色彩模式的色值($color) 或 色温 |
||||
|
* 模式的色温值(会规格化为一个普通色值) 的增益倍数,这个倍数则是由 UI界面中曝光参数(2的n次方,2底数, |
||||
|
* n是UI界面中曝光参数设置的值)、与UI界面中增益倍数的乘积 的计算结果;否则固定为 1 1 1 |
||||
|
*/ |
||||
|
public $gain = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 能量强度(功率),当发光强度单位为非 artistic 类型时,可以设置此参数,此值 由一个单位是瓦特、流明或坎德拉的数转换而得(取 |
||||
|
* 值:大于等于0的小数);否则固定为0 |
||||
|
*/ |
||||
|
public $power = 0; |
||||
|
|
||||
|
/** |
||||
|
* @var float 转换效率, 当发光强度单位是 参量乘方 类型时,可以设置此参数,(取值:大于等于0的小数),否则artistic 类型,固定为0;流明 |
||||
|
* 和坎德拉时固定为1 |
||||
|
*/ |
||||
|
public $efficency = 0; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否 通过发光强度单位(流明、坎德拉、勒克斯)推荐的颜色亮度 对强度进行规格化,以模拟发光效率函数,当发光强度单位非 artistic |
||||
|
* 类型时,可以设置此参数,(取值:true或false),否则固定为 false |
||||
|
*/ |
||||
|
public $normalizebycolor = self::CLOSE; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 发光颜色,分两种情况:1、当色彩模式开启,色温模式半闭时,这里的参数是一组小数形式RGB三通道的色值 |
||||
|
* 2、当色彩模式关闭,色温模式开启时,这里只能取一个固定的色值 ”1 1 1“ |
||||
|
*/ |
||||
|
public $color = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 色温模式,开关状态与色彩模式互斥,1、当取值为0-13000的小数时(会被转化为一个普通色值),色温模式开启,色彩模式关闭。 |
||||
|
* 2、当取值为-1时,色温模式关闭,色彩模式启。 |
||||
|
*/ |
||||
|
public $temperature = -1; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否将色温模式下的色温值规格化为小数形式的RGB色值,色温模式开启,色彩模式关闭 |
||||
|
*/ |
||||
|
public $temperatureNormalize = self::CLOSE; |
||||
|
|
||||
|
/** |
||||
|
* @var string 光域网文件名及路径,如果为空,则表示不使用光域网 |
||||
|
*/ |
||||
|
public $mapfile; |
||||
|
|
||||
|
/** |
||||
|
* @var float 校正光域网文件的gamma值,(固定取值:1) |
||||
|
*/ |
||||
|
public $gamma; |
||||
|
|
||||
|
/** |
||||
|
* @var string 输出的图片的色值以何种方式表示(固定取值:"float") |
||||
|
*/ |
||||
|
public $storage; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 一个由16个数据组成模型的空间位置参数,包抱位置坐标,旋转参数,缩放参数 |
||||
|
*/ |
||||
|
public $transformation = "1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 位置 |
||||
|
*/ |
||||
|
public $position = "0 0 0"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 目标方向(位置) |
||||
|
*/ |
||||
|
public $target = "0 0 -1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 光线扩散角度(取值:1-180的小数),这个角度值是 光源向外扩散边缘 的最大角度。 |
||||
|
*/ |
||||
|
public $fov = 90; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @param array $config 接收一个数组,可以初始化当前实例化对象的各种属性 |
||||
|
*/ |
||||
|
public function __construct($config = []) |
||||
|
{ |
||||
|
$this->type = self::TYPE_PROJECTION; |
||||
|
$this->id = Scene::createID(); |
||||
|
Base::__construct($config); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
?>
|
@ -0,0 +1,106 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Blobt\Luxcore\scene\lights; |
||||
|
use Blobt\Luxcore\scene\Scene; |
||||
|
use Blobt\Luxcore\core\Base; |
||||
|
|
||||
|
class Sphere extends LightBase |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* 球形光、或点光 |
||||
|
*/ |
||||
|
const TYPE_SPHERE = 'sphere'; |
||||
|
const TYPE_MAPSPHERE = 'mapsphere'; |
||||
|
|
||||
|
/** |
||||
|
* @var string 增益,当发光强度单位是 artistic 类型时,可以设置此参数,这个参数是色彩模式的色值($color) 或 色温 |
||||
|
* 模式的色温值(会规格化为一个普通色值) 的增益倍数,这个倍数则是由 UI界面中曝光参数(2的n次方,2底数, |
||||
|
* n是UI界面中曝光参数设置的值)、与UI界面中增益倍数的乘积 的计算结果;否则固定为 1 1 1 |
||||
|
*/ |
||||
|
public $gain = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 能量强度(功率),当发光强度单位为非 artistic 类型时,可以设置此参数,此值 由一个单位是瓦特、流明或坎德拉的数转换而得(取 |
||||
|
* 值:大于等于0的小数);否则固定为0 |
||||
|
*/ |
||||
|
public $power = 0; |
||||
|
|
||||
|
/** |
||||
|
* @var float 转换效率, 当发光强度单位是 参量乘方 类型时,可以设置此参数,(取值:大于等于0的小数),否则artistic 类型,固定为0;流明 |
||||
|
* 和坎德拉时固定为1 |
||||
|
*/ |
||||
|
public $efficency = 0; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否 通过发光强度单位(流明、坎德拉、勒克斯)推荐的颜色亮度 对强度进行规格化,以模拟发光效率函数,当发光强度单位非 artistic |
||||
|
* 类型时,可以设置此参数,(取值:true或false),否则固定为 false |
||||
|
*/ |
||||
|
public $normalizebycolor = self::CLOSE; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 发光颜色,分两种情况:1、当色彩模式开启,色温模式半闭时,这里的参数是一组小数形式RGB三通道的色值 |
||||
|
* 2、当色彩模式关闭,色温模式开启时,这里只能取一个固定的色值 ”1 1 1“ |
||||
|
*/ |
||||
|
public $color = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 色温模式,开关状态与色彩模式互斥,1、当取值为0-13000的小数时(会被转化为一个普通色值),色温模式开启,色彩模式关闭。 |
||||
|
* 2、当取值为-1时,色温模式关闭,色彩模式启。 |
||||
|
*/ |
||||
|
public $temperature = -1; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否将色温模式下的色温值规格化为小数形式的RGB色值,色温模式开启,色彩模式关闭 |
||||
|
*/ |
||||
|
public $temperatureNormalize = self::CLOSE; |
||||
|
|
||||
|
/** |
||||
|
* @var string 光域网文件名及路径,如果为空,则表示不使用光域网 |
||||
|
*/ |
||||
|
public $mapfile; |
||||
|
|
||||
|
/** |
||||
|
* @var float 校正光域网文件的gamma值,(固定取值:1) |
||||
|
*/ |
||||
|
public $gamma; |
||||
|
|
||||
|
/** |
||||
|
* @var string 输出的图片的色值以何种方式表示(固定取值:"float") |
||||
|
*/ |
||||
|
public $storage; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 一个由16个数据组成模型的空间位置参数,包抱位置坐标,旋转参数,缩放参数 |
||||
|
*/ |
||||
|
public $transformation = "1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 位置 |
||||
|
*/ |
||||
|
public $position = "0 0 0"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 光源半径,(取值:大于等于0的小数) |
||||
|
*/ |
||||
|
public $radius = 0.2; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @param array $config 接收一个数组,可以初始化当前实例化对象的各种属性 |
||||
|
*/ |
||||
|
public function __construct($config = []) |
||||
|
{ |
||||
|
$this->type = self::TYPE_SPHERE; |
||||
|
$this->id = Scene::createID(); |
||||
|
Base::__construct($config); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
?>
|
@ -0,0 +1,102 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Blobt\Luxcore\scene\lights; |
||||
|
use Blobt\Luxcore\scene\Scene; |
||||
|
use Blobt\Luxcore\core\Base; |
||||
|
|
||||
|
class Spot extends LightBase |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* 聚光灯 |
||||
|
*/ |
||||
|
const TYPE_SPOT = 'spot'; |
||||
|
|
||||
|
/** |
||||
|
* @var string 增益,当发光强度单位是 artistic 类型时,可以设置此参数,这个参数是色彩模式的色值($color) 或 色温 |
||||
|
* 模式的色温值(会规格化为一个普通色值) 的增益倍数,这个倍数则是由 UI界面中曝光参数(2的n次方,2底数, |
||||
|
* n是UI界面中曝光参数设置的值)、与UI界面中增益倍数的乘积 的计算结果;否则固定为 1 1 1 |
||||
|
*/ |
||||
|
public $gain = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 能量强度(功率),当发光强度单位为非 artistic 类型时,可以设置此参数,此值 由一个单位是瓦特、流明或坎德拉的数转换而得(取 |
||||
|
* 值:大于等于0的小数);否则固定为0 |
||||
|
*/ |
||||
|
public $power = 0; |
||||
|
|
||||
|
/** |
||||
|
* @var float 转换效率, 当发光强度单位是 参量乘方 类型时,可以设置此参数,(取值:大于等于0的小数),否则artistic 类型,固定为0;流明 |
||||
|
* 和坎德拉时固定为1 |
||||
|
*/ |
||||
|
public $efficency = 0; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否 通过发光强度单位(流明、坎德拉、勒克斯)推荐的颜色亮度 对强度进行规格化,以模拟发光效率函数,当发光强度单位非 artistic |
||||
|
* 类型时,可以设置此参数,(取值:true或false),否则固定为 false |
||||
|
*/ |
||||
|
public $normalizebycolor = self::CLOSE; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 发光颜色,分两种情况:1、当色彩模式开启,色温模式半闭时,这里的参数是一组小数形式RGB三通道的色值 |
||||
|
* 2、当色彩模式关闭,色温模式开启时,这里只能取一个固定的色值 ”1 1 1“ |
||||
|
*/ |
||||
|
public $color = "1 1 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 色温模式,开关状态与色彩模式互斥,1、当取值为0-13000的小数时(会被转化为一个普通色值),色温模式开启,色彩模式关闭。 |
||||
|
* 2、当取值为-1时,色温模式关闭,色彩模式启。 |
||||
|
*/ |
||||
|
public $temperature = -1; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否将色温模式下的色温值规格化为小数形式的RGB色值,色温模式开启,色彩模式关闭 |
||||
|
*/ |
||||
|
public $temperatureNormalize = self::CLOSE; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 一个由16个数据组成模型的空间位置参数,包抱位置坐标,旋转参数,缩放参数 |
||||
|
*/ |
||||
|
public $transformation = "1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 位置 |
||||
|
*/ |
||||
|
public $position = "0 0 0"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 目标方向(位置) |
||||
|
*/ |
||||
|
public $target = "0 0 -1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 光线扩散角度(取值:1-90的小数),这个角度值是 光源至目标点的连线 与 光源向外扩散边缘 的角度。 |
||||
|
*/ |
||||
|
public $coneangle = 22.5; |
||||
|
|
||||
|
/** |
||||
|
* @var float 强度从 中心向边缘衰减 的起始位置(取值:0-1的小数),这个值确定一个 从中心到边缘 的某一个起始位置,光线强度将从这个位向边缘衰减。 |
||||
|
* 值越接近0,这个起始位置越靠近边缘,强度从中心向边缘衰减越不明显,看起来中心亮度与边缘亮度是一样的;值越接近1,起始位置越靠近中心, |
||||
|
* 这时强度从中心向边缘衰减到最弱时,将有一个明显的过度。 |
||||
|
*/ |
||||
|
public $conedeltaangle = 0.25; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @param array $config 接收一个数组,可以初始化当前实例化对象的各种属性 |
||||
|
*/ |
||||
|
public function __construct($config = []) |
||||
|
{ |
||||
|
$this->type = self::TYPE_SPOT; |
||||
|
$this->id = Scene::createID(); |
||||
|
Base::__construct($config); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
?>
|
@ -0,0 +1,77 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Blobt\Luxcore\scene\lights; |
||||
|
use Blobt\Luxcore\scene\Scene; |
||||
|
use Blobt\Luxcore\core\Base; |
||||
|
|
||||
|
class Sun extends LightBase |
||||
|
{ |
||||
|
|
||||
|
/** |
||||
|
* 太阳 |
||||
|
*/ |
||||
|
const TYPE_SUN = 'sun'; |
||||
|
|
||||
|
/** |
||||
|
* @var string 增益,分两种情况:1、当色彩模式开启,色温模式半闭时,这里的参数是一组小数形式RGB三通道的HDR色值,这个色值是由 UI界面中色彩模 |
||||
|
* 式的色值、UI界面中曝光参数(2的n次方,2底数,n是UI界面中曝光参数设置的值)、与UI界面中增益倍数的乘积 的 |
||||
|
* 计算结果。 |
||||
|
* 2、当色彩模式关闭,色温模式开启时,这里的参数就是色温的倍数,这个倍数是由 UI界面中曝光参数(2的n次方,2 |
||||
|
* 底数,n是UI界面中曝光参数设置的值)、与UI界面中增益倍数的乘积 的计算结果。 |
||||
|
*/ |
||||
|
public $gain = "1 1 1"; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var float 色温模式,开关状态与色彩模式互斥,1、当取值为0-13000的小数时(会被转化为一个普通色值),色温模式开启,色彩模式关闭。 |
||||
|
* 2、当取值为-1时,色温模式关闭,色彩模式启。 |
||||
|
*/ |
||||
|
public $temperature = -1; |
||||
|
|
||||
|
/** |
||||
|
* @var bool 是否将色温模式下的色温值规格化为小数形式的RGB色值,色温模式开启,色彩模式关闭 |
||||
|
*/ |
||||
|
public $temperatureNormalize = self::CLOSE; |
||||
|
|
||||
|
/** |
||||
|
* @var float 浑浊度,(取值:0-30的小数)。空气不清洁度,当空气中的尘埃越多,太阳光谱中有更多蓝色光谱被阻挡,因此天光趋向暖色, |
||||
|
* 当空气中的尘埃越少,太阳光谱中有更多蓝色光穿透大气,因此天光趋向冷色。 |
||||
|
*/ |
||||
|
public $turbidity = 2.2; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @var string 一个由16个数据组成模型的空间位置参数,包抱位置坐标,旋转参数,缩放参数 |
||||
|
*/ |
||||
|
public $transformation = "1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var string 目标方向 |
||||
|
*/ |
||||
|
public $dir = "0 0 1"; |
||||
|
|
||||
|
/** |
||||
|
* @var float 太阳光源相对尺寸(取值:大于等于1的小数),1表示模拟 1个地日距离 的太阳光源尺寸,2表示模拟 2个地日距离 的太阳光 |
||||
|
* 源尺寸,以此类推 |
||||
|
*/ |
||||
|
public $relsize = 1; |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @param array $config 接收一个数组,可以初始化当前实例化对象的各种属性 |
||||
|
* @param object $mapping 如需自定义非物理特性的可见性,必须传入一个 Visibility类对象,否则使用一个默认的可见性参数 |
||||
|
*/ |
||||
|
public function __construct($config = [],Visibility $visibility = null) |
||||
|
{ |
||||
|
if( $visibility != null )$this->visibility = $visibility; |
||||
|
else $this->visibility = new Visibility(); |
||||
|
$this->type = self::TYPE_SUN; |
||||
|
$this->id = Scene::createID(); |
||||
|
Base::__construct($config); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
?>
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue