《日式动画风格非真实感ppt.ppt》由会员分享,可在线阅读,更多相关《日式动画风格非真实感ppt.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、日式动画风格非真实感三维实时渲染算法的研究 乐大山 龙晓苑 汪国平北京大学机器感知与智能教育部重点实验室北京大学多媒体与人机交互实验室DEA 2008非真实感渲染将三维图形渲染得具有特定的图画风格使画面更易于理解、表达更灵活能在形式上指定一种可展现绘画作品的方式,并随之编写生成非真实感绘画作品的计算机程序。Non-Photorealistic Computer Graphics,Thomas Strothotte日式动画风格动漫产业现状日本动漫产业全球市场份额62%日本以外国家模仿日式风格的动漫作品所占的市场份额19%动画风格的特征线条勾勒轮廓等宽单色明暗两色调分界明显阴影准确与暗色同色调算法
2、实现描边算法明暗算法阴影算法算法实现描边算法描边算法明暗算法阴影算法描边算法目标:找出轮廓、单色等宽传统算法背面线框算法扩展模型算法传统算法缺点明显:除非模型面足够均匀且足够细分,否则描边粗细及连续性无法保证。背面线框算法算法:算法一共两遍(2 passes),第一遍正常渲染,第二遍使用线框模式进行渲染,但在深度缓冲区中将其深度值加1。这种情况下,每条处于边界的线框将宽度的一半将被显示出来。背面线框算法扩展模型算法算法:此算法也是两遍,第一遍在渲染时先使用GPU的Vertex Shader将模型中的每一个顶点沿法向方向移动一定比例,使整个模型“加粗”,然后将剔除模式(cull mode)设置为
3、正面剔除,即剔除面向摄像机的表面,仅保留背向摄像机的表面。最后用黑色渲染此模型。第二遍正常渲染。这样,第一遍渲染出来的黑色背面就被留在了模型的外面。扩展模型算法背面线框算法、扩展模型算法、传统描边算法和正常渲染对比背面线框算法、扩展模型算法、传统描边算法和正常渲染对比(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位的情况下进行测试。编号编号CPU内存内存显卡显卡平均帧速率平均帧速率AAMD Athlon64 3000+1.0GBNVIDIA GeForce 8500GT136 fpsBIntel Core Duo 1.8GHz2.0GBN
6、VIDIA GeForce 8400M84 fpsCIntel P4 1.86GHz1.0GBATI MOBILITY X30046 fpsDIntel P4 3.0GHz1.0GBNVIDIA GeForce 5200FX13 fpsEIntel P4 3.0GHz1.0GBIntel 82915G5 fpsFIntel P4 1.7GHz512MBATI 7500(无法运行无法运行)优化:LOD使用LOD技术,在模型距离较远时,缩减模型规模、关闭阴影或描边算法。经测试,采用上述LOD技术,当模型缩小至约1/4时:在B计算机84 fps220 fps;在C计算机46 fps122 fps。返
7、回优化:阴影对各像素点求其在阴影深度图中的梯度,从而避免“波浪效果”;生成深度阴影图时将画面“聚焦”于显示区域,并使用PCF过滤器,使阴影分辨率大大提高,从而减少“锯齿效果”。总结总结有针对性地模拟了日本动画片的技法风格,产生艺术化的效果;引入阴影技术并与现有的明暗渲染效果加以混合是本文的创新点;较好地利用显卡GPU性能,将CPU时间节约出来留作他用;本技术非常适合在游戏、展示软件等实时渲染应用程序中应用。感谢各位的聆听,欢迎提问!感谢各位的聆听,欢迎提问!DEMO演示DEMO下载地址:http:/ Animation Industry Trend”,Jetro Japan Economic
8、Monthly,June 2005返回明暗与阴影返回背面线框算法:问题DirectX中线框粗细只能为固定1像素不能调整,进而被显示出来的线框的粗细仅为0.5像素,因此可能发生闪烁。解决方案:启用“硬件反混淆”软件绘制宽度大于1像素的线框模型距离很远时,会被所有边线遮挡返回算法局限:模型规约1.模型应该尽可能光滑在希望边界/明暗分界线停留的位置制造硬边可以考虑使用NURBS等曲面建模工具2.人物面部应使用纹理来呈现便于通过纹理动画表现面部表情3.人物各部分纹理应只使用色块避免使用纯黑色和纯白色返回阴影算法的平滑处理我们可以使用PCF(Percentage Closer Filtering)模板过
9、滤器来减少阴影纹理中的“锯齿”返回阴影算法的代码段/此代码片断位于像素着色器中float4 depths=float4(tex2D(shadowMap,shadowUV.xy+float2(-pixeloffset,0).x,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;sh
10、adow=(finalCenterDepth shadowUV.z)?1.0f:0.0f;shadow+=(depths.x shadowUV.z)?1.0f:0.0f;shadow+=(depths.y shadowUV.z)?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:shado
11、w;/存在阴影的地方,不能产生高光float lightness=(shadow 0.0f)?tex1D(specularRamp,specular).x*lighten:0;float final=lightness darkness;result=float4(tex2D(myTexture,uv).xyz+float3(final),1);返回创新点改进了描边算法,使其支持连续的等宽单色线勾边,还给出了一种更夸张个勾边算法;实现了自阴影,并与明暗算法整合;实现“日式动画风格”的所有主要风格要素;主要算法全部用GPU Shader语言实现;性能好,适合实时环境应用。返回传统算法效果Azure Product,http:/,使用已获同意。传统算法效果返回Azure Product,http:/,使用已获同意。XIII,Ubisoft,2003返回Idolmster,Namco,2003返回Idolmster,Namco,2003返回
限制150内