JSFiddle - React, Tailwind, and code Playground
by paulocoelho
HTML
<script src="http://threejs.org/build/three.min.js"></script>
<script src="http://threejs.org/examples/js/loaders/OBJLoader.js"></script>
<script src="http://threejs.org/examples/js/loaders/OBJMTLLoader.js"></script>
<script src="http://threejs.org/examples/js/loaders/MTLLoader.js"></script>
CSS
body {
background:black;
}
JavaScript
var container, stats;
var camera, scene, renderer;
var cube, plane;
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
var mouseX, mouseY, projector;
init();
function init() {
container = document.createElement('div');
document.body.appendChild(container);
window.addEventListener( 'mousemove', onMouseMove, false );
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.x = 50;
camera.position.y = 50;
camera.position.z = 50;
camera.lookAt(new THREE.Vector3(0, 0, 0));
scene = new THREE.Scene();
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;
container.appendChild(renderer.domElement);
light = new THREE.SpotLight();
light.position.set(300, 300, 300);
scene.add(light);
var litCube = new THREE.Mesh(
new THREE.CubeGeometry(5, 5, 5),
new THREE.MeshLambertMaterial({
color: 0xFFFFFF
}));
litCube.position.y = 15;
litCube.position.z = 30;
scene.add(litCube);
projector = new THREE.Projector();
var loader = new THREE.OBJMTLLoader();
loader.addEventListener("load", function (event) {
cube = event.content;
scene.add(cube);
animate();
});
loader.load("https://dl.dropboxusercontent.com/u/4334059/VM.obj", "https://dl.dropboxusercontent.com/u/4334059/VM.mtl");
}
function animate() {
requestAnimationFrame(animate);
render();
}
function render() {
var vector = new THREE.Vector3(mouseX, mouseY, 1);
projector.unprojectVector(vector, camera);
var ray = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = ray.intersectObjects(scene.children);
console.log(intersects.length);
renderer.render(scene, camera);
}
function onMouseMove(e) {
...