《日式动画风格非真实感ppt.ppt》由会员分享,可在线阅读,更多相关《日式动画风格非真实感ppt.ppt(50页珍藏版)》请在三一办公上搜索。
1、日式动画风格非真实感三维实时渲染算法的研究,乐大山 龙晓苑 汪国平北京大学机器感知与智能教育部重点实验室北京大学多媒体与人机交互实验室,DEA 2008,非真实感渲染,将三维图形渲染得具有特定的图画风格使画面更易于理解、表达更灵活能在形式上指定一种可展现绘画作品的方式,并随之编写生成非真实感绘画作品的计算机程序。Non-Photorealistic Computer Graphics,Thomas Strothotte,日式动画风格,动漫产业现状,日本动漫产业全球市场份额62%,日本以外国家模仿日式风格的动漫作品所占的市场份额19%,动画风格的特征,线条勾勒轮廓等宽单色,明暗两色调分界明显,阴
2、影准确与暗色同色调,算法实现,描边算法明暗算法阴影算法,算法实现,描边算法明暗算法阴影算法,描边算法,目标:找出轮廓、单色等宽传统算法背面线框算法扩展模型算法,传统算法,缺点明显:除非模型面足够均匀且足够细分,否则描边粗细及连续性无法保证。,背面线框算法,算法:算法一共两遍(2 passes),第一遍正常渲染,第二遍使用线框模式进行渲染,但在深度缓冲区中将其深度值加1。这种情况下,每条处于边界的线框将宽度的一半将被显示出来。,背面线框算法,扩展模型算法,算法:此算法也是两遍,第一遍在渲染时先使用GPU的Vertex Shader将模型中的每一个顶点沿法向方向移动一定比例,使整个模型“加粗”,然
3、后将剔除模式(cull mode)设置为正面剔除,即剔除面向摄像机的表面,仅保留背向摄像机的表面。最后用黑色渲染此模型。第二遍正常渲染。这样,第一遍渲染出来的黑色背面就被留在了模型的外面。,扩展模型算法,背面线框算法、扩展模型算法、传统描边算法和正常渲染对比(a)背面线框算法可以较为准确地找到边线,包括衣褶,且线段连冠;(b)扩展模型算法边线较粗,不连续和粗细不均使其具有手绘般的效果;(c)传统描边算法不能准确地找到边线;(d)正常渲染。,线框算法的效果比传统算法的效果更好。,算法实现,描边算法明暗算法阴影算法,明暗算法,在局部光照模型中,物体表面反射光强度为:,环境光,漫反射光,镜面反射光,
4、基色块(原色),阴影色块(变暗),高光色块(变亮),明暗算法,将漫反射与镜面反射的估算式代入该式:其中,L为光源向量,N为表面法向量,R为镜面反射方向,V为观察方向。,明暗算法,目标:产生明显分界的明暗色块二值化技术:一维纹理映射,明暗算法,增加色彩将上一步得到的离散化的明暗值与该图素本应有的色彩或纹理之间取平均(或进行一次线性插值),即可得到最终的图素色彩值。,算法实现,描边算法明暗算法阴影算法,阴影纹理算法,(a)光源摄像机空间坐标、世界坐标与摄像机空间坐标(b)从光源摄像机生成的深度阴影图纹理,灰度越亮表示该像素深度越小,越暗表示像素深度越大(c)深度测试示例,A,B,C三个点在“深度阴
5、影图”中对应了相同的坐标,在深度阴影图中,该坐标保存的深度值为2;A的深度值为2,通过深度测试,渲染光照;B和C的深度值均大于2,不能通过深度测试,渲染阴影。,Depth Shadow Map(Texture Shadows),算法综合,1.从光源角度生成深度图,2.渲染明暗与阴影,3.渲染边界,性能与优化,性能,共有约56000个多边形,在启用阴影、4倍硬件反混淆、1024x768分辨率、色深32位的情况下进行测试。,优化:LOD,使用LOD技术,在模型距离较远时,缩减模型规模、关闭阴影或描边算法。经测试,采用上述LOD技术,当模型缩小至约1/4时:在B计算机84 fps220 fps;在C
6、计算机46 fps122 fps。,返回,优化:阴影,对各像素点求其在阴影深度图中的梯度,从而避免“波浪效果”;生成深度阴影图时将画面“聚焦”于显示区域,并使用PCF过滤器,使阴影分辨率大大提高,从而减少“锯齿效果”。,总结,总结,有针对性地模拟了日本动画片的技法风格,产生艺术化的效果;引入阴影技术并与现有的明暗渲染效果加以混合是本文的创新点;较好地利用显卡GPU性能,将CPU时间节约出来留作他用;本技术非常适合在游戏、展示软件等实时渲染应用程序中应用。,感谢各位的聆听,欢迎提问!,DEMO演示DEMO下载地址:http:/,更多幻灯片:日本动漫产业规模明暗与阴影背面线框算法的问题算法局限:模
7、型规约阴影算法的平滑处理阴影算法代码段LOD优化创新点传统算法效果现有动画风格游戏Idolmaster游戏,日本动漫产业规模,其2003年市场规模折合美元19亿,人民币136亿。我国2003年动漫产业(含游戏)市场规模人民币93.2亿元。,数据来源:“Japan Animation Industry Trend”,Jetro Japan Economic Monthly,June 2005,返回,明暗与阴影,返回,背面线框算法:问题,DirectX中线框粗细只能为固定1像素不能调整,进而被显示出来的线框的粗细仅为0.5像素,因此可能发生闪烁。解决方案:启用“硬件反混淆”软件绘制宽度大于1像素的
8、线框模型距离很远时,会被所有边线遮挡,返回,算法局限:模型规约,模型应该尽可能光滑在希望边界/明暗分界线停留的位置制造硬边可以考虑使用NURBS等曲面建模工具人物面部应使用纹理来呈现便于通过纹理动画表现面部表情人物各部分纹理应只使用色块避免使用纯黑色和纯白色,返回,阴影算法的平滑处理,我们可以使用PCF(Percentage Closer Filtering)模板过滤器来减少阴影纹理中的“锯齿”,返回,阴影算法的代码段,/此代码片断位于像素着色器中float4 depths=float4(tex2D(shadowMap,shadowUV.xy+float2(-pixeloffset,0).x,
9、tex2D(shadowMap,shadowUV.xy+float2(+pixeloffset,0).x,tex2D(shadowMap,shadowUV.xy+float2(0,-pixeloffset).x,tex2D(shadowMap,shadowUV.xy+float2(0,+pixeloffset).x);depths+=depthAdjust.xxxx;shadow=(finalCenterDepth shadowUV.z)?1.0f:0.0f;shadow+=(depths.x shadowUV.z)?1.0f:0.0f;shadow+=(depths.y shadowUV.z
10、)?1.0f:0.0f;shadow+=(depths.z shadowUV.z)?1.0f:0.0f;shadow+=(depths.w shadowUV.z)?1.0f:0.0f;shadow*=0.2f;diffuse=tex1D(diffuseRamp,diffuse).x;float darkness=(shadow diffuse)?diffuse:shadow;/存在阴影的地方,不能产生高光float lightness=(shadow 0.0f)?tex1D(specularRamp,specular).x*lighten:0;float final=lightness dar
11、kness;result=float4(tex2D(myTexture,uv).xyz+float3(final),1);,返回,创新点,改进了描边算法,使其支持连续的等宽单色线勾边,还给出了一种更夸张个勾边算法;实现了自阴影,并与明暗算法整合;实现“日式动画风格”的所有主要风格要素;主要算法全部用GPU Shader语言实现;性能好,适合实时环境应用。,返回,传统算法效果,Azure Product,使用已获同意。,传统算法效果,返回,Azure Product,使用已获同意。,XIII,Ubisoft,2003,返回,Idolmster,Namco,2003,返回,Idolmster,Namco,2003,返回,