Three.js Plane wrap

Attempting to wrap a plane around a sphere with three.js

by realhunts

HTML

<script src="https://rawgithub.com/mrdoob/three.js/dev/build/three.js"></script>
<div id="Text"></div>

JavaScript

var camera, scene, renderer, sphereGeometry, planeGeometry, sphereMaterial, planeMaterial, sphereMesh, planeMesh;

var theta = 0,
    numCollisions = 0;

init();
render();

function init() {

    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000);
    camera.position.z = 1000;
    camera.position.x = 200;
    camera.position.y = 50;
    camera.lookAt(scene.position);
    scene.add(camera);

    var pointLight = new THREE.DirectionalLight(0xbbbbbb);
    pointLight.position.set(100, 100, 500);
    scene.add(pointLight);

    var ambientLight = new THREE.AmbientLight(0xbbbbbb);
    scene.add(ambientLight);

    sphereGeometry = new THREE.SphereGeometry(200, 64, 64);
    sphereMaterial = new THREE.MeshPhongMaterial({
        color: 'darkgreen',
        opacity: 0.5,
        transparent: true
    });

    sphereMesh = new THREE.Mesh(sphereGeometry, sphereMaterial);
    scene.add(sphereMesh);

    planeGeometry = new THREE.PlaneGeometry(100, 100, 10, 10);
    planeGeometry.dynamic = true;

    planeMaterial = new THREE.MeshPhongMaterial({
        color: 'blue'
    });

    planeMesh = new THREE.Mesh(planeGeometry, planeMaterial);
    planeMesh.material.side = THREE.DoubleSide;
    planeMesh.position.z = 0;
    planeMesh.position.y = 0;

    for (var vertexIndex = 0; vertexIndex < planeMesh.geometry.vertices.length; vertexIndex++) {

        var localVertex = planeMesh.geometry.vertices[vertexIndex].clone();
        localVertex.z = 201;
        var directionVector = new THREE.Vector3();
        directionVector.subVectors(sphereMesh.position, localVertex);
        directionVector.normalize();
        //var ray = new THREE.Raycaster(localVertex, new THREE.Vector3(0, 0, -1));
        var ray = new THREE.Raycaster(localVertex, directionVector);

        var collisionResults = ray.intersectObject(sphereMesh);
        numCollisions += collisionResults.length;

        if (collisionResults.length > 0)...