| New file | 
 |  |  | 
 |  |  | /** | 
 |  |  |  * 地板 | 
 |  |  |  * @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; | 
 |  |  | } |