#
luxiaotao1123
2021-12-25 ce9da384d05f0b6b50aeeb5c3a00e53694695976
static/js/object/StoreConvey.js
@@ -1,126 +1,117 @@
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: 0xF5F5F5
                            });
                        }
    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: 0x8B8378
                    });
                    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;
                        console.log(clone.position.x)
                        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
                        });
                    }
                    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;
                        console.log(clone.position.x)
                        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;
                        console.log(clone.position.x)
                        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;
                        console.log(clone.position.x)
                        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: 0x8B8378
                    });
                }
            });
            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: 0x8B8378
                    });
                }
            });
            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;
    }
}