初步学习WEBGL。感谢WEBGL中文网的帮助
首先是时钟的绘画过程。这里主要介绍逻辑处理的JS代码。剩余的TOUCHME
var hour=new Date().getHours(); if(hour>11){ hour=hour-12; } var mins=new Date().getMinutes(); var sec=new Date().getSeconds(); //秒针,每周走60个单位 var UnitSec=2*Math.PI/60; //分钟,每周走60*60个单位 var UnitMins=2*Math.PI/(60*60); //小时,每周走12*60*60个单位 var UnitHour=2*Math.PI/(12*60*60); var AngleHour=UnitHour*(hour*60*60+mins*60+sec); var AngleMins=UnitMins*(mins*60+sec); var AngleSec=UnitSec*(sec); //具体绘画方法 this.drawCursor(AngleHour,AngleMins,AngleSec);
重点是3D立方体的绘画
function start() { //开始画时钟 clock.init(); //开始画立方体 init(); //动起来 animate(); } function init() { //首先渲染器render renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); //其次相机Camera。 camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 ); camera.position.z = 400; //然后定义场景 scene = new THREE.Scene(); //定义立方体 var geometry = new THREE.CubeGeometry(150, 150, 150); texture = new THREE.Texture( canvas); //这里把canvas按照纹理的方式贴到皮肤表面 var material = new THREE.MeshBasicMaterial({map:texture}); texture.needsUpdate = true; //网格定义 mesh = new THREE.Mesh( geometry,material ); scene.add( mesh ); window.addEventListener( 'resize', onWindowResize, false ); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); } function animate() { texture.needsUpdate = true; mesh.rotation.y -= 0.01; mesh.rotation.x -= 0.01; requestAnimationFrame( animate ); renderer.render( scene, camera ); }
这里需要强调下。threeJS的绘画过程,主要有三部分。渲染器,场景,相机。。理解好这三个部分的作用,就好了。
版权声明:本文为fyddaben原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。