|  |  | 
 |  |  | 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/链条输送机.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: 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.MeshLambertMaterial({ | 
 |  |  |                             color: 0x000000 | 
 |  |  |                         }); | 
 |  |  |                     } | 
 |  |  |                     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/辊筒输送机.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: 0x444444 | 
 |  |  |                     }); | 
 |  |  |                     child.castShadow = true; | 
 |  |  |                     child.receiveShadow = true; | 
 |  |  |                 } | 
 |  |  |             }); | 
 |  |  |             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: 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.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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 |  |  |  |