JSFiddle - React, Tailwind, and code Playground
by grano
HTML
<script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://threejs.org/examples/js/dat.gui.module.js"></script>
CSS
body {
margin: 0;
}
JavaScript
var camera1, camera2, scene, renderer, controls;
var geometry, material, mesh;
var views;
init();
setView();
animate();
function init() {
//renderer
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
// scene
scene = new THREE.Scene();
// camera
camera1 = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 50 );
camera1.position.set(0,0,0)
const cameraHelper = new THREE.CameraHelper( camera1 );
scene.add(cameraHelper)
camera2 = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 1000 );
camera2.position.set(0,10,50);
camera2.lookAt(0,0,0);
// camera control
controls = new THREE.OrbitControls( camera1, renderer.domElement );
controls.target.set( 0, 0, -10 );
// cube
const cubeGeometry = new THREE.BoxGeometry( 1, 1, 1 );
const cubeMaterial = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
const cubeMesh = new THREE.Mesh( cubeGeometry, cubeMaterial );
scene.add( cubeMesh );
cubeMesh.position.z = -10;
geometry = new THREE.SphereGeometry( 5, 32, 32 );
material = new THREE.MeshBasicMaterial( {color: 0xffff00} );
mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
mesh.position.set(0,0,-20);
scene.add(mesh);
}
function setView() {
views = [
{
camera: camera1,
left: 0,
bottom: 0,
width: 1.0,
height: 1.0,
fov: 45,
background: new THREE.Color(0x000000),
},
{
camera: camera2,
left: 0.65,
bottom: 0.0,
width: 0.35,
height: 0.5,
fov: 45,
background: new THREE.Color(0xffffff),
},
]
}
function animate() {
requestAnimationFrame( animate );
controls.update()
views.forEach( (view) => {
const left = Math.floor( window.innerWidth * view.left );
const bottom =...