3d渲染不出来那么耗时,是不是设计的初始架构错了

10月19日白鹭开发者沙龙武汉站在武汉未来梦境空间举办。白鹭引擎首席架构师王泽在现场以《初探Egret3D》为题为到场的开发者介绍了Egret3D引擎我们整理了现场速记分享给大家,詳见下文:

王泽:各位开发者下午好今天我为大家分享的题目是《初探Egret 3D》。这是我们白鹭引擎第一次在开发者沙龙中用一个完整的演讲主题中介绍 Egret3D首先我们通过这张整体架构图来看,Egret3D 包含了四大部分分别是运行时,编辑器Unity3D导出插件以及文档中心。接下来的演讲中我會针对这四项内容给各位开发者做一个完整的介绍

第一部分是运行时。他指的是游戏在运行时所依赖的JavaScript 逻辑代码也就是开发者开发的遊戏最终运行依赖于底层白鹭引擎的 Library。这部分内容是完全开源的每一位开发者都可以通过 GitHub 或者白鹭引擎的工具来下载,我们会以每月更噺一次的节奏对运行时逻辑进行更新目前版本号是,我们就会在和您确认后尽快将编辑器提供给您并在我们力所能及的范围内为您提供尽可能完备的技术支持。

第三部分是Unity导出插件目前白鹭引擎的3D编辑器主要用于编辑基于实体组件系统模式的组件数据以及场景信息,茬3D资源编辑方面比如3D粒子编辑、3D动画编辑目前尚未实现,所以我们采用了 Unity3D资源导出的方式来为游戏制作这部分内容如果开发者已经开發了一款基于Unity3D引擎的游戏,可以直接把它的资源置换白鹭引擎的格式这部分我们目前计划在11月份将其开源。

第四部分是文档中心我们認为文档是引擎中非常重要的一部分。自从Egret3D 发布后我们一直在不断提升我们的文档数量和质量。在九月份我们文档中心有29篇Egret3D文档,平均每篇文章590字在10月初,文章数量提升到了36篇平均字数提升到了900字。我们的目标在每一个版本都把文档数量以及每篇文档的平均字数字嘟尽可能的提高一遍尽可能的解决开发者在日常开发时所遇到的问题。

对这四方面进行了简单介绍后接下来我将对运行时和编辑器这兩部分进行更详细的介绍。

白鹭引擎的运行时包含了三大部分组成第一部分是白鹭引擎的实体组件系统,他是Egret3D的整体框架;第二部分是3d渲染不出来部分第三个是白鹭引擎的3D和2D的适配器。

运行时库的第一部分是实习组件系统架构Egret3D中包含了两个命名空间,分别是 paper和egret3d为什麼有这样区别呢?开发者可以这样简单理解所有与实体组件系统架构相关的API,我们放在paper命名空间内因为这些内容是与3d渲染不出来无关嘚,这样在未来我们会把与Egret2D相关的内容也集成到这个实体组件系统的架构中。白鹭引擎2D、3D作为整体来支持

实体组件系统架构中的实体指的是游戏对象GameObject,每一个实体其实只是一个空壳数据在GameObject挂载的Component中,原则上组件只包含数据不包含行为。真正的行为由System来决定也就是說在游戏引擎底层运行的时候,由各个不同的System驱动整个引擎的运行每一个System,比如渲染、物理、动画都去寻找不同的组件,并通过组件汾别完成属于自己的逻辑

在开发者比较熟悉的Unity3D中,和这套架构有些区别的是Unity3D的Behaviour相当于Component,但是是可以包含逻辑的Component为了Unity3D开发者开发方便,我们也支持这种模式允许在Component中添加行为,您可以继续按照Unity那样的方式做你的一款3D游戏

运行时库的第二部分是3d渲染不出来。Egret3D目前采用 WebGL1.0嘚接口并以 Extension的方式添加部分 WebGL2.0特性。之所以这样是因为WebGL2.0目前的设备覆盖率还是比较低的而WebGL1.0的设备覆盖率已经超过了90%。目前只有iOS8.0、Android5.0之前的設备是不支持WebGL1.0的而这些设备的整体市场份额已经几乎可以忽略。

在一款3D游戏中需要大量的模型资源与配置资源,Egret3D使用 GLTF 这一标准格式這种格式有个非常好的优点是,它是为OpenGL/WebGL接口而设计的格式因此底层的解析效率会非常高。我举一个实际的例子Egret3D在去年发布了内测版本,他的具体模型解析流程是这样的:第一步需要加载一个模型文件然后将模型文件进行解析,然后生成WebGL所需要的数据格式最后提交到GPUΦ,这样才是一个完整的过程接下来我们看看今年发布的 Egret3D正式版的架构。我们现在添加的模型文件是一个 GLTF格式文件这种格式在加载后無需进行解析和生成,只需要对其进行一个非常简单的切割就可以将它的数据直接上传到GPU 中。大家会发现解析模型和生成WebGL数据这两个非常耗时的操作被直接绕过去了。实现了从浏览器加载到提交数据之间的无缝对接通过这种设计,Egret3D与去年的内测版相比模型解析速度提升了170%,内存降低了一倍用户可以感知到的加载速度也提升了30%。

在3d渲染不出来中下一个值得一提的话题是如何将 3D部分与2D进行集成白鹭引擎目前支持在3D的架构中随意添加2D内容,如果想在2D内容中添加3D内容则会稍微复杂一些您需要先创建3D内容,再把现有的2D内容添加进去这個问题涉及到游戏引擎的开发思路。白鹭引擎在5年前刚发布的时候是一款2D引擎如果想在2D引擎中添加3D特性,第一种做法是做一款与2D没有关聯的3D引擎然后将2D部分放在3D之中,这也是白鹭引擎现在的做法

除此之外还有第二种做法,就是在一款2D引擎的基础上进行不断扩展不断茬其中堆叠新的3D功能,最终实现一款3D引擎这种做法的优势在于2D游戏可以相对简单的添加一些简单的3D内容,但是想通过这样的方式最终实現一款3D引擎则是比较复杂的因此我们没有采用这样的方法,而是用第一种做法开发了全新的Egret3D客观来讲,这样做的缺点这是对开发者洏言最开始学习的入门门槛稍微高一点,但是从长远来看这个是值得的

刚才的演讲中,我已经介绍了Egret3D运行的实体组件系统架构GLTF文件格式,3d渲染不出来流程以及与 Egret2D的集成方式。现在我们进入Egret3D 编辑器的环节我相信这也是开发者们非常关心的。

我们认为3D编辑器是3D游戏开发Φ不可或缺的一个环节也许2D游戏可以不需要编辑器,但是3D游戏没有编辑器几乎是寸步难行假设我们现在需要渲染一张图片,但是目前屏幕是黑屏的没有渲染出来在2D中,导致出现这个问题的原因很简单对象未加载到舞台、对象的透明度设置为0,对象的坐标在屏幕外對象的纹理没有加载,基本只有这几种可能但是在3D中,除了上述这些之外还有很多情况。首先坐标系不只是x,y两方向,还引入了z方向还有可能是摄像机的的位置不对,摄像机的朝向不对图片的材质不对,灯光设置不对等诸多情况在这么复杂的情况下如果没有编辑器进行编辑是非常困难的。为了解决这个问题白鹭引擎的解决方案是为开发者提供一款3D编辑器。在游戏开发过程中编辑器的时候直接鈳以看到你游戏中所有的对象,比如说人物摄像机,灯光这些东西他们在哪里,这样就会非常直观的看到游戏对象没有正确渲染的夲质原因是什么。

除了编辑器之外我们还提供了一款开源的名为 Egret3D Inspector的工具用于提升开发者的开发效率。这个工具是Egret3D编辑器的核心构成可鉯在游戏运行时直接显示游戏每一个对象的属性,并在预览模式下对其数值进行调整通过这种方式,哪怕您没有Egret3D编辑器也可以通过这款工具提升游戏的开发效率。

那接下来看的如果有编辑器你是如何开发一款3D游戏的?有两种方式第一种是没有编辑器的情况,您可以茬Unity3D里面编辑把所有场景,资源Prefab等内容全部处理好,通过白鹭引擎的Unity3D导出插件把这些内容发布到 Egret3D中,然后在浏览器直接看到效果最後直接发布到微信小游戏,或者未来的更多平台上

除此之外,如果您现在已经有了Egret3D编辑器可以在Unity3D中的资源导出后,在 Egret3D编辑器中进行二佽编辑我们开发团队的工作流是,在Unity3D中负责制作素材然后在 Egret3D 编辑器中负责编辑场景、添加组件和调整组件数值预览。

然后具体实际案唎可以看看白鹭Egret3D的案例《泡泡学园OL》,这款游戏的开发手段就是我刚才说的那样使用 Unity3D 制作模型,然后在Egret3D 编辑器中进行二次编辑主要昰挂载组件,以及调整数值和场景这个游戏我们已经发布了小游戏版本,其中一些性能指标基本是目前Egret3D能发布到微信小游戏的极限其Φ Vertex数据可以更高一些,由于这款游戏包含了比较复杂的使用CPU计算的碰撞引擎和行为树AI所以我们牺牲了部分Vertex来换取更高的性能。开发者如果做的游戏不需要这些高级功能Vertex可以提升到200,000以上。

刚才跟大家介绍是Egret3D的整个发展情况我们回顾一下我们今年的整体版本发布计划。我們在今年5月份的时候第一次发布了白鹭引擎3D的正式版本然后接下来发布了0.9版本,支持微信小游戏版本1.0版本是系统优化,在1.1版本的时候3D引擎编辑器提供了内测,在10月8号的时候过了十一之后发了1.2版本,目前最高的版本我们发布了Egret Inspector 3D提升开发效率,并扩大了3D的编辑器的内測方位会在2018年11月份发布1.3版本,我们会进一步扩大编辑器的内测范围并对底层性能和效果,特别是灯光方面进行进一步的完善

除了 Egret3D之外,今天我也首次向开发者介绍一下Egret 2D 部分在2018年第四季度的路线图2018年第四季度我们的目标是发布白鹭引擎 5.4 正式版本,在这个版本里面我们偅点优化这几个方面

第一是将大幅度提升编译速度,预期是把开发者在编译上的时间变成原来的1/5假设开发者每天工作10小时,其中1个小時的时间是用在编译上希望把这个时间未来能从1小时变成12分钟,这样理论上大家早下班一个小时

第二个就是引擎瘦身。白鹭引擎的核惢库里面去掉一些老旧API的支持白鹭引擎目前可以运行在 IE9等老式浏览器内核上,这部分的支持我们未来不会作为引擎核心而是作为一个苐三方库提供给开发者,这样如果开发者无需对这种设备提供支持的话就可以降低引擎体积,我们的目标是降低50K左右

第三就是2D的工作鋶工具更新,我们会在 2018年底将白鹭引擎的 2D工作流进行一个较大的升级在用户体验基本不变的情况下,进行架构升级解决一些长久以来嘚遗留问题。这一部分我们已经进行了接近一年时间2018年Q4是会中释放给开发者。

最后一条我认为非常重要,支持白鹭引擎发布到更多的岼台今天白鹭引擎可以发布到H5,IOS安卓,还有微信小游戏、QQ玩一玩等等很多的平台2018的Q4版本我们将支持发布到更多的平台上,敬请期待

文档摘要:游戏引擎是一个处理遊戏底层技术的平台使用游戏引擎,游戏开发人员可以不用花过多精力去处理系统架构、内存管理、图像绘制等一些底层的技术可以矗接使用引擎提供的API来进行游戏开发,从而大大缩短游戏开发时间因此引擎是非游戏特有的技术。3D引擎是游戏引擎中的子引擎负责3D图形绘制功能,本文在分析现有3D商业引擎的基础上设计和实现了一个功能完备的新一代3D引擎系统。 3D引擎功能主要是负责3D图形相关的功能艏先是光影效果,即场景中的光源对处于其中的人和物的影响方式

不可忽视就是他的真实性。RENDERMAN能夠渲染出照片级真实的图片因此在工业界的运用很受欢迎。RENDERMAN这款顶级渲染器

在电影界成功运用了10多年他稳定快速有效的渲染性为广大CG愛好者所青睐。

布了3.1和3.2版本并开始正式启用。同年皮克斯为纯品康纳果汁做了第一个商业广告:(一觉醒来)有RENDERMAN身影的动画短

片(TIN TOY)贏得了奥斯卡最佳动画短片奖,这是第一部获得奥斯卡奖的动画短片也是(玩具总动员)的创意来源。其次有

RENDERMAN渲染引擎做出来的动画片還有(怪物公司)(海底总动员)(超人总动员)以及最新的(汽车总动员)其他如(THE

MUMMY2)中的花草生长(精灵鼠小弟)中的毛发等等。

嘚电影级渲染工具对于另外一个高质量的渲染器RenderMan来说,Mental Ray的渲染效果几乎不相上下而其操作比RenderMan简

单的多,效率非常高因为RenderMan渲染系统需偠使用编程的技术来渲染场景,而Mental Ray一般只要在程序中设定好参数然后

“智能”地对需要渲染的场景自动计算,所以Mental Ray有了一个别名————“智能”渲染器Mental Ray是一个将光线追踪算

法推向极致的产品。利用这一渲染器我们可以实现反射,折射焦散,全局光照明等其他渲染器很难实现的效果

画片。(Matrix2)(星战前传2)(终结者3)(后天)(Shark)以及刚上映的海难片(海神号)等影片中Mental Ray都提供了

线对场景中所囿元素交互的影响。所有的计算都使用光谱和高动态范围数据Maxwell Render简称为MR是Next Limit公司推出的产

品。大家也许会对Maxwell陌生但绝大多数人不会对制作過(指环王)(查理与巧克力工厂)(机器人历险记)的Real Flow陌生

。这两个性能卓越的软件都同出于建立于1998年的Next Limit Technologies公司著名的工业流体模拟软件“XFlow"也是这个公司

之前接连推出5个RC版,因为新的版本有些严重的BUG甚至有时候达到每天更新一个,如RC2RC3,RC4等它目前的最新版本为

1.1,但这個版本推出之后仍有些对贴图支持的问题即使这样,仍然阻挡不了使用者对这个渲染器的热爱

四、BRAZIL:要速度还是要质量

motion blur,3S,渲染时间置换等重要功能,开始向全能渲染器方向发展

个免费的渲染插件,其渲染效果是非常惊人的但渲染速度相对比较慢。经过一段时间测试Brazil於2002年7月正式推出了Brazil

r/s1.0版本。渲染算法上有了很大的进步最被大家批评的渲染速度问题也有了一定的提高。

其他以单帧作品为主,国内也囿不少忠实的粉丝哦!

五、 VRAY:不仅仅表现建筑

       Vray渲染器一出现就以快速的全局光照明高质量的视觉效果,使用简单灵活等优势成为我们在影视特效等项目中的首选渲

染器之一它超快的渲染速度和真实的渲染质量帮助我们轻松应对客户的各种要求。VRay是著名的3d? Max插件公司Chaosgroup推出

的渲染器作为后起之秀,VRay上市时经过一段时间的磨合,便马上成为用户非常熟悉的一种渲染器在各种高级渲染器都广泛

运用的今天,VRay為我们带来的高品质的渲染结果具有很高的应用价值它只需要简单的设置和调节和调节就可以应用

IIIumination,Caustics,HDR,高级动态模糊等各项功能,并且品质非常优良哪怕是个简单的场景,也能够使其瞬间产生逼真的现

实感Chaosgroups在3ds Max的商业平台上取得巨大的成功之后,他们决定把渲染方案延伸到Maya仩Siggraph2005上,他们展出

       主要作品为:VRay渲染器已经成为世界上一些大的建筑工作室的首选数以百万美元的工程都将信任投给了VRay。一些历史

Cinema 4D内嵌嘚优秀GI算法速度非常快,对于普通的商业用户来说很适合特别适合与资源和资金不足的中小型工作室。Cebas

公司一直是3ds Max的一个非常著名的插件开发商很早就以Luma(光能传递),Opic(光斑效果)Bov(体积效果)几个插件而

不但在速度上实现了大幅度的领先。在功能上也达到当时所有渲染器前所未有的全面功能相对别的渲染器来说,FinalRender的第

一个版本就提供了3S(次表面散射)的功能用与卡通渲染的功能和HDR光照的支歭,同时支持不少3ds Max的效果插件(譬如粒子

毛发等)。新的版本更增加了3D动态模糊等高级渲染技术是目前3ds Max平台最全面的渲染器。

       由于其獨特的效果国外很多工业设计公司以此为第一的渲染器,国内用户在做建筑表现方面把该渲染器也作为首选之一

七、TURTLE:渲染速度和海龜无关

商业化产品,该渲染器既能与MAYA完美整合又能作为一款独立的应用程序使用。Turtle3.0为我们提供了一个良好的工作流程而

且可以使用Turule的铨部渲染特性进行烘焙。例如:在viewport中进行烘焙区域烘焙,对烘焙进行超级采样还可以做一些原来

只有在渲染中才能完成的事情。这些噺的特性加上Turtle良好的速度意味着你可以通过更少的时间完成更多的事情。

起主要作品有(火爆狂飙)(IKEA广告)(Volvo2006年广告)

八、CARTOON:真实嘚非真实再现

      逼真的视觉影像已不是梦想,人们开始寻求对传统动画2D效果的回归“卡通渲染”由此而生。

1内存不足,至于现在要立刻加內存换系统也不实际,所以现在先重新启动一下电脑再打开3DMAX就可以让电脑释放一些内存给3DMAX用。如果还是这样说明模型太多并远超过內存所能承受范围,那么就精简模型吧把模型精简到80W面以内基本上不会出这个情况了。如果还这样就继续精简。

2用vray渲染出错,有可能是场景里面有一个物体的面数太多导致VR出错可以把这个物体 Detach成几个物体。

你对这个回答的评价是

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的***。

我想买台笔记本,主要是用来做3d渲染不出来方面的设计软件,最近看好了两个,不知道哪个更好些?

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

最近在GitChat上发布了一个网络游戏框架教程,目标是带领读者搭建一个商业游戏的网络架构设计该架构设计是游戏的核心技术,将采用 Unity /jxw167"}" username="jxw167">

授予重新回归CSDN的真爱粉用户我们不会让你失望哒!

CSDN技术图书作者专属勋章

授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华专栏达人就是你!

授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

授予每个自然周发布4篇到6篇原创IT博文的用户本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

参考资料

 

随机推荐