From 03421f49b51b92f675d0bd0cae9d0ba341001b92 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期三, 22 六月 2022 10:50:03 +0800 Subject: [PATCH] # --- static/js/object/StoreConvey.js | 213 ++++++++++++++++++++++++++-------------------------- 1 files changed, 107 insertions(+), 106 deletions(-) diff --git a/static/js/object/StoreConvey.js b/static/js/object/StoreConvey.js index e3c5bf1..e844b24 100644 --- a/static/js/object/StoreConvey.js +++ b/static/js/object/StoreConvey.js @@ -1,122 +1,123 @@ 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; + } } -- Gitblit v1.9.1