JSFiddle - React, Tailwind, and code Playground

by wilt

HTML

<script src="https://rawgit.com/mrdoob/three.js/r68/build/three.js"></script>

JavaScript

var camera, scene, renderer, geometry, material, mesh;

init();
animate();

function init() {

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
    camera.position.z = 500;
    scene.add(camera);

    // geometry
    var geometry = new THREE.PlaneGeometry(500, 500, 10, 10);

    // materials
    var materials = [];
    materials.push(new THREE.MeshBasicMaterial({
        color: 0xff0000, side:THREE.DoubleSide
    }));
    materials.push(new THREE.MeshBasicMaterial({
        color: 0x00ff00, side:THREE.DoubleSide
    }));
    materials.push(new THREE.MeshBasicMaterial({
        color: 0x0000ff, side:THREE.DoubleSide
    }));

    // Add materialIndex to face
    var l = geometry.faces.length / 2;
    for (var i = 0; i < l; i++) {
        var j = 2 * i;
        geometry.faces[j].materialIndex = i % 3;
        geometry.faces[j + 1].materialIndex = i % 3;
    }

    // mesh
    mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials));
    scene.add(mesh);

    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);

    document.body.appendChild(renderer.domElement);

}

function animate() {

    requestAnimationFrame(animate);
    render();

}

function render() {

    mesh.rotation.x += 0.01;
    mesh.rotation.y += 0.02;

    renderer.render(scene, camera);

}