three.js Zelfstudie
Aan de slag met three.js
Zoeken…
Opmerkingen
Het doel van het project is het creëren van een lichtgewicht 3D-bibliotheek met een zeer lage complexiteit - met andere woorden, voor dummies. De bibliotheek biedt canvas-, svg-, CSS3D- en WebGL-renderers.
versies
Versie | changelog | Publicatiedatum |
---|---|---|
R85 | Koppeling | 2017/04/25 |
R84 | Koppeling | 2017/01/19 |
R83 | Koppeling | 2016/12/15 |
R82 | Koppeling | 2016/12/15 |
R81 | Koppeling | 2016/09/16 |
R80 | Koppeling | 2016/08/23 |
R79 | Koppeling | 2016/07/14 |
R78 | Koppeling | 2016/06/20 |
Installatie of instellingen
- Je kunt three.js installeren via npm:
npm install three
- U kunt het van een CDN aan uw HTML toevoegen:
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r83/three.js"></script>
- U kunt de three.js-editor gebruiken om het eens te proberen en het project als voorbeeld of startpunt downloaden.
Eenvoudige ketelplaat: draaiende kubus- en baanbesturing met demping
Dit is het eenvoudige HTML-bestand dat kan worden gebruikt als een boilerplate bij het starten van een project. Deze boilerplate maakt gebruik van orbitcontroles met demping (camera die met een vertragingseffect rond een object kan bewegen) en creëert een draaiende kubus.
<!DOCTYPE html>
<html>
<head>
<title>Three.js Boilerplate</title>
<!--This is important to get a correct canvas size on mobile-->
<meta name='viewport' content='width=device-width, user-scalable=no'/>
<style>
body{
margin:0;
overflow:hidden;
}
/*
Next 2 paragraphs are a good practice.
In IE/Edge you have to provide the cursor images.
*/
canvas{
cursor:grab;
cursor:-webkit-grab;
cursor:-moz-grab;
}
canvas:active{
cursor:grabbing;
cursor:-webkit-grabbing;
cursor:-moz-grabbing;
}
</style>
</head>
<body>
<script src='three.js/build/three.js'></script>
<script src='three.js/examples/js/controls/OrbitControls.js'></script>
<script>
var scene, renderer, camera, controls, cube;
init();
function init () {
renderer = new THREE.WebGLRenderer();
//this is to get the correct pixel detail on portable devices
renderer.setPixelRatio( window.devicePixelRatio );
//and this sets the canvas' size.
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(
70, //FOV
window.innerWidth / window.innerHeight, //aspect
1, //near clipping plane
100 //far clipping plane
);
camera.position.set( 1, 3, 5 );
controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.rotateSpeed = .07;
controls.enableDamping = true;
controls.dampingFactor = .05;
window.addEventListener( 'resize', function () {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}, false );
cube = new THREE.Mesh(
new THREE.BoxGeometry( 1, 1, 1 ),
new THREE.MeshBasicMaterial()
);
scene.add( cube );
animate();
}
function animate () {
requestAnimationFrame( animate );
controls.update();
renderer.render( scene, camera );
cube.rotation.x += 0.01;
}
</script>
</body>
</html>
Hallo Wereld!
Het voorbeeld is afkomstig van de website van threejs .
Misschien wilt u three.js downloaden en de onderstaande scriptbron wijzigen.
Er zijn veel meer geavanceerde voorbeelden onder deze link.
HTML:
<html>
<head>
<meta charset=utf-8>
<title>My first Three.js app</title>
<style>
body { margin: 0; }
canvas { width: 100%; height: 100% }
</style>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r83/three.js"></script>
<script>
// Our JavaScript will go here.
</script>
</body>
De basisscène met een statische kubus in JavaScript:
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
camera.position.z = 5;
Om echt iets te zien, hebben we een Render () -lus nodig:
function render() {
requestAnimationFrame( render );
renderer.render( scene, camera );
}
render();