# 问题
最近在使用 threejs 自带的 Water 方法时,发现如何配置都无法产生水流效果。
threejs 版本:
"three": "^0.167.0" |
配置如下:
const waterGeometry = new THREE.CircleGeometry(300, 64) | |
const water = new Water(waterGeometry, { | |
textureWidth: 1024, | |
textureHeight: 1024, | |
color: 0xeeeeff, | |
flowDirection: new THREE.Vector2(1, 1), | |
scale: 1 | |
}) | |
water.rotation.x = -Math.PI / 2 | |
water.position.y = 0 | |
scene.add(water) |
# 解决办法:
# 方式 1:
public 目录下需要引入 water 的纹理素材【threejs 中的 example 拷贝过来即可】,保证目录结构与源码一致。
目录结构如下:
public | |
|---textures | |
|------water | |
|---------Water_1_M_Flow.jpg | |
|---------Water_1_M_Normal.jpg | |
|---------Water_2_M_Normal.jpg |
# 方式 2:
补上这俩属性就行:
- normalMap0
- normalMap1
normalMap0: new THREE.TextureLoader().load( | |
"texture/water/Water_1_M_Normal.jpg", | |
texture => { | |
texture.wrapS = texture.wrapT = THREE.RepeatWrapping; | |
} | |
), | |
normalMap1: new THREE.TextureLoader().load( | |
"texture/water/Water_2_M_Normal.jpg", | |
texture => { | |
texture.wrapS = texture.wrapT = THREE.RepeatWrapping; | |
} | |
), |