Skip to content
Snippets Groups Projects
GIKPartLowPoly.js 1.44 KiB
/**
 * Created by aghassaei on 6/8/15.
 */



define(['underscore', 'stlLoader', 'gikPart', 'bin!gikPartLowPolySTL', 'bin!gikEndPartLowPolySTL'], function(_, THREE, GIKPart, gikPartLowPoly, gikEndPartLowPoly){

    var loader = new THREE.STLLoader();
    var unitGeo = preProcessGeo(loader.parse(gikPartLowPoly));
    var unitGeoEnd = preProcessGeo(loader.parse(gikEndPartLowPoly), true);

    function preProcessGeo(geo, endPart){
        geo.computeBoundingBox();
        if (endPart) geo.applyMatrix(new THREE.Matrix4().makeTranslation(-(geo.boundingBox.min.x+0.5),
            -(geo.boundingBox.min.y+geo.boundingBox.max.y)/2, -(geo.boundingBox.min.z+geo.boundingBox.max.z)/2));
        else geo.applyMatrix(new THREE.Matrix4().makeTranslation(-(geo.boundingBox.min.x+geo.boundingBox.max.x)/2,
            -(geo.boundingBox.min.y+geo.boundingBox.max.y)/2, -(geo.boundingBox.min.z+geo.boundingBox.max.z)/2));
        var unitScale = 1/(1.2699999809265137);
        geo.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2));
        geo.applyMatrix(new THREE.Matrix4().makeScale(unitScale, unitScale, unitScale));
        return geo;
    }

    function GIKPartLowPoly(index, parent){
        GIKPart.call(this, index, parent);
    }
    GIKPartLowPoly.prototype = Object.create(GIKPart.prototype);

    GIKPartLowPoly.prototype._getGeometry = function(){
        if (this._isEnd()) return unitGeoEnd;
        return unitGeo;
    };

    return GIKPartLowPoly;
});