前言
无论是电脑桌面应用还是网页应用,如果要渲染3D模型,都需要显卡的支持。显卡越好,渲染越快。质量会更高。
桌面应用程序直接与电脑显卡通信,使用操作系统提供的图形语言GL,再加上代码优化,编写高质量、高性能的3D应用程序。但它也有它的缺点,比如开发难度大,需要高水平的C++开发者;应用不易扩展,不同平台需要不同平台的软件安装包。
网页上渲染的3D模型是因为浏览器厂商封装了浏览器和显卡之间的通信规范,暴露了JavaScript API供前端开发者调用,这个规范被称为WebGL。由于接口的封装,通过WebGL开发的Web程序的性能肯定不如桌面应用,但也有优点:比如开发比较简单橙光游戏,开发者上手的难点是低,容易培养大量人员;应用扩展 高性能,支持现代浏览器的手机、平板、电脑都可以直接通过URL打开。
总结
技术的选择取决于业务需求。业务要求性能第一,首先是原生开发;业务要求快速敏捷,所以一定要选难度最小、效果最快的。
就像现在的移动端开发一样,Android和iOS原生开发效率低下,难度大,需要针对不同平台的专门开发者,所以现在除了微信、支付宝、追性能手游等重要应用外,优先给他们。考虑一个跨平台框架,即 H5 技术来开发应用程序。
三个.js
使用JavaScript编写纯WebGL代码来操作显卡处理3D数据是非常困难的,所以一般使用WebGL包库进行开发。包库的意义在于开发效率高,启动成本低。性能也能满足大部分企业的需求。 Three.js 是一个比较成熟的 JavaScript 3D 库游戏图片素材,适用于各种 3D 场景。它在 MIT 许可下开源,拥有 70,000 多个 GitHub Stars。 Three.js 和 WebGL 很像 JQuery 和 JavaScript。
AutoDesk Forge
Forge 是 Autodesk 推出的用于开发 Web 端 3D 应用程序的云平台。它具有模型格式的云转换。使用 Revit 开发的模型可以通过它轻松转换。然后,使用 Forge 提供的 JavaScript 包库,可以很方便的在 web 上渲染,并提供了很多常用的工具。
它在底部封装了 Three.js API。所以属于业务层的封装库。
缺点是:它的服务器在美国,上传的模型文件都是上传到美国的服务器。虽然官网强调不会侵犯用户的数据隐私,但谁能保证。数据服务访问速度不快,渲染速度还可以。
BIMFACE
BIMFACE是国内云平台,拥有与Forge相同的能力,为国内常见需求提供快速服务,可轻松集成到您自己的项目中。也有缺点:二次封装库会有一定的性能问题,因为加一层封装就意味着加一层代码,JavaScript引擎会多执行一层代码,会影响执行效率;扩展性差,对于业务的封装库是这样的。如果后期老业务有新业务或新功能,封装库一般不提供现成的解决方案。这时候就需要深入研究它的API,甚至是源码。在这种情况下,启动成本会高得多。因此webgl游戏开发,这种基于业务的封装库适用于短期高效开发、业务不复杂的场景。
扩展
还有一种方法可以开发 Web 端 3D 应用程序。例如,虚幻引擎 4 将项目打包成 WebAssembly 格式,用于开发 3D 游戏或应用程序网页。优点是性能超过了使用上述方法开发的 3D Web 应用程序的性能。之所以性能如此之高,是因为 WebAssembly 格式可以充分发挥浏览器端 JavaScript 引擎的执行效率,使其接近操作系统原生应用的效率。其实上面的方法也可以打包成WebAssembly格式来实现性能优化,但是需要学习和时间成本。
这种方式也有不足之处:UE4项目被打包成web应用,其存在的意义在于扩大应用范围webgl游戏开发,因为开发后可以作为桌面应用交付。它的开发周期和成本仍然受到桌面开发的限制。
总结
其实不同的库各有优劣,但各有优劣。归根结底,选择取决于业务。如果业务量大、交互性强、需要高质量体验,则首选游戏引擎原生开发;如果业务简单,需要扩展web平台,使用 Three.js 等封装库的意义是存在的。