New file |
| | |
| | | import {MTLLoader} from "../lib/MTLLoader.js"; |
| | | import {OBJLoader} from "../lib/OBJLoader.js"; |
| | | import * as THREE from '../three.module.js'; |
| | | |
| | | const palletX = -18; |
| | | const palletY = 2; |
| | | const palletZ = -46; |
| | | |
| | | const goodsX = -17; |
| | | const goodsY = 5; |
| | | const goodsZ = -6; |
| | | |
| | | /** |
| | | * 初始化托盘模型 |
| | | * @param scene 场景 |
| | | * @param palletList 托盘数据列表 |
| | | * @param ref 参照物 |
| | | * @param type 参照物类型:1 - 货架; 2 - 输送线 |
| | | */ |
| | | function InitPallet(scene, palletList, ref, type) { |
| | | const manager = new THREE.LoadingManager(); |
| | | new OBJLoader( manager ) |
| | | .setPath( '../static/model/obj/' ) |
| | | .load( 'pallet.obj', function ( obj ) { |
| | | obj.traverse (function (child) { |
| | | child.castShadow = true; |
| | | if (child instanceof THREE.Mesh) { |
| | | child.material = new THREE.MeshLambertMaterial({ |
| | | color: 0x708090 |
| | | }); |
| | | } |
| | | }); |
| | | obj.scale.set(4, 4, 3.5); |
| | | |
| | | palletList.map(item => { |
| | | let clone = obj.clone(); |
| | | let positionX; |
| | | let positionY; |
| | | let positionZ; |
| | | switch (type) { |
| | | case 1: |
| | | positionX = ref.positionX || 0; |
| | | positionY = ref.bottomHight + (item.lev1-1)*ref.binHeight || 0; |
| | | positionZ = (item.bay1-1)*-ref.binHeight || 0; |
| | | |
| | | clone.name = item.loc_no + "-" + "Pallet"; |
| | | clone.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.name = item.loc_no + "-" + child.name; |
| | | } |
| | | }) |
| | | break; |
| | | case 2: |
| | | positionX = ref.position.x || 0; |
| | | positionY = ref.position.y || 0; |
| | | positionZ = ref.position.z || 0; |
| | | |
| | | positionX -= 48 - 1; |
| | | positionY += 20; |
| | | positionZ -= 138 + 20; |
| | | |
| | | clone.name = item.wrkNo + "-" + "Pallet"; |
| | | clone.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.name = item.wrkNo + "-" + child.name; |
| | | } |
| | | }) |
| | | break; |
| | | default: |
| | | console.error("InitPallet param[type] error ===>> " + type); |
| | | } |
| | | |
| | | clone.position.x = palletX + positionX; |
| | | clone.position.y = palletY + positionY; |
| | | clone.position.z = palletZ + positionZ; |
| | | scene.addObject(clone); |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 初始化货物模型 |
| | | * @param scene 场景 |
| | | * @param goodsList 货物数据列表 |
| | | * @param ref 参照物 |
| | | * @param type 参照物类型:1 - 货架; 2 - 输送线 |
| | | */ |
| | | function InitGoods(scene, goodsList, ref, type) { |
| | | const manager = new THREE.LoadingManager(); |
| | | const goodsWrapImg = new THREE.TextureLoader( manager ).load( '../static/img/goodsWrap.jpg' ); |
| | | const goodsImg = new THREE.TextureLoader( manager ).load( '../static/img/goods.jpg' ); |
| | | new OBJLoader( manager ).load( '../static/model/obj/goods.obj', function ( obj ) { |
| | | obj.traverse (function (child) { |
| | | child.castShadow = true; |
| | | if (child instanceof THREE.Mesh) { |
| | | if (child.name === 'goods') { |
| | | child.material.map = goodsImg; |
| | | } else if (child.name === "goods_wrap") { |
| | | child.material.map = goodsWrapImg; |
| | | } |
| | | } |
| | | }); |
| | | obj.scale.set(1, 1.2, 1.2); |
| | | |
| | | goodsList.map(item => { |
| | | let clone = obj.clone(); |
| | | let positionX; |
| | | let positionY; |
| | | let positionZ; |
| | | switch (type) { |
| | | case 1: |
| | | positionX = ref.positionX || 0; |
| | | positionY = ref.bottomHight + (item.lev1-1)*ref.binHeight || 0; |
| | | positionZ = (item.bay1-1)*-ref.binHeight || 0; |
| | | |
| | | clone.name = item.loc_no + "-" + "Goods"; |
| | | clone.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.name = item.loc_no + "-" + child.name; |
| | | } |
| | | }) |
| | | break; |
| | | case 2: |
| | | positionX = ref.position.x || 0; |
| | | positionY = ref.position.y || 0; |
| | | positionZ = ref.position.z || 0; |
| | | |
| | | positionX -= 48 - 1; |
| | | positionY += 20; |
| | | positionZ -= 138 + 20; |
| | | |
| | | clone.name = item.wrkNo + "-" + "Goods"; |
| | | clone.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.name = item.wrkNo + "-" + child.name; |
| | | } |
| | | }) |
| | | break; |
| | | default: |
| | | console.error("InitGoods param[type] error ===>> " + type); |
| | | } |
| | | |
| | | clone.position.x = goodsX + positionX; |
| | | clone.position.y = goodsY + positionY; |
| | | clone.position.z = goodsZ + positionZ; |
| | | scene.addObject(clone); |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | function StoreGoods(object, data, shelf) { |
| | | let that = this; |
| | | |
| | | that.data = data; |
| | | that.object = object; |
| | | that.shelf = shelf; |
| | | |
| | | let palletList = []; |
| | | let goodsList = []; |
| | | |
| | | let init = function () { |
| | | for (let i=0;i<that.data.length;i++) { |
| | | let obj = that.data[i]; |
| | | if (obj.loc_sts === 'D') { |
| | | palletList.push(obj); |
| | | } else if (obj.loc_sts === 'F') { |
| | | palletList.push(obj); |
| | | goodsList.push(obj); |
| | | } |
| | | } |
| | | if (palletList.length > 0) { |
| | | InitPallet(that.object, palletList, that.shelf, 1); |
| | | } |
| | | if (goodsList.length > 0) { |
| | | InitGoods(that.object, goodsList, that.shelf, 1); |
| | | } |
| | | } |
| | | init(); |
| | | |
| | | } |
| | | |
| | | // export {StoreGoods, InitPallet, InitGoods} |