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