Three Js

Posted October 22, 2023 by Rohith and Anusha ‐ 3 min read

In the vast realm of web development, creating immersive and interactive 3D experiences was once a daunting task, reserved for those well-versed in complex programming languages and computer graphics. However, with the advent of powerful libraries like Three.js, the barriers to entry have significantly lowered, allowing developers to delve into the captivating world of 3D graphics with ease.

What is Three.js?

  • Three.js is a popular JavaScript library that simplifies the process of creating 3D graphics for the web.

  • It is built on top of WebGL, a JavaScript API for rendering interactive 3D and 2D graphics within any compatible web browser without the use of plugins.

  • Three.js abstracts many of the complexities of working directly with WebGL, making it accessible to developers at various skill levels.

Getting Started

Setting Up the Environment

  • To begin your journey with Three.js, you first need to include the library in your project.

  • You can either download the library and include it manually or use a package manager like npm or yarn.

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>

Creating a Scene

  • In Three.js, everything revolves around a scene.

  • This is where all the 3D objects, lights, and cameras live.

  • Creating a basic scene involves instantiating a scene, a camera, and a renderer.

// Create a scene
var scene = new THREE.Scene();

// Create a camera
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;

// Create a renderer
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

Adding Objects

  • With the scene set up, you can now add objects like cubes, spheres, or even complex 3D models to it.
// Create a cube
var geometry = new THREE.BoxGeometry();
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
var cube = new THREE.Mesh(geometry, material);

// Add the cube to the scene
scene.add(cube);

Animating the Scene

  • To make your scene dynamic and interactive, you can set up an animation loop using the requestAnimationFrame function.
function animate() {
    requestAnimationFrame(animate);

    // Rotate the cube
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;

    // Render the scene
    renderer.render(scene, camera);
}

animate();

Beyond the Basics

Materials and Textures

  • Three.js offers a variety of materials, including basic, Lambert, Phong, and Standard materials.

  • You can also apply textures to objects, adding realism and depth to your 3D scenes.

// Create a texture loader
var textureLoader = new THREE.TextureLoader();

// Load a texture
var texture = textureLoader.load('path/to/texture.jpg');

// Apply the texture to a material
var material = new THREE.MeshBasicMaterial({ map: texture });

Lighting

  • Lighting is crucial for creating realistic 3D scenes.

  • Three.js supports various types of lights, such as ambient, directional, point, and spotlights, allowing you to illuminate your objects effectively.

// Create a directional light
var light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(1, 1, 1).normalize();
scene.add(light);

Loading 3D Models

  • Three.js enables you to import 3D models created with software like Blender or 3ds Max.

  • These models can then be integrated into your scenes, opening up a world of possibilities for creating diverse and complex environments.

// Create a loader for 3D models
var loader = new THREE.GLTFLoader();

// Load a 3D model
loader.load('path/to/model.glb', function (gltf) {
    var model = gltf.scene;
    scene.add(model);
});

Conclusion

  • Three.js empowers developers to bring their creative visions to life, enabling the development of engaging and interactive 3D web applications.

  • Its intuitive API and extensive documentation make it an excellent choice for both beginners and experienced developers looking to explore the exciting world of 3D graphics on the web.

quick-references blog three-js

Subscribe For More Content