unity3d 大地图接壤_鹰角网络的曲折开发前行之路-《明日方舟》中3D和2D结合方案...

《明日方舟》的开发者在Unity线上技术大会上分享了初创团队如何应对挑战,将3D和2D结合进行游戏开发。他们通过Unity实现了一种独特的2D角色与3D场景结合的方案,克服了小团队、有限资源和高美术要求的困难。游戏采用了3D场景与2D角色动画相结合的方式,以满足写实风格的视觉需求和降低开发风险。开发者通过调整深度和使用特定的Shader解决了空间关系错误和穿模问题,同时对Lightmap编码进行了优化,确保在不同平台的一致性。此外,他们还探讨了如何融合3D和2D的渲染效果,以创造更协调的画面表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本年中国Unity线上手艺大会分享上,来自鹰角收集的海猫与黄一峰分享了初创团队的弯曲斥地前行之路-《明日方舟》中3D和2D连系方案。个中海猫以游戏设计的视角,黄一峰以手艺的视角来配合剖析他们在斥地过程中碰到的问题以及具体的解决方案。以下是分享实录:

[转载出处:www.tt44.com]

[原创文章:www.tt44.com]

人人好!我是《明日方舟》建造人海猫络合物。此次的分享我还会请黄一峰和我一路来讲。

今天我们要讲的主题是初创团队的弯曲斥地之路,首要会连系《明日方舟》的3D和2D的连系方案来进行一些分享。首要由我做前面的一些关于最早概念的介绍,由黄一峰介绍一下具体我们3D和2D连系方案中碰到的问题和具体的解决方案。

首先毛遂自荐一下,我是海猫络合物,我是《明日方舟》的建造人,也是上海鹰角收集的结合创始人。我首要会负责游戏的UI和一些部门。

简洁介绍一下《明日方舟》。《明日方舟》是2017年鹰角收集创立之初立项的第一款游戏,我们也是在谁人时候进入了正式斥地,在2017年的12月到2019年的3月一共进行了3次测试,在2019年的5月1日终于迎来了全平台的公测。今朝《明日方舟》是鹰角收集独一一款作品,也是我们创业的第一款作品。

这款作品相对来说我们留意的是奇特的气势和视觉的表达。因为我们的游戏弄法和视觉表达都有较强的自我气势以及较高的质量,也在上线的时候获得了AppStore的稀奇介绍。这款游戏具体的弄法能够从图中看到,它是一个由策略、塔防、RPG相连系的弄法,是采用Unity斥地的,同时也是考虑到手艺的实现,我们采用了一个2D和3D相连系的示意形式。在脚色上我们是采用了日式的一个二次元的表达手法,然则分歧于大部门的二次元游戏,我们的脚色的一部门元素表达和故事世界观以及场景概念设计上的气势都是倾向于写实的。

能够看一下我们最早原先设置的时候是左边一张图,这张图是我们其时用Unity斥地的原型,能够看到和今朝我们游戏的实际画面是有较大差距的。也是借助与Unity相对的便当性,我们可以在早期进行一个原型的实心,我们采用了一些暂时的素材将我们的好多设法付诸实际。

考虑到了一个问题,为什么我们当初最早斥地的时候会使用Unity?除了我们自身的经验之外,我们其时也会有一些实际的原因和一些设想,让我们选择了Unity这款引擎。

2016年的时候我和我们的主创黄一峰在家里构想作品,其时我们需要尽快一个大略的共识,为了《明日方舟》的具体气势而定下早期基调。我其时发给了他一张图,就是我们最早奠基世界观的一张图,在这张图之后,我就说我已经预备好起头了,黄一峰其时也回覆我说好,那么马上起头把我们的作品进行具体的实现。

其时刚起头一定会碰到好多的逆境,对于我们来说,其时我们的逆境非常之多,尤其是我们好多是大学刚卒业,有些是从业只进行了一个项目,所以人数非常少。所以,面临我们一些具体的情形,我们也做了一些具体的剖析。所以对其时的我们来说有一些点是非常显着的,好比我们团队较小,因为我们的状况是一个应届卒业和从业时间不长的状况,我们其时创业团队人数也非常少,只有4到6人,至今的情形也是不多的,并没有像一些创业团队那样或者带了大量的资金或许是大量的团队来,同时,我们本身也是平时接触的作品非常之多,所以对于第一款创业的作品也是提出了很高的质量的要求。

然则很显着的是高要求,而我们又没有较好的手艺储蓄去实现一个心目中非常非常幻想的游戏作品,也是贫乏一些斥地经验,所以,我们其时还需要面临的是贫乏经验,又对本身的要求高,那么应该怎么实现?还有一个隐性的前提就是其时的游戏市场也是幻化莫测,即使是如今也是幻化莫测,然则其时对我们来说没有更多的手艺储蓄,所以会加倍不清楚本身应该往哪个偏向成长。我们对这方面也是进行了一些思虑的。

具体看一下其时的情形。我们其时也是非常拮据的,在一个小的公寓内进行斥地,人人有耕田园农歌的状况。其时人员对照少的时候我们也发现我们团队中没有相对来说成功3D项目经验的团队,我们在这个根蒂前提下最初是不会考虑3D斥地的部门的,然则很显着我们又想去做那方面,所以我们其时做了一些妥协。好比我们将我们的地图分成了3D。

第二个是我们对证量要求对照高。从如今来看《明日方舟》整个作品的调性中包含了很多我们想要追求的点。好比从这张图上能够看到凭据这个圈的巨细涵盖局限也能够知道我们很多点是相辅相成的,或者缺一弗成,尤其是以日系脚色美术为焦点,显露气势设计辅助的一个根基美术框架,包罗之外还有一个世界观故事的设置。

我们本身追求的此外一个主要的点也是一个有情趣和深度的game play的部门。

除此之外还有我们的品牌形象和游戏运营和自媒体的气势。我们非常想在我们作品中实现这些点。

从如今来看,《明日方舟》的整体项目有对照多的点上是往写实偏向走的。我们其时是采用了本身可以实现的体式去完成我们的作品。譬喻方才提到了一点,我们经由相对偏日系一些的二次元的气势实现我们脚色的示意,然则我们想更多地追求一些写实气势的器材,我们在整个故事的框架设计之外向外推导往写实的偏向走。所以我们那些运动在整体设计中是有一些设计,让它显得加倍自恰,可以相符这个世界观,也能加倍相符现代设计。从脚色到故事,再从故事到世界观,它有一个气势的推演,越来越写实,越来越倾向我们想要追逐的美术的写实性的表达。

因为我们曩昔在一些同仁圈,一些创作圈中也测验去创作过一些同仁游戏,所以我们对本身,不是说我们简洁做一个作品就竣事了,我们照样进展可以实现一些对本身的超越。很显着的在这些方面都对本身有了对照高的要求。然则,曩昔因为同仁游戏或许是同仁本的载体相对来说还没有面向那么多的用户,没有影响多那么多的读者或许是玩家,天然要求会变低。然则,我们如今接触的范畴是加倍大的,所以我们对本身的要求也会变高。

在各种情形之下,我们本身心中想做的作品的确如图上所说的一些,就像赛博朋克2077,我们将来是想测验往这边做,然则很显着的本身知道其时的能力水平是没有到这个水平的,是做不到这种水平的,我们如今需要找到加倍实际的方式完成这一系列。

后来就经由我们本身的一些创尴尬这个项目进行了一些早期的规划,包罗在图中可以看到的,就是适才发的一张图和我们最早对概念的构想,也得益于我们其时的概念构想形成得对照快,所今后面就对本身的气势把握得对照牢靠。在此根蒂上,此外一条线也能顺利地铺开,对弄法进行一些探究。其实能够看到其时的情形,我们几位成员,还有其他的焦点成员这边没有列出来。我们列举了一些在民众场合露过面以及人人或者对照熟悉的成员。

我们每小我都邑发现对本身熟悉的范畴都有较高的要求。好比我本身需要追求一个对照精良的视觉设计气势,而黄一峰会要求需要手艺选型、品质不乱、可扩展,他对于法式方面有较高的要求,而RUA这边是负责我们的弄法谋划,关卡谋划,他对本身的弄法深度要求也会非常高,而负责美术总监这边的唯先生对美术品质天然是有非常高的要求的。还有其他的成员也有其他的要求。在这些要求的连系之下,对于我们其时的团队情形来说其实是非常艰难的,若何在一个我们本身都不太清楚的该是怎么样的项目中实现这些要求,就会碰到好多的问题。

总结下来,我们其时面临的一些难题具体的情形就是小团队,其时只有4到6人,资金也对照少,没有充沛的资金去招人或许是铺开一些外包或许是招募更多的人到场设计,对证量,尤其是对美术有着较高的要求,如许我们在3D、2D方面也会发生一些辩说。更要害的是固然我们有过成功的项目经验,然则人人都很年青年头,尤其是3D斥地相关的一些经验非常不足。

我们也很明的当时对于3D和2D来说有一个辩说,那我们事实该怎么做呢?作为一个日式画风,以脚色为主的具有高美术要求的作品来说,3D项目的偏向或者对我们来说其时是非常不实际的。因为3D项目平日需要更多的美术资源、人手和资金,而平日也是需要大量的时间,还需要大量的投入,我们在没有这些手艺的情形下很显着是没有法子实现这些的。然则,我们将来也进展向3D做一些铺垫,所以我们其时没有完全抛却3D方面的一些索求,人人在图中能看到,我们在关卡方面是采用了一些3D,想做一些手艺储蓄,让我们将来可以更好地接触3D方面的一些斥地。

我们也会看一下早期的图,我们其时在本身的案板上对游戏最早的气势包罗弄法进行了好多的索求。左边看到的是一张非常不太清楚的图,从图上能看到网格化这个设计最早就提出了。人人能够看到中央有一块菱形的场地,这是我们最早关于网格和地图的设置,然则我们也碰到了一个问题就是45度角和90度角该若何排布的问题。后背我们也测验做了一个概念设计,经由一些快速的素材聚积和简洁的索求把我们想要的游戏的感受测验做了出来,而这图中有些暂时素材跟最后的制品是有表达差距的,不消管它。从这张图中能够看到我们最早想要实现的感受,在这张图中获得了一些索求,而且必然水平上影响了我们后续游戏的建造气势。

其时在这个情形下,90度角的网格化的设计已经有一些雏形了。我们其时也想经由这个更好地索求我们的游戏。在这种情形下很显着Unity的一些优势就会施展出来。我们其时也确定了本身的游戏需要以什么形式发布。我们其时对准的是手游这块,很显着的跨平台闪开发的或者性变得加倍多样,这是Unity的一大亮点。

其时的情形是Unity的社区也相对完美,它可以让我们在一个非常初创的缺乏经验的团队里找到对照好的解决方案,让好多的斥地难题水到渠成。同时,以Unity,3D斥地的游戏项目,哪怕是软件方面成功案例是相当之多的,也能让我们找到一些手艺参照,去我们该采用什么样的体式斥地我们的作品,或许说我们将来可以做到什么样的水平。同时,精良手艺支撑也让我们想实现的新的器材有更多的或者性。还有一个最要害的就是有好多的小型项目在Unity的匡助下能较好地完成。U3D对于小项目的斥地友好性我们认为是非常强的,这也是让我们选择Unity的一个大原因。它作为一款成熟的跨平台贸易引擎对我们来说或者是其时最好的选择。

其实在选择完决意采用什么体式进行斥地之后,整个过程仍然是有很多难题的,能够用弯曲前行这个词来形容。我们在其时用Unity进行了一些快速的原型斥地,除了适才我们说的版本以外,我们还有一些其余版本,我们最早显现了两种原型,一种是我们今朝采用的左边这种,和如今的《明日方舟》游戏弄法较为接近的,我们叫做5×5的模型,它和传统塔防不太一般的是它的场地非常之小,采用的脚色数量或者较少,而且对于偏向和网格的差别性设置要求相对之高。

右边我们也接纳了一个模型,有点雷同今朝常见的传统塔防,它的地图相对之大,它的脚色今朝我们是没有放上去的,然则我们这个模型中脚色的冲击局限没有像如今的《明日方舟》网格化差别是如斯大的。它也有一些特点,好比说恢复cost是经由地图上的一些机关来完成的,然则它总体来说有两个问题是造成我们最终没有选择它的原因。一个是它的局限设计不相符我们本身想要做的立异,就是对于网格的差别性让我们每个脚色有分歧的使用感触。这点是我们选择它的原因之一。

还有一点就是在手机长进行实现的时候,这个地图相对来说较大,体验起来不只脚色的示意性相对较弱,对我们美术的表达也造成了难题。所以,我们基于一些玩了今后的体验和感触我们采用了最早的5×5的方案,当然这个地图不是5×5的,然则这是我们的一个统称。

所以,我们最后决意原型之后也能借由U3D的特质,使用我们曩昔的资产和一些星座的素材快速地迭代。

这边就展示了我们最早的地图的原型,可以让他们看到根基和我们如今的游戏体式是对照接近的,包罗脚色的偏向,一些速度机能,还有一些地图的根基体式,都是相对来说和如今非常接近的。

所以说我们在最后2年的跨度之中将最早的原型基于Unity的设法转化成了一个实际,其实是个很漫长的过程,然则行使Unity有好多便当性,我们可以将我们的设法付诸实际。所以,最终我们认为采用Unity是我们对内容追求的一个最好的体式。我们也经由Unity解决了好多方面的进化,让问题获得快速解决,也让我们有更多的时间去实现我们最早对于质量方面的要求,我们可以把精神放到好多建造上去,最终完成《明日方舟》如许的作品。最终我们上线的时候人数规模差不多达到了30到40人的团队规模,也得益于Unity的U3D一些斥地经验较为雄厚的社区,我们也能快速地增补人力完成我们对游戏的一些斥地。

我大略分享的部门就是如许的。之后我们会让黄一峰介绍一下《明日方舟》具体在2D和3D斥地案例中碰到的一些问题。

人人好!我是黄一峰,是《明日方舟》在前期斥地傍边的手艺负责人,也是上海鹰角收集的结合创始人之一。方才我的同事海猫从他的视角讲述了《明日方舟》从0到1的故事,接下来我将从我的视角,从更偏手艺的角度来讲述为什么我们会选择3D和2D连系的如许一个画面示意方案,我们做出了哪些工程和手艺上的弃取,我会尽量以合适的力度讲解,进展能给雷同选型的项目一些提醒,避免反复踩坑。

接下来是一个大略的纲目。首先我会介绍我们为什么会选择3D和2D连系的方案?而这个角度或者和方才海猫讲的不太一般。第二,我会说一下我们方案的具体内容,包罗场景和单元单子两个维度。第三,我会具体地解说我们在斥地过程中碰到的三个我们认为对照有典型意义的问题,进展可以给人人带来一些提醒。

首先,相信不是所有在座的同窗都认识或许玩过《明日方舟》,所以说我会首先播放一段15秒钟的斗争视频,这段视频是来自我们本年夏日的运动“密林悍将归来”。人人能够看到整个画面的气势和这种感受是偏于2D画面为主的,无论是脚色,脚色上的特效,脚色的弹道以及仇敌包罗视角是固定的,是一个2D为主的游戏。然则对照稀奇的是我们在场景的方案上选用了3D的一个模型和偏写实的衬着。我们整个场景的建模包罗打光,包罗衬着都是用偏写实化的体式实现的,包罗建造和衬着都是用尺度的PBR为工作流。

这个连系是相对对照罕有的,也是今天我们想描述的一个重点。整个斗争画面的摄像机是非正交的,就是我们传统所说的透视相机,单元单子和场景的空间关系实际上是对照稀奇的,接下来我也会在碰到问题的环节具体地进行一个描述,人人能够再看看这个斗争画面。

为什么我们会使用3D和2D连系如许一个方案呢?适才海猫做了一些讲解。我这边认为对照简洁,3D写实气势能够较好地成家《明日方舟》相对严峻的世界观和我们对照稀奇的美术气势。而2D的Q版小人能够较好地显现脚色的魅力,避免top-down视角的局限性。人人能够回忆一下top-down的游戏,尤其是像我们这种根基是从俯视角看斗争场景的游戏,它的脚色的绝大部门都被它的头顶给遮住,所以你看到脚色实际上不太可以看到它的动画细节包罗身上的服饰细节,你看到的大部门都是个大头。我们为了避免这个问题,决意使用2D Q版小人。当然最主要的问题是我们作为一个初创团队,我们进展可以尽量地降低风险,所以说我们进展能选择相对市面上对照成熟的2D动画方案,而去避免其时我们认为还没有稀奇好参考的3D小人的方案。当然,如今有好多友商已经做得很好了。

同时,我们想实践3D斥地的流程,储蓄一些3D斥地的管线和工作经验,所以我们最后选择了如许一个特别的选型。

如今这个选型有好多实际身分,然则最后实践下来我们认为它是别具一番风味的,是相当稀奇的。

好,这张概念方才展示过,实际上是由海猫在我们项目早期立项初期创作的一张图,这张图创作的时候我们一行代码都还没有起头写。这张图是为了给整个团队的成员一个统一的熟悉,我们这个游戏事实会长成什么样。我们能够从繁琐或许抽象的谋划案中具体地落到到如许一个视觉的概念上。

能够看到这张图中的好多要素和我们如今的选型是一致的,包罗3D的场景,包罗2D的小人这里面恍惚掉了,包罗整个摄像机的透视的偏向其实和我们如今的选型都高度相似的,这也是我们对照幸运的。

人人能够看到对照稀奇的是左下角有个小人是垂直站在场景上的,然则这个垂直站在场景上的行为相符场景和脚色的关系,然则却不相符我们如许一个视角的对照悦目的关系,谁人像纸片。这个问题也是为之后的斥地埋下了一些伏笔。

这张图是我们早期的一些设计和参考图。左边这张图是早期的Q版小人,我们一共有8个小人,而Q版小人上我们的选型和其时主流的头身比小的主题分歧,我们选择了相对它的腿和身子会更长一些,头身比相对更大一些,而这个偏向我们融合了一些美式Q版小人的气势。

右边这张参考图是ArtStation一位艺术家的作品,然则我们看到,我们认为它非常相符我们对3D场景包罗对写实场景的一个审美。为什么?首先它的作画气势是偏气势化的写实,其次,它整个构图是以网格为焦点单元的,它并非是以我们最后选用的四边形或许是正方形的往格,而是使用了正六边形的网格。然则总体来说整个如许一个视觉感受是非常相符我们预期的,所以我们也把它作为我们创作的一个参考。

然后是视觉方案的一个具体的描述。我们分为两部门。第一部门是场景,场景包罗3D的网格状地图,地图周边的那些摆件,地图背后的前景,以及地图上可交付的或许是一些装饰性的小物件,所有3D的模型都是使用尺度的PBR工作流建造的,在美术同窗的镌刻上会特意做一些画面化的气势化的镌刻,但不会追求较低面线的体式实现一个卡通的结果,我们的面数相对照样对照高的。

第二,在贴图绘制上我们会做一些功能化的测验,但总体来说我们并非做一个对照常见的日式RPG或许是雷同游戏的如许一个卡通化的气势,我们进展用更写实的气势做到一些差别化。

在Shader上,我们采用的光照模型是基于Unity Standard Shader点窜获得的PBR Shader。之所以不使用Unity默认的Standard Shader是因为我们对它进行了针对性的优化,同时还添加了一些我们所需要的功能。

第二部门,单元单子。单元单子包罗脚色、仇敌、第三地契位以及好多可交户的2D物件等等。所有的2D动画我们都是使用Spine骨骼动画软件进行建造的。在着色上我们使用了经由特别处理的一个Unlit的Shader,它不会受到任何的动态光照和动态暗影的影响,之所以选择如许的体式并非完全源于我们的手艺限制,同时也是因为我们经由实验发现若是我们做的加倍激进一点的话,整个场景的脚色和仇敌的辨识度会变得更差,玩家在玩的时候或者不太能差别出来哪些是他需要存眷的器材。

这部门也是接下来我们进一步推进这个画面示意所需要处理的问题,若何均衡game play和一个视觉结果。

我们场景的视觉方案会有这三张图作为最直观的显现。接下来三张图都是我们实际的衬着图。第一张图适才人人也看到了密林如许的场景,能够看参预景细节和这个地块,而第二个场景是一个熔岩洞窟的场景,第三图是我们故事发生的首要所在龙门夜晚的场景。人人能够看到这三张图都是在建模式上面我们使用了高度抽象化的以格点为焦点的构架的体式,整体的光照细节、模型贴图细节以及一些周边的装饰系,像一些建筑物和一些管道都是非常写实的。

我们的整个视觉方案如下,首先我们的场景是使用Unity PBR衬着模型的,在Shader上我们采用的是略微优化和点窜后的BRDF2,在机能长进行了一些调优,而且添加了我们可着色的暗影,在PBR Shader层面实现了高度物,也适配我们某些场景一些特别的结果。

在Lightmap上面,我们在Shader里面临Lightmap的编码息争码进行了一些特别处理,使它在所有平台上能达到一致性更好的结果。这点我之后会在问题阶段具体描述它的细节。

我们每个场景都邑使用Unity静态烘焙的方案,会烘出两张图,一张Lightmap,一张Shadowmap,所以说会有对照细腻的光影和暗影的示意。在打光方案上会有一盏夹杂动态光,这相当于我们在运行时只有一盏动态光会配好多静态烘焙光的体式来做打光方案,而且在特别的情形下我们会添加更多的探针做一些静态的反射,为某些场景添加一些需要的视觉结果。

除了整个模型之外,我们在场景上会添加一些Unity供应的添加方案所添加的发生的滤镜特效和模型特效。

人人能够看到方才的视频中是有一个瀑布的,就是用特效实现的,会增加一些风味。

接下来是脚色的视觉方案。我们绝大部门的脚色在右边这张图中能够看到,我们的SPINE工程傍边实际是用了正反两个面做每个脚色的。为什么这么做?我们参考了雷同的游戏,好多2D游戏实际上只有正面一面,然则在动作上会锐意地避开像冲刺、穿刺如许偏向性很强的动作,而选择画面中雷同克德克萨斯使用的半圆的圆弧斩的体式,如许能恍惚偏向性,然则如许的话会极大地限制我们美术工作者对于动作的创作包罗兵器创作,所以在衡量之后,我们照样选择了把绝大部门脚色做两面,做一个动作的拆分,而其他的脚色,不太主要的第三地契位,我们就会使用单面的体式。

而整个如许一个体式能够看到我们在正面和不和的改变过程中我们是做了一个雷同于纸片人的改变的动画。而这个动画我们的灵感来自于任天堂一款有名的游戏系列《纸片马里奥》里面一个雷同的画面,对比看一下,我们游戏的结果和这个是对照接近的,能够看到灵感起原是这里。

好,接下来我会具体地描述几个在斥地过程中碰到的问题。这些问题其实都是源自于我们融合3D场景2D脚色做一个连系。因为这个方案对照少见,所以碰到问题也对照少见,进展给人人带来一些提醒。

首先第一个是空间关系错误,方才我也已经提到过,我们场景和摄像机,摄像机并不是垂直于场景,它实际上和场景的X、Y平面呈一个60度夹角的关心,而脚色,因为我们要显现脚色,一定是对着场景,对着摄像机,它是垂直于场景的偏向的,经由简洁的几个关系能够得进场景的X、Y平面和脚色的夹角实际上是30度,也就是说我们的脚色并不是站在场景上,而是斜躺在场景上,或许说我们是躺在场景上,它实际上是一个斜插的器材,它的究竟或者是极易穿模,这里说或者不太直观,人人能够看一下这张图。

最左边的图就是我方才描述的合理的空间关系,人人因为脚色后背的地块它的模型非常高,所以说它的头是插在模型傍边的,进行了一个穿模。

为认识决这个问题,有的同窗或者会说把这个脚色给调整到垂直场景不就解决问题了吗?那么我们最右边这张图就是把脚色调整到垂直于场景,这个时候它和场景的关系对了,深度关系也对了,然则我们看起来非常新鲜,像纸片人。

这种情形下,若是我们调整一下摄像机的角度,好比像中央这张图一般,调整到可以正常地平视这个脚色,那整个空间关系看起来是准确的,只是如许一来我们的游戏是没法玩的,因为摄像机只能以这个角度去看的话玩家是没法把持的。

为认识决这个问题,我们最后达到的结果是进展像左边如许,然则能解决穿模的问题。这个中曾经履历了一个错误的思路,也就是说我们衬着的时候封闭了一些test,同时Z-write也不大,我们把整个场景中的模型、摆件和脚色都经由一个深度混排的体式,我们手动对它排序,雷同于传统2D游戏的处理体式,我们手动排序之背工动去归置,如许的确能达到相对对照准确的究竟,然则会带来两个首要的问题。第一个就是我们会损坏这个合批,打破它静态的一个batching,为什么?因为我们整个场景是一个静态,包罗它的光照贴图和暗影贴图,我们在衬着的时候能够用相当低的DrawCall做到所有的场景,绝大部门场景的DrawCall都在个位数。若是需要混排,需要打乱脚色前、脚色后的顺序,我们会增加非常多的DrawCall。

其次,我们会有一些小摆件,好比场景上的一些树木是跨两个格点的,这些小摆件我们人人对它进行排序就很难知道它究竟在哪一层。

最后我们解决的思路是让脚色需要看起来垂直于摄像机,但实际上它是垂直于场景的。这个听起来有点抽象,待会儿我们会展示图片。那么我们解决方案实际上是把深度进行一个调整,在Unity傍边百位或许是在场景傍边的位置和着色系它的脚色都是垂直于摄像机的,也就是躺在场景上的。而在Vertex Shader最后我们会把深度从方才谁人空间变换到垂直于场景的空间,如许以来对于深度测试和深度写入来说就似乎脚色是垂直于场景上的。

左边这张图就是一个正常的透视关系,也就是说脚色是躺在场景上,会穿模的情形,实际上最后做深度测试的时候,我会把它脚色的深度从方才左边这个图变换到右边这个深度空间傍边,你能够看到整个脚色如今是垂直于场景,而且被抽起来的,它变得更拉长了。为什么?这张草稿能解说问题,首先这个camera是我们的事件偏向,它和场景是有一个夹角的,脚色垂直于这个camera的偏向,它的夹角和场景夹角是30度,这个时候我们能够做如许的一个三角形,而这个三角形的斜边就是我们箭头指的偏向,就是我们在深度测试的时候实际上地点的位置,能够发现这上面线上的每个点和原本脚色上的每个点是一一对应的。经由几个简洁的关系,这是一个直角的三角体,并且是一个30度夹角的,斜边和对边的比例是1:2,所以说实际上这个边的长度是它的2倍。

这里我不会深入一些处理的细节,因为我相信这个对照轻易的,经由人人的较量都能够获得。只需要说一点,做这个变换只需要在Vertex Shader在最后做一个深度变换能够,这需要注重的是这个时候Vertex Shader最后的位置它实际上是处于透视除法之间骑士空间傍边的,所以此时若是要做一个Z轴的转变在骑士空间中需要考虑到第四位W介入运算,这里是个简洁的代码。

好,那么问题解决了吗?其实并没有。我们在整个视觉方案傍边还碰到了好多其余问题,方才提到的是个中最主要的点罢了。这里图中解说的是此外一个问题,我们的干员重兵他的冲击体式对照稀奇,他的冲击体式是往下挥鞭的时候纵深会稀奇长,所以说会直接穿到这个模型里面,若是我们把它的脚色深度拉伸到垂直于场景,它依然会穿进去,所以此时我们做了一个特别处理,当它的高度大于等于0的部门我们使用方才说的处理体式,而高度小的部门我们使用此外一套处理体式,使这个鞭子被扭转到平行于这个场景的X、Y平面,如许才能在同样准确而且一致的前提下准确地绘制出来。

除了图纸之外,还有空中,它其实处理体式也是不太一般的。所以,这里是有好多细节的,若是人人感乐趣,接下来我们再具体探究。

第二个问题是Lightmap纷歧致的问题,而这个问题好多友商包罗好多网友在网上也提到过,我也看到好多文章,他们会发现编纂器在实机,在移动平台上或者最后Lightmap的究竟都不太一般,然则我们调研获得的究竟是若是抛开Unity版本谈这个问题是没什么意义的,因为每个Unity版本对于Lightmap编码解码的细节都有必然的调整。所以我们这里所有的结论是在2017 LTS版本上。这个问题的原因是因为光照贴图存储的并不是颜色,它和平日的图是纷歧样的,它存储的是一个间接光的,它的局限是在0和1之外的,我们无法用一个常规的LDR的贴图花样把它存下来,它原本是一些APBR的信息。所以说我们需要把它进行编码,才能重造一些LBR的贴图花样。那么这个编码的体式在分歧平台上是纷歧样的,这个原因也导致了最后分歧平台上的示意究竟纷歧致。

人人能够看这两张图,或者不太轻易看清,在明暗接壤的处所实际上谁人暗影会泛蓝紫,这个蓝紫就是暗影的细节,在左边这张图是被吞掉了,这个细节是我们需要处理的。

这里我不会具体地描述RGBM和WLDR编码,人人若是感乐趣,若是不认识的话,网上稍微查一查应该对照轻易认识。笼统来说RGBM会将额外的信息存储到第四个通道alpha傍边,而WLDR的体式对照暴力,它直接把RGB的原始信息除以2乘下来,所以它丢失的信息对照多。

接下来是一个具体的问题,当Lightmap光照贴图被烘焙出来之后,它的TextureType默认是设置到Lightmap,那么这种情形下Unity就会凭据当前所选择的平台来编码这个Lightmap,影响采样的究竟。若是在PC上我们把Lightmap Quality成为High的话,它存储的是一个原生的HDR的信息,若是把它作为Normal Quality,它会把HDR信息经由RGBM进行编码,存在一张LDR的贴图里面去,若是是iOS的安卓,也就是移动平台,它会对照暴力的把所有如许的信息都给编码成double LDR的体式。而double LDR的体式下,alpha  会直接丢弃,这才是我们想经由做一些把持把一些信息存到alpha通道傍边,你读不出来的是读不出来的,读出来的是个常量。

接下来是我们做测试的一些细节。这些细节今天我不会睁开,人人若是感乐趣能够会后经由PPT的体式查察。

结论来说,若是我们持续连结Unity的默认选择 TextureType  -Lightmap,它就已经存储为double DR,LDR的花样了,那double DR的花样只能存储0到2的亮度局限,亮度2以上的局限都被截断和丢失了,为了我们达到更好的结果,在分歧的平台上使用RGBM编码,我们必需接纳一个default的花样。

具体的方案是我们把烘焙出来的光照贴图的TextureType从Lightmap改为default,同时我们把RGBM的alpha通道这个信息从Lightmap傍边抽离出来,放入shadowmask的green chanel,这个原因是因为shadowmask实际上使用了它的red chanel通道,其他通道是没有被使用的。我们为了让两张贴图都能够不存alpha通道,最大化地行使内存空间,我们把alpha做了一个trick的把持,如许以来我们就能够用随意我们喜欢的压缩 花样,包罗STC、ETC2和PVRTC对这两张shadowmask和lightmap进行处理。

我们会点窜GBR的shader,用RGBM来解码这个lightmap,并使用从shadowmask中读取的信息,也就是适才说的green chanel的信息来辅助这个解码。在PC受骗然也是需要响应地点窜兼容,使所有平台上达到一致的结果。

最后这张图就是我们经由如许一个处理体式之后在所有平台上包罗编纂器,包罗PC五,包罗安卓、iOS都达到的细节的光照贴图的结果。

好,最后一点,我们若何融合3D场景2D脚色的衬着示意?这个问题实际上是一个对照复杂的问题,我们如今也在索求。我们总结了几点:

首先第一个是我们会对每个主题的场景界说一套感化于所有单元单子、所有脚色的tint color,使其着色和场景气氛更接近。也就是说我们每个场景里面脚色的衬着其实略微有些区别,而这个区其余tint color是由我们美术工作人员做设置的,第二点,经由美术处理可以调整3D场景、2D脚色,包罗整个特效的整体气氛和色调,使它加倍融洽。

我们也会除了适才的tint color之外供应一些后处理的选项,包罗color grading和Bloom等等的让美术工作人员能经由他们的起劲使我们整个场景3D和2D加倍协调。将来我们也会索求更多的体式融合这一特别的画面示意。

最后做一个总结。《明日方舟》3D和2D连系的方案我们首先使用了PBR的衬着和工作流行止理这个3D模型的场景。然后对于2D的脚色,我们使用Spinn的骨骼化软件,使用unlit的shader行止理的。

第二点,为认识决3D场景、2D场景空间透视关系错误的不协调的问题,我们对shader进行点窜,在深度上做了一个变换,使它看起来和实际深度傍边的示意是纷歧致的。

第三点,我们自界说了我们Lightmap的编码息争码流程,使其在分歧的平台上都能获得一个一致且更好的结果。

第四点,我们使用了一些定制化的tint color和一些后处理的选项,让3D场景和2D脚色能融合得更好。

最后,我们供应了这么多的选项是让我们的美术工作人,也就是说我们的艺术家们来做最后的处理的。因为我相信手艺人员只是供应对象,最后的整个画面结果一定照样需要以加倍感性的熟悉去调整的。

今天的分享就到此竣事。感谢人人。再会。

投稿邮箱:news@GameRes.com

商务合作:Amber(微信:lcxk6876767)

其他合作:老林(微信:sea_bug)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值