From 4f7e5d3dc070ea46f4ca243bcbae9eda76d8c8a0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期一, 21 三月 2022 16:19:04 +0800
Subject: [PATCH] #

---
 static/js/object/StoreCrn.js |  146 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 111 insertions(+), 35 deletions(-)

diff --git a/static/js/object/StoreCrn.js b/static/js/object/StoreCrn.js
index fa10a4c..e0d70f9 100644
--- a/static/js/object/StoreCrn.js
+++ b/static/js/object/StoreCrn.js
@@ -1,46 +1,122 @@
+import {MTLLoader} from "../lib/MTLLoader.js";
+import {OBJLoader} from "../lib/OBJLoader.js";
+
+const xOffset = -1735;
+const yOffset = -289;
+const zOffset = -480;
+
+const xOffset0 = -1735;
+const yOffset0 = -117;
+const zOffset0 = -480;
+
+const xOffset1 = -1735;
+const yOffset1 = -116;
+const zOffset1 = -475;
+
 function StoreCrn(option, object) {
-    this.crnBodyLength = option.crnBody.length||30;//搴撲綅闀垮害
+    let that = this;
+    this.crnBodyLength = option.crnBody.length||50;//搴撲綅闀垮害
     this.crnBodyWidth = option.crnBody.width||50;//搴撲綅瀹�
     this.crnBodyHeight = option.crnBody.height||500;//搴撲綅楂�
     this.crnLoadLength = option.crnLoad.length||60;//搴撲綅闀垮害
     this.crnLoadWidth = option.crnLoad.width||60;//搴撲綅瀹�
     this.crnLoadHeight = option.crnLoad.height||40;//搴撲綅楂�
-    this.crnForkLength = option.crnFork.length||80;//搴撲綅闀垮害
+    this.crnForkLength = option.crnFork.length||50;//搴撲綅闀垮害
     this.crnForkWidth = option.crnFork.width||20;//搴撲綅瀹�
     this.crnForkHeight = option.crnFork.height||30;//搴撲綅楂�
 
-    // 绔嬫煴
-    var a = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnBodyLength, this.crnBodyHeight, this.crnBodyWidth), new THREE.MeshBasicMaterial({
-        color: 0xff0000,
-        transparent: true,
-        opacity: .3
-    }))
-    a.name = option.crnNo + "-body";
-    a.position.x = option.crnBody.position.x;
-    a.position.y = option.crnBody.position.y + this.crnBodyHeight/2;
-    a.position.z = option.crnBody.position.z - this.crnBodyWidth/2;
-    object.addObject(a);
-    // 杞借揣鍙�
-    var b = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnLoadLength, this.crnLoadHeight, this.crnLoadWidth), new THREE.MeshBasicMaterial({
-        color: 0x00ff00,
-        transparent: true,
-        opacity: .5
-    }))
-    b.name = option.crnNo + "-load";
-    b.position.x = option.crnLoad.position.x;
-    b.position.y = option.crnLoad.position.y + this.crnLoadHeight/2;
-    b.position.z = option.crnLoad.position.z - this.crnLoadWidth/2 + 5;
-    object.addObject(b);
-    // 鍙夌墮
-    var c = new THREE.Mesh(new THREE.BoxBufferGeometry(this.crnForkLength, this.crnForkWidth, this.crnForkHeight), new THREE.MeshBasicMaterial({
-        color: 0xff00ff,
-        transparent: true,
-        opacity: 1
-    }))
-    c.name = option.crnNo + "-fork";
-    c.position.x = option.crnFork.position.x;
-    c.position.y = option.crnFork.position.y + this.crnLoadHeight/2;
-    c.position.z = option.crnFork.position.z - this.crnLoadWidth/2;
-    object.addObject(c);
+    const manager = new THREE.LoadingManager();
+    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 ) {
+                    obj.traverse (function (child) {
+                        child.castShadow = true;
+                        // child.receiveShadow = true;
+                        if (child instanceof THREE.Mesh) {
+                            child.material = new THREE.MeshLambertMaterial({
+                                color: 0xCD6839
+                            });
+                        }
+                    });
+
+                    obj.scale.set(0.03, 0.03, 0.03);
+                    obj.rotateY(- Math.PI / 2);
+                    obj.name = option.crnNo + "-body";
+                    obj.position.x = option.crnBody.position.x + xOffset;
+                    obj.position.y = option.crnBody.position.y + that.crnBodyHeight/2 + yOffset;
+                    obj.position.z = option.crnBody.position.z - that.crnBodyWidth/2 + zOffset;
+                    obj.userData['crnBodyLength'] = that.crnBodyLength;
+                    obj.userData['crnBodyWidth'] = that.crnBodyWidth;
+                    obj.userData['crnBodyHeight'] = that.crnBodyHeight;
+                    object.addObject( obj );
+                }, null, 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 ) {
+                    obj.traverse (function (child) {
+                        if (child instanceof THREE.Mesh) {
+                            child.castShadow = true;
+                            // child.receiveShadow = true;
+                            child.material = new THREE.MeshLambertMaterial({
+                                color: 0xD2691E
+                            });
+                        }
+                    });
+
+                    obj.scale.set(0.03, 0.03, 0.03);
+                    obj.rotateY(- Math.PI / 2);
+                    obj.name = option.crnNo + "-load";
+                    obj.position.x = option.crnLoad.position.x + xOffset0;
+                    obj.position.y = option.crnLoad.position.y + that.crnLoadHeight/2 + yOffset0;
+                    obj.position.z = option.crnLoad.position.z - that.crnLoadWidth/2 + 5 + zOffset0;
+                    obj.userData['crnLoadLength'] = that.crnLoadLength;
+                    obj.userData['crnLoadWidth'] = that.crnLoadWidth;
+                    obj.userData['crnLoadHeight'] = that.crnLoadHeight;
+                    object.addObject( obj );
+                }, null, 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 ) {
+                    obj.traverse (function (child) {
+                        if (child instanceof THREE.Mesh) {
+                            child.castShadow = true;
+                            // child.receiveShadow = true;
+                            child.material = new THREE.MeshLambertMaterial({
+                                color: 0x363636
+                            });
+                        }
+                    });
+
+                    obj.scale.set(0.03, 0.03, 0.03);
+                    obj.rotateY(- Math.PI / 2);
+                    obj.name = option.crnNo + "-fork";
+                    obj.position.x = option.crnFork.position.x + xOffset1;
+                    obj.position.y = option.crnFork.position.y + that.crnLoadHeight/2 + yOffset1;
+                    obj.position.z = option.crnFork.position.z - that.crnLoadWidth/2 + zOffset1;
+                    obj.userData['crnForkLength'] = that.crnForkLength;
+                    obj.userData['crnForkWidth'] = that.crnForkWidth;
+                    obj.userData['crnForkHeight'] = that.crnForkHeight;
+                    object.addObject( obj );
+                }, null, null );
+        });
 
 }
+
+export {StoreCrn}

--
Gitblit v1.9.1