3d_3d max - CSDN
精华内容
参与话题
  • 10个超漂亮的CSS 3D特效

    万次阅读 多人点赞 2018-08-11 09:26:55
    在油管上看到了10个超漂亮的CSS 3D特效,遂分享给大家,有写是css+JavaScript实现的。 3D Slicebox 在3D立方体上寻找图像幻灯片?查看演示 图像转换 与THREE.js 结合使用- 此图片幻灯片将让您的访问者惊呆了...

    在油管上看到了10个超漂亮的CSS 3D特效,遂分享给大家,有写是css+JavaScript实现的。

    3D Slicebox

    在3D立方体上寻找图像幻灯片?查看演示

    图像转换

    THREE.js 结合使用- 此图片幻灯片将让您的访问者惊呆了。你不能错过这一个,相信我!查看演示

    3D条形图

    将无聊的平面2D图表转换为3D图表。查看现场演示,点击下面的图片获取源代码。查看演示

    3D导航栏

    再次在您网站顶部的水平导航栏?试试这个吧!查看演示

    3D动画图表

    更改数据时包含动画的3D图表。查看演示

    纯CSS进度条

    忘记旧的普通2D进度条并检查这个纯CSS 3D进度条。查看演示

    CSS Helix加载器

    适合您网站的加载动画,可以让用户长时间保持关注。查看演示

    3D盒子预览器

    将相关内容分组到一个框中并将鼠标悬停在预览中!查看演示

     

    3D翻转预览器

    为您的元素添加悬停效果的完美匹配。查看演示

    3D 404错误

    用旋转的3D元素替换旧的无聊404错误页面。查看演示

    展开全文
  • 程序员给女朋友做的精美3D相册

    万次下载 热门讨论 2020-07-30 23:32:24
    程序员给女朋友用HTML5制作的3D相册 感觉挺漂亮。 整理里一个自己可以换相片
  • 3D图形理论

    万人学习 2019-07-01 17:58:21
    课程实现一套软3D,即不依赖任何第三方API(OpenGL,D3D,GDI)等。 课程从建立建立颜色缓冲区,绘制点,绘制线,绘制面,绘制图片,建立纹理,作图形的旋转,图像的混合,建立三维坐标系,实现模型矩阵,投影矩阵...
  • 12款开源或免费的3D建模软件

    千次阅读 2019-04-13 12:00:19
    Blende是一款系统全面的3D建模套件,它提供了大量专业级功能和模块,跨平台支持所有的主要操作系统。目前并已成为免费3D软件的代名词。Blender通常被称为TheBlenderProject,因为它不仅仅是一个软件,还是一个完整的...

    1、Blender

    Blende是一款系统全面的3D建模套件,它提供了大量专业级功能和模块,跨平台支持所有的主要操作系统。目前并已成为免费3D软件的代名词。Blender通常被称为TheBlenderProject,因为它不仅仅是一个软件,还是一个完整的社区,致力于创建最完整的3D建模和动画开发方案。并且这款软件是开源的,每天都有开发者提供新的模块和插件,软件也在不断更新。功能非常强大,但是上手比较难;一旦学会了,用起来就会非常方便。

    这款软件的用户评价比较高,偶有的抱怨也是它的界面有点差,然而这是由于社区过于庞大,需要在线提供教程过多,有时会让部分用户迷茫。另外,Blender不仅仅是3D设计造型,它允许用户研究甚至创作自己动画,使用Blender创建的一些动画甚至会让Pixar的顶级设计师脸红。总体来看,Blender社区非常强大,令人印象深刻。

    开源:是

    网址:https://www.blender.org

    2、OpenSCAD

    OpenSCAD是一款基于命令行的3D建模软件,可以产生CSG文件,特长是制作实心3D 模型。支持跨平台操作系统, 包括Linux、Mac和Windows。

    开源:是

    网址:http://www.openscad.org

    3、Art of Illusion

    免费,开源的3D模型和渲染软件。亮点包括细分曲面模型工具,骨骼动画和图形语言。尽管缺点也很突出, Art of Illusion是在RepRap开源社区使用最广泛的3D建模软件。完全采用Java开发,拥有与同类型商业软件相同的功能。

    开源:是

    网址:http://www.artofillusion.org/

    4、FreeCAD

    FreeCAD是来自法国Matra Datavision公司的一款开源免费3D CAD软件, 基于CAD / CAM / CAE几何模型核心,是一个功能化、参数化的建模工具。FreeCAD的直接用户目标是机械工程、产品设计,当然也适合工程行业内的其他广大用户,比如建筑或者其他特殊工程行业。

    开源:是

    网址:https://www.freecadweb.org/

    5、Wings3D

    Wings 3D是一个开源免费的3D建模软件,适合创建细分曲面模型。容易学习,功能强大。Wings 3D的名字来源于它用于存储坐标系和临近数据所使用的翼边数据结构。支持多种操作系统,包括Linux、Mac和Windows。

    开源:是

    网址:http://www.wings3d.com/

    6、BRL-CAD

    BRL-CAD是一款强大的跨平台开源实体几何(CSG) 构造和实体模型计算机辅助设计(CAD) 系统。BBRL-CAD包含有一个交互式的几何编辑器,光学跟踪支持图形着色和几何分析,计算机网络分布式帧缓存支持,图像处理和信号处理工具, 可以进行几何编辑、几何分析,支持分布式网络,可以进行图像处理和信号处理。

    开源:是

    网址:http://brlcad.org/

    7、MeshMixer

    MeshMixer是一个3D模型工具,也是Autodesk公司的产品。它能够通过混合现有的网格来创建3D模型,支持Windows和Mac OS X系统。如果你想制作一些类似“牛头马面”的疯狂混合3D模型,这是个简单直接的办法。

    开源:否。免费

    网址:http://www.meshmixer.com/

    8、MeshLab

    MeshLab是3D发展和数据处理领域非常著名的软件是一个开源、可移植和可扩展的三维几何处理系统。它可以帮助用户处理在3D扫描捕捉时产生的典型无特定结构的模型,还为用户提供了一系列工具编辑,清洗,筛选和渲染大型结构的三维三角网格(典型三维扫描网格), 该系统依靠了网格处理任务GPL的心向量图库。该系统发布于2005年年底。

    开源:是

    网址:http://www.meshlab.net/

    9、SketchUp(草图大师)

    SketchUp是谷歌Google的一个免费交互式的3D模型程序,不仅适合高级用户,也适合初学者。上手非常容易,但是缺失一些高级功能。

    ketchup是一套直接面向设计方案创作过程的设计工具,其创作过程不仅能够充分表达设计师的思想而且完全满足与客户即时交流的需要,它使得设计师可以直接在电脑上进行十分直观的构思,是三维建筑设计方案创作的优秀工具。是一个极受欢迎并且易于使用的3D设计软件,官方网站将它比喻作电子设计中的“铅笔”。它的主要卖点就是使用简便,人人都可以快速上手。并且用户可以将使用SketchUp创建的3D模型直接输出至Google Earth里,非常的酷!@Last Software公司成立于2000年,规模较小,但却以SketchUp而闻名。

    开源:否。免费

    网址:https://www.sketchup.com/

    10、Autodesk 123D

    Autodesk 123D是欧特克公司的产品,是一个免费3D模型软件,你可以使用一些简单的图形来设计、创建、编辑三维模型,或者在一个已有的模型上进行修改。目前只支持Windows系统。 用户只需要简单拍摄几张物体照片,它就能自动生成3D模型,并能通过Autodesk将3D模型制作成实物。

    开源:否。免费

    网址:https://www.autodesk.com/solutions/123d-apps

    11、Sculptris

    Sculptris是款免付的3D雕刻软件,小巧却强大,让艺术家只需要简单地专注于创作惊人的3 D艺术品。。用户可以像玩橡皮泥一样,拉,捏,推,扭等做一切可以对橡皮泥做的事。如果你是数字雕塑世界的新手、Sculptris是理想的入门平台。相反,如果你拥有丰富的CG行业经验,你将发现在Sculptris中可以快速爆发的方式去实现你的概念。它具有直观、好玩和友好的用户感受,所以作为艺术家可以集中全部精力进行创作。

    开源:否。免费

    网址:http://pixologic.com/sculptris/

    12、K-3D

    K-3D是基于GNU/Linux和Win32的一个三维建模、动画和绘制系统,是一款免费、开放原始码的 3D 模型和动画制作与渲染(rendering) 工具,它强大的功能可以满足专业人士的需求。它可以创建和编辑 3D 几何图形,提供极具弹性的面向对象的插件增强功能及以节点作基础的可视化管线架构,所有参数和选项的调整,都会立即显现结果,而且可以无限次数地复原与取消复原。此外,它使用与 RenderMan 相符的渲染引擎 (render engine),可创作出电影质量的 3D 动画。

     

    开源:是

    网址:http://www.k-3d.org/
     

    展开全文
  • 一组神奇的 3D Gif 动图

    千次阅读 2019-01-08 07:19:25
    本文由 极客范 - 黄利民 翻译自 mymodernmet。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。 虽然 gif 动图/动画似乎是无处不在现在了,但有些聪明人已经把 gif 动图的视觉...

    本文由 极客范 - 黄利民 翻译自 mymodernmet。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

    虽然 gif 动图/动画似乎是无处不在现在了,但有些聪明人已经把 gif 动图的视觉体验提高了一个层级。在一组图片上仔细添加一组纯色(通常是白色)的竖线,就产生了一个令人难以置信的立体效果了。当图中人物或物体移动到前景(foreground),他们似乎要穿过屏幕,直击看客。

    添加的白条是跨入前景的视觉标记。一旦物体“进入”线条前面,就挡住了白条,看客的大脑立即把画面转为三维场景了。优秀的 3D gif 制作者利用这个效果,从电影或视频剪辑中选择一些场景和物体(无论人物、动物、怪物或投射物),就可使其有“进入”前景的立体感。

    下面就来欣赏一组由国外网友制作的 3D gif 动图:(图来自:ViralNova 和 Tumblr

    小问题:这 13 张 gif 动图,请问分别是出自哪些电影?

    展开全文
  • Three JS 3D渲染JS引擎

    千次阅读 2018-09-12 16:44:31
    Three.js是一款开源的主流3D绘图JS引擎(名字Three就是3D的含义),原作者为Mr.Doob,GItHub项目地址为:https://github.com/mrdoob/three.js/,可以下载项目,分析下源码和实现原理。 我们知道WebGL是一种网页3D...

    1.定义
    Three.js是一款开源的主流3D绘图JS引擎(名字Three就是3D的含义),原作者为Mr.Doob,GItHub项目地址为:https://github.com/mrdoob/three.js/,可以下载项目,分析下源码和实现原理。
    我们知道WebGL是一种网页3D绘图标准,和jQuery简化了HTML DOM操作一样,Three.js可以简化WebGL编程。
    WebGL是HTML5技术生态链中最为令人振奋的标准之一,把Web带入3D的时代。

    2.理解WebGL
    WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染

    WebGL程序基本包含3个基本对象: 场景(scene), 相机(camera), 以及一个渲染器(renderer)。 拿电影来类比的话,场景对应于整个布景空间,相机是拍摄镜头,渲染器用来把拍摄好的场景转换成胶卷(对于网页来讲,是电脑屏幕)。 场景和相机代表了3D观察空间和数据模型,渲染器则包含了WebGL绘图上下文和着色器。

    3.项目源码框架截取
    项目源码的框架结构,我们主要看核心的模块src和示例examples这两个文件夹,下面是框架结构图:
    这里写图片描述
    为了方便我们本地通过浏览器打开html文件来进行研究,可以看到示例中的scene、camera、renderer这几个对象,下面是效果图:
    这里写图片描述

    4.Three JS中文官网的API
    ①、常量(Constants)
    ②、相机(Cameras)
    ③、核心模块(Core)
    ④、光照(Lights)
    ⑤、加载器(Loaders)
    ⑥、材料(Materials)
    ⑦、数学工具库(Math)
    ⑧、对象(Objects)
    ⑨、渲染器(Renderers)
    ⑩、渲染器 / 着色器(Shaders)
    ⑪、渲染器 / WebGL
    ⑫、场景(Scenes)
    ⑬、纹理(Textures)
    ⑭、动画(Animation)
    ⑮、几何模型(Geometries)
    ⑯、辅助对象(Helpers)
    也是刚学习这个JS框架,具体涉及到模块的集体对象,可以在中文API官网,进行查看和研究。
    这里写图片描述

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    5.分析源码的示例下css3d_periodictable是怎么生成的动态效果
    四种样式的效果:table,sphere,helix,grid
    鼠标坐标是可以360旋转查看效果,鼠标右键移动模型位置

    首先看下效果图:
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    网页源码结构:
    这里写图片描述
    这里可以看到每一个页面的字母都是一个个div组成,每个element都包含number,sysmbol,details属性,通过这些element集合,进行数学计算,通过css定位,显示出效果
    这里写图片描述

    GitHub JS源代码:
    分析步骤:
    ①初始化页面(div渲染) init
    生成元素div,嵌套通过对象element接收,实例化 THREE.CSS3DObject(element)对象object,定义object的x,y,z坐标,按规则 Math.random() * 4000 - 2000随机生成,然后添加到scene场景中
    ②Object3D初始化,保持全局的element集合
    通过new THREE.Object3D()生成对象,定义x,y轴坐标,坐标通过table数据生成,table集合数据格式”Og”, “Oganesson”, “(294)”, 18, 7
    ③sphere,helix,grid效果,先设置setFromCylindricalCoords模型,在设置通过x,y,z的坐标,前提是需要数据计算坐标,也是效果生成的难点,需要研究数学计算的计算函数

    <!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();
    
                    // table
    
                    for ( 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 );
    
                    }
    
                    // sphere
    
                    var vector = new THREE.Vector3();
    
                    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();
    
                        object.position.setFromSphericalCoords( 800, phi, theta );
    
                        vector.copy( object.position ).multiplyScalar( 2 );
    
                        object.lookAt( vector );
    
                        targets.sphere.push( object );
    
                    }
    
                    // helix
    
                    var vector = new THREE.Vector3();
    
                    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();
    
                        object.position.setFromCylindricalCoords( 900, theta, y );
    
                        vector.x = object.position.x * 2;
                        vector.y = object.position.y;
                        vector.z = object.position.z * 2;
    
                        object.lookAt( vector );
    
                        targets.helix.push( object );
    
                    }
    
                    // grid
    
                    for ( 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>
    

    6.链接
    中文API地址:http://techbrood.com/threejs/docs/
    GitHub项目源码地址:https://github.com/mrdoob/three.js/
    官网地址:https://threejs.org/
    在线开发平台:http://wow.techbrood.com/fiddle/new

    注:本文为Three JS的基础知识技术分享,整合的相关文档资料

    展开全文
  • 3D卷积

    千次阅读 2019-05-21 16:29:07
    3D卷积方法是把视频划分成很多固定长度的片段(clip),相比2D卷积,3D卷积可以提取连续帧之间的运动信息。 即,3D卷积将视频多帧进行融合 1. C3D paper: D. Tran, et al. Learning spatio-temporal features ...
  • 理解3D CNN及3D卷积

    万次阅读 多人点赞 2018-11-18 17:22:01
    这篇博客主要详细介绍3D CNN框架结构的计算过程,我们都知道3D CNN 在视频分类,动作识别等领域发挥着巨大的优势,前两个星期看了这篇文章:3D Convolutional Neural Networks for Human Action Recognition,打算用...
  • 3D数学

    千次阅读 2018-08-21 17:01:08
    转 ...amp;utm_medium=referral   3D数学基础学习 向量点乘:   向量叉乘:    矩阵:                     ...
  • tumblr资源下载

    2020-07-19 23:30:57
    tumblr图片下载工具是一款全新的图片下载工具,你只需要输入相应的网址就可以进行下载,并且软件还可以多开,让您同时对几个博主的图片进行下载。
  • 深入浅出Unity3D——第一篇

    万人学习 2019-07-01 10:35:43
    Unity3D基础知识、游戏算法一网打尽。
  • AD绘制3D封装库

    万次阅读 2017-11-23 13:46:51
    制作元器件库的时候有3D模型会比较装逼,这样做出来的PCB用3D视角查看的时候会很炫酷,例如: 上面这张图片上有很多元器件是有3D效果的,虽然只是简单的3D图,不能很好的反应元器件真实的样子,但是已经很不错了,...
  • altium designer 3D模式下如何进行旋转

    万次阅读 2017-04-21 09:28:49
    先按3切换到三维界面,然后按住SHIFT不放,按鼠标右键调整视图角度
  • 添加Altium Designer 3D封装

    万次阅读 2016-12-01 17:58:50
    我在网上看到别人画的3D模型电路板感觉十分漂亮。如果能将二维图形用3D效果展示出来,是不是显得十分cool! 因此参考了网上的教程,创建了自己的第一个3D封装。 首先要画一个3D效果图,肯定要借助一些画图软件,比如...
  • 基于Unity的游戏开发(上)

    万人学习 2019-06-24 11:55:37
    本课程是Unity游戏开发的入门课程,课程分为上、下两个部分。上篇主要讲述游戏的基本概念、Unity的开发环境、游戏资源的创建和使用等基础内容。
  • Unity3D3DMax 结合开发

    万次阅读 2013-01-21 14:53:57
    unity3D3DMax 做的模型时需要注意几点 1:方向问题 2:模型尺寸问题 3:模型所占资源大小问题   3DMax 做的东西导入到 Unity3D 中,在 Unity3D 引擎中 X 会被反向旋转 90 度();个人处理方式是建模时...
  • translate3d(x,y,z)的用法

    万次阅读 2020-05-11 10:45:15
    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minim...
  • Unity3D着色器程序设计-CG版

    万人学习 2018-10-22 21:38:06
    本课程将带领大家学习Unity3D中的着色器程序
  • 现在随着社会不断发展,很多人都开始学会投资自己了,有人开始自学3Dmax,那么对于初学者新手而言用哪个3Dmax好呢?用哪个3Dmax版稳定点?下面我们就来看下答案吧。 新手用哪个3Dmax版本好? 安装3Dmax版本的高低要看...
  • 遗憾的是,目前的浏览器对3D渲染效果还不是非常理想,尤其是渲染速度,可能用chrome和safari会比较理想。下面给大家推荐几个比较炫丽的HTML5 Canvas 3D动画效果,应该能让你眼前一亮。  1、HTML5 3D旋转地球 ...
1 2 3 4 5 ... 20
收藏数 627,794
精华内容 251,117
关键字:

3d