webgl 让场景动起来
在前两章简单的讲过场景这个组建,这一章我们就更深入的去了解如何让场景动起来,下面来实现一个多边形(场景)的移动
效果图:
从上图就可以看到让一个多边形往左移动的效果图,实现这个很简单。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript" src="../js/three.js"></script> <style> div#canvas-frame { border: none; cursor: pointer; width: 100%; height: 600px; background-color: #EEEEEE; } </style> <script> //渲染器 var renderer; function initThree() { width = document.getElementById('canvas-frame').clientWidth; height = document.getElementById('canvas-frame').clientHeight; renderer = new THREE.WebGLRenderer({ antialias: true }) renderer.setSize(width, height); document.getElementById('canvas-frame').appendChild(renderer.domElement); renderer.setClearColorHex(0xFFFFFF, 1.0); } //相机 var camera; function initCamera() { camera = new THREE.PerspectiveCamera(45, width / height, 1, 10000); //透视相机:透视的也大物体就越小,相反 //camera = new THREE.OrthographicCamera(window.innerWidth / -2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / -2, 10, 1000); camera.position.x = 0; camera.position.y = 0; camera.position.z = 600; camera.up.x = 0; camera.up.y = 1; camera.up.z = 0; camera.lookAt({ x: 0, y: 0, z: 0 }) } //场景 var scene; function initScene() { scene = new THREE.Scene(); } //光源基类 var light; function initLinght() { //light = new THREE.PointLight(0xFFFFFF);//光的颜色 light = new THREE.AmbientLight("0xFF0000") //环境的光:可以影响物体的本身的颜色 light.position.set(0, 0, 300); scene.add(light); //给场景添加光线 } //初始化对象 var mesh; function initObject() { var geometry = new THREE.CylinderGeometry(60, 100, 200); //圆柱几何 var material = new THREE.MeshLambertMaterial({ color: 0xFF00 //兰伯特材料网 }); mesh = new THREE.Mesh(geometry, material); //网格 mesh.position = new THREE.Vector3(0, 0, 0); scene.add(mesh); } function threeStart() { initThree(); initCamera(); initScene(); initLinght(); initObject(); animation(); } function animation() { mesh.position.x -= 1;//向左:-=1,向右:+=1 renderer.render(scene, camera); requestAnimationFrame(animation) } </script> </head> <body onload="threeStart()"> <div id="canvas-frame"></div> </body> </html>

浙公网安备 33010602011771号