|  |  |  | 
|---|
|  |  |  | import {MTLLoader} from "../lib/MTLLoader.js"; | 
|---|
|  |  |  | import {OBJLoader} from "../lib/OBJLoader.js"; | 
|---|
|  |  |  | import {Color} from "../three.module.js"; | 
|---|
|  |  |  | import * as THREE from '../three.module.js'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const xOffset = -1658; | 
|---|
|  |  |  | const yOffset = -553; | 
|---|
|  |  |  | const zOffset = -1800; | 
|---|
|  |  |  | function StoreConvey(object, data) { | 
|---|
|  |  |  | let that = this; | 
|---|
|  |  |  | that.data = null; | 
|---|
|  |  |  | that.object = null; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const xOffset0 = -1407; | 
|---|
|  |  |  | const yOffset0 = 0; | 
|---|
|  |  |  | const zOffset0 = 490; | 
|---|
|  |  |  | let chainList = []; | 
|---|
|  |  |  | let rollerList = []; | 
|---|
|  |  |  | let transportList = []; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function StoreConvey(object) { | 
|---|
|  |  |  | let init = function () { | 
|---|
|  |  |  | that.data = data; | 
|---|
|  |  |  | that.object = object; | 
|---|
|  |  |  | for (let i=0;i<that.data.length;i++) { | 
|---|
|  |  |  | let conveyObj = that.data[i]; | 
|---|
|  |  |  | switch (conveyObj.objectType) { | 
|---|
|  |  |  | case "chain": | 
|---|
|  |  |  | chainList.push(conveyObj); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "roller": | 
|---|
|  |  |  | rollerList.push(conveyObj); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "transport": | 
|---|
|  |  |  | transportList.push(conveyObj); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | init(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const manager = new THREE.LoadingManager(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let chain = null; | 
|---|
|  |  |  | new MTLLoader(manager) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '链条输送机.mtl', function ( materials ) { | 
|---|
|  |  |  | materials.preload(); | 
|---|
|  |  |  | new OBJLoader( manager ) | 
|---|
|  |  |  | .setMaterials( materials ) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '链条输送机.obj', function ( obj ) { | 
|---|
|  |  |  | chain = obj; | 
|---|
|  |  |  | chain.scale.set(0.03, 0.03, 0.025); | 
|---|
|  |  |  | chain.rotateY( -Math.PI / 2); | 
|---|
|  |  |  | chain.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.material = new THREE.MeshLambertMaterial({ | 
|---|
|  |  |  | color: 0xAAAAAA | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.load = function () { | 
|---|
|  |  |  | new THREE.ObjectLoader().load( "../static/model/json/chainConvey.json", function (obj) { | 
|---|
|  |  |  | obj.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.scale.set(1, 1, 1.6); | 
|---|
|  |  |  | child.material = new THREE.MeshPhysicalMaterial({ | 
|---|
|  |  |  | color: 0x444444 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (let i = 0; i<24; i++) { | 
|---|
|  |  |  | let clone = chain.clone(); | 
|---|
|  |  |  | // roller.name = option.crnNo + "-body"; | 
|---|
|  |  |  | let offset = 0; | 
|---|
|  |  |  | if (i % 2 === 0) { | 
|---|
|  |  |  | offset = 90; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230; | 
|---|
|  |  |  | clone.position.y = yOffset0; | 
|---|
|  |  |  | clone.position.z = zOffset0 + 39; | 
|---|
|  |  |  | object.addObject( clone ); | 
|---|
|  |  |  | if (child.name === "Box034" || child.name === "Box035") { | 
|---|
|  |  |  | child.material = new THREE.MeshPhysicalMaterial({ | 
|---|
|  |  |  | color: 0x1C1C1C | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | child.castShadow = true; | 
|---|
|  |  |  | // child.receiveShadow = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (let i = 0; i<24; i++) { | 
|---|
|  |  |  | let clone = chain.clone(); | 
|---|
|  |  |  | // roller.name = option.crnNo + "-body"; | 
|---|
|  |  |  | let offset = 0; | 
|---|
|  |  |  | if (i % 2 === 0) { | 
|---|
|  |  |  | offset = 90; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230; | 
|---|
|  |  |  | clone.position.y = yOffset0; | 
|---|
|  |  |  | clone.position.z = zOffset0 + 39 + 82; | 
|---|
|  |  |  | object.addObject( clone ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (let i = 0; i<24; i++) { | 
|---|
|  |  |  | var clone = chain.clone(); | 
|---|
|  |  |  | // roller.name = option.crnNo + "-body"; | 
|---|
|  |  |  | let offset = 0; | 
|---|
|  |  |  | if (i % 2 === 0) { | 
|---|
|  |  |  | offset = 90; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230; | 
|---|
|  |  |  | clone.position.y = yOffset0 + 310; | 
|---|
|  |  |  | clone.position.z = zOffset0 + 39; | 
|---|
|  |  |  | object.addObject( clone ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (let i = 0; i<24; i++) { | 
|---|
|  |  |  | let clone = chain.clone(); | 
|---|
|  |  |  | // roller.name = option.crnNo + "-body"; | 
|---|
|  |  |  | let offset = 0; | 
|---|
|  |  |  | if (i % 2 === 0) { | 
|---|
|  |  |  | offset = 90; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | clone.position.x = xOffset0 + 56 + offset + Math.floor(i/2)*230; | 
|---|
|  |  |  | clone.position.y = yOffset0 + 310; | 
|---|
|  |  |  | clone.position.z = zOffset0 + 39 + 82; | 
|---|
|  |  |  | object.addObject( clone ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, null, null ); | 
|---|
|  |  |  | chainList.map(item => { | 
|---|
|  |  |  | that.object.addObject(customize(obj.clone(), item)); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let roller = null; | 
|---|
|  |  |  | new MTLLoader(manager) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '123.mtl', function ( materials ) { | 
|---|
|  |  |  | materials.preload(); | 
|---|
|  |  |  | new OBJLoader( manager ) | 
|---|
|  |  |  | .setMaterials( materials ) | 
|---|
|  |  |  | .setPath( '../static/model/obj/' ) | 
|---|
|  |  |  | .load( '123.obj', function ( obj ) { | 
|---|
|  |  |  | roller = obj; | 
|---|
|  |  |  | roller.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.material = new THREE.MeshLambertMaterial({ | 
|---|
|  |  |  | color: 0xCD6839 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | new THREE.ObjectLoader().load( "../static/model/json/rollerConvey.json", function (obj) { | 
|---|
|  |  |  | obj.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.scale.set(0.5, 1, 1); | 
|---|
|  |  |  | child.material = new THREE.MeshPhysicalMaterial({ | 
|---|
|  |  |  | color: 0x444444 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | child.castShadow = true; | 
|---|
|  |  |  | // child.receiveShadow = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | rollerList.map(item => { | 
|---|
|  |  |  | that.object.addObject(customize(obj.clone(), item)); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | new THREE.ObjectLoader().load( "../static/model/json/transportConvey.json", function (obj) { | 
|---|
|  |  |  | obj.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | child.scale.set(1, 1, 1); | 
|---|
|  |  |  | child.material = new THREE.MeshPhysicalMaterial({ | 
|---|
|  |  |  | color: 0x444444 | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | transportList.map(item => { | 
|---|
|  |  |  | that.object.addObject(customize(obj.clone(), item)); | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | roller.scale.set(1000, 1000, 1000); | 
|---|
|  |  |  | roller.rotateY(- Math.PI / 2); | 
|---|
|  |  |  | // roller.name = option.crnNo + "-body"; | 
|---|
|  |  |  | roller.position.x = xOffset; | 
|---|
|  |  |  | roller.position.y = yOffset; | 
|---|
|  |  |  | roller.position.z = zOffset; | 
|---|
|  |  |  | // object.addObject( roller ); | 
|---|
|  |  |  | function customize(clone, info) { | 
|---|
|  |  |  | let positionX = info.position.x || 0; | 
|---|
|  |  |  | let positionY = info.position.y || 0; | 
|---|
|  |  |  | let positionZ = info.position.z || 0; | 
|---|
|  |  |  | let rotateY = info.rotateY || 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, null, null ); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | clone.name = info.no + "-sta"; | 
|---|
|  |  |  | clone.position.x = 0 + positionX; | 
|---|
|  |  |  | clone.position.y = 0 + positionY; | 
|---|
|  |  |  | clone.position.z = 0 + positionZ; | 
|---|
|  |  |  | clone.rotateY(rotateY); | 
|---|
|  |  |  | if (info.traverse !== undefined) { | 
|---|
|  |  |  | let traverse = info.traverse; | 
|---|
|  |  |  | clone.traverse (function (child) { | 
|---|
|  |  |  | if (child instanceof THREE.Mesh) { | 
|---|
|  |  |  | // 拉伸 | 
|---|
|  |  |  | if (traverse.scale !== undefined) { | 
|---|
|  |  |  | let scaleX = traverse.scale.x || 1; | 
|---|
|  |  |  | let scaleY = traverse.scale.y || 1; | 
|---|
|  |  |  | let scaleZ = traverse.scale.z || 1; | 
|---|
|  |  |  | child.scale.set(scaleX, scaleY, scaleZ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 颜色 | 
|---|
|  |  |  | if (traverse.color !== undefined) { | 
|---|
|  |  |  | child.material = new THREE.MeshLambertMaterial({ | 
|---|
|  |  |  | color: traverse.color | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return clone; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|