有哪些值得推荐的绘制3D的js库?

 

4 个回答

默认排序​
HTML5/GAME
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,所以有很多限制和缺失而已.

4​添加评论

​分享

​收藏​感谢收起

温酒不说谎
4 人赞同了该回答

能够让一种语言做所有事情是伟大的,
但试图让一种语言可以做所有的事情是愚蠢的。

我知道这句话要得罪很多人,但我还是要说:
但是你们这些学js只会做web的人,要做后端我理解,为什么要用nodejs,就不能去学java,go,c等等呢?

你们想做3d,我也理解,为什么就不去用傻瓜式的unity甚至高级点的ureal呢?原生态一点的ogre也好啊,为什么还是想着用js写webgl呢?

v8的性能让js有了一席之地,然而,听我一句,除非有一家公司想再捣腾一个js虚拟机出来,不然这真不是长久之计,v8这玩意儿,厉害是厉害,但不是长久之计啊……

4​1 条评论

​分享

​收藏​感谢

会玩赛车游戏,在做智能网联汽车
1 人赞同了该回答

裂墙推荐 PlayCanvas ~ Babylon 和 ThreeJS 都不要再看了

利益相关:目前正在单刷 PlayCanvas 的全部文档汉化 …… 完成度 10% 填坑中 ……

PlayCanvas 开发者资源

1​5 条评论

​分享

​收藏​感谢

WebGL渲染,开源项目zen-3d

目前最稳定的当属Three.js,做小项目推荐;playcanvas是目前唯一带有类unity可视化编辑工具的,并且使用ECS架构,缺点是工具是云端的,天朝的网你懂的;Babylon做游戏功能强大,使用ts开发,源码比较乱,社区不如前两者活跃。

最后推荐shawn0326/zen-3d,简单小巧,目前在测试阶段。

 

绘制3D的js库的更多相关文章

  1. 轻量级的绘制图表js库--Morris.js

    Morris.js 是一个轻量级的 JS 库,使用 jQuery 和 Raphaël 来生成各种时序图. 虽说现在移动手机网络已经到了4G,但是在移动web客户端开发过中,为了达到良好的体验效果,需要 ...

  2. mapboxgl绘制3D线

    最近遇到个需求,使用mapboxgl绘制行政区划图层,要求把行政区划拔高做出立体效果,以便突出显示. 拿到这个需求后,感觉很简单呀,只需要用fill-extrusion方式绘制就可以啦,实现出来是这个 ...

  3. impress.js 一个创建在线幻灯的js库

    真的好奇怪,我居然会写前端技术的博客.没有办法的,最近实习,看的大多是前端.所以今天就用这个来练练手了. Impress.js 是一个非常棒的用来创建在线演示的Javascript库.它基于CSS3转 ...

  4. 12个值得关注的顶级可视化JS库 涉及图表、动画、时间处理,表格操作

    本文是译文,原文是https://da-14.com/blog/top-11...我在原文的基础上加了百度的Echats图表库,这个也是毫不逊色其他图表库的.另外Handsontable电子表格库也是 ...

  5. Python画各种 3D 图形Matplotlib库

    回顾 2D 作图 用赛贝尔曲线作 2d 图.此图是用基于 Matplotlib 的 Path 通过赛贝尔曲线实现的,有对赛贝尔曲线感兴趣的朋友们可以去学习学习,在 matplotlib 中,figur ...

  6. 【转载】写一个js库需要怎样的知识储备和技术程度?

    作者:小爝链接:https://www.zhihu.com/question/30274750/answer/118846177来源:知乎著作权归作者所有,转载请联系作者获得授权. 1,如何编写健壮的 ...

  7. js库

    lanchpad用的js库 http://lesscss.org/ https://github.com/EightMedia/hammer.js/wiki/Getting-Started http: ...

  8. 解决jQuery多个版本,与其他js库冲突方法

    jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. < ...

  9. 协同js库,代码编辑器

    一些协同的js库 Collabedit, Online Code Editor http://collabedit.com/ Stypi, a realtime editor https://www. ...

随机推荐

  1. Centos7下单机部署Solr7.3

    本章重点介绍CentOS7 下部署Solr7 ,添加核心Core配置,Dataimport导入,中文分词的相关操作. 一.准备工作     演示环境是在虚拟机下安装的CentOS7.java JDK8 ...

  2. SpringBoot整合定时任务task

    @SpringBootApplication //扫描 mybatis mapper 包路径 @MapperScan(basePackages = "com.imooc.mapper&quo ...

  3. python拓展3 常用算法

    知识内容: 1.递归复习 2.算法基础概念 3.查找与排序 参考资料: http://python3-cookbook.readthedocs.io/zh_CN/latest/index.html h ...

  4. PHP图片压缩

    <?php /** * 分享请保持网址.尊重别人劳动成果.谢谢. * 图片压缩类:通过缩放来压缩.如果要保持源图比例,把参数$percent保持为1即可. * 即使原比例压缩,也可大幅度缩小.数 ...

  5. PHP过滤各种HTML标签的表达式,值得收藏

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  6. 1. SVN clean失败解决方法

    svn执行clean up后出现提示:svn cleanup failed–previous operation has not finished; run cleanup if it was int ...

  7. icil 参考docker

    @All 有不知道怎么用docker发布项目的,请参考 http://192.168.18.224:8888/svn/Enterprise/site/docker/overview of docker ...

  8. C# ADO.NET 封装的增删改查

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. springMVC获取用户的数据

    打算记录网站的访问信息,没有眉目,下记下参考. SpringMVC-获得用户请求数据

  10. 去除android手机浏览器中, 按住链接出现border的情况

    body{ -moz-user-select:none; -webkit-user-select:none; -webkit-tap-highlight-color:transparent; }