| | |
| | | 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: 0xF5F5F5 |
| | | }); |
| | | } |
| | | this.load = function () { |
| | | new THREE.ObjectLoader().load( "../static/model/json/链条输送机.json", function (obj) { |
| | | obj.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.scale.set(1, 1, 1.6); |
| | | child.material = new THREE.MeshLambertMaterial({ |
| | | color: 0x8B8378 |
| | | }); |
| | | |
| | | 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; |
| | | console.log(clone.position.x) |
| | | clone.position.y = yOffset0; |
| | | clone.position.z = zOffset0 + 39; |
| | | object.addObject( clone ); |
| | | if (child.name === "Box034" || child.name === "Box035") { |
| | | child.material = new THREE.MeshLambertMaterial({ |
| | | color: 0x000000 |
| | | }); |
| | | } |
| | | |
| | | 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; |
| | | console.log(clone.position.x) |
| | | 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; |
| | | console.log(clone.position.x) |
| | | 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; |
| | | console.log(clone.position.x) |
| | | 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/辊筒输送机.json", function (obj) { |
| | | obj.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.scale.set(0.5, 1, 1); |
| | | child.material = new THREE.MeshLambertMaterial({ |
| | | color: 0x8B8378 |
| | | }); |
| | | } |
| | | }); |
| | | rollerList.map(item => { |
| | | that.object.addObject(customize(obj.clone(), item)); |
| | | }) |
| | | }); |
| | | new THREE.ObjectLoader().load( "../static/model/json/顶升移栽.json", function (obj) { |
| | | obj.traverse (function (child) { |
| | | if (child instanceof THREE.Mesh) { |
| | | child.scale.set(1, 1, 1); |
| | | child.material = new THREE.MeshLambertMaterial({ |
| | | color: 0x8B8378 |
| | | }); |
| | | } |
| | | }); |
| | | 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.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; |
| | | } |
| | | |
| | | } |
| | | |