Loop Subdivision

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r70/three.min.js"></script>
<script src="https://dl.dropboxusercontent.com/u/3587259/Code/Threejs/OrbitControls.js">
    
</script>
<script src="http://threejs.org/examples/js/modifiers/SubdivisionModifier.js"></script>

CSS

body {
    font-family: Monospace;
    background-color: #f0f0f0;
    margin: 0px;
    overflow: hidden;
}

JavaScript

var container;
var camera, controls, scene, renderer;
var cube, plane;

// Create new object by parameters

var createSomething = function (klass, args) {

    var F = function (klass, args) {

        return klass.apply(this, args);

    };

    F.prototype = klass.prototype;

    return new F(klass, args);

};


// Cube

var materials = [];

for (var i = 0; i < 6; i++) {

    materials.push([new THREE.MeshBasicMaterial({
        color: Math.random() * 0xffffff,
        wireframe: false
    })]);

}



var geometriesParams = [

{
    type: 'BoxGeometry',
    args: [200, 200, 200, 2, 2, 2, materials]
}, {
    type: 'TorusGeometry',
    args: [100, 60, 4, 8, Math.PI * 2]
}, {
    type: 'TorusKnotGeometry',
    args: [],
    scale: 0.25,
    meshScale: 4
}, {
    type: 'SphereGeometry',
    args: [100, 3, 3],
    meshScale: 2
}, {
    type: 'IcosahedronGeometry',
    args: [100, 1],
    meshScale: 2
}, {
    type: 'CylinderGeometry',
    args: [25, 75, 200, 8, 3]
}, {
    type: 'OctahedronGeometry',
    args: [200, 0],
    meshScale: 2
}, {
    type: 'LatheGeometry',
    args: [
        [
        new THREE.Vector3(0, 0, 0),
        new THREE.Vector3(0, 50, 50),
        new THREE.Vector3(0, 10, 100),
        new THREE.Vector3(0, 50, 150),
        new THREE.Vector3(0, 0, 200)]
    ]
}, /* {
    type: 'TextGeometry',
    args: ['&', {
        size: 200,
        height: 50,
        curveSegments: 1,
        font: "helvetiker"

    }]
},*/ {
    type: 'PlaneGeometry',
    args: [200, 200, 4, 4]
}

];
/*
var loader = new THREE.JSONLoader();
loader.load('obj/WaltHeadLo.js', function (geometry) {

    geometriesParams.push({
        type: 'WaltHead',
        args: [],
        meshScale: 6
    });

    THREE.WaltHead = function () {
        return geometry.clone();
    };

    updateInfo()

});

var loader2 = new THREE.JSONLoader();
loader2.load('obj/Suzanne.js', function (geometry) {

    geometriesParams.push({
        type: 'Suzanne',
        args: [],
        scale:...