Threejs系列--6阴影

序言

通过上一章灯光的了解,相信你对在实际业务中如何取舍已经有了自己的答案。本章将讲解灯光的阴影。

treejs提供了 LightShadow对象以及其子对象,可以使得我们非常方便的控制阴影。

点光源照射出的阴影

//构造函数
PointLightShadow( ) 
创建一个新的PointLightShadow。pointLight内部实现了相关调用,我们无需手动调用。

设置shadow前的效果在这里插入图片描述

设置shadow后的效果在这里插入图片描述

//创建渲染器
var renderer = new THREE.WebGLRenderer();
renderer.shadowMap.enabled = true; //场景中使用阴影贴图

//添加光源
var light = new THREE.PointLight( 0xffffff, 1 , 1000);
light.position.set( 100,80,50 );
light.castShadow = true;   //设置投射阴影
scene.add( light );

//创建一个物体,用与显示与阴影投射
var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
sphere.castShadow = true;
sphere.receiveShadow = false;
scene.add( sphere );

//创建一个平面,用与呈现阴影
var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
var plane = new THREE.Mesh( planeGeometry, planeMaterial );
plane.receiveShadow = true;
scene.add( plane );

平行光照射出的阴影

//构造函数
DirectionalLightShadow( )   创建一个平行光阴影。

设置shadow前的效果
在这里插入图片描述

设置shadow后的效果
在这里插入图片描述

//创建渲染器
var renderer = new THREE.WebGLRenderer();
renderer.shadowMap.enabled = true; //场景中使用阴影贴图

//添加光源
var light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 100,80,50 );
light.castShadow = true;   //设置投射阴影
scene.add( light );

//创建一个物体,用与显示与阴影投射
var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
sphere.castShadow = true;
sphere.receiveShadow = false;
scene.add( sphere );

//创建一个平面,用与呈现阴影
var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
var plane = new THREE.Mesh( planeGeometry, planeMaterial );
plane.receiveShadow = true;
scene.add( plane );

聚光灯照射出的阴影

//构造函数
SpotLightShadow( )   创建一个聚光灯阴影。

设置shadow前的效果
在这里插入图片描述

设置shadow后的效果
在这里插入图片描述

//创建渲染器
var renderer = new THREE.WebGLRenderer();
renderer.shadowMap.enabled = true; //场景中使用阴影贴图

//添加光源
var light = new THREE.SpotLight( 0xffffff );
light.position.set( 100,100,70 );
light.castShadow = true;   //设置投射阴影
scene.add( light );

//创建一个物体,用与显示与阴影投射
var sphereGeometry = new THREE.SphereBufferGeometry( 5, 32, 32 );
var sphereMaterial = new THREE.MeshStandardMaterial( { color: 0xff0000 } );
var sphere = new THREE.Mesh( sphereGeometry, sphereMaterial );
sphere.castShadow = true;
sphere.receiveShadow = false;
scene.add( sphere );

//创建一个平面,用与呈现阴影
var planeGeometry = new THREE.PlaneBufferGeometry( 20, 20, 32, 32 );
var planeMaterial = new THREE.MeshStandardMaterial( { color: 0x00ff00 } )
var plane = new THREE.Mesh( planeGeometry, planeMaterial );
plane.receiveShadow = true;
scene.add( plane );

新手看这里

新手注意了,前面几章中,我大多情况仅仅放了部分核心代码,你如果是个新手,那么你要做的便是基础的了解,坚持下去,后面会有实战的环节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猴子喝牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值