我正在建造一个第一人称迷宫——迷宫中的每一面墙都是一个THREE.PlaneGeometry
. 据我了解,将这些墙全部合并为单个对象是更好的做法。我创建了一个类“墙”,每次添加新的“墙”时都会这样做:
this.geometry.merge(wall.mesh.geometry, wall.mesh.matrix);
添加完所有墙壁后,我创建一个材质 + 应用一个纹理:
this.material = new THREE.MeshBasicMaterial( {
map: this.texture,
side: THREE.DoubleSide
} );
this.mesh = new THREE.Mesh( this.geometry, this.material );
我遇到的问题是墙壁的宽度并不完全相同,因此纹理映射在合并的地理上变得很时髦( Image Here )。每个平面接收整个纹理并将其拉伸到其尺寸。请记住,所有墙壁都需要相同的纹理,那么将纹理“包裹”在墙壁周围的最佳方法是什么?还是我应该首先以不同的方式建造墙壁?
我也尝试Three.MultiMaterial(materials)
过THREE.MeshFaceMaterial(materials)
(为每面墙提供独特的材料),但这些都严重影响了性能。
提前致谢,
快乐的时光,
Ĵ
截图:迷宫图像