UNPKG

threejs-render-region

Version:

A convenient way to manage the threejs viewport and scissor.

63 lines (59 loc) 1.88 kB
var onReady = function() { var View = require('threejs-managed-view').View; var RenderRegion = require('./'); var view = new View({ useRafPolyfill: false }); var scene = view.scene; var sphereGeometry = new THREE.SphereGeometry(1.5); var size = 500; var sizeHalf = size * .5; var bounds = new THREE.Box3( new THREE.Vector3(-sizeHalf, -sizeHalf, -sizeHalf), new THREE.Vector3(sizeHalf, sizeHalf, sizeHalf) ) var random = new THREE.Vector3(); var boundSize = bounds.size(); for (var i = 0; i < 1200; i++) { var ball = new THREE.Mesh(sphereGeometry); scene.add(ball); random.set( Math.random(), Math.random(), Math.random() ); ball.position.copy(bounds.min).add(random.multiply(boundSize)); }; var camera2 = view.camera.clone(); scene.add(camera2); var renderRegion = new RenderRegion(view.domSize.x, view.domSize.y, 0, 0, view.domSize.x * .5, view.domSize.y); var renderRegion2 = new RenderRegion(view.domSize.x, view.domSize.y, view.domSize.x * .5, 0, view.domSize.x * .5, view.domSize.y); view.onResizeSignal.add(function(w, h) { renderRegion.setFullSizeAndRegion(w, h, 0, 0, w * .5, h); renderRegion2.setFullSizeAndRegion(w, h, w * .5, 0, w * .5, h); }) view.renderManager.onEnterFrame.add(function() { renderRegion.apply(view.renderer); }) view.renderManager.onExitFrame.add(function() { renderRegion2.apply(view.renderer); view.renderer.autoClear = false; view.renderer.render(view.scene, camera2); view.renderer.autoClear = true; }) renderRegion.listenForChange(function(x, y, w, h) { view.camera.aspect = w/h; view.camera.updateProjectionMatrix(); }) renderRegion2.listenForChange(function(x, y, w, h) { camera2.aspect = w/h; camera2.updateProjectionMatrix(); }) } var loadAndRunScripts = require('loadandrunscripts'); loadAndRunScripts( [ 'bower_components/three.js/three.js' ], onReady );