Three.js is cross-browser JavaScript library. I study the work with is and this is my first three.js Example – five cubes rotating with difrent speed.
Click here to see the Example : http://treejs.turbo3dmodels.com
How to creat this exampels step by step:
1.You create the scene
var scene = new THREE.Scene( );
2. Set the background color
scene.background = new THREE.Color( 0x88aaaa );
3. Creating a camera
var camera = new THREE.PerspectiveCamera( 30, window.innerWidth / window.innerHeight, 0.1 , 1000);
4. Creating a renderer
var renderer = new THREE.WebGLRenderer( );
renderer.setSize( window.innerWidth, window.innerHeight);
document.body.appendChild( renderer.domElement );
5. Make the window frame resizable
window.addEventListener(‘resize’, function() {
let width = window.innerWidth;
let height = window.innerHeight;
renderer.setSize( window.innerWidth, window.innerHeight);
camera.aspect = width / height;
camera.updateProjectionMatrix( );
6. Added a Orbits Control
controls = new THREE.OrbitControls(camera, renderer.domElement );
7. Create a shape geometry and set the size of it. Make it five times.
var geometry = new THREE.BoxGeometry( 1, 2, 1 );
8. Create a material and load the texture
var material = new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader( ).load(‘1.png’ ),
side: THREE.DoubleSide } );
9. Create a cuber from the shape and the material
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );
10. Set the new camera position
camera.position.z = 5;
11. Create the game logic – In every Tick will be calculated new rotation for the cubes
var update = function( )
{
cube.rotation.x += 0.05;
cube2.rotation.x += 0.01;
cube3.rotation.x += 0.01;
cube4.rotation.x += 0.005;
cube5.rotation.x += 0.005;
};
12. Draw this scene in the brawser
var render = function()
{
renderer.render( scene, camera);
};
13.Run the game loop with update, render and repeet functions.
var GLoop = function( )
{
requestAnimationFrame( GLoop );
update( );
render();
};
14. Call the function
GLoop( );
Here is the code in one peace:
// You create the scene here var scene = new THREE.Scene( ); // Set the background color scene.background = new THREE.Color( 0x88aaaa ); // Creating a camera var camera = new THREE.PerspectiveCamera( 30, window.innerWidth / window.innerHeight, 0.1 , 1000); // Creating a renderer var renderer = new THREE.WebGLRenderer( ); renderer.setSize( window.innerWidth, window.innerHeight); document.body.appendChild( renderer.domElement ); // Resize the window window.addEventListener('resize', function() { let width = window.innerWidth; let height = window.innerHeight; renderer.setSize( window.innerWidth, window.innerHeight); camera.aspect = width / height; camera.updateProjectionMatrix( ); }, ); // Added a Orbits Control controls = new THREE.OrbitControls(camera, renderer.domElement ); //create a shape geometry 1 and set the size of it var geometry = new THREE.BoxGeometry( 1, 2, 1 ); //create a material and load the texture var material = new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader( ).load('1.png' ), side: THREE.DoubleSide } ); // create a cuber from the shape and the material var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); //create a shape geometry 2 - same steps like by geometry 1 var geometry2 = new THREE.BoxGeometry( 1, 1, 1 ); var material2 = new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader( ).load('1.png' ), side: THREE.DoubleSide } ); var cube2 = new THREE.Mesh( geometry2, material2 ); cube2.position.x = 1; scene.add( cube2 ); //create a shape geometry 3 - same steps like by geometry 1 var geometry3 = new THREE.BoxGeometry( 1, 1, 1 ); var material3 = new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader( ).load('1.png' ), side: THREE.DoubleSide } ); var cube3 = new THREE.Mesh( geometry3, material3 ); cube3.position.x = -1; scene.add( cube3 ); //create a shape geometry 4 - same steps like by geometry 1 var geometry4 = new THREE.BoxGeometry( 1, 1, 1 ); var material4 = new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader( ).load('1.png' ), side: THREE.DoubleSide } ); var cube4 = new THREE.Mesh( geometry4, material4 ); cube4.position.x = -2; scene.add( cube4 ); //create a shape geometry 5 - same steps like by geometry 1 var geometry5 = new THREE.BoxGeometry( 1, 1, 1 ); var material5 = new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader( ).load('1.png' ), side: THREE.DoubleSide } ); var cube5 = new THREE.Mesh( geometry5, material5 ); cube5.position.x = 2; scene.add( cube5 ); //Set the camera position camera.position.z = 5; // game logic // In every Tick will be calculated new rotation for the cubes var update = function( ) { cube.rotation.x += 0.05; cube2.rotation.x += 0.01; cube3.rotation.x += 0.01; cube4.rotation.x += 0.005; cube5.rotation.x += 0.005; }; // draw scene var render = function() { renderer.render( scene, camera); }; // run game loop ( update, render, repeet ) var GLoop = function( ) { requestAnimationFrame( GLoop ); update( ); render( ); }; GLoop( );
You can use this code in a <script> Tag in your html – file.
If you are more interested at three.js visit the ofical site https://threejs.org/ .
Have fun with it 🙂