chapter-09/01-basic-animation.html (p.249) text, run
rayとオブジェクトの交点を求める |
function onDocumentMouseDown(event) { var vector = new THREE.Vector3(( event.clientX / window.innerWidth ) * 2 - 1, -( event.clientY / window.innerHeight ) * 2 + 1, 0.5); vector = vector.unproject(camera); var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); var intersects = raycaster.intersectObjects([sphere, cylinder, cube]); if (intersects.length > 0) { console.log(intersects[0]); intersects[0].object.material.transparent = true; intersects[0].object.material.opacity = 0.1; } } |
chapter-09/02-selecting-objects.html (p.252) text, run, diff
補間によるアニメーション |
77 78 // create a tween 79 // http://sole.github.io/tween.js/examples/03_graphs.html 80 var posSrc = {pos: 1}; 81 var tween = new TWEEN.Tween(posSrc).to({pos: 0}, 5000); 82 tween.easing(TWEEN.Easing.Sinusoidal.InOut); 83 84 var tweenBack = new TWEEN.Tween(posSrc).to({pos: 1}, 5000); 85 tweenBack.easing(TWEEN.Easing.Sinusoidal.InOut); 86 87 tween.chain(tweenBack); 88 tweenBack.chain(tween); 89 90 91 var onUpdate = function () { 92 var count = 0; 93 var pos = this.pos; 94 95 loadedGeometry.vertices.forEach(function (e) { 96 var newY = ((e.y + 3.22544) * pos) - 3.22544; 97 pointCloud.geometry.vertices[count++].set(e.x, newY, e.z); 98 }); 99 100 pointCloud.sortParticles = true; 101 }; 102 103 tween.onUpdate(onUpdate); 104 tweenBack.onUpdate(onUpdate); (略) 157 function render() { 158 stats.update(); 159 TWEEN.update(); 160 requestAnimationFrame(render); 161 webGLRenderer.render(scene, camera); 162 } |
chapter-09/03-animation-tween.html (p.253) text, run, diff
カメラをコントロールする |
64 var trackballControls = new THREE.TrackballControls(camera); 65 66 trackballControls.rotateSpeed = 1.0; 67 trackballControls.zoomSpeed = 1.0; 68 trackballControls.panSpeed = 1.0; 69 // trackballControls.noZoom=false; 70 // trackballControls.noPan=false; 71 trackballControls.staticMoving = true; 72 // trackballControls.dynamicDampingFactor=0.3; |
chapter-09/04-trackball-controls-camera.html (p.258) text, run, diff
chapter-09/05-fly-controls-camera.html (p.259) text, run, diff
chapter-09/06-roll-controls-camera.html (p.261) text, run, diff
chapter-09/07-first-person-camera.html (p.262) text, run, diff
chapter-09/08-controls-orbit.html (p.252) text, run, diff
作成したプログラムが正しく動作することを確認したら、それぞれの 提出先に提出しなさい。 提出した後は、正しく提出されていることを http://ynitta.com/class/cg2/local/handin/ で必ず確認しておいて下さい。 提出〆切は次回の講義日の 8:30 a.m. です。
提出ファイル | kadai9a.html |
---|---|
コメント欄: | どのようなシーンであるか説明を書きなさい。 |
提出先: | 「宿題提出Web:コンピュータ・グラフィックスb:課題9a」 http://ynitta.com/class/cg2/local/handin/up.php?id=kadai9a |
以前作成した kadai6a.html をコピーして kadai9a.html をつくり、それを変更して、カメラを First Person で移動できるようにしなさい。 chapter-09/07-first-person-camera.html を参考にすること。