使用Three.js网页引擎创建酷炫的3D效果的标签墙
使用Three.js引擎(这是开源的webgl三维引擎,gitgub)进行一个简单应用。
做一个酷炫的3d效果的标签墙(已经放在我的博客首页的右下角,pc可见),
去我的博客首页看看实际效果 www.songshizhao.com
静态效果如下图所示:

让所有的标签组成一个球体,并且运动起来。可以手动拖拽,点击可以跳转等等。。
做完之后小小的总结一下。最后我会把本文的代码整理为html分享在这篇文章下面
首先第一步创建一个载体,
<div id="canvas" style="width: 100%; background: url(images/background/bg1.jpg) no-repeat center; height: 400px;">
<%--列表--%>
</div>
这个载体的作用就是将三维引擎的内容呈现在其中,关键是自定义一个id名字,我用canvas,其余都正常。
然后把你想要做动态展示的标签写出来,放在id=‘canvas’元素里,每个标签都需要有id属性。因为我是动态生成的,就不举例子了。three.js可以查找页面中元素放到三维界面当中,也可以输出元素(js方式)到界面中,为了简单我自己做好标签元素然后进行提取。
引用Three.js核心代码
Three.js很丰富,其他的根据需要引用。我的引用如下
<script src="../webgl/three.js-master/build/three.js"></script>
<script src="../webgl/three.js-master/examples/js/controls/OrbitControls.js"></script>
<script src="../webgl/three.js-master/examples/js/renderers/CSS3DRenderer.js"></script>
其中three.js是必须引用的,第二个引用是支持旋转缩放,第三个自己看名字就知道。
最后根据需要使用Three.js引擎,这个有一套固定的写法。比如初始化,渲染等等。正像其他引擎一样!
<script type="text/javascript">
var camera, renderer, scene;
var controls;
var objects=new Array();
var thetas = new Array();
var phis = new Array();
var r = 450;
int();
animate(); function int() {
camera = new THREE.PerspectiveCamera(80, window.innerWidth / window.innerHeight, 0.1, 2000000);
camera.position.set(0,0,720);
scene = new THREE.Scene();
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var phi = Math.acos(-1 + (2 * i) / elements.length);
phis.push(phi);
var theta = Math.sqrt(elements.length * Math.PI) * phi;
thetas.push(theta);
var object = new THREE.CSS3DObject(element);
object.position.x = r * Math.cos(theta) * Math.sin(phi);
object.position.z = r * Math.sin(theta) * Math.sin(phi);
object.position.y = r * Math.cos(phi);
scene.add(object);
objects.push(object);
}
renderer = new THREE.CSS3DRenderer;
//设置大小
renderer.setSize(400, 400);
render();
document.getElementById('canvas').appendChild(renderer.domElement); var controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.target.set(0, 0, 0);
controls.update(); window.addEventListener('resize', onWindowResize, false);
controls.addEventListener('change', render);
} function render() { renderer.render(scene, camera); } function animate() { requestAnimationFrame(animate); var phi = Math.acos(-1 + (2 * i) / elements.length);
var theta = Math.sqrt(elements.length * Math.PI) * phi;
for (var i = 0; i < objects.length; i++)
{
thetas[i] += 0.001;//phis[i] -= 0.001;
objects[i].position.x = r * Math.cos(thetas[i]) * Math.sin(phis[i]);
objects[i].position.z = r * Math.sin(thetas[i]) * Math.sin(phis[i]);
objects[i].position.y = r * Math.cos(phis[i]);
//启用下面的代码,标签朝向不变,但因此不可拖拽。
//var vector = camera.position;
//vector.copy(objects[i].position - vector).multiplyScalar(1);
//objects[i].lookAt(vector); } render();
} function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(400, 400);
render();
} </script>
用js写三维引擎的代码,是不是很酷,这样就把3d的标签墙做好了,想要看看效果吗?去我的首页看看吧!
我去整理整理,把aspx文件提取一下打包成html发表下吧!
接上文!整理结束,做了简单的demo,欢迎使用!
如果你觉得内容不错的话,就请留个言,谢谢!
下载地址:请前往我的独立博客尾部下载(阅读原文)
http://songshizhao.com/blog/blogPage/98.html
使用Three.js网页引擎创建酷炫的3D效果的标签墙的更多相关文章
- Flutter 实现酷炫的3D效果
老孟导读:此文讲解3个酷炫的3D动画效果. 下面是要实现的效果: Flutter 中3D效果是通过 Transform 组件实现的,没有变换效果的实现: class TransformDemo ext ...
- 仿智能社官网:原生JS实现简单又酷炫的3D立方体时钟
先放一下我做的效果:https://linrunzheng.github.io/3Dclock/3Dclock/new.html 至于3D立方体怎么做这里就不在阐述了,可以看一下我之前的博客. 这里默 ...
- 用 Expression Blend 创建酷炫的 Button
原文:用 Expression Blend 创建酷炫的 Button 原文:Creating "Cool" Buttons with Expression Blend Author ...
- 【翻译】用 Expression Blend 创建酷炫的 Button
原文:Creating “Cool” Buttons with Expression Blend Author: Alex 在本文中,我们将考虑在Expression Blend用几种方法来创建酷炫的 ...
- 15个来自 CodePen 的酷炫 CSS 动画效果【下篇】
CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...
- 赞!15个来自 CodePen 的酷炫 CSS 动画效果
CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...
- 酷炫的3D照片墙
今天给大家分享的案例是酷炫的3D照片墙 这个案例主要是通过 CSS3 和原生的 JS 来实现的,接下来我给大家分享一下这个效果实现的过程.博客上不知道怎么放本地视频,所以只能放两张效果截图了. 1.实 ...
- 【CSS进阶】试试酷炫的 3D 视角
写这篇文章的缘由是因为看到了这个页面: 戳我看看(移动端页面,使用模拟器观看) 运用 CSS3 完成的 3D 视角,虽然有一些晕3D,但是使人置身于其中的交互体验感觉非常棒,运用在移动端制作一些 H5 ...
- 一分钟搞定触手app主页酷炫滑动切换效果
代码地址如下:http://www.demodashi.com/demo/12826.html 前言: 前几天在看手机直播的时候,自己就用上了触手app.一进到主页就看上了里面页面切换的效果,自己想这 ...
随机推荐
- Servlet 应用程序事件、监听器
Web容器管理Servlet/JSP相关的生命周期,若对HttpServletRequest对象.HttpSession对象.ServletContxt对象在生成.销毁或相关属性设置发生的时机点有兴趣 ...
- Android系列一、创建项目
本文是在MAC下的Android Studio操作的. 一.Android入门 1.打开Android Studio,界面如下: 几个选项的意思: 创建一个新的项目 打开一个已经存在的项目 从版本管理 ...
- WPF开发进阶 - Fody/PropertyChanged(二)
前一篇 简单的介绍了Fody/PropertyChanged的使用方法, 这一篇,我们详细介绍它的一些比较重要的特性和规则 1. Attributes 通过在类或属性上标记这些特性,可以在编译代码时, ...
- java_web总结(一)
1.struts1ajax返回值 public ActionForward preChangeAccountPwd(ActionMapping mapping, ActionForm form, Ht ...
- NAT详解
1.为什么出现了NAT? IP地址只有32位,最多只有42.9亿个地址,还要去掉保留地址.组播地址,能用的地址只有36亿左右,但是当下有数以万亿的主机,没有这么多IP地址怎么办,后面有了IPv6,但是 ...
- 使用python制作ArcGIS插件(2)代码编写
使用python制作ArcGIS插件(2)代码编写 by 李远祥 上一章节已经介绍了如何去搭建AddIn的界面,接下来要实现具体的功能,则到了具体的编程环节.由于使用的是python语言进行编程,则开 ...
- QQ18年,解密8亿月活的QQ后台服务接口隔离技术
作者:shane,腾讯后台开发高级工程师 QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗 ...
- 都能读懂的css3 3D变形效果
css3 3D变形效果 CSS3 transform3D变形 transform的含义是:改变,使-变形:转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换 ...
- 细说Asp.Net Web API消息处理管道(二)
在细说Asp.Net Web API消息处理管道这篇文章中,通过翻看源码和实例验证的方式,我们知道了Asp.Net Web API消息处理管道的组成类型以及Asp.Net Web API是如何创建消息 ...
- jQuery选择器课堂随笔
$(function(){ //并集选择器 /* $("h2,ul").css("background","pink");* ...