绘制3D的js库
有哪些值得推荐的绘制3D的js库?
4 个回答

只用过three.js,所以推荐这个.
不清楚你打算用来做什么,总的来说,得看你的运行环境.
ie就不考虑了.
火狐大部分还行,但是动态增加贴图的时候会卡,当然一次加载运行的没问题.
最爽的还是谷歌浏览器
移动端,肯定苹果的系统支持比较好,安卓的就别自虐了,运行在微信里的还好一点,16年4月更新支持了安卓端webgl,但也有部分机型跑不了.
好的条件:
桌面,可以指定运行在谷歌chrome里,那么,用three.js来做3D是不错的,毕竟网页的打开即看,上传代码就更新,是符合当前追求速度展现创意的潮流的.
three.js封装并规范,简化了webgl的过程,短短几行代码就可以让你显示出一个3D的内容出来,不至于用webgl一点一点的去写,一点不对就完全不显示的没头脑让人很沮丧.基本上,你想要的,这个库都有很简单的实现,并具有合适的默认值,然后你可以在这个默认值上去修改和学习.
three.js - Javascript 3D library
three.js的官网,有基本上所有的常见功能的例子代码,很多情况下,参考源代码就可以加到自己的代码里.
有繁多的扩展库,不过沉迷于造轮子的我,很少去接触,追求效率的人可能会比较喜欢.
缺陷:
也即webgl的缺陷,最大的问题:
js是单线程的,一个错误,可能会导致执行线程中断,一个执行有性能不足,会导致绘制顿卡.可以引入worker多线程,但是就得建立一定的通讯和执行机制,会带来架构上的复杂性.
运行于浏览器里,而浏览器对js运行性能是有上限的,我这里chrome最高到系统的25%.
chrome全屏运行,会降低运行效率,本来窗口60满帧运行的页面,全屏后立即在41-50之间波动,不清楚为何会如此,也不知道解决方法,望有知道解决方法的朋友告知一下,这个对我当前比较重要.
js代码是明文,基本上,就当自己是开源工作者好了,呵呵,劳动成果没办法保护得了的.混淆有一定用处,但也会被扒皮.唯一的,就是尽量保证自己走在别人前面.
错觉:
webgl的绘制动作是opengl来执行的,也就是显卡绘制,硬件拥有什么样的绘制性能,webgl就能达到什么样的,唯一的就是js的执行效率短板而已,对于数据运算不多的场景,还是不错的,当然因为基于opengl-es,所以有很多限制和缺失而已.
收藏感谢收起

能够让一种语言做所有事情是伟大的,
但试图让一种语言可以做所有的事情是愚蠢的。
我知道这句话要得罪很多人,但我还是要说:
但是你们这些学js只会做web的人,要做后端我理解,为什么要用nodejs,就不能去学java,go,c等等呢?
你们想做3d,我也理解,为什么就不去用傻瓜式的unity甚至高级点的ureal呢?原生态一点的ogre也好啊,为什么还是想着用js写webgl呢?
v8的性能让js有了一席之地,然而,听我一句,除非有一家公司想再捣腾一个js虚拟机出来,不然这真不是长久之计,v8这玩意儿,厉害是厉害,但不是长久之计啊……
收藏感谢

裂墙推荐 PlayCanvas ~ Babylon 和 ThreeJS 都不要再看了
利益相关:目前正在单刷 PlayCanvas 的全部文档汉化 …… 完成度 10% 填坑中 ……
收藏感谢

目前最稳定的当属Three.js,做小项目推荐;playcanvas是目前唯一带有类unity可视化编辑工具的,并且使用ECS架构,缺点是工具是云端的,天朝的网你懂的;Babylon做游戏功能强大,使用ts开发,源码比较乱,社区不如前两者活跃。
最后推荐shawn0326/zen-3d,简单小巧,目前在测试阶段。
绘制3D的js库的更多相关文章
- 轻量级的绘制图表js库--Morris.js
Morris.js 是一个轻量级的 JS 库,使用 jQuery 和 Raphaël 来生成各种时序图. 虽说现在移动手机网络已经到了4G,但是在移动web客户端开发过中,为了达到良好的体验效果,需要 ...
- mapboxgl绘制3D线
最近遇到个需求,使用mapboxgl绘制行政区划图层,要求把行政区划拔高做出立体效果,以便突出显示. 拿到这个需求后,感觉很简单呀,只需要用fill-extrusion方式绘制就可以啦,实现出来是这个 ...
- impress.js 一个创建在线幻灯的js库
真的好奇怪,我居然会写前端技术的博客.没有办法的,最近实习,看的大多是前端.所以今天就用这个来练练手了. Impress.js 是一个非常棒的用来创建在线演示的Javascript库.它基于CSS3转 ...
- 12个值得关注的顶级可视化JS库 涉及图表、动画、时间处理,表格操作
本文是译文,原文是https://da-14.com/blog/top-11...我在原文的基础上加了百度的Echats图表库,这个也是毫不逊色其他图表库的.另外Handsontable电子表格库也是 ...
- Python画各种 3D 图形Matplotlib库
回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...
- 【转载】写一个js库需要怎样的知识储备和技术程度?
作者:小爝链接:https://www.zhihu.com/question/30274750/answer/118846177来源:知乎著作权归作者所有,转载请联系作者获得授权. 1,如何编写健壮的 ...
- js库
lanchpad用的js库 http://lesscss.org/ https://github.com/EightMedia/hammer.js/wiki/Getting-Started http: ...
- 解决jQuery多个版本,与其他js库冲突方法
jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...
- 协同js库,代码编辑器
一些协同的js库 Collabedit, Online Code Editor http://collabedit.com/ Stypi, a realtime editor https://www. ...
随机推荐
- (c#) 销毁资源和释放内存
0. 什么是资源? .NET 框架中如何访问资源? 所谓的资源就是程序中可利用的数据,譬如:字符串.图片和任何二进制数据,包括任何类型的文件. 在面向对象的环境中,每一个类型都标识为某些程序所用的资源 ...
- BOM和DOM(cs)
前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...
- 管道(pipe),进程之间的共享内存(Manager,Value)
1 管道(了解) from multiprocessing import Pipe con1,con2 = Pipe() 管道是不安全的. 管道是用于多进程之间通信的一种方式. 如果在单进程中使用管道 ...
- async task 异步消息
async 和 await 是用来定义的异步方法,async 关键字是上下文关键字,原因在于只有当它修饰方法.lambda 表达式或匿名方法时,它才是关键字. 在所有其他上下文中,都会将其解释为标 ...
- leetcode401
public class Solution { /// <summary> /// 将二进制字符串转为十进制数字 /// </summary> /// <param na ...
- delphi RAD Studio新版本及路线图 及官方网站 官方 版本发布时间
delphi RAD Studio Berlin 10.1 主要是FireMonkey 移动开发的改动,VCL确实没有多大变化. http://docwiki.embarcadero.com/RAD ...
- Mysql 表名大写 找不到表
原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lowe ...
- 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件
这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: ...
- UI5-文档-4.20-Aggregation Binding
现在我们已经为我们的应用建立了一个良好的结构,是时候添加更多的功能了.通过添加一些JSON格式的发票数据,我们开始探索数据绑定的更多特性,这些发票数据显示在面板下面的列表中. Preview A li ...
- Enum学习中的compareTo方法分析
今天看工厂模式的时候里面用了枚举定义各种可能的实例类型,就看了一下枚举,发现里面有一个compareTo(E o)方法 通过Object的getClass()方法比较两个两个比校对象类型是否一致,如果 ...