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)...