学习threeJS(三)--光源

一、光源的类型

  • AmbientLight(环境光)
  • PointLight(点光源)
  • SpotLight(聚光灯光源,锥形光源)
  • DirectionLight(方向光,太阳光,平行光)
  • HemisphereLight(半球光)
  • AreaLight(面光源)
  • LensFlare(镜头炫光)

二、基础光源

1、AmbientLight

没有特定来源,不会产生阴影,不能单独使用,与其他光源一起使用,目的是弱化阴影或添加颜色。

var ambientLight = new THREE.AmbientLight('#0c0c0c');
scene.add(ambientLight);

不需要指定光源位置

2、PointLight

new THREE.PointLight(color颜色,  intensity强度,  distance距离,  position位置, visible光源开闭)

  var pointColor = '#ccffcc';
  var pointLight = new THREE.PointLight(pointColor, 2, 100);
  pointLight.position.x = -20;
  pointLight.position.y = 10;
  pointLight.position.z = 0;
  pointLight.visible = true;
  scene.add(pointLight);

*点光源不会产生投影,因为点光源向所有方向发射光,计算负担过重。

3、SpotLight

  • castShadow 是否生成阴影
  • shadowCameraNear 投影近点
  • shadowCameraFar 投影远点
  • shadowCameraFov 投影视场(我理解为视角)
  • target 目标,决定光照方向
  • shadowBias 阴影偏移
  • angle 角度、光柱的宽度
  • exponent 光强衰减指数
  • onlyShadow 没有光照只有阴影
  • shadowCameraVisible 投影方式可见
  • shadowDarkness 阴影暗度--场景渲染之后不能修改
  • shadowMapWidth 阴影映射宽度(像素)
  • shadowMapHeight 阴影映射高度(像素)
var spotLight = new THREE.SpotLight('#FFFFFF');
spotLight.position.set(-40, 60, -10);
spotLight.castShadow = true;
spotLight.target = plane;
scene.add(spotLight);

若想指向其他地方,空间其他点位,可以创建一个空的THREE.Object3D()实例

var target = new THREE.Object3D();
target.position = new THREE.Vector3(5, 0, 0);

spotlight.target  = target;

其他属性有待研究

4、DirectinalLight

var directionalLight = new THREE.DirectionalLight('#FFFFFF');
directionalLight.position.set(-20, 50, -20);
directionalLight.castShadow = true;
directionalLight.shadowCameraNear = 2;
directionalLight.shadowCameraFar = 200;
directionalLight.shadowCameraTop = 50;
directionalLight.shadowCameraBottom = -50;
directionalLight.shadowCameraLeft = -50;
directionalLight.shadowCameraRight = 50;
scene.add(directionalLight);

三、特殊光源

待更

转载于:https://my.oschina.net/u/3589012/blog/3052349

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值