CN112001996A - 一种基于运行时纹理重组的三维模型实时渲染方法 - Google Patents
一种基于运行时纹理重组的三维模型实时渲染方法 Download PDFInfo
- Publication number
- CN112001996A CN112001996A CN202010854482.2A CN202010854482A CN112001996A CN 112001996 A CN112001996 A CN 112001996A CN 202010854482 A CN202010854482 A CN 202010854482A CN 112001996 A CN112001996 A CN 112001996A
- Authority
- CN
- China
- Prior art keywords
- texture
- pixel
- textures
- original
- spliced
- 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.)
- Pending
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/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种基于运行时纹理重组的三维模型实时渲染方法,在渲染前,统计需要渲染的所有纹理的宽度和高度,并按照纹理的宽度进行归类;将宽度相同的纹理沿高度方向拼合为一张更大的纹理,并记录下原始纹理与拼合后的新纹理的映射关系,根据下式逐像素的计算出该像素所使用的原始纹理在拼合纹理中的位置,并对其进行采样,获取该像素正确的纹理颜色。本发明通过在运行时对三维数据进行动态优化,当三维场景中包含大量纹理时,可极大的提高系统的吞吐率和渲染性能。
Description
技术领域
本发明涉及计算机图形学技术领域,是一种基于运行时纹理重组的三维模型实时渲染方法。
背景技术
现存的基于人工建模的数字城市三维模型中,普遍存在数量巨大的纹理数据。城市中建筑林立,为了真实的还原实际,每个建筑表面都需要贴上其特有的纹理文件。而现有个人计算机中的GPU硬件,是为高度流水线化的数据而优化的,频繁切换纹理数据会极大的降低整体性能,在渲染数字城市三维模型时,由于建筑外立面普遍是规整的矩形,经常产生切换一次纹理仅绘制一个矩形(既二个三角形)的情况,这种频繁的切换破坏了渲染管线的连续性,极大的降低了计算机系统渲染三维模型的性能。
为了克服由于纹理数量过多导致渲染速度急剧下降的问题,工程实践中普遍在三维数据制作时,采用UV展开,把多张纹理整合在一起后重新贴图的方式以达到缩减纹理总数量的目的。
发明内容
经分析发现在数据制作阶段使用UV展开缩减纹理数量存在以下问题:
1.需要额外的处理工序,在工程实践中,人工进行UV展开重新贴图需要额外消耗近30%的工作量;
2. 传统的纹理合并方法不适用于重复铺贴的纹理。纹理重复铺贴是通过将纹理坐标范围扩展到[0,1]之外达成的,例如将一张瓷砖纹理以横向平铺5次,纵向平铺6次贴在一个矩形上时,矩形左下角和右上角的纹理坐标分别为(0, 0)及(5, 6),若将该纹理与别的纹理进行合并,那么在渲染绘制时,由于纹理坐标已超出了该纹理的边界,将会采样到其他纹理中,导致错误的渲染结果。因此三维建模中大量使用的重复铺贴纹理(如瓷砖、材质均匀的墙面、整排整齐的窗户)不能使用传统的方法进行合并;
3.合并后的纹理,纹理数量变少了,但是每张纹理的尺寸变大了,大尺寸纹理不利于数据调度。并且通常为了缩减渲染时需要加载的数据量,会为纹理建立金字塔影像,在渲染时动态决定每张纹理应使用其金字塔中的哪一层数据;而在建模阶段合并纹理固化了各个纹理之间的分辨率关系,进一步影响了金字塔等级动态调度的优化效率。
本发明的目的是提供能够在运行时对三维数据进行动态优化,当三维场景中包含大量纹理时,可极大的提高系统的吞吐率和渲染性能的三维模型实时渲染方法;具体技术方案为:
步骤1:在渲染前,统计需要渲染的所有纹理,并按照纹理的宽度进行归类;
步骤2:将宽度相同的纹理沿高度方向拼合为一张更大的纹理 ,并记录下原始纹理与拼合后的新纹理的映射关系,该映射关系以v_bias、v_scale两个变量确定,v_bias表示原始纹理在拼合纹理中的起始位置,v_scale表示原始纹理高度与拼合纹理高度的比值,如附图2所示;
步骤3:对于所有几何体 中的顶点,增加两个成员变量v_bias、v_scale,用于记录该几何体所使用的纹理与拼合后的新纹理的映射关系;
步骤4:将拼合后的新纹理所涉及的所有几何体的三角网进行合并,并将纹理数据和三角网数据提交至GPU进行渲染;
步骤5:在GPU的像素着色器执行代码中,根据下式逐像素的计算出该像素所使用的原始纹理在拼合纹理中的位置,并对其进行采样,获取该像素正确的纹理颜色:
u′= u
v′= fract(v) * v_scale + v_bias
式中各各符号意义分别为:
u: 该像素在原纹理中的纹理坐标u分量
v: 该像素在原纹理中的纹理坐标v分量
u′: 该像素在拼合纹理中的纹理坐标u分量
v′: 该像素在拼合纹理中的纹理坐标v分量
v_bias: 原纹理在拼合纹理中的起始位置
v_scale: 原纹理高度与拼合纹理高度之比
fract(x): 取x的小数部分
本发明通过在运行时对三维数据进行动态优化,当三维场景中包含大量纹理时,可极大的提高系统的吞吐率和渲染性能。
附图说明
图1为本发明流程图;
图2为本发明纹理拼合示例;
图3为本发明中实际GPU Shader代码。
具体实施方式
下面利用实施例对本发明进行更全面的说明。本发明可以体现为多种不同形式,并不应理解为局限于这里叙述的示例性实施例。
实施例
1.减少纹理切换的频率。将纹理以合理的方式拼合重组,使得每次切换纹理时,绘制尽可能多的三角形,提高GPU管线的利用率;
2.数据优化应在运行时实时完成,无需预先处理;
3.确保正确的纹理采样。纹理拼合后,三角形顶点和纹理间的映射关系发生了变化,需要使用某种方法将这一变化记录下来,确保在纹理贴图时,能在拼合后的纹理的正确位置进行采样。
据此,本方法的技术流程如附图1所示,包括:
步骤1:在渲染前,统计需要渲染的所有纹理,并按照纹理的宽度进行归类;
步骤2:将宽度相同的纹理沿高度方向拼合为一张更大的纹理 ,并记录下原始纹理与拼合后的新纹理的映射关系,该映射关系以v_bias、v_scale两个变量确定,v_bias表示原始纹理在拼合纹理中的起始位置,v_scale表示原始纹理高度与拼合纹理高度的比值,如附图2所示;
步骤3:对于所有几何体 中的顶点,增加两个成员变量v_bias、v_scale,用于记录该几何体所使用的纹理与拼合后的新纹理的映射关系;
步骤4:将拼合后的新纹理所涉及的所有几何体的三角网进行合并,并将纹理数据和三角网数据提交至GPU进行渲染;
步骤5:在GPU的像素着色器执行代码中,根据下式逐像素的计算出该像素所使用的原始纹理在拼合纹理中的位置,并对其进行采样,获取该像素正确的纹理颜色:
u′= u
v′= fract(v) * v_scale + v_bias
式中各各符号意义分别为:
u: 该像素在原纹理中的纹理坐标u分量
v: 该像素在原纹理中的纹理坐标v分量
u′: 该像素在拼合纹理中的纹理坐标u分量
v′: 该像素在拼合纹理中的纹理坐标v分量
v_bias: 原纹理在拼合纹理中的起始位置
v_scale: 原纹理高度与拼合纹理高度之比
fract(x): 取x的小数部分
实际GPU Shader代码如附图3所示
本发明是一种基于运行时纹理重组的三维模型实时渲染方法,该方法可在运行时对广泛存在于数字城市三维模型数据中的散碎纹理进行自动合并,极大提升了渲染性能,与目前通用的数据制作阶段使用UV展开合并纹理的方法相比,有下列突出优势:
1.简化了数据生产工作,降低了建模阶段进行人工优化的要求和工作量。通过实际工程实践测试,生产效率提高了30%;
2.重复铺贴的纹理也可以进行合并,并正确渲染 ;
3.纹理的重组是在运行时根据当前场景视角实时动态完成的,整个场景中的可见部分会统一参与优化。与建模阶段人工合并纹理的优化方法不同,本方法既不会增大每张纹理的尺寸,也不会影响纹理金字塔调度;
在某典型的10km²城市三维模型中,该方法使用前后渲染帧率分别为2.5fps与20fps,性能提升近一个数量级。
上述示例只是用于说明本发明,除此之外,还有多种不同的实施方式,而这些实施方式都是本领域技术人员在领悟本发明思想后能够想到的,故,在此不再一一列举。
Claims (1)
1.一种基于运行时纹理重组的三维模型实时渲染方法,其特征在于,包括以下步骤:
步骤1:在渲染前,统计需要渲染的所有纹理的宽度和高度,并按照纹理的宽度进行归类,将宽度相同的纹理归为同一类;
步骤2:将宽度相同的纹理沿高度方向拼合为一张更大的纹理 ,并记录下原始纹理与拼合后的新纹理的映射关系,该映射关系以v_bias、v_scale两个变量确定,v_bias表示原始纹理在拼合纹理中的起始位置,v_scale表示原始纹理高度与拼合纹理高度的比值;
步骤3:对于所有几何体中的顶点,增加两个成员变量v_bias、v_scale,用于记录该几何体所使用的纹理与拼合后的新纹理的映射关系;
步骤4:将拼合后的新纹理所涉及的所有几何体的三角网进行合并,并将纹理数据和三角网数据提交至GPU进行渲染;
步骤5:在GPU的像素着色器执行代码中,根据下式逐像素的计算出该像素所使用的原始纹理在拼合纹理中的位置,并对其进行采样,获取该像素正确的纹理颜色:
u′= u
v′= fract(v) * v_scale + v_bias
式中各各符号意义分别为:
u: 该像素在原纹理中的纹理坐标u分量
v: 该像素在原纹理中的纹理坐标v分量
u′: 该像素在拼合纹理中的纹理坐标u分量
v′: 该像素在拼合纹理中的纹理坐标v分量
fract(x): 取x的小数部分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010854482.2A CN112001996A (zh) | 2020-08-24 | 2020-08-24 | 一种基于运行时纹理重组的三维模型实时渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010854482.2A CN112001996A (zh) | 2020-08-24 | 2020-08-24 | 一种基于运行时纹理重组的三维模型实时渲染方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112001996A true CN112001996A (zh) | 2020-11-27 |
Family
ID=73473072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010854482.2A Pending CN112001996A (zh) | 2020-08-24 | 2020-08-24 | 一种基于运行时纹理重组的三维模型实时渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112001996A (zh) |
-
2020
- 2020-08-24 CN CN202010854482.2A patent/CN112001996A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100342403C (zh) | 使用图案阴影来产生阴影效果的方法与装置 | |
US7133044B2 (en) | System of feature-based surface mapping | |
US7714866B2 (en) | Rendering a simulated vector marker stroke | |
US8725466B2 (en) | System and method for hybrid solid and surface modeling for computer-aided design environments | |
US20050068333A1 (en) | Image processing apparatus and method of same | |
CN113178014A (zh) | 场景模型渲染方法、装置、电子设备和存储介质 | |
CN110111408B (zh) | 基于图形学的大场景快速求交方法 | |
Nießner et al. | Real‐time rendering techniques with hardware tessellation | |
CN103679627A (zh) | 基于图块的计算机图形 | |
US10198788B2 (en) | Method and system of temporally asynchronous shading decoupled from rasterization | |
CN1655191A (zh) | 基于可编程图形硬件的多边形网格模型的快速体素化方法 | |
CN109147050B (zh) | 基于Unity引擎地形系统的道路网格创建方法及装置 | |
CN1926558A (zh) | 对任意成三角形的表面应用精确三维体纹理的系统和方法 | |
CN111784840B (zh) | 基于矢量数据自动分割lod层级三维数据单体化方法及系统 | |
US10198856B2 (en) | Method and system of anti-aliasing shading decoupled from rasterization | |
KR100959349B1 (ko) | 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법을 가속화하는 방법 | |
CN114998503A (zh) | 一种基于实景三维的白模自动纹理构建方法 | |
Rosen | Rectilinear texture warping for fast adaptive shadow mapping | |
Schäfer et al. | Local Painting and Deformation of Meshes on the GPU | |
CN112001996A (zh) | 一种基于运行时纹理重组的三维模型实时渲染方法 | |
CN111028349A (zh) | 一种适用于海量三维实景数据快速可视化的层级构建方法 | |
US20190295214A1 (en) | Method and system of temporally asynchronous shading decoupled from rasterization | |
CN112164137B (zh) | 一种虚拟仿真地形直观绘制及接缝自然过渡的方法 | |
Brainerd | Catmull-clark subdivision surfaces | |
Ray et al. | Generation of Radiosity Texture Atlas for Realistic Real-Time Rendering. |
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 |