html5的canvas实现3d雪花飘舞效果


Posted in HTML / CSS onDecember 27, 2013

复制代码
代码如下:

var SCREEN_WIDTH = window.innerWidth;
var SCREEN_HEIGHT = window.innerHeight;</p> <p> var container;</p> <p> var particle;</p> <p> var camera;
var scene;
var renderer;</p> <p> var mouseX = 0;
var mouseY = 0;</p> <p> var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;

var particles = [];
var particleImage = new Image();//THREE.ImageUtils.loadTexture( "img/ParticleSmoke.png" );
particleImage.src = 'images/ParticleSmoke.png'; </p> <p>

function init() {</p> <p> container = document.createElement('div');
document.body.appendChild(container);</p> <p> camera = new THREE.PerspectiveCamera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
camera.position.z = 1000;</p> <p> scene = new THREE.Scene();
scene.add(camera);

renderer = new THREE.CanvasRenderer();
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
var material = new THREE.ParticleBasicMaterial( { map: new THREE.Texture(particleImage) } );

for (var i = 0; i < 500; i++) {</p> <p> particle = new Particle3D( material);
particle.position.x = Math.random() * 2000 - 1000;
particle.position.y = Math.random() * 2000 - 1000;
particle.position.z = Math.random() * 2000 - 1000;
particle.scale.x = particle.scale.y = 1;
scene.add( particle );

particles.push(particle);
}</p> <p> container.appendChild( renderer.domElement );</p> <p>
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );

setInterval( loop, 1000 / 60 );

}

function onDocumentMouseMove( event ) {</p> <p> mouseX = event.clientX - windowHalfX;
mouseY = event.clientY - windowHalfY;
}</p> <p> function onDocumentTouchStart( event ) {</p> <p> if ( event.touches.length == 1 ) {</p> <p> event.preventDefault();</p> <p> mouseX = event.touches[ 0 ].pageX - windowHalfX;
mouseY = event.touches[ 0 ].pageY - windowHalfY;
}
}</p> <p> function onDocumentTouchMove( event ) {</p> <p> if ( event.touches.length == 1 ) {</p> <p> event.preventDefault();</p> <p> mouseX = event.touches[ 0 ].pageX - windowHalfX;
mouseY = event.touches[ 0 ].pageY - windowHalfY;
}
}</p> <p> //</p> <p> function loop() {</p> <p> for(var i = 0; i<particles.length; i++)
{</p> <p> var particle = particles[i];
particle.updatePhysics();

with(particle.position)
{
if(y<-1000) y+=2000;
if(x>1000) x-=2000;
else if(x<-1000) x+=2000;
if(z>1000) z-=2000;
else if(z<-1000) z+=2000;
}
}

camera.position.x += ( mouseX - camera.position.x ) * 0.05;
camera.position.y += ( - mouseY - camera.position.y ) * 0.05;
camera.lookAt(scene.position); </p> <p> renderer.render( scene, camera );</p> <p>
}

HTML / CSS 相关文章推荐
CSS3系列之3D制作方法案例
Aug 14 HTML / CSS
利用CSS3实现文本框的清除按钮相关的一些效果
Jun 23 HTML / CSS
使用CSS变量实现炫酷惊人的悬浮效果
Apr 26 HTML / CSS
前端canvas水印快速制作(附完整代码)
Sep 19 HTML / CSS
html5 application cache遇到的严重问题
Dec 26 HTML / CSS
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
Jan 31 HTML / CSS
使用HTML5的File实现base64和图片的互转
Aug 01 HTML / CSS
用canvas实现图片滤镜效果附演示
Nov 05 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
May 15 HTML / CSS
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
Nov 05 HTML / CSS
CSS中妙用 drop-shadow 实现线条光影效果
Nov 11 HTML / CSS
常用的文件对应的MIME类型汇总
Apr 26 HTML / CSS
html5 canvas实现圆形时钟代码分享
Dec 25 #HTML / CSS
html5 css3网站菜单实现代码
Dec 23 #HTML / CSS
html5 自定义播放器核心代码
Dec 20 #HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
Dec 17 #HTML / CSS
利用html5的websocket实现websocket聊天室
Dec 12 #HTML / CSS
html5拍照功能实现代码(htm5上传文件)
Dec 11 #HTML / CSS
html5教程实现Photoshop渐变色效果
Dec 04 #HTML / CSS
You might like
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
node.js中的console用法总结
2014/12/15 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python实现狄克斯特拉算法
2019/01/17 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
解决python 文本过滤和清理问题
2019/08/28 Python
python和JavaScript哪个容易上手
2020/06/23 Python
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
田径运动会开幕式及主持词
2014/03/28 职场文书
超市开店计划书
2014/04/26 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
redis lua限流算法实现示例
2022/07/15 Redis
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python