契机:

3-4月份,有机会再次学了一遍高数,然后再一次从二,三重积分的坑里爬来爬去,其中有个直观的问题一直困扰着我就是一个函数在空间坐标系上的图像,所以当时就打算学完这些之后,自己在5月份的时候用three.js自己做一个展示函数图像的小app,这是大体的出发点。

心得:

three.js 是个js框架,封装了webgl的底层操作,webgl是什么呢? 是一种3d绘图协议,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。(百度百科)

  当然我们前端要弄这个webgl首先还是要用canvas获取绘图上下文,然后调用各种api,不过webgl还是太底层了,所以才有了three.js,就像原生js操作dom太麻烦,后来便有了jq,一个道理。

three.js四大件,分别是camera,scene,light,render。

camera就是你的眼睛,通过控制camera的position和lookAt,决定视线

scene就是舞台,所有需要展示的mesh都将add在scene上

light就是光,有了光便有了世界

至于render便是将以上三者综合的结果渲染在了浏览器上

就这样,通过以上几步操作一个二维平面的显示器就可以模拟一个三维世界的显示了。我一直觉得在一个二维平面上显示三维的东西是一个很‘伟大的’事情,前段时间看过一篇3d游戏的发展史后更觉如此,仔细想想几十年以前的显示器完全就是马赛克风格,后来随着像素点的密集,显示的图形才越来越精美。

有了以上的操作后,借助于bom的一些api就能实现动画了,如果是简单的旋转,放大操作可以用THREE.OrbitControls实现,如果只是展示一个3d模型有以上知识就差不多ok了。然而很重要的一点是一个好的3d作品,贴图,材质和模型是尤为重要的,另外尤其得考虑光照因素。而且在现在外界设施的各种限制下,性能优化肯定也是three.js的一个大课题。

最后放点我的成果,球:

马鞍面:

github地址:

https://github.com/daxiazilong/threeDFunctions

玩three.js的一点心得的更多相关文章

  1. 谈谈选用技术的原则,技术学习方法技巧,阅读代码的技巧及其它 MSF的一点心得

    谈谈技术原则,技术学习方法,代码阅读及其它(正文) 这篇文章是前一阵在水木BBS上和别人讨论中偶自己发言的摘编,是偶这几年开发过程完全经验式的总结.完全个人经验,供批判. 一.选用技术的原则 比较规范 ...

  2. WebBrowser一点心得,如果在Javascript和Winform代码之间实现双向通信

    原文:WebBrowser一点心得,如果在Javascript和Winform代码之间实现双向通信 最近工作需要,学习了一下winform内嵌webbrowser控件,然后与htm页面中的javasc ...

  3. 使用Webbrowser的一点心得体会

    原文:使用Webbrowser的一点心得体会 自从用上VS2005后,发现多了个WebBrowser控件(.net 2003中不带),为图方便吧,有好多小工具就用这个写的,慢慢也有点体会了,总结一下, ...

  4. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  5. 【并行计算与CUDA开发】基于NVIDIA显卡的硬编解码的一点心得 (完结)

    原文:基于NVIDIA显卡的硬编解码的一点心得 (完结) 1.硬解码软编码方法:大体流程,先用ffmpeg来读取视频文件的包,接着开启两个线程,一个用于硬解码,一个用于软编码,然后将读取的包传给解码器 ...

  6. js断点调试心得

    虽然网上已经有多的数不清的调试教程了,但仍然没有发现哪篇文章写的通俗易懂,索性自己尝试写写自己的一些使用习惯或者说是心得,希望对那些还不是很懂得使用断点调试的孩子有一些帮助(大神请无视~). 1.断点 ...

  7. js的一点

    1.js中实现继承的方法 1.js原型(prototype)实现继承 <SPAN style="<SPAN style="FONT-SIZE: 18px"&g ...

  8. 关于使用Exception的一点心得

    毫无疑问,Exception有很多优点.查看任何一本面向对象的书籍,都会提到异常相对于返回值标记状态的不足以及避免错误导致程序崩溃的问题.看起来是很好的,用起来也是很好的.可是这么多年过去了,异常用的 ...

  9. PHP学习路上的一点心得

    继学些了java后,接触php的项目后发现 php真的也是很强大的一门语言,这只是一篇回想,想到什么就写什么把,大家随便看看. 1.php其实无需等待,一般的改完代码后直接刷新页面即可,不需要像jav ...

  10. 学习Javascript DOM 编程艺术的一点心得

    最近又看了一遍JS DOM编程艺术,照例来写一写读后感. 其实,我从中学到最深的是几个概念:1.平稳退化.当浏览器并不支持JS的时候网页的基本核心功能是还可以用的:2.逐渐增强.在原始的信息层上用其他 ...

随机推荐

  1. linux系统命令make.clean的用法讲解

    先先看一下什么是makefile makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Sh ...

  2. PHP API接口数据简单快速的加密解密

    php7.0版本以上不支持mcrypt_encryp函数进行加密的代码,加密方式改为openssl_encrypt 用自己私人的服务器来测试吧,99买阿里云 openssl_系列支持php5.3以上版 ...

  3. Qt6.2发布(含项目代码升级到Qt6吐血经验总结)

    一.前言 升级到Qt6吐血经验总结 https://gitee.com/feiyangqingyun/qtkaifajingyan#二升级到qt6 我很高兴地宣布 Qt 6.2 的发布.Qt 6.2 ...

  4. AOP-Redis缓存

    我没有单独使用过Redis,细节我可能解释不到位.该文章是采用依赖注入实现AOP-Redis缓存功能的 . 之前有写实现Memory缓存的.异曲同工之妙. 使用Redis离不开安装get包:Stack ...

  5. [转]基于vue-router的matched实现面包屑功能

    原文链接:基于vue-router的matched实现面包屑功能

  6. Appium_iOS自动化测试之Appium Log

                  Xcode WebDriverAgentRunner配置参考: https://www.cnblogs.com/dreamhighqiu/p/11023363.html 1 ...

  7. 开箱你的 AI 语音女友「GitHub 热点速览」

    随着大模型 API 服务的不断丰富,开发者无需再依赖昂贵的硬件,也能轻松开发出拥有强大 AI 能力的应用.这不仅降低了技术门槛,也激发了极客们的创造力. 就比如上周飙升 1.5k Star 的开源项目 ...

  8. Hadoop 概述(一)

    Hadoop概述信息 hadoop 有三大组成部分,HDFS(分布式文件存储系统).YARN(资源管理器).MAPREDUCE(分布式计算框架) ,下边我们来简单介绍一下 HDFS 分布式文件存储系统 ...

  9. 第八章 (Nginx+Lua)流量复制/AB测试/协程

    流量复制 在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线.这其实就需要进 ...

  10. 缓冲流的使用:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter

    处理流之一 :缓冲流    当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区 当使用BufferedInputStream读取字节文件时,BufferedInputStream会一次 ...