MX.Tableaux.ColumnsSplit = MX.Tableau.extend({ init: function (opt) { this.opt = opt = defaults(opt, { width: 100, height: 100, depth: 100, norm: 0.5, gap: 5, x: 0, y: 0, z: 0, rotationY: 0, scale: 1, count: 1, }) opt.colorBottom = opt.colorBottom || opt.color if ( ! (opt.norm instanceof Array) ) { opt.norm = [ opt.norm, opt.norm ] } var norm, spacingX, spacingZ, scalebox for (var i = 0; i < opt.count; i++) { norm = lerp( i/(opt.count-1), opt.norm[0], opt.norm[1] ) spacingX = opt.spacingX * i spacingZ = opt.spacingZ * i scalebox = new MX.ScaleBox({ "width": opt.width, "height": opt.height * norm, "depth": opt.depth, "x": opt.x + spacingX, "y": opt.y + opt.gap, "z": opt.z + spacingZ, "color": opt.color, "sides": "top bottom left right front back", "rotationY": opt.rotationY, }); scene.add(scalebox) scalebox = new MX.ScaleBox({ "width": opt.width, "height": opt.height * (1 - norm), "depth": opt.depth, "x": opt.x + spacingX, "y": opt.y - opt.height * (1 - norm) - opt.gap, "z": opt.z + spacingZ, "color": opt.colorBottom, "sides": "top bottom left right front back", "rotationY": opt.rotationY, }); scene.add(scalebox) } } })