本发明专利技术属于三维模型渲染技术领域,具体涉及一种基于纱门透明度的穿过模型的渲染方法、装置及系统,包括:获取摄像机到近裁切面的第一距离;获取摄像机到三维模型的第二距离;根据第一距离和第二距离,利用预设函数计算三维模型在投影到屏幕上的图像中指定像素块的透明度值;获取近裁切面当前像素的透明度阈值;将指定像素块的透明度值与当前像素的透明度阈值进行比较,得到比较结果;若比较结果为指定像素块的透明值大于当前像素的透明度阈值,则绘制并渲染指定像素块。本发明专利技术可以以极少的资源消耗,在渲染过程中保证模型间显示顺序正确。确。确。
【技术实现步骤摘要】
基于纱门透明度的穿过模型的渲染方法、装置及系统
[0001]本专利技术属于三维模型渲染
,具体涉及一种基于纱门透明度的穿过模型的渲染方法、装置及系统。
技术介绍
[0002]渲染是CG的最后一道工序,也是最终使图像符合三维场景的阶段。渲染有多种软件,如:各CG软件自带渲染引擎,还有诸如RenderMan等。建筑设计、动画制作等利用3DS MAX、MAYA等软件制作好模型、动画帧之后,将所设计内容利用软件本身或者辅助软件(lightscape、vray等)制作成最终效果图或者动画的过程。
[0003]首先,渲染的过程必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。大多数时候渲染的是透视图而不是其它视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的三维世界一样,具备立体感。接下来,为了体现空间感,渲染程序要做一些“特殊”的工作,就是决定哪些物体在前面、哪些物体在后面和哪些物体被遮挡等。空间感仅通过物体的遮挡关系是不能完美再现的。
[0004]然而,当摄像头穿过三维模型时,三维模型的横截面会直接呈现在画面中,显得十分突兀,现有技术中,渲染所有的物体,从前到后的深度层次逐渐剥离所有物体,对所有物体进行深度判断并改变模型的透明度,因此会带来不同模型相交显示顺序错乱的问题。
[0005]基于以上,如何解决当摄像头穿过三维模型时,在渲染过程中保证模型间显示顺序正确是亟待解决的问题。
技术实现思路
[0006]为了解决现有技术中,当摄像头穿过三维模型时,在渲染过程中模型间显示顺序不正确问题,本专利技术实施例提供以下技术方案。
[0007]第一方面,本专利技术提供一种基于纱门透明度的穿过模型的渲染方法,包括:
[0008]获取摄像机到近裁切面的第一距离;
[0009]获取摄像机到三维模型的第二距离;
[0010]根据所述第一距离和第二距离,利用预设函数计算三维模型在投影到屏幕上的图像中指定像素块的透明度值;
[0011]获取所述近裁切面当前像素的透明度阈值;
[0012]将所述指定像素块的透明度值与所述当前像素的透明度阈值进行比较,得到比较结果;
[0013]若所述比较结果为所述指定像素块的透明值大于所述当前像素的透明度阈值,则绘制并渲染所述指定像素块。
[0014]进一步地,所述获取摄像机到近裁切面的第一距离,包括:
[0015]通过unity引擎的着色器API调用计算所述第一距离所需参数,计算所述第一距离的公式为:
[0016]L=length(mul(cameraInvProjection,float4(1,1,0,1)).xyz)*ProjectionParams.y
[0017]其中,length为unityshader中求向量长度的函数;mul为unityshader中的相乘函数;CameraInvProjection为摄像机投影矩阵的逆矩阵;ProjectionParams.y为摄像机的近平面到摄像机的最短距离。
[0018]进一步地,所述获取摄像机到三维模型的第二距离,包括:
[0019]读取摄像机的世界空间位置坐标以及传入着色器的模型的世界坐标;
[0020]根据所述摄像机的世界空间位置坐标以及传入着色器的三维模型的世界坐标,计算摄像机到三维模型的第二距离Dst。
[0021]进一步地,所述根据所述摄像机的世界空间位置坐标以及传入着色器的模型的世界坐标,计算摄像机到三维模型的第二距离Dst,计算公式为:
[0022]Dst=length(IN.worldPos
‑
WorldSpaceCameraPos)
[0023]其中,WorldSpaceCameraPos为摄像机的世界空间位置坐标,IN.worldPos为传入着色器的三维模型的世界坐标。
[0024]进一步地,所述根据所述第一距离和第二距离,利用预设函数计算三维模型在投影到屏幕上的图像中指定像素块的透明度值,所述预设函数为:
[0025]Fade=saturate(Dst
‑
L)
[0026]其中,Fade为指定像素块的透明度值,saturate为unityshader中常用函数,L为摄像机到近裁切面的第一距离,Dst为摄像机到三维模型的第二距离。
[0027]进一步地,所述获取所述近裁切面当前像素的透明度阈值,包括:
[0028]获取当前像素的屏幕空间位置参数;
[0029]将所述当前像素的屏幕空间位置与屏幕的尺寸参数相乘,得到所述当前像素的坐标;
[0030]将所述当前像素坐标带入预设m*n矩阵,得到当前像素的透明度值;
[0031]将所述透明度值除以预设固定数值,得到所述当前像素的透明度阈值。
[0032]第二方面,本专利技术提供一种基于纱门透明度的穿过模型的渲染装置,包括:
[0033]第一获取模块,用于获取摄像机到近裁切面的第一距离;
[0034]第二获取模块,用于获取摄像机到三维模型的第二距离;
[0035]计算透明度值模块,用于根据所述第一距离和第二距离,利用预设函数计算三维模型在投影到屏幕上的图像中指定像素块的透明度值;
[0036]第三获取模块,用于获取所述近裁切面当前像素的透明度阈值;
[0037]比较模块,用于将所述指定像素块的透明度值与所述当前像素的透明度阈值进行比较,得到比较结果;
[0038]渲染模块,用于若所述比较结果为所述指定像素块的透明值大于所述当前像素的透明度阈值,则绘制并渲染所述指定像素块。
[0039]第三方面,本专利技术提供一种基于纱门透明度的穿过模型的渲染系统,包括:
[0040]一个或多个存储器以及一个或多个处理器;
[0041]所述一个或多个存储器,用于存储一个或多个程序;
[0042]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一项所述的方法。
[0043]本专利技术具有以下有益效果:
[0044]本专利技术实施例提供的一种基于纱门透明度的穿过模型的渲染方法,包括:获取摄像机到近裁切面的第一距离;获取摄像机到三维模型的第二距离;根据所述第一距离和第二距离,利用预设函数计算三维模型在投影到屏幕上的图像中指定像素块的透明度值;获取所述近裁切面当前像素的透明度阈值;将所述指定像素块的透明度值与所述当前像素的透明度阈值进行比较,得到比较结果;若所述比较结果为所述指定像素块的透明值大于所述当前像素的透明度阈值,则绘制并渲染所述指定像素块。本专利技术可以以极少的资源消耗,在渲染过程中保证模型间显示顺序正确。
附图说明
[0045]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于纱门透明度的穿过模型的渲染方法,其特征在于,包括:获取摄像机到近裁切面的第一距离;获取摄像机到三维模型的第二距离;根据所述第一距离和第二距离,利用预设函数计算三维模型在投影到屏幕上的图像中指定像素块的透明度值;获取所述近裁切面当前像素的透明度阈值;将所述指定像素块的透明度值与所述当前像素的透明度阈值进行比较,得到比较结果;若所述比较结果为所述指定像素块的透明值大于所述当前像素的透明度阈值,则绘制并渲染所述指定像素块。2.根据权利要求1所述的基于纱门透明度的穿过模型的渲染方法,其特征在于,所述获取摄像机到近裁切面的第一距离,包括:通过unity引擎的着色器API调用计算所述第一距离所需参数,计算所述第一距离的公式为:L=length(mul(cameraInvProjection,float4(1,1,0,1)).xyz)*ProjectionParams.y其中,length为unityshader中求向量长度的函数;mul为unityshader中的相乘函数;CameraInvProjection为摄像机投影矩阵的逆矩阵;ProjectionParams.y为摄像机的近平面到摄像机的最短距离。3.根据权利要求1所述的基于纱门透明度的穿过模型的渲染方法,其特征在于,所述获取摄像机到三维模型的第二距离,包括:读取摄像机的世界空间位置坐标以及传入着色器的模型的世界坐标;根据所述摄像机的世界空间位置坐标以及传入着色器的三维模型的世界坐标,计算摄像机到三维模型的第二距离。4.根据权利要求3所述的基于纱门透明度的穿过模型的渲染方法,其特征在于,所述根据所述摄像机的世界空间位置坐标以及传入着色器的模型的世界坐标,计算摄像机到三维模型的第二距离Dst,计算公式为:Dst=length(IN.worldPos
‑
WorldSpaceCameraPos)其中,WorldSpaceCameraPos为摄像机的世界空间位置坐标...
【专利技术属性】
技术研发人员:张旭,梁景裕,罗昌铭,羡婷,张骏逸,杨亚理,
申请(专利权)人:北京优锘科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。