效果图:
由于博客限制了图片大小,动画质量不太好,



在线效果:https://static-df787464-d77c-4180-83c3-6e7add40073e.bspapp.com/
由于用的是免费空间,图片数量加载不完全。

源码下载地址:
链接:https://pan.baidu.com/s/1AVB71AjEX06wpc4wbcV_tQ?pwd=l9zp
提取码:l9zp

参考了three.js 官方代码

<!DOCTYPE html>
<html><head><title>three.js css3d - periodic table</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"><style>html, body {height: 100%;}body {background-color: #000000;margin: 0;font-family: Helvetica, sans-serif;;overflow: hidden;}a {color: #ffffff;}#info {position: absolute;width: 100%;color: #ffffff;padding: 5px;font-family: Monospace;font-size: 13px;font-weight: bold;text-align: center;z-index: 1;}#menu {position: absolute;bottom: 20px;width: 100%;text-align: center;}.element {width: 120px;height: 160px;box-shadow: 0px 0px 12px rgba(0,255,255,0.5);border: 1px solid rgba(127,255,255,0.25);text-align: center;cursor: default;}.element:hover {box-shadow: 0px 0px 12px rgba(0,255,255,0.75);border: 1px solid rgba(127,255,255,0.75);}.element .number {position: absolute;top: 20px;right: 20px;font-size: 12px;color: rgba(127,255,255,0.75);}.element .symbol {position: absolute;top: 40px;left: 0px;right: 0px;font-size: 60px;font-weight: bold;color: rgba(255,255,255,0.75);text-shadow: 0 0 10px rgba(0,255,255,0.95);}.element .details {position: absolute;bottom: 15px;left: 0px;right: 0px;font-size: 12px;color: rgba(127,255,255,0.75);}button {color: rgba(127,255,255,0.75);background: transparent;outline: 1px solid rgba(127,255,255,0.75);border: 0px;padding: 5px 10px;cursor: pointer;}button:hover {background-color: rgba(0,255,255,0.5);}button:active {color: #000000;background-color: rgba(0,255,255,0.75);}</style></head><body><script src="../build/three.js"></script><script src="js/libs/tween.min.js"></script><script src="js/controls/TrackballControls.js"></script><script src="js/renderers/CSS3DRenderer.js"></script><div id="info"><a href="http://threejs.org" target="_blank" rel="noopener">three.js css3d</a> - periodic table. <a href="https://plus.google.com/113862800338869870683/posts/QcFk5HrWran" target="_blank" rel="noopener">info</a>.</div><div id="container"></div><div id="menu"><button id="table">TABLE</button><button id="sphere">SPHERE</button><button id="helix">HELIX</button><button id="grid">GRID</button></div><script>var table = ["H", "Hydrogen", "1.00794", 1, 1,"He", "Helium", "4.002602", 18, 1,"Li", "Lithium", "6.941", 1, 2,"Be", "Beryllium", "9.012182", 2, 2,"B", "Boron", "10.811", 13, 2,"C", "Carbon", "12.0107", 14, 2,"N", "Nitrogen", "14.0067", 15, 2,"O", "Oxygen", "15.9994", 16, 2,"F", "Fluorine", "18.9984032", 17, 2,"Ne", "Neon", "20.1797", 18, 2,"Na", "Sodium", "22.98976...", 1, 3,"Mg", "Magnesium", "24.305", 2, 3,"Al", "Aluminium", "26.9815386", 13, 3,"Si", "Silicon", "28.0855", 14, 3,"P", "Phosphorus", "30.973762", 15, 3,"S", "Sulfur", "32.065", 16, 3,"Cl", "Chlorine", "35.453", 17, 3,"Ar", "Argon", "39.948", 18, 3,"K", "Potassium", "39.948", 1, 4,"Ca", "Calcium", "40.078", 2, 4,"Sc", "Scandium", "44.955912", 3, 4,"Ti", "Titanium", "47.867", 4, 4,"V", "Vanadium", "50.9415", 5, 4,"Cr", "Chromium", "51.9961", 6, 4,"Mn", "Manganese", "54.938045", 7, 4,"Fe", "Iron", "55.845", 8, 4,"Co", "Cobalt", "58.933195", 9, 4,"Ni", "Nickel", "58.6934", 10, 4,"Cu", "Copper", "63.546", 11, 4,"Zn", "Zinc", "65.38", 12, 4,"Ga", "Gallium", "69.723", 13, 4,"Ge", "Germanium", "72.63", 14, 4,"As", "Arsenic", "74.9216", 15, 4,"Se", "Selenium", "78.96", 16, 4,"Br", "Bromine", "79.904", 17, 4,"Kr", "Krypton", "83.798", 18, 4,"Rb", "Rubidium", "85.4678", 1, 5,"Sr", "Strontium", "87.62", 2, 5,"Y", "Yttrium", "88.90585", 3, 5,"Zr", "Zirconium", "91.224", 4, 5,"Nb", "Niobium", "92.90628", 5, 5,"Mo", "Molybdenum", "95.96", 6, 5,"Tc", "Technetium", "(98)", 7, 5,"Ru", "Ruthenium", "101.07", 8, 5,"Rh", "Rhodium", "102.9055", 9, 5,"Pd", "Palladium", "106.42", 10, 5,"Ag", "Silver", "107.8682", 11, 5,"Cd", "Cadmium", "112.411", 12, 5,"In", "Indium", "114.818", 13, 5,"Sn", "Tin", "118.71", 14, 5,"Sb", "Antimony", "121.76", 15, 5,"Te", "Tellurium", "127.6", 16, 5,"I", "Iodine", "126.90447", 17, 5,"Xe", "Xenon", "131.293", 18, 5,"Cs", "Caesium", "132.9054", 1, 6,"Ba", "Barium", "132.9054", 2, 6,"La", "Lanthanum", "138.90547", 4, 9,"Ce", "Cerium", "140.116", 5, 9,"Pr", "Praseodymium", "140.90765", 6, 9,"Nd", "Neodymium", "144.242", 7, 9,"Pm", "Promethium", "(145)", 8, 9,"Sm", "Samarium", "150.36", 9, 9,"Eu", "Europium", "151.964", 10, 9,"Gd", "Gadolinium", "157.25", 11, 9,"Tb", "Terbium", "158.92535", 12, 9,"Dy", "Dysprosium", "162.5", 13, 9,"Ho", "Holmium", "164.93032", 14, 9,"Er", "Erbium", "167.259", 15, 9,"Tm", "Thulium", "168.93421", 16, 9,"Yb", "Ytterbium", "173.054", 17, 9,"Lu", "Lutetium", "174.9668", 18, 9,"Hf", "Hafnium", "178.49", 4, 6,"Ta", "Tantalum", "180.94788", 5, 6,"W", "Tungsten", "183.84", 6, 6,"Re", "Rhenium", "186.207", 7, 6,"Os", "Osmium", "190.23", 8, 6,"Ir", "Iridium", "192.217", 9, 6,"Pt", "Platinum", "195.084", 10, 6,"Au", "Gold", "196.966569", 11, 6,"Hg", "Mercury", "200.59", 12, 6,"Tl", "Thallium", "204.3833", 13, 6,"Pb", "Lead", "207.2", 14, 6,"Bi", "Bismuth", "208.9804", 15, 6,"Po", "Polonium", "(209)", 16, 6,"At", "Astatine", "(210)", 17, 6,"Rn", "Radon", "(222)", 18, 6,"Fr", "Francium", "(223)", 1, 7,"Ra", "Radium", "(226)", 2, 7,"Ac", "Actinium", "(227)", 4, 10,"Th", "Thorium", "232.03806", 5, 10,"Pa", "Protactinium", "231.0588", 6, 10,"U", "Uranium", "238.02891", 7, 10,"Np", "Neptunium", "(237)", 8, 10,"Pu", "Plutonium", "(244)", 9, 10,"Am", "Americium", "(243)", 10, 10,"Cm", "Curium", "(247)", 11, 10,"Bk", "Berkelium", "(247)", 12, 10,"Cf", "Californium", "(251)", 13, 10,"Es", "Einstenium", "(252)", 14, 10,"Fm", "Fermium", "(257)", 15, 10,"Md", "Mendelevium", "(258)", 16, 10,"No", "Nobelium", "(259)", 17, 10,"Lr", "Lawrencium", "(262)", 18, 10,"Rf", "Rutherfordium", "(267)", 4, 7,"Db", "Dubnium", "(268)", 5, 7,"Sg", "Seaborgium", "(271)", 6, 7,"Bh", "Bohrium", "(272)", 7, 7,"Hs", "Hassium", "(270)", 8, 7,"Mt", "Meitnerium", "(276)", 9, 7,"Ds", "Darmstadium", "(281)", 10, 7,"Rg", "Roentgenium", "(280)", 11, 7,"Cn", "Copernicium", "(285)", 12, 7,"Nh", "Nihonium", "(286)", 13, 7,"Fl", "Flerovium", "(289)", 14, 7,"Mc", "Moscovium", "(290)", 15, 7,"Lv", "Livermorium", "(293)", 16, 7,"Ts", "Tennessine", "(294)", 17, 7,"Og", "Oganesson", "(294)", 18, 7];var camera, scene, renderer;var controls;var objects = [];var targets = { table: [], sphere: [], helix: [], grid: [] };init();animate();function init() {camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );camera.position.z = 3000;scene = new THREE.Scene();// tablefor ( var i = 0; i < table.length; i += 5 ) {var element = document.createElement( 'div' );element.className = 'element';element.style.backgroundColor = 'rgba(0,127,127,' + ( Math.random() * 0.5 + 0.25 ) + ')';var number = document.createElement( 'div' );number.className = 'number';number.textContent = (i/5) + 1;element.appendChild( number );var symbol = document.createElement( 'div' );symbol.className = 'symbol';symbol.textContent = table[ i ];element.appendChild( symbol );var details = document.createElement( 'div' );details.className = 'details';details.innerHTML = table[ i + 1 ] + '<br>' + table[ i + 2 ];element.appendChild( details );var object = new THREE.CSS3DObject( element );object.position.x = Math.random() * 4000 - 2000;object.position.y = Math.random() * 4000 - 2000;object.position.z = Math.random() * 4000 - 2000;scene.add( object );objects.push( object );//var object = new THREE.Object3D();object.position.x = ( table[ i + 3 ] * 140 ) - 1330;object.position.y = - ( table[ i + 4 ] * 180 ) + 990;targets.table.push( object );}// spherevar vector = new THREE.Vector3();var spherical = new THREE.Spherical();for ( var i = 0, l = objects.length; i < l; i ++ ) {var phi = Math.acos( -1 + ( 2 * i ) / l );var theta = Math.sqrt( l * Math.PI ) * phi;var object = new THREE.Object3D();spherical.set( 800, phi, theta );object.position.setFromSpherical( spherical );vector.copy( object.position ).multiplyScalar( 2 );object.lookAt( vector );targets.sphere.push( object );}// helixvar vector = new THREE.Vector3();var cylindrical = new THREE.Cylindrical();for ( var i = 0, l = objects.length; i < l; i ++ ) {var theta = i * 0.175 + Math.PI;var y = - ( i * 8 ) + 450;var object = new THREE.Object3D();cylindrical.set( 900, theta, y );object.position.setFromCylindrical( cylindrical );vector.x = object.position.x * 2;vector.y = object.position.y;vector.z = object.position.z * 2;object.lookAt( vector );targets.helix.push( object );}// gridfor ( var i = 0; i < objects.length; i ++ ) {var object = new THREE.Object3D();object.position.x = ( ( i % 5 ) * 400 ) - 800;object.position.y = ( - ( Math.floor( i / 5 ) % 5 ) * 400 ) + 800;object.position.z = ( Math.floor( i / 25 ) ) * 1000 - 2000;targets.grid.push( object );}//renderer = new THREE.CSS3DRenderer();renderer.setSize( window.innerWidth, window.innerHeight );document.getElementById( 'container' ).appendChild( renderer.domElement );//controls = new THREE.TrackballControls( camera, renderer.domElement );controls.rotateSpeed = 0.5;controls.minDistance = 500;controls.maxDistance = 6000;controls.addEventListener( 'change', render );var button = document.getElementById( 'table' );button.addEventListener( 'click', function ( event ) {transform( targets.table, 2000 );}, false );var button = document.getElementById( 'sphere' );button.addEventListener( 'click', function ( event ) {transform( targets.sphere, 2000 );}, false );var button = document.getElementById( 'helix' );button.addEventListener( 'click', function ( event ) {transform( targets.helix, 2000 );}, false );var button = document.getElementById( 'grid' );button.addEventListener( 'click', function ( event ) {transform( targets.grid, 2000 );}, false );transform( targets.table, 2000 );//window.addEventListener( 'resize', onWindowResize, false );}function transform( targets, duration ) {TWEEN.removeAll();for ( var i = 0; i < objects.length; i ++ ) {var object = objects[ i ];var target = targets[ i ];new TWEEN.Tween( object.position ).to( { x: target.position.x, y: target.position.y, z: target.position.z }, Math.random() * duration + duration ).easing( TWEEN.Easing.Exponential.InOut ).start();new TWEEN.Tween( object.rotation ).to( { x: target.rotation.x, y: target.rotation.y, z: target.rotation.z }, Math.random() * duration + duration ).easing( TWEEN.Easing.Exponential.InOut ).start();}new TWEEN.Tween( this ).to( {}, duration * 2 ).onUpdate( render ).start();}function onWindowResize() {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();renderer.setSize( window.innerWidth, window.innerHeight );render();}function animate() {requestAnimationFrame( animate );TWEEN.update();controls.update();}function render() {renderer.render( scene, camera );}</script></body>
</html>

three.js 制作3D相册相关推荐

  1. 使用html+css+js实现3D相册

    使用html+css+js实现3D相册,快来上传的照片吧 效果图: 代码如下,复制即可用: <!DOCTYPE html> <html lang="en"> ...

  2. js制作3d立体旋转相册

    使用js做一个3d立体旋转相册 可自由拖拽 源码如下 <!DOCTYPE html> <html> <head> <meta charset="ut ...

  3. HTML+CSS+JS制作3D动态相册表白网站代码【程序员专属情人节表白网站】

    ❤ 精彩专栏推荐

  4. 用html制作3d相册_运动眼镜原型可以用全彩3D打印来制作啦!

    运动眼镜原型可以用全彩3D打印来制作啦! 运动性能眼镜品牌Oakley正在使用惠普的全彩 Multi Jet Fusion 技术生产功能性原型.该公司为体育行业提供高性能眼镜产品已有40多年的历史,并 ...

  5. three.js制作3d模型工具_3D打印模型打磨抛光常用工具

    对于追求更好模型品质的人来说,对3D打印模型进行后处理工作是必不可少的,而后处理,首要的便是对模型进行打磨.抛光,将不属于模型的耗材去除,提高表面光洁度.在此工作中,我们需要用到很多工具,下面将介绍下 ...

  6. three.js制作3d模型工具_浙江3D打印模型制作收费标准▁来图定制

    河南万润增材智造有限公司旨在工业三维打印领域改变人类的工作方式和设计理念,为全国各大地区提供3D打印设备及3D打印服务,上海.天津.北京.重庆.海南省.浙江省.江苏省等地都有我们的合作伙伴. 在日新月 ...

  7. 3d旋转相册代码源码_用代码制作3d相册签到墙(附源码)

    七夕就要到了,不管是单身狗的小伙伴还是已经有狗的小伙伴都比较焦虑了,单身的小伙伴着急怎么尽快脱单,不是单身的小伙伴又纠结该送点什么礼物好哄男(女)朋友,呐,在买香水口红的同时,也不要忘记花点小心思,心 ...

  8. python制作3d相册_如何在Python中制作3D图?

    这是3D绘图代码的MATLAB版本: 编辑: 这是当前的代码: plt.figure(2) fig_b = Axes3D(fig2) xx2 = np.arange(0, L+h_grid*L, h_ ...

  9. python制作3d相册代码_Python使用matplotlib绘制3D图形(代码示例)

    本篇文章给大家带来的内容是关于Python使用matplotlib绘制3D图形(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 3D图形在数据分析.数据建模.图形和图像处理 ...

  10. 抖音超火HTML+CSS+JS制作3D炫酷魔方

    ❤ 精彩专栏推荐

最新文章

  1. 数据库表(字段类型、约束、截断表、修改表字段、重命名表)
  2. 考PMP证书一定要参加PMP培训吗?
  3. Leangoo敏捷开发工具怎么添加成员
  4. Linux系统日志级别
  5. java itemcf_大规模电商推荐数据分析-基于ItemCF的召回
  6. leetcode 226. 翻转二叉树
  7. WordPress中使主题支持小工具以及添加插件启用函数
  8. 【 Grey Hack 】反向Shell
  9. 企业战略咨询方法:学习SWOT分析
  10. freemark循环map_freemarker中循环map根据key值得value 报错
  11. Java错误提示框口怎么使用_如何在Swing中显示错误消息对话框?
  12. 一招解决IDEA启动慢的困扰
  13. java中equals以及==的用法(简单介绍)
  14. windows安装fdfs_lient报错fdfs_client/sendfilemodule: fatal error C1189: #error: platfom not supported
  15. 传智播客reactnative_传智播客黑马前端36期(2018年)
  16. arcgis公里坐标转经纬度_利用arcgis实现经纬度和平面坐标互转
  17. 比较全的敏捷概念知识总结
  18. webots controller API(C++)
  19. Oracle数据库CPU使用率过高处理记录
  20. 数据可视化,看这一篇就够了

热门文章

  1. LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
  2. 微信朋友圈评论功能的实现步骤
  3. 华为手表表盘的数字什么意思_华为gt2表盘上的数字是什么意思
  4. 常用视频像素格式 YUV422 YUV420
  5. 错题集--大一C语言选择题
  6. c语言试题 函数选择,(C语言函数章节选择题.doc
  7. 【软件工程】 详细设计
  8. 个人php源码,php个人发卡平台源码 v1.4 免费版
  9. js/JavaScript获取IP地址的方法小结
  10. 【DBN预测】基于粒子群算法优化DBN深度置信网络实现数据预测matlab代码