SceneJS与Three.JS等其他框架的比较

50

优缺点有哪些?我找不到三.js库的完整功能集。虽然我知道它很受欢迎,并且正在积极开发中。也许有人已经对WebGL引擎进行了一些研究,并可以建议每个库提供的好处?


当你说WebGL引擎时,你是指运行在WebGL之上的场景图库吗?也就是说,你想要进行比较的是哪个集合? - LarsH
@larsh 第一个问题:确切地说,抱歉造成困惑。第二个问题:易用性、动画、IK、支持、框架/库本身的内部架构(以便贡献)。 - oddy
我对画布回退有些疑问。我记得在某个地方读到过,tree.js可以在webgl不可用时回退到使用画布进行渲染..考虑ie。如果您需要显示相当简单的对象,我想知道这在实践中是如何工作的。其他选项呢?它们是否也有类似的回退机制? - Nils
4个回答

92
作为SceneJS的作者,我想提供一些帮助:SceneJS专门用于快速渲染大量单独构建的对象,没有像阴影、反射等游戏引擎效果。
换句话说,它针对CAD、医学解剖、工程可视化以及拥有成千上万螺母螺栓、器官等要求。
因此,它比three.js、GLGE和PhiloGL灵活性更少。
但是,它具有纯JSON API,人们发现它与AJAX、解析器和数据库(如CouchDB)集成良好。
所以,如果您正在编写游戏,我会向其他框架推荐,但如果您正在编写CAD查看器,则SceneJS可能会解决问题。

5
更新:SceneJS v4 现在支持后期特效管道,可以实现景深等效果。所以现在我们有了反射效果,并且很快就会支持阴影 :) http://scenejs.org/examples/index.html#postprocessing_depthOfField_autofocus - xeolabs
@xeolabs 我刚注意到这个帖子,想问一下你的意见。我正在构建类似于 https://matterport.com/3d-space/project-sky-12-dome-house/ 的东西,但没有3D数据,只有全景照片。我已经开始使用Three.js了,但有一些问题,如分组、内存泄漏等,这让我寻找替代方案。如果您要构建我提供的网站,您会选择哪一个,Three.js 还是 SceneJS? - Alan

37

我通常将GitHub上项目的受欢迎程度作为成功的指标。虽然这种方法存在问题,但我发现这通常是做出选择的最佳方式。以下是按“星”数递减列出的流行WebGL项目:

这也反映了我在研究这些项目时发现的情况。three.js似乎是功能最全面的,拥有广泛的示例集,结构良好的代码库和蓬勃发展的社区。


这非常有帮助。这种方法对于没有托管在GitHub上的项目有什么要说的吗?或者这是你所提到的问题之一吗?例如,CopperLicht经常被评为高分,但并未托管在GitHub上。 - LarsH
@LarsH 这是其中一个问题,尽管我认为开源开发是一个巨大的优势。 - jterrace
@jterrace 嗯,上次我检查(1个月前)three.js的文档还远远不完整。甚至在你的列表中有一些项目拥有更好(更完整)的文档。至于GitHub - 它并不是唯一的在线源代码托管者。Bitbucket、Codeplex、Google code等等。我正在寻找的是该领域的研发。在几个WebGL框架中的个人经验。 - oddy
@oddy 我有个人经验。ThreeJS 有大量的示例和伟大的社区支持。强烈推荐。 - jterrace
@jterrace 在我采纳你的建议之前,有一个简单的问题想问一下。除了three.js之外,你还用过哪些框架?为什么你不喜欢它们(总体而言)? - oddy
显示剩余2条评论

6
这基本上是WebGL Framework的副本,但自那以后答案可能已经发生了变化。另请参见我应该学习哪个WebGL框架? 由于WebGL领域正在快速发展,因此很难找到完整的、最新的WebGL框架比较。只要有人花时间研究这样的事情,它就会过时。但这里有一个带注释的WebGL框架列表:

http://www.khronos.org/webgl/wiki/User_Contributions

如果您使用这些框架之一开始一个项目,然后根据您的经验更新此列表,它将比以前更加更新。
顺便提一下,我刚刚看到PhiloGL,对其完整的API文档印象深刻,并且他们已经将所有WebGL课程移植到PhiloGL中(仅源代码,没有解释性文本)。我没有看到教程;但是他们有几个示例,所以总体而言,他们在文档方面比three.js更好。
对于那些可能会来之后的人(包括我自己)还有一些注意事项:
- CopperLicht似乎主要用于从文件加载模型,而不是在代码中生成几何形状。它不是开源的。 - PhiloGL使用O3D生成几何形状,例如球体。 - Three.js附带常用纹理。

+1 链接到 Khronos。至于列表更新,我不想去买牛奶然后带回来一个玩具马、PSP 和一个球。我在这里是为了听取您的建议(我已经回答了您关于我需要框架哪些功能的问题),而不是分享我的经验。如果我有经验,我就不会寻求建议,因为我已经做过自己的专业知识了。 - oddy
@oddy:我主要是指在你花时间深入研究你想开始的任何项目之后更新列表。你来这里寻求免费建议并得到了它。我们中的许多人从与他人分享我们花时间收集的知识中获得满足感。如果你不想用你所学到的东西更新khronos列表,那是你的选择。感谢你的+1。 - LarsH
1
请尝试理解我为什么有点烦恼。我询问了stackoverflow用户对库的优缺点,但是却收到了一个可用库列表的链接,并建议使用three.js,而没有任何解释。 - oddy
2
@oddy:不是“代替”,而是“另外增加”。你没有免费得到所有你想要的东西,这并不是批评那些给了你部分想要的东西的人的理由。在你发表上述评论之前,你还获得了关于three.js的几个具体信息。 - LarsH

1

我是Jax (http://blog.jaxgl.com/what-is-jax)的作者,这是一个强调测试驱动、行为驱动开发和纯粹生产力的框架。Jax提供了强大的代码生成器、集成应用服务器和测试环境,并为您的WebGL应用程序提供了清晰组织的MVC(模型、视图、控制器)架构。

Jax首先是围绕着完成任务而设计的。它是一个约定优于配置的框架,这意味着 - 虽然你可以按照自己的喜好来做事情 - 如果你接受它的约定,你会发现在启动应用程序时几乎没有前期成本。

此外,Jax是围绕可扩展性设计的。使用任何数据集或算法轻松构建网格,从通过JSON加载到在顶点着色器上生成网格;并且该框架支持真正的插件系统,因此您可以根据应用程序的需求选择附加功能(例如碰撞检测),而不会使框架膨胀。

它有大量的文档,我会尽可能地添加更多;快速入门页面现在已经在线上 http://jaxgl.com,一系列全面的指南正在逐步推出 http://guides.jaxgl.com。那里也提供了API文档的链接。

Jax的实时演示越来越多,都可以在Github上找到:http://sinisterchipmunk.github.com


我几个月前在Chrome中尝试了“草地”演示,但它没有起作用。我刚刚第二次尝试,但仍然无法正常运行。使用的是Chrome 15.0.849.0 dev-m版本,只有黑屏。地牢演示抛出了有关达到最大纹理数量的异常,并且相机根本不动。Jax看起来还不像一个可以“完成任务”的工具。至少今天不行。 - oddy
很抱歉演示对您来说效果不佳。(其他演示是否正常?)不幸的是,我对这个问题毫不知情!我会尽快解决与Jax相关的问题,但如果从未报告过,我就无法做到。如果您在http://github.com/sinisterchipmunk/jax/issues上打开一个问题,并列出您的视频卡(包括制造商、型号和驱动程序版本)和操作系统信息,以及任何额外可用的信息,可能会显示在错误控制台中,我可以开始查看可能导致问题的原因。 - sinisterchipmunk
请忽略。我相信这是浏览器的问题。Build 15.0.874.5 dev-m可以顺利运行两个演示。 - oddy
1
我假设开发已经停止了,但是所有的演示在Chrome中又都坏了。 - Valentin Klinghammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接