通过给物体设置环境贴图envMap
可以实现虚假的反射效果,通过设置CubeCamera
可以实现动态的反光,设置材质的refractionRatio
属性可以实现透明反射的效果。
1、示例
示例
http://ithanmang.com/threeJs/home/201809/20180907/03-refraction-texture.html
效果
2、实现步骤
2.1、refractionRatio
refractionRatio
:是物体对环境贴图的折射率,值越接近0
的话,对贴图的反射越强烈,越接近1
则月接近透明状态,需要配合THREE.CubeRefractionMapping
和THREE.EquirectangularRefractionMapping
一起使用。
2.2、设置环境贴图和映射方式
var cubeTexture = new THREE.CubeTextureLoader().setPath('../../textures/cube/Bridge2/')
.load(
[
'posx.jpg',
'negx.jpg',
'posy.jpg',
'negy.jpg',
'posz.jpg',
'negz.jpg'
]
);
cubeTexture.mapping = THREE.CubeRefractionMapping;
scene.background = cubeTexture;
2.3、设置材质的映射率
envMap: cubeTexture,
refractionRatio:0.98,
reflectivity:0.9
首先,需要设置环境贴图,然后设置设置率,设置贴图的反射率
3、示例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="../../../three.png">
<title>通过 Reflector 创建反光镜</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>
&l