Material
的lightMap
属性,是光照贴图,使用光照贴图可以模拟出真实的阴影效果,但是阴影的位置不能随着随着物体的移动而移动。
1、示例
示例
https://ithanmang.gitee.io/threejs/home/201809/20180905/06-lightMap-texture.html
效果
下面的阴影是通过光照贴图加载进来的,如下面的关照贴图
2、使用步骤
2.1、创建实例
let lm = new THREE.TextureLoader().load('../../textures/lightmap/lm-1.png');
planeGround.material.lightMap = lm;
将平面的材质的lightMap
设置
2.3、指定UV映射
planeGround.geometry.faceVertexUvs[1] = planeGround.geometry.faceVertexUvs[0];
为光照贴图指定uv
映射,将纹理的那一部分映射到表面,只有这样才能将关照贴图与其它贴图分别开来。
3、示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="../../../three.png">
<title>使用光照贴图创建假阴影</title>
<style>
body {
margin: 0;
overflow: hidden; /* 溢出隐藏 */
}
#loading {
position: fixed;
top: 50%;
left: 50%;
color: #FFFFFF;
font-size: 20px;
margin-top: -30px;
margin-left: -40px;
}
</style>
<script src="../../libs/build/three-r93.js"></script>
<script src="../../libs/examples/js/Detector.js"></script>
<script src="../../libs/examples/js/libs/dat.gui.min.js"></script>
<script src="../../libs/examples/js/libs/stats.min.js"></script>
<script src="../../libs/examples/js/controls/OrbitControls.js"></script>
</head>
<body>
<p id="loading">loading......</p>
<script>
let scene,