Selaa lähdekoodia

added lookahead option for tubegeometry camera

zz85 13 vuotta sitten
vanhempi
commit
afde9594db
1 muutettua tiedostoa jossa 4 lisäystä ja 9 poistoa
  1. 4 9
      examples/webgl_geometry_extrude_splines.html

+ 4 - 9
examples/webgl_geometry_extrude_splines.html

@@ -413,7 +413,7 @@
     var debug = true;
     var parent;
     var tube, tubeMesh;
-    var animation = false;
+    var animation = false, lookAhead = false;
     var scale;
 
     function addTube() {
@@ -472,6 +472,7 @@
 
     function animateCamera() {
       animation = document.getElementById('animation').checked;
+      lookAhead = document.getElementById('lookAhead').checked;
     }
 
 
@@ -498,7 +499,7 @@
 
       info.innerHTML += '<br/>Radius Segments: <select id="radiusSegments" onchange="addTube()"><option>1</option><option>2</option><option selected>3</option><option>4</option><option>5</option><option>6</option><option>8</option><option>12</option></select>';
 
-      info.innerHTML += '<br/>Camera Spline Animation: <input id="animation" type="checkbox" onchange="animateCamera()" />';
+      info.innerHTML += '<br/>Camera Spline Animation: <input id="animation" type="checkbox" onchange="animateCamera()" /> Look Ahead <input id="lookAhead" type="checkbox" onchange="animateCamera()" />'; //checkbox button
 
       container.appendChild(info);
 
@@ -672,18 +673,12 @@
       var lookAt = tube.path.getPointAt((t + 0.101) % 1).multiplyScalar(scale);
       // splineCamera.lookAt(lookAt);
 
-
       // Camera Orientation 2 - up orientation via normal
+      if (!lookAhead)
       lookAt.copy(pos).addSelf(dir);
       splineCamera.matrix.lookAt(splineCamera.position, lookAt, normal);
       splineCamera.rotation.getRotationFromMatrix(splineCamera.matrix);
 
-      // Camera Orientation 3 - using rotation from matrix - Doesn't work too well because of spin.
-      // var axis = new THREE.Vector3( 0, 0, -1 ).crossSelf( dir );
-      // var radians = Math.acos( new THREE.Vector3( 0, 0, -1 ).dot( dir.clone().normalize() ) );
-      // var matrix = new THREE.Matrix4().setRotationAxis( axis.normalize(), radians );
-      // splineCamera.rotation.getRotationFromMatrix( matrix, splineCamera.scale );
-
       cameraHelper.update();
 
       parent.rotation.y += (targetRotation - parent.rotation.y) * 0.05;