/*----------------------------------- グローバル変数 -----------------------------------*/ var camera,geometry,material,scene,renderer,light,mesh; var SCREEN_WIDTH = window.innerWidth; var SCREEN_HEIGHT = window.innerHeight; var mouseX = 0,mouseY = 0; var windowHalfX = window.innerWidth / 2; var windowHalfY = window.innerHeight / 2; init(); animate(); function init(){ //カメラの作成 Perspective_Camera(); //シーンを生成 scene = new THREE.Scene(); for(var i = 0;i < 300;i++){ // 頂点ベクトルの配列 var vertices = []; for(var j = 0;j < 100;j++){ vertices.push(new THREE.Vector3( Math.random() * 100, Math.random() * 100, Math.random() * 100)); } geometry = new THREE.ConvexGeometry( vertices ); material = new THREE.MeshLambertMaterial( { color: 0xffffff, transparent:true, opacity:0.2 } ); var convex = new THREE.Mesh(geometry,material);// 与えられた頂点から凹みのない立体を作成 scene.add( convex ); } //レンダラーを生成 renderer = new THREE.WebGLRenderer(); //レンダラーのサイズを設定 renderer.setSize(SCREEN_WIDTH,SCREEN_HEIGHT); //レンダラーをDOMに追加 document.body.appendChild(renderer.domElement); //レンダラーをレンダリングする renderer.render(scene,camera); document.addEventListener("mousemove",onDocumentMouseMove,false); document.addEventListener("touchstart",onDocumentTouchStart,false); document.addEventListener("touchmove",onDocumentTouchMove,false); } function onDocumentMouseMove(event){ mouseX = event.clientX - windowHalfX; mouseY = event.clientY - windowHalfY; } /*----------------------------------- 新しくスクリーンに指が触れた場合に発生するイベント -----------------------------------*/ function onDocumentTouchStart(event){ if(event.touches.length > 1){//触れている指の本数をチェック //スクロール停止 event.preventDefault(); mouseX = event.touches[0].pageX - windowHalfX; mouseY = event.touches[0].pageY - windowHalfY; } } /*----------------------------------- スクリーンに触れている指をスライドさせた場合に発生するイベント -----------------------------------*/ function onDocumentTouchMove(event){ if(event.touches.length == 1){//触れている指の本数をチェック //スクロール停止 event.preventDefault(); mouseX = event.touches[0].pageX - windowHalfX; mouseY = event.touches[0].pageY - windowHalfY; } } /*----------------------------------- 透視投影カメラ -----------------------------------*/ function Perspective_Camera(){ //画角 var fov = 75; //縦横比 var aspect = SCREEN_WIDTH / SCREEN_HEIGHT; //クリッピング手前 var near = 1; //クリッピング奥 var far = 1000; //カメラを生成 camera = new THREE.PerspectiveCamera(fov,aspect,near,far); camera.position.x = 800; camera.position.z = 100; } /*----------------------------------- アニメーション繰り返し処理 -----------------------------------*/ function animate(){ render(); //繰り返し処理 requestAnimationFrame(animate); } /*----------------------------------- カメラの視点アニメーション -----------------------------------*/ function render(){ //カメラの位置 camera.position.x += (mouseX - camera.position.x) * .05; camera.position.y += (-mouseY + 250 - camera.position.y) * .05; //注視点を指定 camera.lookAt(scene.position); renderer.render(scene,camera); }
<div id="wrapper"> </div>