three.js ~ example ~ Mr.doob

2012-01-05 ~

by mikola

JavaScript

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

init();
animate();


function init() {

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
    camera.position.z = 100;
    scene.add(camera);
    
    var mesh = document.mesh;
    
    geometry = new THREE.Geometry();
    for(var i=0; i<mesh.positions.length; ++i) {
        var p = mesh.positions[i];
        geometry.vertices.push(new THREE.Vector3(p[0]-10, p[1]-10, p[2]-10));

    }
    for(var i=0; i<mesh.faces.length; ++i) {
        var f = mesh.faces[i];
        var face = new THREE.Face3(f[0], f[1], f[2]);
        for(var j=0; j<3; ++j) {
            var n = vnormals[f[j]];
            face.vertexNormals[j] = new THREE.Vector3(n[0], n[1], n[2]);
            
            var c = new THREE.Color(0xff00ff);
            if(f[j] in distances) {
                var br = 1.0 - 0.1 * distances[f[j]];
                c.setRGB(br, br, br);
            }
            face.vertexColors[j] = c;
        }
        
        var n = fnormals[i];
        face.normal = new THREE.Vector3(n[0], n[1], n[2]);
        
        geometry.faces.push(face);
        //asdfasdf
    }
    
    //material = new THREE.MeshNormalMaterial({ shading: THREE.SmoothShading });
    material = new THREE.MeshBasicMaterial( { color: 0xffffff, shading: THREE.SmoothShading, vertexColors: THREE.VertexColors } ),
    
    shape = new THREE.Mesh(geometry, material);
    scene.add(shape);
    
    renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    
    document.body.appendChild(renderer.domElement);

}

function animate() {
    
    shape.rotation.x += 0.01;
    shape.rotation.y += 0.02;
    
    requestAnimationFrame(animate);
    render();
}

function render() {

    
    renderer.render(scene, camera);

}