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