| | |
| | | import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader' |
| | | import * as Utils from '../../utils' |
| | | |
| | | const help = false; |
| | | const help = true; |
| | | |
| | | export default class ShelfThree { |
| | | |
| | |
| | | initControls = () => { |
| | | const controls = new OrbitControls(this.camera, this.renderer.domElement); |
| | | // controls.enableRotate = false; // 禁用整体旋转功能 |
| | | controls.enablePan = false; // 允许平移 |
| | | controls.enablePan = true; // 允许平移 |
| | | controls.enableDamping = true; // 开启阻尼 |
| | | controls.dampingFactor = 0.08; // 阻尼因子 |
| | | controls.enableZoom = true; // 允许缩放 |
| | | // controls.minDistance = 1; // 最小缩放距离 |
| | | // controls.maxDistance = 30; // 最大缩放距离 |
| | | controls.minPolarAngle = 0; // 最小俯仰角度(向下看) |
| | | controls.minPolarAngle = Math.PI / 2.1; |
| | | // controls.minPolarAngle = Math.PI / 2.1; |
| | | controls.maxPolarAngle = Math.PI / 2.1; // 最大俯仰角度(向上看) |
| | | controls.rotateSpeed = 0.6; // 视角移动速度减慢 |
| | | controls.autoRotate = true; // 自动旋转 |
| | |
| | | } |
| | | |
| | | generateMesh = (fn) => { |
| | | // fn(this.addObject); |
| | | const loader = new FBXLoader(); |
| | | const promise = new Promise((resolve) => { |
| | | loader.load('model/04.fbx', (mesh) => { |
| | | mesh.position.set(0, 10, 0); |
| | | mesh.scale.set(5, 5, 5); |
| | | mesh.name = '1-1-1'; |
| | | mesh.traverse(function (child) { |
| | | if (child.isMesh) { |
| | | if (child.name === '不规则') { |
| | | // child.visible = false; |
| | | child.material.color.set(0xE8B67E); |
| | | } |
| | | if (child.name === '货架') { |
| | | // child.visible = false; |
| | | child.material.color.set(0x4680BF); |
| | | } |
| | | if (child.name === '托盘') { |
| | | // child.visible = false; |
| | | child.material.color.set(0xBEBEBE); |
| | | } |
| | | child.name = '1-1-1' |
| | | child.castShadow = true; |
| | | child.receiveShadow = true; |
| | | } |
| | | }); |
| | | this.addObject(mesh); |
| | | resolve(); |
| | | }) |
| | | }) |
| | | return promise; |
| | | fn(loader, this.addObject); |
| | | } |
| | | |
| | | setNewSelectedMesh = (objName) => { |