【Unite Tokyo 2018】Achieving high quality Anime style rendering on Unity

這里來介紹一下米哈游崩3的相關(guān)技術(shù)倦西,技術(shù)分享于2018年,雖然過去5年了雏节,但其中依然有些內(nèi)容值得借鑒學(xué)習(xí)。

崩3高职、原神使用的都是Unity引擎钩乍,全文目錄給出如下:

下面介紹了崩3在移動(dòng)端上用到的一些特性,包括但不限于Bloom怔锌、動(dòng)態(tài)粒子寥粹、Distortion(一種后處理)以及平面反射:

介紹一下反射實(shí)現(xiàn)邏輯:

  • 以1/3的分辨率進(jìn)行渲染(不是PPR或SSR做的后處理),從下面的截圖來看埃元,這里是對(duì)反射渲染的viewport做了縮減處理的
  • 根據(jù)需要進(jìn)行模糊處理
  • 渲染的時(shí)候考慮了菲涅爾效應(yīng)
  • 通過材質(zhì)處理涝涤,在金屬反射面上增加了一些扭曲與sketch(筆觸)效果

屏幕空間的扭曲自然是通過后處理完成:

  • 會(huì)基于深度來控制扭曲強(qiáng)度

Bloom邏輯沒什么新意,還是多層下采樣疊加后得到Bloom效果岛杀,并將之疊加到原始場(chǎng)景上去阔拳。

最后混合就得到了相關(guān)效果,中規(guī)中矩类嗤。

崩3有日夜變化與動(dòng)態(tài)天氣糊肠。

云層是通過貼片來實(shí)現(xiàn)的,不過提供了較為豐富的配置以應(yīng)對(duì)不同的場(chǎng)景:

  • 時(shí)間(早中晚)
  • 顏色(Bright/Dark/Rim/Second Dark Color)
  • 將貼圖分成多個(gè)Layer遗锣,用不同的通道表示货裹,在實(shí)際使用的時(shí)候根據(jù)配置對(duì)Layer進(jìn)行疊色混合得到最終效果

為云層提供了專門編輯器:

  • 通過billboard粒子實(shí)現(xiàn)
  • 可以自定義自己想要的云朵類型
  • 通過keyframe實(shí)現(xiàn)云層的動(dòng)態(tài)變化
  • 添加了TOD時(shí)間控制邏輯

上面展示了可以實(shí)現(xiàn)的效果,看起來還挺豐富的精偿,也挺好看弧圆,就是不知道運(yùn)動(dòng)起來是否連貫,而且貼圖消耗低(內(nèi)存稍高)笔咽,性能比較好搔预,如果沒有角色穿云的玩法,這種方案還是挺不錯(cuò)的叶组。

天氣系統(tǒng)做了如下工作:

  • 對(duì)大氣霧效的控制邏輯做了優(yōu)化
  • 添加了對(duì)skybox顏色配置的邏輯
  • 為角色添加Lighting Volume

又繞回后處理了斯撮,增加了多層DOF效果:

  • 采用六邊形作為DOF高光形狀
  • 基于模糊半徑(通過曲線控制,可以實(shí)現(xiàn)一些鏡頭效果或者隨著時(shí)間動(dòng)態(tài)變化的效果)對(duì)分辨率進(jìn)行調(diào)控(半徑越大扶叉,分辨率越低)
    支持對(duì)Bokeh的強(qiáng)度(會(huì)根據(jù)場(chǎng)景的亮度動(dòng)態(tài)調(diào)整,以確保效果)與旋轉(zhuǎn)參數(shù)進(jìn)行調(diào)整以實(shí)現(xiàn)動(dòng)畫效果帕膜,下面給了一個(gè)圖片枣氧,文末的參考鏈接中有對(duì)應(yīng)的視頻可以看下:

雨效邏輯:

  • 會(huì)根據(jù)時(shí)間的流速(如慢動(dòng)作)調(diào)整表現(xiàn)
  • 一共設(shè)計(jì)了四種流速,并關(guān)聯(lián)了四種不同的資產(chǎn)

下面看下卡渲邏輯垮刹。

角色著色要點(diǎn):

  • 基于多層Ramp圖+Brush實(shí)現(xiàn)
  • 頭發(fā)做了各向異性达吞,還做了折射和模糊?
  • 主要有三種光:方向主光荒典、環(huán)境光IBL以及邊緣光
  • 陰影用了PCSS(根據(jù)caster到receiver的距離調(diào)整陰影的軟硬程度)
  • 描邊

崩3對(duì)Ramp圖的使用可以說是一大亮點(diǎn)酪劫,這里來介紹一下具體的實(shí)現(xiàn)邏輯吞鸭。

早前的卡渲采用的Shading邏輯都是二值化處理,即基于NdotL的數(shù)值來判斷當(dāng)前像素是處于亮部還是暗部覆糟,這樣導(dǎo)致的效果就是明暗交界過渡比較生硬刻剥,為了解決這個(gè)問題,就開始圍繞NdotL的取值做文章滩字,因?yàn)檫@個(gè)數(shù)值本身是個(gè)浮點(diǎn)數(shù)造虏,因此我們可以將二值化處理變成分段的多值化處理,還可以更進(jìn)一步麦箍,基于這個(gè)數(shù)值來對(duì)一張顏色貼圖(稱之為ramp圖)進(jìn)行采樣漓藕,得到更為柔和的效果,就如上圖所示挟裂。

關(guān)于ramp圖享钞,其實(shí)有很多不同的用法,下面做一下簡(jiǎn)單的整理:

  1. 一維Ramp圖

比如有人基于這個(gè)數(shù)值來對(duì)shading的暗部判定邏輯進(jìn)行調(diào)整從而得到更符合需要的明暗變化:

float NdotL = dot(L, N)*0.5 + 0.5 // half-lambert
float ShadowLerp = SAMPLE_TEXTURE2D(RampTexture, 1 - NdotL)
float3 Diffuse = lerp(BaseColor, ShadowColor, ShadowLerp)

又比如基于采樣ramp圖來對(duì)Shading Color進(jìn)行調(diào)節(jié):

float NdotL = dot(L, N)*0.5 + 0.5
float ShadowLerp = SAMPLE_TEXTURE2D(RampTexture, 1 - NdotL)
float3 Diffuse = BaseColor * ShadowLerp
  1. 二維Ramp圖
    根據(jù)二維Ramp圖采樣的UV坐標(biāo)含義不同诀蓉,我們有不同的用法

2.1 TOD+MaterialID

上面這張Ramp圖可以分成上下兩半栗竖,上面的暖色調(diào)(三行顏色)對(duì)應(yīng)的是白天的參數(shù),下面的冷色調(diào)(三行顏色)對(duì)應(yīng)的是晚上的參數(shù)交排。而水平坐標(biāo)對(duì)應(yīng)的實(shí)際上材質(zhì)ID划滋,基于不同的材質(zhì)ID,我們可以得到不同的顏色埃篓,從而可以為不同的物件指定不同的顏色疊加效果处坪。

2.2 LightingAngle+Distance

也有人將橫坐標(biāo)解釋成NdotL,縱坐標(biāo)解釋成到相機(jī)的距離的架专,從而可以實(shí)現(xiàn)顏色隨著遠(yuǎn)近而變化的效果

2.3 LightingAngle+MaterialID
這個(gè)方案就是崩壞所使用的方案同窘,橫坐標(biāo)跟上面一樣,為NoL部脚,縱坐標(biāo)則為材質(zhì)ID想邦,從而使得不同的材質(zhì)可以有不同的顏色變化效果。

不過這里其實(shí)并不是直接簡(jiǎn)單采樣就拿來使用委刘,還做了比較多細(xì)節(jié)處理:

  • 一張Ramp圖會(huì)分成多個(gè)通道丧没,每個(gè)通道用于控制一個(gè)layer的疊色
  • 而每個(gè)通道的數(shù)值其實(shí)可以理解成每個(gè)layer顏色的權(quán)重,我們可以指定每個(gè)通道對(duì)應(yīng)的顏色锡移,以及對(duì)應(yīng)權(quán)重的偏移值:

整體的計(jì)算公式給出如下:

float3 Tint = SAMPLE_TEXTURE2D(RampTexture, float2(NdotL, MaterialID))

float3 TintHigh = Tint.r * TintHighColor
float3 TintMed = (Tint.g + TintMedOffset) * TintMedColor
float3 TintLow = (Tint.b + TintLowOffset) * TintLowColor

float3 TintColor = saturate(TintBaseColor + TintHigh + TintMed + TintLow)

這里給出了不同疊加層數(shù)下的不同效果呕童。

通過對(duì)ramp圖的調(diào)整,我們可以實(shí)現(xiàn)軟硬切換的效果淆珊,且必要的時(shí)候夺饲,還可以為同一個(gè)角色的不同部位賦予不同的軟硬程度。

明暗的漸變效果看起來不錯(cuò),但也不是所有部位都需要往声,比如臉部就不要這個(gè)效果擂找,因此這里還增加了一張mask圖用于控制需要進(jìn)行漸變的區(qū)域

這里的陰影看起來不是基于光源視角的,而是基于相機(jī)視角(或者說基于相機(jī)視角做一個(gè)調(diào)整)產(chǎn)生陰影貼圖浩销,之后根據(jù)偏移+陰影貼圖采樣來實(shí)現(xiàn)的效果贯涎,且透明物體也會(huì)參與到陰影貼圖的繪制中去。

眼睛增加了折射效果撼嗓,折射的原理就是將打在球面(眼球)上的射線按照折射原理做一個(gè)偏轉(zhuǎn)柬采,并基于偏轉(zhuǎn)后的方向完成貼圖采樣。

因?yàn)楸砻娌⒉皇瞧秸那揖凑账鼓╯nell)定律來求取折射向量會(huì)比較復(fù)雜粉捻,《RTR》中給出了一個(gè)擬合公式:
RefractVector = (w - k)*Normal-n*View \\ n = \frac{n1}{n2} \\ w = n * dot(View, Normal) \\ k = \sqrt{1+w^2-n^2}

具體的推導(dǎo)過程可以參考Faster Refraction Formula, and Transmission Color Filtering

有了折射向量,就能夠算出偏移值:

如上圖所示斑芜,入射點(diǎn)處的eye forward direction我們標(biāo)注為Up肩刃,Up跟折射向量Refract所夾的銳角我們記為theta,Up與不做折射時(shí)的向量Direct所夾的銳角杏头,記為alpha盈包,那么我們就有:
cos\theta = abs(dot(\vec{Refract}, \vec{Up})) \\ cos\alpha = abs(dot(\vec{View}, \vec{Up})) \\ \vec{HorizontalOffset} = normalize( \vec{Up}*cos\theta + \vec{Refract}) * Height*(tan\alpha -tan\theta)

這里的height是入射點(diǎn)到水平面的高度,得到上述偏移向量后醇王,將之與(眼球)貼圖的U方向的向量(世界空間)以及V方向的向量(世界空間)點(diǎn)乘就得到了UV偏移值(上圖公式給的應(yīng)該是簡(jiǎn)化版本)呢燥。

眼睛繪制的另一項(xiàng)重要特征是焦散(Caustic),人眼結(jié)構(gòu)如下圖所示:

由于前房區(qū)域可以看成是一個(gè)透鏡寓娩,而透鏡會(huì)有聚焦光線的作用叛氨,因而導(dǎo)致虹膜部分會(huì)形成焦散的亮斑,如下圖所示:

回到崩3這邊的實(shí)現(xiàn)棘伴,由于卡渲并不追求物理真實(shí)寞埠,只要好看就可以了,因此完全可以把焦散繪制到貼圖上焊夸,崩3采用的也是類似做法:

  • 添加一張Caustic Mask圖仁连,用于控制哪些區(qū)域會(huì)存在焦散亮斑
  • 由于卡渲的特殊,米哈游希望焦散效果出現(xiàn)在入射光線的另一側(cè)阱穗,所以這里通過對(duì)diffuse計(jì)算邏輯進(jìn)行翻轉(zhuǎn)(將入射光線沿著法線做對(duì)稱翻轉(zhuǎn))來模擬光照的變化饭冬,之后輔助菲涅爾公式(光在進(jìn)入不同介質(zhì)時(shí)會(huì)存在反射與折射,這個(gè)公式揭露了反射光強(qiáng)與折射光強(qiáng)的比例)來調(diào)節(jié)焦散強(qiáng)度的變化

眼睛的最終渲染效果如圖所示揪阶,下面來看下頭發(fā)渲染昌抠。

這里先列幾個(gè)期望達(dá)成的渲染要點(diǎn):

  1. 要能做到所見即所得的效果調(diào)節(jié),即對(duì)參數(shù)或者貼圖的調(diào)整遣钳,要能立馬看到效果
  2. 要支持基于切線的各項(xiàng)異性
  3. 支持多層高光效果
  4. 支持隨著粗糙度而變化的光照表現(xiàn),且能夠支持隨著視角或光照的變化而跟隨流動(dòng)的效果與頭發(fā)之間的AO遮擋

頭發(fā)渲染的一個(gè)重要特征是高光,最常用的模型是Kajiya-Kay(簡(jiǎn)稱kk)蕴茴,這個(gè)模型是目前渲染頭發(fā)比較常用的劝评,《神壕氲恚》以及這里的崩壞都用的這個(gè)模型蒋畜。

相對(duì)于普通物件的高光使用的NoH,這里使用的是ToH撞叽,但實(shí)際推導(dǎo)起來姻成,兩者其實(shí)是對(duì)等的:
sin(T, H) = sin(90^\circ- \theta) = cos(\theta) = cos(H,N)

kk高光項(xiàng)計(jì)算規(guī)則給出如下:

可以看到,這個(gè)公式跟上面崩壞使用的代碼是吻合的

前面說到愿棋,崩壞這里用了兩層高光科展,分別是低頻跟高頻,不確定是否每一層都用的kk(相當(dāng)于采用的是Marschner模型了)糠雨,為了模擬動(dòng)漫中類似于電磁波抖動(dòng)的效果才睹,這里對(duì)高光做了抖動(dòng):

shift = Sample(NoiseTex, shiftUV)
shiftedT = T + shift * N
newTangent = normalize(shiftedT)

首先對(duì)采樣坐標(biāo)進(jìn)行處理,得到噪聲貼圖的采樣坐標(biāo)甘邀,基于這個(gè)坐標(biāo)得到抖動(dòng)的幅度琅攘,基于抖動(dòng)幅度利用法線對(duì)切線進(jìn)行調(diào)整,從而實(shí)現(xiàn)高光在發(fā)束上下移動(dòng)的效果松邪。

這里給出兩層高光的效果坞琴。

這里給出另一種高光實(shí)現(xiàn)方案,這里的高光想要實(shí)現(xiàn)順著發(fā)絲移動(dòng)的效果逗抑,且形狀能夠隨著位置的不同而變化剧辐。

要想實(shí)現(xiàn)這種效果:

  • 需要確保每一縷頭發(fā)的uv是順著發(fā)絲而平滑變化的(方便基于uv計(jì)算出切線,否則就需要用flowmap來獲取切線)
  • 對(duì)于每一縷發(fā)束锋八,需要通過某個(gè)貼圖標(biāo)識(shí)出其左邊界與右邊界浙于,從而可以實(shí)現(xiàn)從左到右高光形狀的變化,并用多個(gè)曲線來定義高光模板實(shí)現(xiàn)不同的高光效果
  • 之后挟纱,同樣使用一張?jiān)肼曎N圖來控制抖動(dòng)(高光粗細(xì))
  • 在材質(zhì)上羞酗,添加若干參數(shù)用于控制高光的形狀、偏移等紊服,從而實(shí)現(xiàn)各種不同的高光形狀

另一個(gè)需要各向異性高光的材質(zhì)是絲綢檀轨,崩3這邊的做法是利用副切線來進(jìn)行計(jì)算,并使用了三層高光疊加的方式來實(shí)現(xiàn)欺嗤,每種高光都可以分配不同的顏色参萄。

這里沒有具體介紹高光的計(jì)算方法,也沒有給出三層高光的計(jì)算區(qū)別煎饼,不過移動(dòng)端角色渲染(絲綢篇)對(duì)PBR下的寫實(shí)高光計(jì)算邏輯進(jìn)行了梳理讹挎,大概思路給出如下:

  1. 獲取某個(gè)點(diǎn)的各項(xiàng)異性數(shù)值anisotropy,并基于這個(gè)數(shù)值計(jì)算出在切線T與副切線B方向上的粗糙度:
anisoAspect = sqrt(1 - 0.9 * anisotropy)
roughnessT = roughness / anisoAspect 
roughnessB = roughness * anisoAspect 
  1. 基于T、B以及對(duì)應(yīng)的roughness計(jì)算G項(xiàng)跟D項(xiàng)筒溃,F(xiàn)項(xiàng)不受各項(xiàng)異性影響
  2. 基于計(jì)算得到的GDF马篮,計(jì)算對(duì)應(yīng)的高光
  3. 為了得到更逼真的高光效果,通常需要對(duì)法線做偏移調(diào)整

說回到崩3的3層高光怜奖,推測(cè)可以在兩個(gè)層面做文章:

  1. 為不同層指定不同的anisotropy或roughness
  2. 為不同層指定不同的法線偏移參數(shù)

這里是演示效果浑测,看起來還挺贊的

這里介紹一些特殊的裝飾材質(zhì),如水晶等需要折射效果的透明材質(zhì)歪玲,以及紗巾等需要模糊的半透材質(zhì)迁央,具體實(shí)現(xiàn)邏輯沒什么好介紹的,其中一個(gè)可以說一下的優(yōu)化點(diǎn)是這里的折射與模糊不是針對(duì)全屏的滥崩,而是針對(duì)角色(繪制一個(gè)proxy mesh岖圈,這個(gè)mehs通常是對(duì)應(yīng)的角色,或者更精簡(jiǎn)一點(diǎn)夭委,只繪制半透物件對(duì)應(yīng)區(qū)域)覆蓋的區(qū)域的

下面來看看描邊算法幅狮。描邊使用的是基于法線外擴(kuò)的方案,只針對(duì)角色以及動(dòng)態(tài)物體使用株灸,并且通過頂點(diǎn)屬性來控制描邊的粗細(xì)崇摄,從而可以實(shí)現(xiàn)發(fā)梢描邊逐漸變細(xì)最終縮小為0的效果,且描邊粗細(xì)還會(huì)隨著到鏡頭的距離做動(dòng)態(tài)調(diào)整慌烧。

此外逐抑,不同的材質(zhì),其描邊顏色也是可以控制的(這里沒有介紹是基于頂點(diǎn)屬性還是貼圖來實(shí)現(xiàn))

對(duì)于幾何邊緣而言屹蚊,法線外擴(kuò)方案就夠了厕氨,但是對(duì)于一些非幾何邊緣,如一些色彩邊緣來說汹粤,這個(gè)方案就無能為力了命斧,崩3的做法是通過一個(gè)預(yù)處理(沒有介紹預(yù)處理是在什么時(shí)候完成,是一次性的嘱兼,還是每幀都需要国葬,從理論上推測(cè),可以做成一次性的芹壕,在開發(fā)階段就制作完成汇四,比如將之保存成一個(gè)額外的mesh,之后通過geometry shader完成對(duì)應(yīng)的線條勾勒)來搜集這些邊緣的數(shù)據(jù)踢涌,并且基于與法線外擴(kuò)方案同一套控制參數(shù)(頂點(diǎn)屬性控制粗細(xì)等邏輯通孽,以及描邊顏色控制邏輯等)來對(duì)效果進(jìn)行調(diào)整,確保全屏效果一致睁壁。

場(chǎng)景的描邊背苦,通常是基于normal與depth的邊緣檢測(cè)后處理實(shí)現(xiàn)的互捌,但是這種方案的問題在于描邊的寬度不好控制,雖然能夠基于深度來控制行剂,但是其調(diào)整范圍是有限的疫剃,只能實(shí)現(xiàn)少數(shù)幾個(gè)像素尺寸的調(diào)整(為什么?)硼讽,所以不適合角色等距離相機(jī)較近的人物(較近的話,就只能考慮基于法線外擴(kuò)來實(shí)現(xiàn)了)牲阁。

除了普通的描邊之外固阁,這里還介紹了一種比較復(fù)雜的筆刷描邊方案,其實(shí)現(xiàn)步驟給出如下:

  1. 輪廓線提瘸蔷铡:從Mesh上提取輪廓邊备燃,可以分為Sharp Edge和Smooth Edge兩種
  2. 連接輪廓線:根據(jù)模型的拓補(bǔ)關(guān)系,將相鄰的輪廓邊連接成盡可能長(zhǎng)的輪廓線(是不是離線計(jì)算會(huì)比較合適凌唬?)
  3. 輪廓線分段:在步驟2的基礎(chǔ)上并齐,根據(jù)輪廓線上曲率和可見性的變化,將輪廓線在曲率或可見性的突變處分開
  4. 筆觸映射:將想要添加的筆觸(某種人工繪畫時(shí)會(huì)呈現(xiàn)的一種特定的描邊效果)制作成紋理貼圖客税,根據(jù)對(duì)應(yīng)的紋理坐標(biāo)映射到步驟3的輪廓線上

這種方案實(shí)現(xiàn)的描邊效果更為風(fēng)格化况褪,但是性能消耗較高,不太適合用在實(shí)時(shí)更耻,離線的CG制作倒是可以测垛。

下面來看下崩3中的特效或后處理效果。

這里展示了體積光+bloom的效果秧均,可以說是非常的抓人眼球了食侮。

來看下體積光是如何實(shí)現(xiàn)的:

  1. 看起來是用的Unity自帶的功能,通過曲線來控制體積光的形狀
  2. 可以通過曲線在運(yùn)行時(shí)調(diào)整體積光的形狀與強(qiáng)度(顏色)
  3. 增加了一張3D噪聲貼圖模擬霧氣動(dòng)態(tài)變化的效果
  4. 增加了Cookie Map用于控制體積光投影的形狀(這個(gè)沒有細(xì)說目胡,不太理解锯七,不過不重要)
  5. 通過藍(lán)噪聲抖動(dòng)+TAA來降低體積光采樣頻率過低導(dǎo)致的鋸齒問題

開了GI,支持基于視頻的動(dòng)態(tài)自發(fā)光與體積聚光

為角色添加了動(dòng)態(tài)AO誉己,基于魔改后的HBAO實(shí)現(xiàn)

這里是用到的一些屏幕空間后處理效果眉尸,部分如Lens Flare需要為卡渲風(fēng)格做特定調(diào)整(這里使用與bloom類似的方式提取的高光區(qū)域作為輸入,然后進(jìn)行多次不同方向上的卷積并應(yīng)用色彩調(diào)制來獲得最終結(jié)果)

這里展示的是CG畫質(zhì)的渲染效果巫延,看起來還是挺不錯(cuò)的

為了得到高畫質(zhì)的場(chǎng)景效果效五,崩壞3采用的策略是在PBR的基礎(chǔ)上對(duì)其做風(fēng)格化調(diào)整,使之表現(xiàn)接近動(dòng)畫風(fēng)格:

  1. 對(duì)于色彩的做了卡通化調(diào)整
  2. 對(duì)于物體材質(zhì)細(xì)節(jié)根據(jù)需要進(jìn)行強(qiáng)調(diào)或省略
  3. 結(jié)合使用圖像空間的勾線來強(qiáng)調(diào)物體邊緣

這里是效果展示炉峰。

角色的表情是基于blendshape制作實(shí)現(xiàn)的:

  1. 將眼睛畏妖,嘴巴和眉毛拆分為單獨(dú)的部件,分別控制其表情變化
  2. 自研了一套面部表情插件疼阔,用于實(shí)現(xiàn)表情動(dòng)畫的及語(yǔ)音嘴型的自動(dòng)映射
  3. 預(yù)定義了一個(gè)包含豐富表情的集合戒劫,在角色交互的時(shí)候根據(jù)需要從中選用以驅(qū)動(dòng)面部表情半夷。

這里介紹了角色動(dòng)畫實(shí)現(xiàn)上的一些細(xì)節(jié):

在Unity中如果使用humanoid作為動(dòng)畫導(dǎo)入方式,當(dāng)關(guān)節(jié)處旋轉(zhuǎn)角度較大時(shí)迅细,關(guān)節(jié)處的形狀可能無法滿足項(xiàng)目組對(duì)動(dòng)畫品質(zhì)的期望, 解決方案是:
1.1 在DCC中為每關(guān)節(jié)添加一個(gè)修正的blendshape巫橄,并將之一并導(dǎo)入到Unity以防止關(guān)節(jié)形變
1.2 由一個(gè)腳本來根據(jù)關(guān)節(jié)旋轉(zhuǎn)角度來對(duì)形狀進(jìn)行插值混合,為了確保效果茵典,每個(gè)關(guān)節(jié)會(huì)需要分別制作兩個(gè)blendshape湘换,一個(gè)用于90度,另一個(gè)用于140度以對(duì)關(guān)節(jié)形變補(bǔ)償

  1. 另一種解決方法是使用額外的骨骼進(jìn)行關(guān)節(jié)修正统阿,這種方法更容易制作彩倚,但是對(duì)于結(jié)構(gòu)細(xì)節(jié)的優(yōu)化效果不如上一種使用blendshape的方案

流體和破碎是使用alembic格式,或者EXR貼圖作為載體從Houdini或其他DCC工具導(dǎo)入的頂點(diǎn)動(dòng)畫實(shí)現(xiàn)的扶平。

基于貼圖的頂點(diǎn)動(dòng)畫由于是在GPU上計(jì)算實(shí)現(xiàn)的帆离,其執(zhí)行效率及加載速度要快于alembic格式

實(shí)時(shí)卡通渲染在今后可以繼續(xù)改進(jìn)和完善的地方:

  1. 實(shí)現(xiàn)所有類型材質(zhì)完全可定制的風(fēng)格化渲染,目前崩3只在人物皮膚和服裝渲染中的應(yīng)用了筆刷以獲得筆觸效果结澄,后續(xù)會(huì)考慮將其擴(kuò)展到整個(gè)場(chǎng)景的渲染哥谷,比如實(shí)現(xiàn)類似新海誠(chéng)式的場(chǎng)景風(fēng)格,以呈現(xiàn)有著獨(dú)特且統(tǒng)一的風(fēng)格化動(dòng)畫風(fēng)格渲染麻献。
  2. 進(jìn)一步提高模型的渲染精度们妥,最終期望實(shí)時(shí)呈現(xiàn)CG級(jí)的模型精度,比如可以考慮使用geometry shader或預(yù)烘培displacement map進(jìn)行動(dòng)態(tài)自適應(yīng)的曲面細(xì)分勉吻,相比直接導(dǎo)入原始高模王悍,它可以極大減少資源導(dǎo)入的開銷和提升運(yùn)行效率
  3. 優(yōu)化整套流程解決方案,使之更易于實(shí)時(shí)調(diào)整和編輯餐曼,進(jìn)一步提升運(yùn)行效率以適合在游戲中使用

參考

[1]. Achieving high quality Anime style rendering on Unity
[2]. 米哈游技術(shù)總監(jiān)首次分享:移動(dòng)端高品質(zhì)卡通渲染的實(shí)現(xiàn)與優(yōu)化方案

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末压储,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子源譬,更是在濱河造成了極大的恐慌集惋,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踩娘,死亡現(xiàn)場(chǎng)離奇詭異刮刑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)养渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門雷绢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人理卑,你說我怎么就攤上這事翘紊。” “怎么了藐唠?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵帆疟,是天一觀的道長(zhǎng)鹉究。 經(jīng)常有香客問我,道長(zhǎng)踪宠,這世上最難降的妖魔是什么自赔? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮柳琢,結(jié)果婚禮上绍妨,老公的妹妹穿的比我還像新娘。我一直安慰自己柬脸,他們只是感情好痘绎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肖粮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尔苦。 梳的紋絲不亂的頭發(fā)上涩馆,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音允坚,去河邊找鬼魂那。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稠项,可吹牛的內(nèi)容都是我干的涯雅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼展运,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼活逆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拗胜,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蔗候,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后埂软,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锈遥,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年勘畔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了所灸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炫七,死狀恐怖爬立,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情万哪,我是刑警寧澤懦尝,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布知纷,位于F島的核電站,受9級(jí)特大地震影響陵霉,放射性物質(zhì)發(fā)生泄漏琅轧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一踊挠、第九天 我趴在偏房一處隱蔽的房頂上張望乍桂。 院中可真熱鬧,春花似錦效床、人聲如沸睹酌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)憋沿。三九已至,卻和暖如春沪猴,著一層夾襖步出監(jiān)牢的瞬間辐啄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工运嗜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壶辜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓担租,卻偏偏與公主長(zhǎng)得像砸民,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奋救,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 初入三渲二的大門岭参,將這個(gè)過程記錄下來,供后輩們參考尝艘。 文章如下: 三渲二 【注:三渲二非常喜歡冗荸,長(zhǎng)期更新,但是不是...
    Qkuang閱讀 2,250評(píng)論 0 2
  • 關(guān)于《Thinking in Unity3D》 筆者在研究和使用Unity3D的過程中利耍,獲得了一些Unity3D方...
    麒麟子閱讀 2,586評(píng)論 2 11
  • 風(fēng)格化 + PBR PBR 追求 物理正確蚌本,風(fēng)格化 則天馬行空,兩個(gè)本來不搭邊的東西結(jié)合在一起隘梨,也可以實(shí)現(xiàn)出相當(dāng)有...
    惡毒的狗閱讀 1,183評(píng)論 0 1
  • Unity在5.0版本升級(jí)了基于物理的著色器程癌,能很大程度的提升游戲開發(fā)者在寫實(shí)類游戲中的畫面效果,可是在國(guó)內(nèi)強(qiáng)力游...
    Thomas游戲圈閱讀 686評(píng)論 0 0
  • Unity在5.0版本升級(jí)了基于物理的著色器轴猎,能很大程度的提升游戲開發(fā)者在寫實(shí)類游戲中的畫面效果嵌莉,可是在國(guó)內(nèi)強(qiáng)力游...
    游戲程序猿閱讀 1,002評(píng)論 0 1