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