CN113658316B - 三维模型的渲染方法和装置、存储介质及计算机设备 - Google Patents
三维模型的渲染方法和装置、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN113658316B CN113658316B CN202111211776.4A CN202111211776A CN113658316B CN 113658316 B CN113658316 B CN 113658316B CN 202111211776 A CN202111211776 A CN 202111211776A CN 113658316 B CN113658316 B CN 113658316B
- Authority
- CN
- China
- Prior art keywords
- rendering
- dimensional model
- shadow
- color
- fragment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/60—Shadow generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本公开实施例提供一种三维模型的渲染方法和装置、存储介质及计算机设备,先将三维模型划分为明亮区域和阴影区域,然后直接基于三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染,从而能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
Description
技术领域
本公开涉及图像处理技术领域,尤其涉及三维模型的渲染方法和装置、存储介质及计算机设备。
背景技术
三维(3D)模型的渲染一般可分为真实渲染(Photorealistic Rendering,PR)和非真实渲染(Non-photorealistic rendering,NPR)。渲染的主要目的是模拟特定的艺术风格。真实渲染目的在于获取具有真实感的渲染效果,而非真实渲染的目的更加的多样,主要在于模拟艺术化的绘制风格,呈现出手绘的效果。然而,相关技术中的渲染方式需要先将整个三维模型完整地绘制到二维图像上,再对绘制好的图像进行后处理,这种方式的渲染效率较低。
发明内容
第一方面,本公开实施例提供一种三维模型的渲染方法,所述方法包括:确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域;基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染。
本公开实施例在进行渲染时,无需先对整个三维模型进行绘制,而是先将三维模型划分为明亮区域和阴影区域,然后直接基于三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染,从而能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
在一些实施例中,所述确定三维模型在渲染相机视角下的光暗分布,包括:基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。本公开实施例采用第一光暗分布和第二光暗分布共同来确定三维模型在渲染相机视角下的光暗分布,能够使得最终确定的光暗分布更加准确。
在一些实施例中,基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布,包括:针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及第二亮度值,确定所述片元的亮度值。
在一些实施例中,基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域,包括:将三维模型上亮度值满足第一预设亮度条件的区域确定为明亮区域;将三维模型上亮度值满足第二预设亮度条件的区域确定为阴影区域。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。通过划分多个亮度子区间,不同亮度子区间分别对应不同的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。通过在查找表中查找不同的参考亮度值对应的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述基于所述三维模型的颜色对所述明亮区域进行渲染,包括:基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;基于确定的颜色对所述明亮区域进行渲染。
在一些实施例中,所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:基于所述三维模型对应的漫反射贴图确定所述阴影区域的颜色;基于所述阴影颜色对所述阴影区域的颜色进行修正;基于修正后的颜色对所述阴影区域进行渲染。本公开实施例先通过阴影颜色对阴影区域的颜色进行修正,再用修正后的颜色对所述阴影区域进行渲染,从而无需先渲染三维模型再进行后处理,提高了渲染效率。
在一些实施例中,所述方法还包括:对所述三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;基于预先确定的描边颜色对所述放大模型进行渲染。由于放大模型的中间区域被所述三维模型遮挡,只露出边缘区域,从而呈现出描边的效果。本公开实施例无需先渲染三维模型再进行后处理,渲染效率较高。
在一些实施例中,所述对所述三维模型进行放大,得到放大模型,包括:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,所述基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
在一些实施例中,在基于预先确定的描边颜色对所述放大模型进行渲染之前,所述方法还包括:将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
第二方面,本公开实施例提供一种三维模型的渲染方法,所述方法包括:在第一渲染通道中,基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染;在第二渲染通道中,对所述三维模型进行放大,得到放大模型,基于预先确定的描边颜色对所述放大模型进行渲染,所述放大模型的中间区域被所述三维模型遮挡。
本公开实施例通过两个渲染通道分别进行扁平着色和描边,其中,扁平着色过程通过对原三维模型进行渲染来实现,描边过程通过对放大模型进行渲染来实现。由于扁平着色过程和描边过程都是直接通过确定好的颜色来进行渲染,无需先渲染三维模型再进行后处理,因此,提高了渲染效率。
在一些实施例中,所述方法还包括:确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域。
在一些实施例中,所述确定三维模型在渲染相机视角下的光暗分布,包括:基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。本公开实施例采用第一光暗分布和第二光暗分布共同来确定三维模型在渲染相机视角下的光暗分布,能够使得最终确定的光暗分布更加准确。
在一些实施例中,基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布,包括:针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及第二亮度值,确定所述片元的亮度值。
在一些实施例中,所述基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域,包括:将三维模型上亮度值满足第一预设亮度条件的区域确定为明亮区域;将三维模型上亮度值满足第二预设亮度条件的区域确定为阴影区域。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。通过划分多个亮度子区间,不同亮度子区间分别对应不同的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。通过在查找表中查找不同的参考亮度值对应的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述基于所述三维模型的颜色对所述明亮区域进行渲染,包括:基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;基于确定的颜色对所述明亮区域进行渲染。
在一些实施例中,基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:基于所述三维模型对应的漫反射贴图确定所述阴影区域的颜色;基于所述阴影颜色对所述阴影区域的颜色进行修正;基于修正后的颜色对所述阴影区域进行渲染。先通过阴影颜色对阴影区域的颜色进行修正,再用修正后的颜色对所述阴影区域进行渲染,无需先渲染三维模型再进行后处理,提高了渲染效率。
在一些实施例中,所述对所述三维模型进行放大,得到放大模型,包括:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,所述基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染,包括:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
在一些实施例中,在基于预先确定的描边颜色对所述放大模型进行渲染之前,所述方法还包括:将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
第三方面,本公开实施例提供一种三维模型的渲染方法,所述方法包括:对三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;基于预先确定的描边颜色对所述放大模型进行渲染。本公开实施例直接采用描边颜色对放大模型进行渲染,相比于传统的渲染方式中先渲染整个三维模型,再通过后处理进行边缘分割的方式,能够有效提高渲染效率。
在一些实施例中,所述对所述三维模型进行放大,得到放大模型,包括:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,在基于预先确定的描边颜色对所述放大模型进行渲染之前,所述方法还包括:将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
在一些实施例中,所述方法还包括:基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染。本公开实施例无需先对整个三维模型进行绘制,能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
在一些实施例中,所述基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染,包括:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
在一些实施例中,所述方法还包括:确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域。
在一些实施例中,所述确定三维模型在渲染相机视角下的光暗分布,包括:基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。本公开实施例采用第一光暗分布和第二光暗分布共同来确定三维模型在渲染相机视角下的光暗分布,能够使得最终确定的光暗分布更加准确。
在一些实施例中,基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布,包括:针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及第二亮度值,确定所述片元的亮度值。
在一些实施例中,所述基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域,包括:将所述三维模型上亮度值满足第一预设亮度条件的区域确定为所述明亮区域;将所述三维模型上亮度值满足第二预设亮度条件的区域确定为所述阴影区域。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。通过划分多个亮度子区间,不同亮度子区间分别对应不同的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。通过在查找表中查找不同的参考亮度值对应的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述基于所述三维模型的颜色对所述明亮区域进行渲染,包括:基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;基于确定的颜色对所述明亮区域进行渲染。
在一些实施例中,基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:基于三维模型对应的漫反射贴图确定所述阴影区域的颜色;基于所述阴影颜色对所述阴影区域的颜色进行修正;基于修正后的颜色对阴影区域进行渲染。
第四方面,本公开实施例提供一种三维模型的渲染装置,所述装置包括:确定模块,用于确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征三维模型上各个片元的亮度值;划分模块,用于基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域;渲染模块,用于基于三维模型的颜色对所述明亮区域进行渲染,基于预先确定的阴影颜色对所述阴影区域进行渲染。
本公开实施例在进行渲染时,无需先对整个三维模型进行绘制,而是先将三维模型划分为明亮区域和阴影区域,然后直接基于三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染,从而能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
在一些实施例中,所述确定模块用于:基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。本公开实施例采用第一光暗分布和第二光暗分布共同来确定三维模型在渲染相机视角下的光暗分布,能够使得最终确定的光暗分布更加准确。
在一些实施例中,所述确定模块用于:针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及所述第二亮度值,确定所述片元的亮度值。
在一些实施例中,所述确定模块用于:将所述三维模型上亮度值满足第一预设亮度条件的区域确定为所述明亮区域;将所述三维模型上亮度值满足第二预设亮度条件的区域确定为所述阴影区域。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;所述渲染模块用于:确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。本公开实施例通过划分多个亮度子区间,不同亮度子区间分别对应不同的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;所述渲染模块用于:从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。本公开实施例通过在查找表中查找不同的参考亮度值对应的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述渲染模块用于:基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;基于确定的颜色对所述明亮区域进行渲染。
在一些实施例中,所述渲染模块用于:基于所述三维模型对应的漫反射贴图确定所述阴影区域的颜色;基于所述阴影颜色对所述阴影区域的颜色进行修正;基于修正后的颜色对所述阴影区域进行渲染。本公开实施例先通过阴影颜色对阴影区域的颜色进行修正,再用修正后的颜色对所述阴影区域进行渲染,从而无需先渲染三维模型再进行后处理,提高了渲染效率。
在一些实施例中,所述装置还包括:放大模块,用于对所述三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;描边模块,用于基于预先确定的描边颜色对所述放大模型进行渲染。由于放大模型的中间区域被所述三维模型遮挡,只露出边缘区域,从而呈现出描边的效果。本公开实施例无需先渲染三维模型再进行后处理,渲染效率较高。
在一些实施例中,所述放大模块用于:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,所述渲染模块用于:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述描边模块包括:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
在一些实施例中,所述装置还包括:移动模块,用于将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
第五方面,本公开实施例提供一种三维模型的渲染装置,所述装置包括:第一渲染模块,用于在第一渲染通道中,基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染;第二渲染模块,用于在第二渲染通道中,对所述三维模型进行放大,得到放大模型,基于预先确定的描边颜色对所述放大模型进行渲染,所述放大模型的中间区域被所述三维模型遮挡。
本公开实施例通过两个渲染通道分别进行扁平着色和描边,其中,扁平着色过程通过对原三维模型进行渲染来实现,描边过程通过对放大模型进行渲染来实现。由于扁平着色过程和描边过程都是直接通过确定好的颜色来进行渲染,无需先渲染三维模型再进行后处理,因此,提高了渲染效率。
在一些实施例中,所述装置还包括:确定模块,用于确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;划分模块,用于基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域。
在一些实施例中,所述确定模块用于:基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。本公开实施例采用第一光暗分布和第二光暗分布共同来确定三维模型在渲染相机视角下的光暗分布,能够使得最终确定的光暗分布更加准确。
在一些实施例中,所述确定模块用于:针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及所述第二亮度值,确定所述片元的亮度值。
在一些实施例中,所述划分模块用于:将所述三维模型上亮度值满足第一预设亮度条件的区域确定为所述明亮区域;将所述三维模型上亮度值满足第二预设亮度条件的区域确定为所述阴影区域。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;所述第一渲染模块用于:确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。本公开实施例通过划分多个亮度子区间,不同亮度子区间分别对应不同的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;所述第一渲染模块用于:从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。本公开实施例通过在查找表中查找不同的参考亮度值对应的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述第一渲染模块用于:基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;基于确定的颜色对所述明亮区域进行渲染。
在一些实施例中,所述第一渲染模块用于:基于所述三维模型对应的漫反射贴图确定所述阴影区域的颜色;基于所述阴影颜色对所述阴影区域的颜色进行修正;基于修正后的颜色对所述阴影区域进行渲染。本公开实施例先通过阴影颜色对阴影区域的颜色进行修正,再用修正后的颜色对所述阴影区域进行渲染,从而无需先渲染三维模型再进行后处理,提高了渲染效率。
在一些实施例中,所述第二渲染模块用于:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,所述第一渲染模块用于:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述第二渲染模块用于:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
在一些实施例中,所述装置还包括:移动模块,用于将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
第六方面,本公开实施例提供一种三维模型的渲染装置,所述装置包括:放大模块,用于对三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;渲染模块,用于基于预先确定的描边颜色对所述放大模型进行渲染。本公开实施例直接采用描边颜色对放大模型进行渲染,相比于传统的渲染方式中先渲染整个三维模型,再通过后处理进行边缘分割的方式,本公开实施例能够有效提高渲染效率。
在一些实施例中,所述放大模块用于:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,所述装置还包括:移动模块,用于将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
在一些实施例中,所述装置还包括:着色模块,用于基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染。本公开实施例无需先对整个三维模型进行绘制,能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
在一些实施例中,所述着色模块用于:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
在一些实施例中,所述装置还包括:确定模块,用于确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;划分模块,用于基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域。
在一些实施例中,所述确定模块用于:基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。本公开实施例采用第一光暗分布和第二光暗分布共同来确定三维模型在渲染相机视角下的光暗分布,能够使得最终确定的光暗分布更加准确。
在一些实施例中,所述确定模块用于:针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及所述第二亮度值,确定所述片元的亮度值。
在一些实施例中,所述划分模块用于:将所述三维模型上亮度值满足第一预设亮度条件的区域确定为所述明亮区域;将所述三维模型上亮度值满足第二预设亮度条件的区域确定为所述阴影区域。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;所述着色模块用于:确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。本公开实施例通过划分多个亮度子区间,不同亮度子区间分别对应不同的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;所述着色模块用于:从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。本公开实施例通过在查找表中查找不同的参考亮度值对应的阴影颜色,从而能够对阴影区域采用多级着色,使渲染效果更加生动。
在一些实施例中,所述着色模块用于:基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;基于确定的颜色对所述明亮区域进行渲染。
在一些实施例中,所述着色模块用于:基于所述三维模型对应的漫反射贴图确定所述阴影区域的颜色;基于所述阴影颜色对所述阴影区域的颜色进行修正;基于修正后的颜色对所述阴影区域进行渲染。
第七方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
第八方面,本公开实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1A和图1B分别是一些实施例的不同渲染风格的示意图。
图2是相关技术中的渲染方式的示意图。
图3是本公开实施例的三维模型的渲染方法的流程图。
图4A和图4B分别是不同渲染相机视角的示意图。
图5是本公开实施例的原始三维模型与放大模型的示意图。
图6是本公开实施例的描边效果的示意图。
图7是本公开实施例的剔除正面和剔除背面的渲染方式的示意图。
图8是放大模型的移动方式的示意图。
图9A是本公开另一实施例的三维模型的渲染方法的流程图。
图9B是本公开实施例的整体流程图。
图10是本公开再一实施例的三维模型的渲染方法的流程图。
图11是本公开实施例的三维模型的渲染装置的框图。
图12是本公开另一实施例的三维模型的渲染装置的框图。
图13是本公开再一实施例的三维模型的渲染装置的框图。
图14是本公开实施例的计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
三维模型的渲染一般可分为真实渲染和非真实渲染。真实渲染目的在于获取具有真实感的渲染效果,如图1A所示,通过真实渲染能够获取颜色连续变化的渲染效果。非真实渲染能够模拟艺术化的绘制风格,而二次元渲染风格就是其中一种近年来应用比较广泛的效果。如图1B所示,二次元渲染能够模拟动漫中颜色和亮度分块的效果。
相关技术中,一般通过后处理的方式进行三维模型的渲染。图2示出了相关技术中的渲染流程。首先,在步骤201中,可以获取光源照射下的三维模型的模型信息,模型信息中可以包括三维模型中各个顶点的位置信息、颜色信息等。在步骤202中,可以基于步骤201获取的模型信息将三维模型完整地绘制到二维图像上。在步骤203中,再对绘制好的二维图像进行颜色修正。具体来说,可以获取二维图像中每个像素点的颜色,将颜色差异值在预设范围内的多种不同的颜色修正为相同的颜色,从而实现对二维图像进行颜色分区,达到二次元中颜色突变的效果。可以看出,上述渲染过程需要先完整地绘制三维模型,再逐一读取二维图像中各像素点的颜色,渲染耗时较长,渲染效率低。
基于此,本公开提供一种三维模型的渲染方法,参见图3,所述方法包括:
步骤301:确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;
步骤302:基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域;
步骤303:基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染。
通过本公开实施例能够将三维模型渲染成二次元渲染风格。本公开实施例在进行渲染时,无需先对整个三维模型进行绘制,而是先将三维模型划分为明亮区域和阴影区域,然后直接基于三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染,从而能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
在步骤301中,三维模型可以是待渲染场景中的目标对象对应的模型,所述待渲染场景中可以包括一个或多个目标对象,所述目标对象可以包括但不限于人、动物、桌子、皮包、房屋等,还可以包括对象上的局部区域,例如,人脸、房屋的屋顶。在一些实施例中,可以采用本公开实施例的渲染方式对待渲染场景中的全部目标对象对应的三维模型进行渲染。在另一些实施例中,也可以仅采用本公开实施例的渲染方式对待渲染场景中的一部分目标对象对应的三维模型进行渲染,并采用其他渲染方式对待渲染场景中的另一部分目标对象对应的三维模型进行渲染,且将不同的目标对象对应的三维模型渲染成不同的风格。例如,待渲染场景中包括目标对象A和目标对象B,可以将目标对象A对应的三维模型渲染成二次元渲染风格,并将目标对象B对应的三维模型渲染成真实渲染风格,从而实现待渲染场景中二次元渲染风格和其他渲染风格的混搭。
渲染相机可以是一个虚拟的相机,在进行渲染时,可以在三维模型的预设位置处创建一个渲染相机,三维模型处于渲染相机的视角下。渲染相机处于不同位置处时,渲染相机视角下能够拍摄到的三维模型的部分往往是不同的,从而最终呈现的渲染效果也是不同的。以人物类的三维模型为例,如图4A所示,当渲染相机的视角正对人脸时,三维模型在渲染相机视角下的部分为人物的正面(包括人脸的一面),最终渲染得到的二维图像也包括人物的正面。如图4B,当渲染相机的视角正对人物的后脑时,三维模型在渲染相机视角下的部分为人物的背面(包括后脑的一面),最终渲染得到的二维图像也包括人物的背面。
三维模型的光暗分布用于表征三维模型上各个片元的亮度值。其中,片元(fragment)是指由顶点连接成的面。在一些实施例中,可以用0到1之间的实数表示片元的亮度值,片元的亮度值越接近1,表示片元越亮;亮度值越接近0,表示片元越暗。当然,本领域技术人员可以理解,亮度的表示方式不限于此,也可以采用其他数值范围(例如,0到100)表示亮度值。还可以采用字母、符号表示亮度等级,例如,用字母“A”、“B”和“C”依次表示由低到高的亮度等级,其中,片元的亮度等级越高,表示片元越亮;片元的亮度等级越低,表示片元越暗。
由于最终呈现的渲染结果中仅包括三维模型在渲染相机视角下的模型区域,因此,本步骤可以仅获取三维模型在渲染相机视角下的模型区域的光暗分布,即,所述模型区域内各个片元的亮度值。仍以人物类的三维模型为例,当渲染相机的视角正对人脸时,可以仅获取人物正面的各个片元的亮度值。
一些实施例中,可以基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;基于所述第一光暗分布和所述第二光暗分布确定所述光暗分布。其中,法线贴图用于表征所述三维模型上各顶点的法线,能够确定各个顶点的凹凸情况。阴影贴图用来描述三维模型每个顶点到光源之间的距离,从而确定每个顶点是否被遮挡。采用法线贴图和阴影贴图共同确定光暗分布,能够获得较高的准确度。
具体来说,针对所述三维模型在渲染相机视角下的每个片元,可以基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;根据所述第一亮度值及所述第二亮度值,确定所述片元的亮度值。例如,可以将所述第一亮度值与所述第二亮度值的乘积确定为所述片元的亮度值。或者,也可以将所述第一亮度值与所述第二亮度值中较小的一者确定为所述片元的亮度值。或者,可以先确定所述片元的第一亮度值,在所述片元的第一亮度值小于或等于预设的亮度阈值的情况下,将所述片元的第一亮度值直接确定为所述片元的亮度值。在所述第一亮度值大于所述亮度阈值的情况下,确定所述片元的第二亮度值,如果所述片元的第二亮度值小于或等于所述亮度阈值,则将所述片元的第二亮度值确定为所述片元的亮度值。如果所述片元的第二亮度值大于所述亮度阈值,则将所述片元的第一亮度值确定为所述片元的亮度值。
在另一些实施例中,也可以将所述第一光暗分布或者所述第二光暗分布直接确定为所述三维模型在渲染相机视角下的光暗分布。或者结合所述第一光暗分布和所述第二光暗分布中的至少一者以及通过其他方式确定的第三光暗分布来确定所述三维模型在渲染相机视角下的光暗分布。
在步骤302中,可以基于步骤301中确定的光暗分布将三维模型划分为明亮区域和阴影区域。具体来说,可以将三维模型在渲染相机视角下的模型区域划分为明亮区域和阴影区域。其中,阴影区域是指三维模型上未被光源照射到或者只能被少量的光线照射到,从而处于阴影之中的区域,阴影区域内的片元亮度值较小。明亮区域是指三维模型上阴影区域以外的区域,这些区域能够被大量光线照射到,明亮区域内的片元亮度值较大。通过划分明亮区域和阴影区域,能够模拟二次元中亮度突变的效果。
在一些实施例中,可以将所述三维模型上亮度值满足第一预设亮度条件的区域确定为所述明亮区域;将所述三维模型上亮度值满足第二预设亮度条件的区域确定为所述阴影区域。
可选地,所述第一预设亮度条件可以是亮度值大于或等于预设的亮度值下限,所述第二预设亮度条件可以是亮度值小于预设的亮度值上限。其中,所述亮度值下限与所述亮度值上限可以相等。或者,所述亮度值下限可以大于所述亮度值上限。亮度值处于所述亮度值上限与所述亮度值下限之间的区域可以随机确定为明亮区域或阴影区域,也可以基于其他条件进一步确定为明亮区域或阴影区域。
可选地,所述第一预设亮度条件可以是亮度值处于预设的亮度值区间[L1, L2]范围内,所述第二预设亮度条件可以是亮度值处于所述亮度值区间[L1, L2]范围以外。或者,可选地,所述第一预设亮度条件可以是亮度值等于预设的一组亮度值中的任意一者,所述第二预设亮度条件可以是亮度值不等于所述预设的一组亮度值中的任意一者。所述第一预设亮度条件与所述第二预设亮度条件还可以根据实际需要设置为其他条件,以获得不同的渲染效果。
下面以所述第一预设亮度条件是亮度值大于或等于预设的亮度阈值,所述第二预设亮度条件是亮度值小于预设的亮度阈值为例,对本公开实施例的方案进行说明。
亮度阈值设置得越大,明亮区域的面积越小,阴影区域的面积越大。因此,可以根据需要设置亮度阈值。如果希望将三维模型上较多的模型区域划分为阴影区域,则可以设置较大的亮度阈值;反之,如果希望将三维模型上较多的模型区域划分为明亮区域,则可以设置较小的亮度阈值。
在步骤303中,可以采用不同的方式分别确定对明亮区域和阴影区域进行渲染的颜色。其中,用于渲染明亮区域的颜色即为三维模型中对应于该明亮区域的颜色。例如,三维模型中处于该明亮区域内的片元的颜色为红色,则将该明亮区域的片元渲染为红色。用于渲染阴影区域的颜色为阴影颜色,或者基于阴影颜色与三维模型中对应于该阴影区域的颜色共同确定。阴影颜色可以预先由用户指定,也可以采用默认颜色。还可以从预先定义的多种候选颜色中随机选择一种作为阴影颜色,或者基于其他方式确定阴影颜色。
在进行渲染时,可直接将阴影区域的颜色渲染为阴影颜色,即,采用阴影颜色代替三维模型中对应于阴影区域的颜色。例如,三维模型中对应于阴影区域的颜色为红色,而阴影颜色为黑色,则可直接将阴影区域的颜色渲染为黑色。
也可以先基于所述三维模型对应的漫反射贴图确定三维模型中对应于所述阴影区域的颜色(称为模型颜色),并通过阴影颜色对模型颜色进行修正,利用修正后的颜色对阴影区域进行渲染。例如,可以将模型颜色中的R通道值、G通道值和B通道值与阴影颜色的对应通道值进行求和,得到修正后的颜色。假设模型颜色在R通道、G通道和B通道的分量为(R1,G1,B1),阴影颜色在R通道、G通道和B通道的分量为(R2,G2,B2),则修正后的颜色为(R1+R2,G1+G2,B1+B2)。当然,修正方式不限于对颜色的各通道分量进行简单叠加。
还可以在不同的图层上分别采用模型颜色和阴影颜色对阴影区域进行渲染,并将渲染后的两个图层进行合成,得到阴影区域的渲染结果。例如,模型颜色为红色,阴影颜色为黑色,则可以在第一图层上渲染红色,在第二图层上渲染黑色,并将两个图层叠加在一起,得到阴影区域的渲染结果。同时,还可以分别调整第一图层的透明度和第二图层的透明度,从而呈现出不同的渲染效果。
在上述实施例中,三维模型对应于明亮区域的颜色以及三维模型对应于阴影区域的颜色可以基于三维模型对应的漫反射贴图确定。在所述亮度阈值为单一阈值的情况下,通过在明亮区域绘制三维模型原有的漫反射贴图颜色;在暗部区域将三维模型原有的漫反射贴图颜色按照预定义的阴影颜色进行调整后再进行渲染,从而实现二次元风格中二级色的渲染效果。
在一些实施例中,也可以通过制定多个阈值来实现多级着色的渲染效果。例如,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值。所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到。可以确定所述阴影区域中各片元的亮度值所属的亮度子区间;根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。这种确定阴影颜色的方式称为基于子区间的方式。假设用0到1之间的实数表示片元的亮度值,亮度阈值为0.8,可以将[0, 0.8]这一区间划分为[0, 0.3]以及[0.3, 0.8]两个子区间,且子区间[0, 0.3]对应的阴影颜色为黑色,子区间[0.3, 0.8]对应的阴影颜色为灰色。如果阴影区域中的片元A的亮度值在子区间[0, 0.3]之内,则对片元A进行渲染的阴影颜色为黑色;如果阴影区域中的片元A的亮度值在子区间[0.3, 0.8]之内,则对片元A进行渲染的阴影颜色为灰色。本领域技术人员可以理解,上述实施例仅为示例性说明,子区间的数量及划分方式可以不同于上述实施例。
进一步地,一个片元的亮度值所属子区间的亮度范围越大,该片元的阴影颜色越深(即片元的阴影的亮度值越大);反之,一个片元的亮度值所属子区间的亮度范围越小,该片元的阴影颜色越浅(即片元的阴影的亮度值越小)。这样,可以呈现出阴影颜色随着片元亮度值的减小有层次地变深的效果。当然,上述变化趋势并非是必须的,也可以采用其他方式设置各个子区间对应的阴影颜色,从而获得其他的阴影渲染效果。
又例如,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值。可以从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。这种确定阴影颜色的方式称为基于查找表的方式。若在查找表中查找到与片元的亮度值相同的参考亮度值,可以直接将与片元的亮度值相同的参考亮度值确定为与片元的亮度值相匹配的参考亮度值。
若在查找表中未查找到与片元的亮度值相同的参考亮度值,将查找表中与片元亮度值最接近的参考亮度值确定为与片元的亮度值相匹配的参考亮度值。或者,可以将查找表中与片元的亮度值的差异在预设范围内的多个参考亮度值的平均值确定为与片元的亮度值相匹配的参考亮度值。
进一步地,查找表中存储的亮度值越大,该亮度值对应的阴影颜色越深;反之,查找表中存储的亮度值越小,该亮度值对应的阴影颜色越浅。这样,可以呈现出阴影颜色随着片元亮度值的减小有层次地变深的效果。当然,上述变化趋势并非是必须的,也可以采用其他方式设置查找表中各个亮度值对应的阴影颜色,从而获得其他的阴影渲染效果。
上述实施例中的第一亮度阈值与第二亮度阈值可以相同,也可以不同。用于对所述阴影区域的颜色进行修正的阴影颜色可以选择基于亮度子区间的方式或者基于查找表的方式中的任意一者确定,也可以结合两种方式共同确定。例如,将基于亮度子区间的方式确定的阴影颜色称为第一阴影颜色,将基于查找表的方式确定的阴影颜色称为第二阴影颜色,则用于对所述阴影区域的颜色进行修正的阴影颜色可以是第一阴影颜色与第二阴影颜色中较深或者较浅的阴影颜色,或者是第一阴影颜色与第二阴影颜色进行加权平均之后得到的阴影颜色。
除了采用以上列举的方式确定阴影颜色之外,还可采用其他方式确定阴影颜色,此处不再一一列举。通过对三维模型上不同亮度值的部分采用不同的阴影颜色,可模仿不同作画风格的渲染效果。但核心都是要计算光暗分布,并利用光暗分布来对三维模型的着色渲染进行分区处理,不管这个分区有多么细腻。
上述渲染过程可称为扁平着色。在一些实施例中,还可以对步骤303得到的渲染结果进行描边,以形成二次元渲染效果中的线条轮廓。所谓的描边是指采用预先确定的描边颜色渲染三维模型的边缘轮廓。
传统的描边方式一般是在将整个三维模型渲染成二维图像之后,对二维图像进行边缘检测,以确定二维图像中的边缘像素点,再采用描边颜色对边缘像素点进行渲染。这种描边方式同样需要先渲染整个三维模型,再进行后处理,渲染效率较低。
在本公开实施例中,可以对三维模型进行放大,得到放大模型,再基于预先确定的描边颜色对所述放大模型进行渲染。通过将步骤303中的渲染结果覆盖到放大模型的渲染结果上,从而能够实现图6所示的描边效果。
作为一种实现方式,可以将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到放大模型。通过这种方式得到的放大模型无需进行位移,其中间部分会被放大前的三维模型遮挡,周边扩大的部分则会覆盖在放大前的三维模型的外侧,形成二次元渲染效果中的线条轮廓。除了上述位移方式以外,还可以通过其他方式对三维模型进行放大,本公开对此不做限制。
如图5所示,通过实线所示的圆形表示放大前的三维模型,A、B和C分别为放大前的三维模型上的三个顶点,fA、fB和fC分别表示顶点A、顶点B和顶点C对应的法线在投影平面上的投影向量的方向。通过将各顶点沿着投影向量的方向向外位移一定距离,从而得到如圆形虚线表示的放大后的三维模型。本领域技术人员可以理解,放大前的三维模型上还包括其他的顶点,图中不再一一示出。各个顶点的位移量可以相同,也可以不同。在各顶点位移量相同的情况下,可以对整个三维模型进行均匀地放大,即三维模型各个部分的放大程度相同。在存在位移量不同的顶点的情况下,位移量较大的顶点对应的放大程度大于位移量较小的顶点。通过对不同的顶点进行不同程度的放大,能够实现不同的描边效果。顶点的位移量与所需的边缘轮廓的宽度有关。如果需要渲染出比较宽的边缘轮廓,则可以设置较大的位移量;如果需要渲染出比较窄的边缘轮廓,则可以设置较小的位移量。即,位移量与渲染得到的边缘轮廓的宽度正相关。可以预先输入所需的边缘轮廓的宽度,并基于输入的宽度自动确定各个顶点的位移量。
在得到放大模型之后,可以采用描边颜色对三维模型进行渲染。可以采用描边颜色对整个放大后的三维模型进行渲染,也可以仅渲染处于放大前的三维模型外侧的部分。前一种渲染方式能够有效避免描边渲染结果与扁平着色的渲染结果之间存在空隙而影响渲染效果。上述描边颜色可以是单一颜色,也可以是渐变色。描边颜色可以预先由用户指定,或者随机从多种颜色中选择一种,或者采用默认颜色。为了突出边缘轮廓与明亮区域之间的差异,可以选择与明亮区域颜色差异大于预设差异值的颜色作为描边颜色。
在一些实施例中,可以基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染。也就是说,可以仅对所述明亮区域中各片元的正面以及所述阴影区域中各片元的正面进行渲染,而不对所述明亮区域中各片元的背面以及所述阴影区域中各片元的背面进行渲染。这种渲染方式称为剔除背面的渲染方式。还可以基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染。也就是说,可以仅对放大模型中各片元的背面进行渲染,而不对放大模型中各片元的正面进行渲染。这种渲染方式称为剔除正面的渲染方式。
其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。例如,正面可以定义为多个顶点通过顺时针方式连接形成的面,背面可以定义为多个顶点通过逆时针方式连接形成的面。当然,也可以根据实际需要,按照其他的方式定义正面和背面。
如图7所示,在剔除背面的渲染方式中,a、b、c表示顶点,箭头方向表示顶点的连接顺序。只渲染a、b、c三个顶点通过顺时针方向连接形成的面(7-1),而不渲染a、b、c三个顶点通过逆时针方向连接形成的面(7-2)。在剔除正面的渲染方式中,只渲染a、b、c三个顶点通过逆时针方向连接形成的面(7-3),而不渲染a、b、c三个顶点通过顺时针方向连接形成的面(7-4)。通过放大前的三维模型与放大后的三维模型采用不同的剔除方式进行渲染,能够更好地实现放大前的三维模型对放大后的三维模型的遮挡效果。
在一些实施例中,在基于预先确定的描边颜色对所述放大三维模型进行渲染之前,可以将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。如图8所示,假设放大模型移动前与渲染相机之间的距离为d1,则可以将放大模型移动到与渲染相机相距d2的位置,其中,d2大于d1。
上述扁平着色与描边两个流程可以采用不同的渲染通道(Pass)实现,两个渲染通道上的流程可以并行地执行,也可以先通过第一渲染通道进行扁平着色,在扁平着色处理完成之后,再通过第二渲染通道进行描边。
本公开实施例可应用于二次元风格的3D游戏、主播的二次元风格3D贴纸或者二次元风格的3D虚拟主播渲染等场景。以二次元风格的3D虚拟主播渲染场景为例,所述三维模型为主播的三维模型。在主播进行直播的过程中,可以实时获取主播的图像,并基于主播的图像对主播进行三维建模,得到主播的三维模型。然后,采用本公开实施例的渲染方法对主播的三维模型进行实时渲染,从而得到二次元风格的虚拟主播形象。由于本公开实施例的渲染方法无需进行后处理,实时性较高,因此,能够适用于上述场景。
如图9A,本公开实施例还提供另一种三维模型的渲染方法,所述方法包括:
步骤901:在第一渲染通道中,基于三维模型的颜色对三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染;
步骤902:在第二渲染通道中,对所述三维模型进行放大,得到放大模型,基于预先确定的描边颜色对所述放大模型进行渲染,所述放大模型的中间区域被所述三维模型遮挡。
本公开实施例通过两个渲染通道分别进行扁平着色和描边,其中,扁平着色过程通过对原三维模型进行渲染来实现,描边过程通过对放大模型进行渲染来实现。由于扁平着色过程和描边过程都是直接通过确定好的颜色来进行渲染,无需先渲染三维模型再进行后处理,因此,提高了渲染效率。
上述第一通道的处理称为扁平着色,第二通道的处理称为描边。参考图9B,整体流程如下:
通过第一渲染通道进行扁平着色,流程如下:
(1-1)获取渲染用的输入,如三维模型的阴影贴图、光照方向、三维模型的法线贴图,渲染相机位置等。
(1-2)通过光照方向、法线贴图和渲染相机位置计算渲染相机视角下三维模型因为光照方向导致的光暗分布。
(1-3)采用阴影贴图,获取三维模型上因为阴影遮蔽导致的光暗分布。
(1-4)将三维模型上因为阴影遮蔽的光暗分布和因为光照方向导致的光暗分布进行叠加,获取最终的光暗分布。
(1-5)利用预定义的亮度阈值将最终的光暗分布分为明亮区域和阴影区域两部分。
(1-6)对明亮区域与阴影区域分别进行着色:在明亮区域绘制三维模型原有的漫反射贴图颜色;在阴影区域将三维模型原有的漫反射贴图按照预定义的阴影颜色进行调整后再进行渲染,从而实现二次元风格中二级色的渲染效果。
通过第二渲染通道进行模型描边,流程如下:
(2-1)获取渲染用的输入,如顶点位置、渲染相机的投影矩阵、模型矩阵、骨骼数据、三维模型的顶点法线等;其中,投影矩阵为渲染相机坐标系与世界坐标系之间的转换矩阵,模型矩阵用于描述三维模型的位移和旋转,骨骼数据用于表示有骨骼的三维模型(例如,人物的三维模型)的形变,对于没有骨骼的三维模型(例如,桌子),输入可以不包括骨骼数据。
(2-2)通过三维模型的顶点位置、顶点法线和模型矩阵计算出三维模型在当前的世界坐标系下各个顶点的位置和法线信息。由于光源的位置一般用世界坐标系下的位置来表示,这一步的目的是将三维模型投影到世界坐标系,从而使三维模型与光源处于同一坐标系下。除了将三维模型转换到世界坐标系,也可以将光源转换到渲染相机坐标系下,或者将三维模型与渲染相机都转换到其他坐标系下,只要二者处于同一坐标系即可。
(2-3)模型放大:利用上一步的位置和法线信息,以及渲染相机的投影矩阵,将模型的各个顶点沿着法线在投影平面的方向上进行一个向外的位移,使得模型在投影平面上放大,也就是让模型“大一圈”。
(2-4)将这个放大了的模型沿着投影的方向向后(即远离渲染相机的方向)略微移动。这一步操作可以避免这个放大的模型和原模型在模型厚度较小的地方发生穿透导致渲染效果错误的问题。
(2-5)以预先指定的描边颜色,用剔除正面的方式渲染放大后的模型(原三维模型的阴影区域和明亮区域通过剔除背面的方式进行渲染)。这样,这个放大后的模型的中间部分就会被原本的三维模型遮挡,周边扩大的部分则会覆盖在原本的三维模型的外边,形成二次元渲染效果中的线条轮廓。
经过以上两个Pass的渲染之后,产出的结果就是有着边缘轮廓和二级着色的赛璐珞风格二次元渲染特效了。
该流程中的描边效果除却利用顶点的法线信息之外,也可以通过用切线来间接计算出平滑过渡的法线,再进行放大的方式,从而实现较为平滑、避免描边在尖锐的边角上出现断裂的问题,但核心都是要绘制一个比原有模型大一些的反向模型以模拟描边的效果。与后处理的方法相比,本公开实施例的方法渲染出的结果就是二次元绘制风格,省去了后处理的步骤和时间。
本实施例的细节详见前述三维模型的渲染方法的实施例,此处不再赘述。
如图10,本公开实施例还提供另一种三维模型的渲染方法,所述方法包括:
步骤1001:对三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;
步骤1002:基于预先确定的描边颜色对所述放大模型进行渲染。
本公开实施例直接采用描边颜色对放大模型进行渲染,相比于传统的渲染方式中先渲染整个三维模型,再通过后处理进行边缘分割的方式,本公开实施例能够有效提高渲染效率。
在一些实施例中,所述对所述三维模型进行放大,得到放大模型,包括:将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。通过这种方式得到的放大模型的中间区域能够直接被放大前的三维模型遮挡,无需进行位移,处理复杂度较低。
在一些实施例中,在基于预先确定的描边颜色对所述放大模型进行渲染之前,所述方法还包括:将所述放大模型沿着远离所述渲染相机的方向进行移动。这一步操作可以避免放大模型和三维模型在模型厚度较小的地方发生穿透,导致渲染效果错误的问题。
在一些实施例中,所述方法还包括:基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染。本公开实施例无需先对整个三维模型进行绘制,能够直接获取最终的渲染效果。相比于先绘制待渲染三维模型再进行后处理的渲染方式,本公开实施例的渲染方式渲染效率较高,更加适用于实时渲染场景。
在一些实施例中,所述基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染,包括:基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。通过这种方式,能够减少描边颜色对三维模型的明亮区域和阴影区域的颜色的影响,提高渲染效果。
本实施例的细节详见前述三维模型的渲染方法的实施例,此处不再赘述。
本公开涉及增强现实领域,通过获取现实环境中的目标对象的图像信息,进而借助各类视觉相关算法实现对目标对象的相关特征、状态及属性进行检测或识别处理,从而得到与具体应用匹配的虚拟与现实相结合的AR效果。示例性的,目标对象可涉及与人体相关的脸部、肢体、手势、动作等,或者与物体相关的标识物、标志物,或者与场馆或场所相关的沙盘、展示区域或展示物品等。视觉相关算法可涉及视觉定位、SLAM、三维重建、图像注册、背景分割、对象的关键点提取及跟踪、对象的位姿或深度检测等。具体应用不仅可以涉及跟真实场景或物品相关的导览、导航、讲解、重建、虚拟效果叠加展示等交互场景,还可以涉及与人相关的特效处理,比如妆容美化、肢体美化、特效展示、虚拟模型展示等交互场景。可通过卷积神经网络,实现对目标对象的相关特征、状态及属性进行检测或识别处理。上述卷积神经网络是基于深度学习框架进行模型训练而得到的网络模型。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
如图11,本公开实施例还提供一种三维模型的渲染装置,所述装置包括:
确定模块1101,用于确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;
划分模块1102,用于基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域;
渲染模块1103,用于基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染。
如图12,本公开实施例还提供一种三维模型的渲染装置,所述装置包括:
第一渲染模块1201,用于在第一渲染通道中,基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染;
第二渲染模块1202,用于在第二渲染通道中,对所述三维模型进行放大,得到放大模型,基于预先确定的描边颜色对所述放大模型进行渲染,所述放大模型的中间区域被所述三维模型遮挡。
如图13,本公开实施例还提供一种三维模型的渲染装置,所述装置包括:
放大模块1301,用于对三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;
渲染模块1302,用于基于预先确定的描边颜色对所述放大模型进行渲染。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。
图14示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1401、存储器1402、输入/输出接口1403、通信接口1404和总线1405。其中处理器1401、存储器1402、输入/输出接口1403和通信接口1404通过总线1405实现彼此之间在设备内部的通信连接。
处理器1401可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。处理器1401还可以包括显卡,所述显卡可以是Nvidia titan X显卡或者1080Ti显卡等。
存储器1402可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1402可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1402中,并由处理器1401来调用执行。
输入/输出接口1403用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1404用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1405包括一通路,在设备的各个组件(例如处理器1401、存储器1402、输入/输出接口1403和通信接口1404)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1401、存储器1402、输入/输出接口1403、通信接口1404以及总线1405,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
Claims (18)
1.一种三维模型的渲染方法,其特征在于,所述方法包括:
确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;
基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域;
基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述确定三维模型在渲染相机视角下的光暗分布,包括:
基于光照方向、所述三维模型的法线贴图和所述渲染相机的位置,确定所述三维模型在渲染相机视角下的第一光暗分布,所述法线贴图用于表征所述三维模型上各顶点的法线;
基于所述三维模型的阴影贴图,确定所述三维模型在渲染相机视角下的第二光暗分布;
基于所述第一光暗分布和所述第二光暗分布确定所述三维模型在渲染相机视角下的光暗分布。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一光暗分布和所述第二光暗分布确定所述三维模型在渲染相机视角下的光暗分布,包括:
针对所述三维模型在渲染相机视角下的每个片元,基于所述第一光暗分布确定所述片元的第一亮度值,并基于所述第二光暗分布确定所述片元的第二亮度值;
根据所述第一亮度值及所述第二亮度值,确定所述片元的亮度值。
4.根据权利要求1所述的方法,其特征在于,所述基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域,包括:
将所述三维模型上亮度值满足第一预设亮度条件的区域确定为所述明亮区域;
将所述三维模型上亮度值满足第二预设亮度条件的区域确定为所述阴影区域。
5.根据权利要求4所述的方法,其特征在于,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第一亮度阈值;
所述预先确定的阴影颜色包括多个不同亮度子区间分别对应的阴影颜色;所述不同亮度子区间根据所述亮度值小于或等于所述第一亮度阈值的亮度区间划分得到;
所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:
确定所述阴影区域中各片元的亮度值所属的亮度子区间;
根据各片元的亮度值所属的亮度子区间分别对应的阴影颜色,对所述阴影区域的各片元进行渲染。
6.根据权利要求4所述的方法,其特征在于,所述亮度值满足所述第二预设亮度条件包括所述亮度值小于或等于第二亮度阈值;
所述预先确定的阴影颜色包括查找表中的多个参考亮度值分别对应的阴影颜色;所述查找表中的各个参考亮度值均小于或等于所述第二亮度阈值;
所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:
从所述查找表中查找与所述阴影区域中各片元的亮度值分别匹配的参考亮度值对应的阴影颜色;
根据与各片元分别匹配的参考亮度值对应的阴影颜色,对所述阴影区域的各片元进行渲染。
7.根据权利要求1所述的方法,其特征在于,所述基于所述三维模型的颜色对所述明亮区域进行渲染,包括:
基于所述三维模型对应的漫反射贴图确定所述明亮区域的颜色;
基于确定的颜色对所述明亮区域进行渲染。
8.根据权利要求1所述的方法,其特征在于,所述基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:
基于所述三维模型对应的漫反射贴图确定所述阴影区域的颜色;
基于所述阴影颜色对所述阴影区域的颜色进行修正;
基于修正后的颜色对所述阴影区域进行渲染。
9.根据权利要求1至8任意一项所述的方法,其特征在于,所述方法还包括:
对所述三维模型进行放大,得到放大模型,所述放大模型的中间区域被所述三维模型遮挡;
基于预先确定的描边颜色对所述放大模型进行渲染。
10.根据权利要求9所述的方法,其特征在于,所述对所述三维模型进行放大,得到放大模型,包括:
将所述三维模型上的各个顶点沿着所述顶点的法线在投影平面上的投影向量的方向进行位移,得到所述放大模型。
11.根据权利要求9所述的方法,其特征在于,所述基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染,包括:
基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;
所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:
基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;
其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。
12.根据权利要求9所述的方法,其特征在于,在基于预先确定的描边颜色对所述放大模型进行渲染之前,所述方法还包括:
将所述放大模型沿着远离所述渲染相机的方向进行移动。
13.一种三维模型的渲染方法,其特征在于,所述方法包括:
在第一渲染通道中,基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染;
在第二渲染通道中,对所述三维模型进行放大,得到放大模型,基于预先确定的描边颜色对所述放大模型进行渲染,所述放大模型的中间区域被所述三维模型遮挡。
14.根据权利要求13所述的方法,其特征在于,所述基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染,包括:
基于所述三维模型的颜色对所述明亮区域中各片元的正面进行渲染,并基于预先确定的阴影颜色对所述阴影区域中各片元的正面进行渲染;
所述基于预先确定的描边颜色对所述放大模型进行渲染,包括:
基于预先确定的描边颜色对所述放大模型中各片元的背面进行渲染;
其中,一个片元的正面为所述片元上多个顶点沿着第一方向进行连接得到的面,一个片元的背面为所述片元上多个顶点沿着第二方向进行连接得到的面,所述第一方向与所述第二方向相反。
15.一种三维模型的渲染装置,其特征在于,所述装置包括:
确定模块,用于确定三维模型在渲染相机视角下的光暗分布,所述光暗分布用于表征所述三维模型上各个片元的亮度值;
划分模块,用于基于所述光暗分布将所述三维模型划分为明亮区域和阴影区域;
渲染模块,用于基于所述三维模型的颜色对所述明亮区域进行渲染,并基于预先确定的阴影颜色对所述阴影区域进行渲染。
16.一种三维模型的渲染装置,其特征在于,所述装置包括:
第一渲染模块,用于在第一渲染通道中,基于三维模型的颜色对所述三维模型的明亮区域进行渲染,并基于预先确定的阴影颜色对所述三维模型的阴影区域进行渲染;
第二渲染模块,用于在第二渲染通道中,对所述三维模型进行放大,得到放大模型,基于预先确定的描边颜色对所述放大模型进行渲染,所述放大模型的中间区域被所述三维模型遮挡。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至14任意一项所述的方法。
18.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至14任意一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210082224.6A CN114494570A (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
CN202111211776.4A CN113658316B (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
PCT/CN2022/125043 WO2023066121A1 (zh) | 2021-10-18 | 2022-10-13 | 三维模型的渲染 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111211776.4A CN113658316B (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210082224.6A Division CN114494570A (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113658316A CN113658316A (zh) | 2021-11-16 |
CN113658316B true CN113658316B (zh) | 2022-03-08 |
Family
ID=78484203
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210082224.6A Pending CN114494570A (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
CN202111211776.4A Active CN113658316B (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210082224.6A Pending CN114494570A (zh) | 2021-10-18 | 2021-10-18 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN114494570A (zh) |
WO (1) | WO2023066121A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114494570A (zh) * | 2021-10-18 | 2022-05-13 | 北京市商汤科技开发有限公司 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
CN115082607B (zh) * | 2022-05-26 | 2024-08-30 | 网易(杭州)网络有限公司 | 虚拟角色头发渲染方法、装置、电子设备和存储介质 |
CN117435110B (zh) * | 2023-10-11 | 2024-06-18 | 书行科技(北京)有限公司 | 一种图片处理方法、装置、电子设备和存储介质 |
CN117689773B (zh) * | 2024-01-31 | 2024-04-30 | 合肥中科类脑智能技术有限公司 | 贴图方法、装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2227502A1 (en) * | 1997-01-31 | 1998-07-31 | Microsoft Corporation | Method and system for determining and or using illumination maps in rendering images |
CN110196746A (zh) * | 2019-05-30 | 2019-09-03 | 网易(杭州)网络有限公司 | 交互界面渲染方法及装置、电子设备、存储介质 |
CN111862254A (zh) * | 2020-07-17 | 2020-10-30 | 福建天晴数码有限公司 | 一种基于跨渲染平台的材质渲染的方法及其系统 |
CN112138386A (zh) * | 2020-09-24 | 2020-12-29 | 网易(杭州)网络有限公司 | 一种体积渲染方法、装置、存储介质及计算机设备 |
CN112316420A (zh) * | 2020-11-05 | 2021-02-05 | 网易(杭州)网络有限公司 | 模型渲染方法、装置、设备及存储介质 |
CN113240783A (zh) * | 2021-05-27 | 2021-08-10 | 网易(杭州)网络有限公司 | 风格化渲染方法和装置、可读存储介质、电子设备 |
CN113256781A (zh) * | 2021-06-17 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 虚拟场景的渲染和装置、存储介质及电子设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4167358B2 (ja) * | 1999-09-10 | 2008-10-15 | 株式会社バンダイナムコゲームス | 画像生成システム及び情報記憶媒体 |
JP3253020B2 (ja) * | 1999-09-28 | 2002-02-04 | 株式会社スクウェア | レンダリング方法及び装置、ゲーム装置、並びに立体モデルをレンダリングするプログラムを格納するコンピュータ読み取り可能な記録媒体 |
JP6910130B2 (ja) * | 2015-11-06 | 2021-07-28 | 三星電子株式会社Samsung Electronics Co.,Ltd. | 3dレンダリング方法及び3dレンダリング装置 |
US10762695B1 (en) * | 2019-02-21 | 2020-09-01 | Electronic Arts Inc. | Systems and methods for ray-traced shadows of transparent objects |
CN111127623B (zh) * | 2019-12-25 | 2023-08-29 | 上海米哈游天命科技有限公司 | 模型的渲染方法、装置、存储介质及终端 |
CN112933599B (zh) * | 2021-04-08 | 2022-07-26 | 腾讯科技(深圳)有限公司 | 三维模型渲染方法、装置、设备及存储介质 |
CN113223131B (zh) * | 2021-04-16 | 2022-05-31 | 完美世界(北京)软件科技发展有限公司 | 一种模型的渲染方法、装置、存储介质以及计算设备 |
CN114494570A (zh) * | 2021-10-18 | 2022-05-13 | 北京市商汤科技开发有限公司 | 三维模型的渲染方法和装置、存储介质及计算机设备 |
-
2021
- 2021-10-18 CN CN202210082224.6A patent/CN114494570A/zh active Pending
- 2021-10-18 CN CN202111211776.4A patent/CN113658316B/zh active Active
-
2022
- 2022-10-13 WO PCT/CN2022/125043 patent/WO2023066121A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2227502A1 (en) * | 1997-01-31 | 1998-07-31 | Microsoft Corporation | Method and system for determining and or using illumination maps in rendering images |
CN110196746A (zh) * | 2019-05-30 | 2019-09-03 | 网易(杭州)网络有限公司 | 交互界面渲染方法及装置、电子设备、存储介质 |
CN111862254A (zh) * | 2020-07-17 | 2020-10-30 | 福建天晴数码有限公司 | 一种基于跨渲染平台的材质渲染的方法及其系统 |
CN112138386A (zh) * | 2020-09-24 | 2020-12-29 | 网易(杭州)网络有限公司 | 一种体积渲染方法、装置、存储介质及计算机设备 |
CN112316420A (zh) * | 2020-11-05 | 2021-02-05 | 网易(杭州)网络有限公司 | 模型渲染方法、装置、设备及存储介质 |
CN113240783A (zh) * | 2021-05-27 | 2021-08-10 | 网易(杭州)网络有限公司 | 风格化渲染方法和装置、可读存储介质、电子设备 |
CN113256781A (zh) * | 2021-06-17 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 虚拟场景的渲染和装置、存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
应用彩色图像的结构光重构三维表面颜色渲染;于晓洋 等;《光学精密工程》;20091031;第17卷(第10期);2561-2568 * |
Also Published As
Publication number | Publication date |
---|---|
WO2023066121A1 (zh) | 2023-04-27 |
CN113658316A (zh) | 2021-11-16 |
CN114494570A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113658316B (zh) | 三维模型的渲染方法和装置、存储介质及计算机设备 | |
US20240273686A1 (en) | Denoising filter | |
CN109003325B (zh) | 一种三维重建的方法、介质、装置和计算设备 | |
US11694392B2 (en) | Environment synthesis for lighting an object | |
CN104966312B (zh) | 一种3d模型的渲染方法、装置及终端设备 | |
CN107749077B (zh) | 一种卡通风格光影渲染方法、装置、设备及介质 | |
CN111127623B (zh) | 模型的渲染方法、装置、存储介质及终端 | |
CN107798725B (zh) | 基于Android的二维住房户型识别和三维呈现方法 | |
CN108805971B (zh) | 一种环境光遮蔽方法 | |
Guo et al. | Foggy scene rendering based on transmission map estimation | |
CN111583381B (zh) | 游戏资源图的渲染方法、装置及电子设备 | |
WO2023098358A1 (zh) | 一种模型渲染方法、装置、计算机设备及存储介质 | |
Boom et al. | Interactive light source position estimation for augmented reality with an RGB‐D camera | |
JP2020532022A (ja) | 全視角方向の球体ライトフィールドレンダリング方法 | |
CN111652807B (zh) | 眼部的调整、直播方法、装置、电子设备和存储介质 | |
CN115965735B (zh) | 纹理贴图的生成方法和装置 | |
CN115272628A (zh) | 一种三维模型的渲染方法、装置、计算机设备及存储介质 | |
JP7387029B2 (ja) | ソフトレイヤ化および深度認識インペインティングを用いた単画像3d写真技術 | |
CN114913283A (zh) | 一种素描风格的场景渲染方法、设备及存储介质 | |
US9734579B1 (en) | Three-dimensional models visual differential | |
Güssefeld et al. | Are reflectance field renderings appropriate for optical flow evaluation? | |
Do et al. | On multi-view texture mapping of indoor environments using Kinect depth sensors | |
CN114972265B (zh) | 纹理图像分割方法、生成方法、装置及设备 | |
CN115131493A (zh) | 动态光线特效的展示方法、装置、计算机设备及存储介质 | |
CN116977394A (zh) | 视频生成方法、装置、设备、存储介质和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40061841 Country of ref document: HK |