/** * 地板 * @param option * @constructor */ function Floor(option) { this.length = option.length || 5000; this.width = option.width || 5000; this.height = option.height || 1; this.Name = option.objName; this.positionX = option.position.x || 0; this.positionY = option.position.y || 0; this.positionZ = option.position.z || 0; this.style = option.style || {color: 0xFF0000}; // 材质 // var texture = null; // var material = new THREE.MeshPhongMaterial({map: texture, color: option.style.color}); // if (option.style.image != null) { // texture = new THREE.TextureLoader().load(option.style.image); // if (option.style.allowRepeat === 1) { // texture.repeat.x = option.length / 128; // texture.repeat.y = option.width / 128; // texture.repeat.y = 5; // texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // // } // material = new THREE.MeshPhongMaterial({map: texture}); // } var floorMat = new THREE.MeshStandardMaterial( { roughness: 0.8, color: 0xffffff, metalness: 0.2, bumpScale: 0.0005 } ); const textureLoader = new THREE.TextureLoader(); textureLoader.load( "../static/img/floor/hardwood2_diffuse.jpg", function ( map ) { map.wrapS = THREE.RepeatWrapping; map.wrapT = THREE.RepeatWrapping; map.anisotropy = 4; map.repeat.set( 10, 24 ); map.encoding = THREE.sRGBEncoding; floorMat.map = map; floorMat.needsUpdate = true; } ); textureLoader.load( "../static/img/floor/hardwood2_bump.jpg", function ( map ) { map.wrapS = THREE.RepeatWrapping; map.wrapT = THREE.RepeatWrapping; map.anisotropy = 4; map.repeat.set( 10, 24 ); floorMat.bumpMap = map; floorMat.needsUpdate = true; } ); textureLoader.load( "../static/img/floor/hardwood2_roughness.jpg", function ( map ) { map.wrapS = THREE.RepeatWrapping; map.wrapT = THREE.RepeatWrapping; map.anisotropy = 4; map.repeat.set( 10, 24 ); floorMat.roughnessMap = map; floorMat.needsUpdate = true; } ); const floorGeometry = new THREE.PlaneGeometry( this.length, this.width ); const floorMesh = new THREE.Mesh( floorGeometry, floorMat ); floorMesh.receiveShadow = true; floorMesh.rotation.x = - Math.PI / 2.0; return floorMesh; // if (option.style.transparent === 1) { // material.transparent = true; // } // if (option.style.depthTest === 0) { // material.depthTest = false; // } // material.opacity = option.style.opacity; // // 模型 // let cubeGeometry = new THREE.BoxGeometry(this.length, this.height, this.width); // // let cube = new THREE.Mesh(cubeGeometry, material); // cube.name = this.Name; // cube.position.x = this.positionX; // cube.position.y = this.positionY; // cube.position.z = this.positionZ; // return cube; }