本文主要包含HTML5,3D,衣服摇摆等相关知识,佚名 希望在学习及工作中可以帮助到您
这又是一款基于HTML5 Canvas的3D动画杰作,它是一个可以随风飘动的3D衣服摇摆动画特效,非常逼真。当我们将鼠标滑过衣服时,衣服将会出现摇摆的动画,点击鼠标时,衣服将会更加剧烈地摆动。
在线演示 源码下载
HTML代码
- <div style="width:500px;margin:10px auto">
- <canvas id="cv" width="480" height="300"></canvas>
- <p>"3D on 2D Canvas" demo</p>
- <p>move cursor to pan / click to swing</p>
- </div>
P3D库JS代码,主要用来处理3D效果的
- window.P3D = {
- texture: null,
- g: null
- };
- P3D.clear = function(f, w, h) {
- var g = this.g;
- g.beginPath();
- g.fillStyle = f;
- g.fillRect(0, 0, w, h);
- }
- P3D.num_cmp = function(a,b){return a-b;}
- P3D.drawTriangle = function(poss, uvs, shade_clr) {
- var w = this.texture.width;
- var h = this.texture.height;
- var g = this.g;
- var vAd = [ poss[1].x - poss[0].x , poss[1].y - poss[0].y ];
- var vBd = [ poss[2].x - poss[0].x , poss[2].y - poss[0].y ];
- var vA = [ uvs[1].u - uvs[0].u , uvs[1].v - uvs[0].v ];
- var vB = [ uvs[2].u - uvs[0].u , uvs[2].v - uvs[0].v ];
- vA[0] *= w;
- vA[1] *= h;
- vB[0] *= w;
- vB[1] *= h;
- var m = new M22();
- m._11 = vA[0];
- m._12 = vA[1];
- m._21 = vB[0];
- m._22 = vB[1];
- var im = m.getInvert();
- if (!im) return false;
- var a = im._11 * vAd[0] + im._12 * vBd[0];
- var b = im._21 * vAd[0] + im._22 * vBd[0];
- var c = im._11 * vAd[1] + im._12 * vBd[1];
- var d = im._21 * vAd[1] + im._22 * vBd[1];