JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//cdn.rawgit.com/mrdoob/three.js/master/build/three.min.js"></script>
JavaScript
var container;
var camera, scene, renderer;
var cube, info;
var arrowUp = false;
var arrowDown = false;
var arrowLeft = false;
var arrowRight = false;
var speed = 4;
var targetRotation = 0;
var targetRotationOnMouseDown = 0;
var mouseX = 0;
var mouseXOnMouseDown = 0;
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
init();
animate();
function init() {
// Initialisation.
container = document.createElement('div');
document.body.appendChild(container);
// Définition de la caméra.
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.set( 0, 20, 30 );
// Définition de la scène.
scene = new THREE.Scene();
scene.background = new THREE.Color(0x514d41);
// plane
var geometry = new THREE.PlaneBufferGeometry(40, 40);
// Adding Cube to Scene
var material = new THREE.MeshBasicMaterial( { color: 0xc0b99c } );
cube = new THREE.Mesh(geometry, material);
cube.position.set( 0, 10, 0 );
cube.rotation.x = Math.PI * - 0.5;
scene.add(cube);
camera.lookAt( cube.position );
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
container.appendChild(renderer.domElement);
window.addEventListener( 'resize', onWindowResize, false );
}
function onWindowResize() {
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
function animate() {
requestAnimationFrame(animate);
render();
}
function render() {
renderer.render(scene, camera);
window.onkeydown = function(e) {
if(e.key == "ArrowUp") {
arrowUp = true;
arrowDown = false;
} else if(e.key == "ArrowDown") {
arrowUp = false;
arrowDown = true;
} else if(e.key == "ArrowLeft") {
arrowLeft = true;
arrowright = false;
} else...