绘制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. ...
随机推荐
- push(),pop(),unshift(),shift()
1.push() 往数组末尾添加一个或多个元素,返回新的长度 2.pop() 删除数组末尾元素,数组长度减1,返回被删除的值 3.unshift() 往数组开头添加一个或多个元素,返回新的长度 4.s ...
- 记录——node-mysql连接池遇到的全局变量问题
记录一个折腾了快2个小时的BUG,目前还不清楚原理. 系统分别在阿里云(测试用).XL服务器上部署,此次BUG所在功能模块为生成表格并下载,表格数据由120(阿里云)上的数据库提供. 阿里云上一切正常 ...
- 原型模式(ProtoType)
用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象. 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节. .Net 在 system 命名空间中提供了I ...
- uva140-暴力枚举
题意:任意一个点都至少有一个点与其相连接,所有的点可以进行任意排列,总排列数为n!. 一个点带宽定义与它相连的点的最远距离,一个排列的带宽定义为,点中最大的带宽,找出带宽最小的那个排列,有多组,输出字 ...
- 《GPU高性能编程CUDA实战》第七章 纹理内存
▶ 本章介绍了纹理内存的使用,并给出了热传导的两个个例子.分别使用了一维和二维纹理单元. ● 热传导(使用一维纹理) #include <stdio.h> #include "c ...
- 0_Simple__simpleTexture + 0_Simple__simpleTextureDrv
使用纹理引用来旋转图片,并在使用了静态编译和运行时编译两种环境. ▶ 源代码:静态编译 #include <stdio.h> #include <windows.h> #inc ...
- 28. 表单css样式定义格式
form>table>tbody>tr>td{padding:5px;font-size:14px;font-family:"Microsoft YaHei" ...
- 17.在Action获取Scope对象
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 引言:在前面的Action操作中,关键就是Action中的exectue方法 ...
- mysql 存储过程实例
--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数 create procedure p_procedurecode(in sumdate varchar(1 ...
- xcopy 复制目录及子目录
例:将a文件夹内的所有内容(包括子文件夹)复制到b文件夹 xcopy a\* b /y /e /i /q 说明: /y:不弹出“确认是否覆写已存在目标文件”的提示 /e:复制文件及子文件夹内所有内容, ...