`
guolang2116
  • 浏览: 72895 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

很不错的3D效果

    博客分类:
  • java
阅读更多

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Wanna tell her - interactive DHTML </title>
<meta http-equiv="imagetoolbar" content="no">
<style type="text/css">
html {
overflow: hidden;
}
body {
position: absolute;
margin: 0px;
padding: 0px;
background: #fff;
width: 100%;
height: 100%;
}
#screen {
position: absolute;
left: 10%;
top: 10%;
width: 80%;
height: 80%;
background: #fff;
}
#screen img {
position: absolute;
cursor: pointer;
width: 0px;
height: 0px;
-ms-interpolation-mode:nearest-neighbor;
}
#bankImages {
visibility: hidden;
}
#FPS {
position: absolute;
right: 5px;
bottom: 5px;
font-size: 10px;
color: #666;
font-family: verdana;
}

</style>

<script type="text/javascript">
/* ==== Easing function ==== */
var Library = {};
Library.ease = function () {
this.target = 0;
this.position = 0;
this.move = function (target, speed) {
this.position += (target - this.position) * speed;
}
}

var tv = {
/* ==== variables ==== */
O : [],
fps : 0,
screen : {},
angle : {
x : new Library.ease(),
y : new Library.ease()
},
camera : {
x    : new Library.ease(),
y    : new Library.ease()
},
create3DHTML : function (i, x, y, z, sw, sh) {
/* ==== create HTML image element ==== */
var o = document.createElement('img');
o.src = i.src;
tv.screen.obj.appendChild(o);
/* ==== 3D coordinates ==== */
o.point3D = {
x  : x,
y  : y,
z  : new Library.ease(),
sw : sw,
sh : sh,
w  : i.width,
h  : i.height
};
o.point3D.z.target = z;
/* ==== push object ==== */
o.point2D = {};
tv.O.push(o);

/* ==== on mouse over event ==== */
o.onmouseover = function () {
if (this != tv.o) {
this.point3D.z.target = tv.mouseZ;
tv.camera.x.target = this.point3D.x;
tv.camera.y.target = this.point3D.y;
if (tv.o) tv.o.point3D.z.target = 0;
tv.o = this;
}
return false;
}

/* ==== on mousedown event ==== */
o.onmousedown = function () {
if (this == tv.o) {
if (this.point3D.z.target == tv.mouseZ) this.point3D.z.target = 0;
else {
tv.o = false;
this.onmouseover();
}
}
}

/* ==== main 3D function ==== */
o.animate = function () {
/* ==== 3D coordinates ==== */
var x = this.point3D.x - tv.camera.x.position;
var y = this.point3D.y - tv.camera.y.position;
this.point3D.z.move(this.point3D.z.target, this.point3D.z.target ? .15 : .08);
/* ==== rotations ==== */
var xy = tv.angle.cx * y  - tv.angle.sx * this.point3D.z.position;
var xz = tv.angle.sx * y  + tv.angle.cx * this.point3D.z.position;
var yz = tv.angle.cy * xz - tv.angle.sy * x;
var yx = tv.angle.sy * xz + tv.angle.cy * x;
/* ==== 2D transform ==== */
var scale = tv.camera.focalLength / (tv.camera.focalLength + yz);
x = yx * scale;
y = xy * scale;
var w = Math.round(Math.max(0, this.point3D.w * scale * this.point3D.sw));
var h = Math.round(Math.max(0, this.point3D.h * scale * this.point3D.sh));
/* ==== HTML rendering ==== */
var o    = this.style;
o.left  = Math.round(x + tv.screen.w - w * .5) + 'px';
o.top    = Math.round(y + tv.screen.h - h * .5) + 'px';
o.width  = w + 'px';
o.height = h + 'px';
o.zIndex = 10000 + Math.round(scale * 1000);
}
},

/* ==== init script ==== */
init : function (structure, FL, mouseZ, rx, ry) {
this.screen.obj = document.getElementById('screen');
this.screen.obj.onselectstart = function () { return false; }
this.screen.obj.ondrag        = function () { return false; }
this.mouseZ = mouseZ;
this.camera.focalLength = FL;
this.angle.rx = rx;
this.angle.ry = ry;
/* ==== create objects ==== */
var i = 0, o;
while( o = structure[i++] )
this.create3DHTML(o.img, o.x, o.y, o.z, o.sw, o.sh);
/* ==== start script ==== */
this.resize();
mouse.y = this.screen.y + this.screen.h;
mouse.x = this.screen.x + this.screen.w;
/* ==== loop ==== */
setInterval(tv.run, 16);
setInterval(tv.dFPS, 1000);
},

/* ==== resize window ==== */
resize : function () {
var o = tv.screen.obj;
if (o) {
tv.screen.w = o.offsetWidth / 2;
tv.screen.h = o.offsetHeight / 2;
for (tv.screen.x = 0, tv.screen.y = 0; o != null; o = o.offsetParent) {
tv.screen.x += o.offsetLeft;
tv.screen.y += o.offsetTop;
}
}
},

/* ==== main loop ==== */
run : function () {
tv.fps++;
/* ==== motion ease ==== */
tv.angle.x.move(-(mouse.y - tv.screen.h - tv.screen.y) * tv.angle.rx, .1);
tv.angle.y.move( (mouse.x - tv.screen.w - tv.screen.x) * tv.angle.ry, .1);
tv.camera.x.move(tv.camera.x.target, .025);
tv.camera.y.move(tv.camera.y.target, .025);
/* ==== angles sin and cos ==== */
tv.angle.cx = Math.cos(tv.angle.x.position);
tv.angle.sx = Math.sin(tv.angle.x.position);
tv.angle.cy = Math.cos(tv.angle.y.position);
tv.angle.sy = Math.sin(tv.angle.y.position);
/* ==== loop through images ==== */
var i = 0, o;
while( o = tv.O[i++] ) o.animate();
},

/* ==== trace frames per seconds ==== */
dFPS : function () {
document.getElementById('FPS').innerHTML = tv.fps + ' FPS';
tv.fps = 0;
}
}

/* ==== global mouse position ==== */
var mouse = {
x : 0,
y : 0
}
document.onmousemove = function(e) {
if (window.event) e = window.event;
mouse.x = e.clientX;
mouse.y = e.clientY;
return false;
}

/* ==== starting script ==== */
onload = function() {
onresize = tv.resize;
/* ==== build grid ==== */
var img = document.getElementById('bankImages').getElementsByTagName('img');
var structure = [];
for (var i = -300; i <= 300; i += 120)
for (var j = -300; j <= 300; j += 120)
structure.push({ img:img[0], x:i, y:j, z:0, sw:.5, sh:.5 });
/* ==== let's go ==== */
tv.init(structure, 350, -200, .005, .0025);
}

</script>
</head>

<body>

<div id="screen"> </div>

<div id="bankImages">
<img alt="" src="D:/桌面/111.jpg">
</div>
<div id="FPS"> </div>

</body>
</html>

分享到:
评论

相关推荐

    wpf 3D演示效果

    【描述】中的“呼呼3D效果”可能是一种形象化的说法,意味着这个演示包含了一些令人印象深刻或流畅的3D动画。"挺不错的,赶紧下载看看"鼓励人们体验这个演示,暗示其质量高且值得一看。这可能是一个互动的演示,允许...

    非常不错的倒影的3d gallery效果

    标题“非常不错的倒影的3d gallery效果”提及的是一种结合了倒影与3D视图变换的图片浏览组件,它能够为用户提供更加生动和立体的图像展示方式。描述中提到的分享精神,表明了开发者社区中互相学习和交流的良好氛围。...

    UI 弧形轮播3D效果

    该Demo包含NGUI和UGUI的示例,在unity5.6版本以上实现弧形轮播3D效果。当然,也可以拷贝里面的代码,到unity5.0也可以。如果想实现不同的效果,直接调位置的动画曲线就可以。小伙伴们可以试试,效果很不错。

    红蓝3D立体图片-出屏效果不错

    红蓝3D立体图片-出屏效果不错

    3D Invigorator中文破解版-超强的3D立体效果插件for Photoshop

    真的很不错的插件,反正我是找了很久,需要的朋友可以下载试试看,网上搜集的,版权方可别来找俺麻烦 O(∩_∩)O 【软件介绍】: 3D Invigorator是一款适用于Photoshop的超级强大的3D立体效果制作插件,不但可以直接...

    android 3D画廊效果

    3. **过度绘制和性能优化**:考虑到3D效果可能会增加GPU负担,开发者可能采取了缓存策略,只渲染可视区域内的item,避免过度绘制。此外,使用ViewPropertyAnimator等API可以减少帧率损失,提升动画流畅性。 4. **...

    很炫的js图片3D效果

    【描述】"很炫的js图片3D效果,有4个,我自己整理的,很不错,可以试一下"表明这可能是一个包含四个不同3D效果的示例集合。每个效果可能是独立的HTML页面(如Default.aspx等),这些页面可能包含了JavaScript代码和...

    这是一个著名的3D图片切换效果代码

    只需简单的配置一下xml文件,自己做几个图片,就可以拥有炫目的3D效果的图片展示。 CU3ER带来的创造力,可以给你的网站访问者提供超强悍的视觉冲击力,它同时提供友好的用户界面,吸引用户眼球。非常适合首页展示。...

    VC++ 制作3D效果的旋转文字特效

    VC++ 制作3D效果的旋转文字特效 用VC++制作3D效果的旋转文字特效,不但具有3D阴影效果,而且文字还可以水平、垂直翻转,很强悍吧?源代码 顺利编译,虽然很简单但很实用,而且效果不错

    圣诞树源码html版,圣诞树源码;3D效果很不错的

    在这个场景中,"圣诞树源码html版"是指使用HTML编写的一个展示3D效果的圣诞树网页。这个源码可能包含了一系列的HTML标签、CSS(Cascading Style Sheets)样式和可能的JavaScript代码来实现交互性和动态效果。 1. **...

    3d地面效果&nbsp;

    在IT行业中,3D效果是一种极具视觉冲击力的技术,它能为用户带来身临其境的感受,广泛应用于游戏开发、虚拟现实、建筑可视化、影视特效等领域。标题中的"3d地面效果"指的是创建出具有三维立体感的地面表现,这在许多...

    很不错的3D圣诞树.zip

    【标题】"很不错的3D圣诞树.zip"所包含的知识点主要集中在HTML和前端开发领域,特别是关于3D效果的实现。在这个项目中,我们可能会遇到以下关键技术和概念: 1. HTML5 Canvas:3D圣诞树可能利用了HTML5的Canvas元素...

    3D效果滑动图片,纯代码实现

    在Android开发中,实现3D效果的滑动图片是一种吸引用户注意力并提升用户体验的技术。本教程将深入探讨如何使用纯代码来创建具有倒影和横向滑动功能的3D图片效果,无需依赖额外的库或组件。以下是实现这一功能所需的...

    网页素材3D按钮不错哦

    在网页设计领域,3D效果的应用常常能提升用户体验,使页面元素更加生动立体。"网页素材3D按钮不错哦"这个标题所蕴含的知识点主要集中在3D网页设计、用户界面(UI)元素以及网页素材的使用上。下面我们将深入探讨这些...

    win系统实现linux系统的3D效果工具

    在Windows XP和Windows 7这样的系统上,YODM3D能够很好地运行,尽管它的3D效果可能无法与原生Linux系统的高级3D桌面特效相比。Linux系统如Ubuntu、Fedora等,通常利用Compiz Fusion或Mutter等窗口管理器,提供了一...

    Unity3D海面效果(不错的学习资料)

    Unity3D是一款强大的跨平台3D游戏开发引擎,被广泛应用于...如果你是Unity3D初学者,这个学习资料将是一个很好的起点,帮助你掌握海面效果的实现技巧。而对于有经验的开发者,它则提供了探索和优化海面效果的新思路。

    带有3D效果的标签云

    本案例是带有3d效果的标签云,效果非常不错,值得下载

    Unity3D超炫的水效果

    这个水效果真心不错,分享上来给大家下载,

Global site tag (gtag.js) - Google Analytics