3D探索——Web 3D哪家强?

腾讯DeepOcean原创文章:http://dopro.io/web-3d-power.html

得益于手机厂商爆炸式的配置堆砌与移动互联时代到来,html在手机上的效果愈加丰富,Web开发者已经不满足于2D效果的实现,而把目标放到了更加炫酷的3D效果上。

在Web3D百花齐放的今天,和大家简单探讨一下目前主流的3D库。

0x1 常见的3D库

01|Egret

官方将Egret定位为一整套游戏开发的“游戏解决方案”,包括游戏开发框架、开发辅助工具,生态环境相对完善。基于TypeScript进行开发,支持Flash到Egret的高效转换、跨平台支持,可打包为HTML5,以及iOS 和Android平台原生app。

02|Three.js

Three.js的定位是一个基于JavaScript 3D库,但无疑它非常的强大而轻量。从创建简单的3D动画到创建交互的3D游戏,通过暴露简单的API,将3D内容的开发复杂性降至最低。

03|Pixi.js

Pixi与Three.js一样,定义为“2D WebGL renderer with canvas fallback”。它只是一款轻量的2D Webgl库,但同样可以根据它的API来开发游戏,将2D WebGL开发复杂性降到最低。

04|Layabox

Layabox与白鹭一样,也是成熟的整套游戏开发的”游戏解决方案“,同时支持2D、3D、VR的H5引擎,专为高性能游戏而设计,支持ActionScript 3.0,TypeScript,JavaScript编程语言。开发一次,发布flash,HTML5,mobile。

05|Hilo

Hilo 是阿里巴巴集团开发的一款HTML5跨终端游戏解决方案,它可以帮助开发者快速创建HTML5游戏,多种渲染方式, 提供DOM,Canvas,Flash,WebGL等多种渲染方案。

06|Cocos2d

Cocos2d是老牌的游戏引擎,采用原生JavaScript语言,可发布到包括Web平台,iOS,Android,Windows Phone8,Mac,Windows等平台。

07|厘米秀引擎

厘米秀引擎是QQ轻游戏使用的引擎bricks,为腾讯自研的游戏引擎,脚本层使用JavaScript。bricks引擎支持原生、WebGL,Canvas等多种渲染以及开发方式,开发者可以直接调用bricks引擎,也可以使用第三方游戏引擎封装的进行开发。

 

0x2 基本对比

我们对上述各个框架、引擎在2D Canvas、2D WebGL、3D WebGL、2D性能、3D性能等方面做一下对比,其大致数据如图所示:

3D探索——Web 3D哪家强?

可以发现,其中白鹭、Three.js、Pixi.js、Layabox、厘米秀性能最好,但本文主要探讨的是3D相关开发,所以我们选取Three.js、Layabox两个高性能库/引擎进行对比(Egret引擎过重暂不考虑)。所以接下来主要讨论Three.js、Layabox的各方面对比。

 

0x3 Three.js Vs Layabox

01|库体积

首先我们对比下下这两个库体积,我们发现,Three.js在体积上远远优于Layabox,但Layabox极限精简Gzip后也仅有300K,也算比较轻量级。在JS资源体积这一点上Three.js得一分。

3D探索——Web 3D哪家强?

02|模型体积

我们准备了两个模型,一个是比较简单的狼,另一个则是面较多的巨龙。如下图所示:

3D探索——Web 3D哪家强?

3D探索——Web 3D哪家强?

 

我们分别将其导出为Three.js、Layabox适用的文件,Three.js的模型采用的是json文件,而Layabox则是自己的二进制文件。我们将导出后的模型文件体积进行一下对比,可以发现在未Gzip之前,Layabox对比Three.js还是很有优势的,但是一旦开启Gzip,Three.js在模型体积就远远小于Layxbox了,而Layxbox导出的二进制模型文件无法Gzip比较吃亏,Three.js再得一分。

3D探索——Web 3D哪家强?

但在Three.js导出到json格式这一步中,踩坑无数。可能设计师做出来是这样子:

3D探索——Web 3D哪家强?

而你将这个模型导出到Blender中却成了这样:

3D探索——Web 3D哪家强?

为啥呢??这不科学啊!

因为Three.js导出模型依赖于Blender,所以首先需要将模型导入到Blender中,这一步就非常依赖于设计师在构建模型时的构建方式,经过血与泪的洗礼,大概总结了有以下几点雷区:

  • 控制模型面数

  • 禁用第三方插件

  • 需提供展 UV 贴图

当然这三点仅仅是雷区中的一点点,更多的是需要前端开发者与设计师一起对模型进行磨合,因为1000个设计师有1000中建模方法,所以还是要在实践中不断的磨合、踩坑,才能最终导出完美的模型。

而Layaxbox借助于Untiy可以轻松的将模型导出来,所以Layabox在模型导出这里得1分。

03|实现难度

这一步就是要将3D模型展示在网页中了,Three.js与、Layabox都提供了相对应的接口与方法,能够让我们快速的将导出的数据展示在页面上。

ThreeJS中提供了许多种类的Loader,分别针对不同的使用需求。比如,JSONLoader针对的是.json格式的模型,OBJLoader针对的是.obj格式的模型等等。翻阅网上资料的时候还可以看到SceneLoader的踪影,这就是用来加载整个场景的.json格式文件的。可是在ThreeJS的新版本中,SceneLoader已经被废弃,取而代之的是更为智能的ObjectLoader。ObjectLoader可以判断导出的模型到底是什么种类,从而将它们转化为ThreeJS中的对应对象便于开发者使用。

当然Json格式无疑是最为轻量最为简洁的导出格式,并且可以很好的支持骨骼动画,下图为我们为狼模型编写的Three.js  js代码:

3D探索——Web 3D哪家强?

而Layzbox则简便很多,按照官方给出的Api,直接传入对应的ls文件,就可以加载之前导出的场景。ls文件包含了整个3D场景:模型、材质、贴图、动画、光照贴图等等,可以理解与上述Three.js文件导出的Json相同,仅仅是文件的结构不同。

3D探索——Web 3D哪家强?

综合这两段代码可以看出,Three.js需要手动的创建3D场景中的光源、场景、摄像机等等,但通过Layxbox通过Unity导出的模型仅仅通过导出的配置文件即可创建光源、场景、摄像机。但如果你想对3D场景做更多的定制化、提高场景可控性的话,Layabox也需要手动的添加场景、光源,但与Three.js不同的是,Layabox提供完整的中文Api参考与实例参考,而Three.js 的最新Api则是英文,并且个别Api文档会存在不适用的情况(因为Three.js更新的太快了,某些调整导致Api变更却又没有更新Api文档),所以单纯就易上手一点来看,Layabox再得一分,对新手快速开发会更友好一点。

 

04|性能对比

性能恐怕是开发者们最为看重的一点了,通过上面的简单对比我们可以知道,Three.js与Layabox在3D WebGL中的得分都为满分10分,那么都为10分的他们是否也存在细微的差异?现在我们仔细对比下两款框架/引擎在Web中的性能表现吧。

1. 帧率

首先对比下这它们在Web的帧率,Three.js我们借助stats.js来检测帧率,而Layabox自带帧率监控工具。

因为是性能测试,所以我们测试模型最复杂的龙模型,通过工具可以看到它们的帧率都可以稳定在60FPS,而60FPS无疑是一个非常棒的帧率。

3D探索——Web 3D哪家强?

2. 内存占用

内存占用同样也是一个非常重要的指标,因为手机不比PC电脑,内存资源比较有限,如果内存占用的越少则意味着它在更多的手机上能流畅的展示,我们通过Chrome工具与Android studio模拟器检测页面的内存占用。

首先是Chrome任务管理器(打开方式:浏览器右上角选项卡→更多工具→任务管理器),通过这个工具我们可以观察两个页面占用的内存情况,从图中我们可以发现,Three.js与Layabox的内存占用都在84M左右,差距可以忽略。

3D探索——Web 3D哪家强?

然后我们在进入Android studio开启一个全新的Android模拟器,使用原生的Web view打开上述两个页面,数据如下,我们可以发现他们内存仅有3M差距。

3D探索——Web 3D哪家强?

综合上面两次测试,我们可以发现Three.js与Layabox在Web中帧率、内存占用差距都不大,并且性能都不错,足以满足日常的轻量3D开发。所以Three.js与Layabox各得1分。

 

0x4 总结

经过上面一系列的分析,Three.js与Layabox其最后比分为3:3持平,各有优劣。对于轻量的3D开发,它们开发门槛都不算高,其中Three.js整体的资源体积小于Layabox,而Layabox在模型导出侧优于Three.js。条条大路通罗马,大家可以根据各自需求来具体选择。

欢迎关注"腾讯DeepOcean"微信公众号,每周为你推送前端、人工智能、SEO/ASO等领域相关的原创优质技术文章:

看小编搬运这么辛苦,关注一个呗:)

3D探索——Web 3D哪家强?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1550174.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

17个WebGL框架及Web3D图形库

WebGL是基于OpenGL的JavaScript API库,允许Web浏览器在浏览器中渲染3D / 2D图形,而无需安装额外的插件、桌面应用程序。WebGL允许通过浏览器使用机器GPU将3D图形渲染成HTML页面。WebGL目前在大多数浏览器(如Google Chrome,Mozilla Firefox和S…

实践 ArcGIS Web 3D

ArcGIS 产品家族的 Web 3D 功能众多用户期待已久,从 ArcGIS 10.3.1 版本开始,Esri 放了个大招,千呼万唤始出来的 Web 3D 功能,终于不再犹抱琵琶半遮面了。 那到底如何将创建和发布3D场景呢? 下面就把今天的测试过程记录…

`web3d模型线上展厅(一)

大家好,我是遂海枫林。最近呢又准备活跃起来了。 最近主要研究了下3D相机迅速搭建web线上模型的一个项目。 项目缺口 由于疫情,线上学习,线上工作,线上研究已经成为了大众接纳和处理事务最主要的方式,计算机网络带来…

Web3D开发经验分享:基于Three.js的Web3D建模案例

个人主页: 左本Web3D,更多案例预览请点击》 在线案例 个人简介:专注Web3D使用ThreeJS实现3D效果技巧和学习案例 💕 💕积跬步以至千里,致敬每个爱学习的你。喜欢的话请三连,有问题请私信或者加微…

如何利用Web3D技术打造在线虚拟展览馆

随着Web3D技术的不断发展,越来越多的企业和组织开始将其应用于虚拟展览馆的建设中。虚拟展览馆可以为观众提供高度沉浸式的展览体验,让观众可以随时随地参观各种展览,同时也为展览组织者提供了更多的展示方式和机会。下面将介绍如何利用Web3D…

使用threejs简单Web3D效果

目录 1. threejs介绍 2. thresjs的使用 3. 组件介绍 4. threejs的动画 5. 参考资料 前几天在网上看到一个threejs的实现的web 3d的动画,很炫酷,所以特地去了解了一下threejs。我们首先看下官方使用threejs实现的效果: 1. threejs介绍 t…

几种Web3D技术的比较

1 引 言 虚拟现实(VirtualReality,简称VR)技术是一种逼真地模拟人在自然环境中的视觉、听觉、运动等行为的人机界面技术。由于虚拟现实具有实时的三维空间表现能力、提供了人机交互式的操作环境以及给人带来了身临其境的感受,它正成为继多媒体之后的又一个研究和应用的热点,开…

Web3D发展趋势以及Web3D应用场景

1,Web3D发展趋势 随着互联网的快速发展,Web3D技术也日渐成熟,未来发展趋势也值得关注。以下是Web3D未来发展趋势的七个方面: 可视化和可交互性的增强:Web3D可以为三维数据提供可视化和可交互性的增强,将极大…

Web 3D 从入门到跑路

大厂技术 坚持周更 精选好文 前情概要 作为在该领域小白的我,在准备该主题分享之前,我信心满满的去知乎查了下,如何学习 WebGL? 如何入手webGl以及three.js呢? - 知乎[1] 前端开发者应该如何学习计算机图形学相关的知识? - 知…

什么是Web3D?Web3D技术发展历程以及Web3D应用场景

当今的互联网已经迈入了第三代,这被称为Web3.0,而Web3D正是Web3.0的其中一个技术分支。Web3D是指将三维图形技术应用于Web上的技术,它是将3D图形和Web技术结合起来的一个分支,可以使用户在Web上以更真实、更直观的方式浏览和操作虚…

Web3D 从入门到跑路 · 3D 初体验

3D初体验 本文整理自老冯于 凹凸 2022 年技术分享,带领大家从案例、应用、技术生态出发,让大家了解一下 3D 在 Web 端的现状。 Hey 3D whats up,最近在Web圈混得怎样 在“元宇宙”概念越来越火热的背景下,我们准备了一系列的 3D…

20151021

题目一给定一个无序数组,请调整该数组,调整成奇数放在数组的左边,偶数放在数组的右边。但是奇数与奇数之间的相对顺序不变,偶数和偶数之间的相对顺序也不变。要求思考:如果额外空间复杂度必须为O(1),时间复…

独家专访阿里集团副总裁贾扬清:我为什么选择加入阿里巴巴?

真正跟贾扬清近距离接触后笔者发现,这位被很多人称为“AI 架构大神”的 80 后青年科学家,更像一位温柔且平易近人的邻家“学霸”,虽然技能全面碾压但丝毫没有架子。加入阿里以来,贾扬清一直忙于了解集团覆盖范围极广的各项产品和业…

龙蜥白皮书精选:云原生混部资源隔离技术

文/云原生 SIG 01 技术方案简介 混部就是将不同类型的业务在同一台机器上混合部署起来,让它们共享机器上的 CPU、内存、IO 等资源,目的就是最大限度地提高资源利用率,从而降低采购和运营等成本。 混部通常是将不同优先级的任务混合在一起&a…

windows10系统装cad2007提示缺少NET组件

2019独角兽企业重金招聘Python工程师标准>>> 打开控制面板-->找到 程序 选择 启用或关闭windows功能 打开.NET Framework3.5(默认它是关闭的),然后确定 这时windows会提示要更新下载,确认即可,等待下载完成再重新运行CAD2007安…

AUTOCAD2007安装过程中遇到的问题以及解决方法

1.卸载CAD2007时提示“错误1316,指定的账户已存在 WINR打开注册表 点击HKEY_LOCAL_MACHINE->SOFTWARE->Classes->installer->products->7D2F 将7D2F开头的整个文件删除,即可安装。 CAD2007执行上述操作后重新安装时会部分会提示错误130…

lisp倒入excel数据画图_如何将EXCEL中的数据导入CAD2007画图

展开全部 bai 1、打开Excel,输入数据du。 zhi2、复制B列的数据。打开CAD,输入dao“内pl”,回车。容然后在命令行直接“CtrlV”可以以这些点直接生成一条多段线。 3、其实CAD是可以读取从Excel在复制过去的内容的。那么我们就可以把所有可以在命令行输入…

CAD二次开发--CAD2007(.Net3.5环境)等低版本CAD二次开发在VS中无法捕获断点调试解决办法(CAD二次开发无法断点调试解决办法)

目录 1.说明 2.解决办法 1.说明 在进行CAD二次开发的时候如果想进行断点调试,众所周知,在VS环境里设置断点后直接启动类库项目就好了,只需要在启动项属性里设置下“启动外部程序”就可以了,设置成cad安装目录中的acad.exe。 这样当程序运行到断点处就会自动捕获!!!!…

w ndows7和CAD哪款兼容,win7与cad2008不兼容,cad2007和win7不兼容

CDA是一款非常好的制图软件,如果是需要制图的朋友都知道cad对与制图的重要性,最近有朋友在win7系统中安装cad2007的时候发现无法安装,开始的时候是提示缺少.net framework 2.0 runtime,后来在网上查阅了资料之后发现需要先安装net…