CN114596400A - 一种基于三维引擎批量生成法线贴图的方法 - Google Patents
一种基于三维引擎批量生成法线贴图的方法 Download PDFInfo
- Publication number
- CN114596400A CN114596400A CN202210495614.6A CN202210495614A CN114596400A CN 114596400 A CN114596400 A CN 114596400A CN 202210495614 A CN202210495614 A CN 202210495614A CN 114596400 A CN114596400 A CN 114596400A
- Authority
- CN
- China
- Prior art keywords
- height
- normal
- texture map
- current pixel
- map
- 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.)
- Granted
Links
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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明涉及一种基于三维引擎批量生成法线贴图的方法,其特征在于,包括:S1、加载三维模型;S2、循环遍历纹理贴图并执行S3‑S9;S3、确定纹理贴图U方向的高度函数切线向量;S4、确定纹理贴图V方向的高度函数切线向量;S5、将V方向的切线向量与U方向的切线向量做叉积获得当前像素点表面法线向量;S6、法线向量的z分量乘以‑1;S7、将法线向量进行转换处理;S8、对法线效果进行渲染调整;S9、把渲染出来的法线贴图进行保存。本发明可以根据模型纹理贴图批量生成法线贴图,解决了需要专业模型制作人员手动为每一个模型制作法线贴图,以及无法根据模型场景实时调整法线贴图效果的问题。
Description
技术领域
本发明涉及三维可视化技术领域,特别涉及一种基于三维引擎批量生成法线贴图的方法。
背景技术
在三维虚拟仿真项目中,为了保证三维场景的真实感,在制作三维模型时通常需要为每一个三维模型创建法线贴图。法线贴图能够使得三维模型表面拥有光影分布的渲染效果,降低物体渲染时需要的面数和计算内容,从而优化动画和游戏的表达效果。
对于法线贴图,目前的做法是由专业的三维模型制作人员单独选择每一个三维模型进行创建法线贴图。在这种情况下,三维模型纹理一旦发生修改,则需要重新生成法线贴图然后导入到三维引擎中,显然这种法线贴图的创建效率低下,造成程序员工作量的增加,而且不能一人独自完成法线贴图的制作和调整,通常需要程序员与模型制作人员相互协作才能完成。
有鉴于此,实有必要提供一种新的技术方案以解决上述问题。
发明内容
本发明旨在提供一种基于三维引擎批量生成法线贴图的方法,该方法能够批量生成法线贴图,从而便于非专业三维模型制作人员在三维引擎中快速高效的制作模型法线贴图,并且可以在三维引擎中独自进行调整,进而提高三维虚拟仿真项目的开发效率。
为解决上述技术问题,本申请采用以下技术方案:
一种基于三维引擎批量生成法线贴图的方法,其特殊之处在于,包括如下步骤:
S1、加载三维模型并将其纹理贴图导入到三维引擎的文件夹中;
S2、循环遍历纹理文件夹中的每一张纹理贴图,并执行下述步骤S3-S9;
S3、确定纹理贴图U方向的高度函数切线向量;
S4、确定纹理贴图V方向的高度函数切线向量;
S5、将S4所得V方向的切线向量与S4所得U方向的切线向量做叉积,获得当前像素点表面的法线向量;
S6、将S5计算的法线向量的z分量乘以-1,使其变成切线空间下的法线;
S7、将步骤S6计算的法线向量根据公式fixed4 color = 法线向量* 0.5 + 0.5进行转换处理,然后进行渲染;
S8、通过调整步长缩放变量_DeltaScale、高度差比例变量_HeightScale对法线效果进行渲染调整;
S9、调用引擎的相关 API 把渲染出来的法线贴图进行保存。
进一步的,所述S3中,确定纹理贴图U方向的高度函数切线向量,具体包括:
S3-1、通过纹理贴图大小和步长缩放变量计算纹理贴图U方向的步长大小,公式为:U方向步长 = float2(_MainTex_TexelSize.x * _DeltaScale,0);其中MainTexTexelSize代表纹理贴图的大小,保存着纹理大小相关的信息,是一个 float4 类型的值,具体为 (1 / width, 1 / height, width, height);_DeltaScale是由人为设定调整的步长缩放变量,用以控制法线生成的精确度;
S3-2、基于S3-1所得U方向步长,利用中心差分法获取当前像素两侧的像素RGB;
S3-3、基于S3-2获取到的当前像素两侧的像素RGB,利用基于人眼感知的灰度值提取公式计算出当前像素两侧的高度值;
所述基于人眼感知的灰度值提取公式,是把RGB三个颜色分量做一个加权平均(color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722),提取出灰度值作为法线贴图的高度值;
S3-4、基于S3-1所得步长、S3-3所得当前像素两侧的高度值以及高度差比例变量,确定纹理贴图U方向的高度函数切线向量,公式为:U方向的高度函数切线向量= float3(纹理贴图U方向步长.x, 0, _HeightScale *当前像素两侧的高度值之差),_HeightScale是由人为设定调整的高度差比例变量。
进一步的,所述S4中,确定纹理贴图V方向的高度函数切线向量,具体包括:
S4-1、通过纹理贴图大小和步长缩放变量计算纹理贴图V方向的步长大小,公式为:V方向步长 = float2(0,_MainTex_TexelSize.y * _DeltaScale);其中,MainTexTexelSize代表纹理贴图的大小,保存着纹理大小相关的信息,是一个 float4 类型的值,具体为 (1 / width, 1 / height, width, height);_DeltaScale是由人为设定调整的步长缩放变量,用以控制法线生成的精确度;
S4-2、基于S4-1所得V方向步长,利用中心差分法获取当前像素两侧的像素RGB;
S4-3、基于S4-2获取到的当前像素两侧的像素RGB,利用基于人眼感知的灰度值提取公式计算出当前像素两侧的高度值;
所述基于人眼感知的灰度值提取公式,是把RGB三个颜色分量做一个加权平均(color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722),提取出灰度值作为法线贴图的高度值;
S4-4、根据S4-1所得步长、S4-3所得当前像素两侧的高度值以及高度差比例变量,确定纹理贴图V方向的高度函数切线向量,公式为:V方向的高度函数切线向量= float3(0,纹理贴图V方向步长.y, _HeightScale *当前像素两侧的高度值之差) ,_HeightScale是由人为设定调整的高度差比例变量。
本发明的一种基于三维引擎批量生成法线贴图的方法,能够使非专业三维模型制作人员在三维引擎中快速高效的制作模型法线贴图,并可以在三维引擎中根据场景环境进行调整,使模型到达最优的显示效果,进而提高三维虚拟仿真项目开发效率,同时可以批量根据模型纹理贴图制作出法线贴图,解决了需要专业模型制作人员手动为每一个模型制作法线贴图,以及无法根据模型场景实时调整法线贴图效果的问题。
具体实施方式
以下将通过实施例的方式对本发明的具体技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
实施例
下面将通过实施例对本发明的具体技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
一种基于三维引擎批量生成法线贴图的方法,包括如下步骤:
S1、加载三维模型并将其纹理贴图导入到三维引擎的文件夹中,所述三维引擎为Unity引擎。
S2、循环遍历纹理文件夹中的每一张纹理贴图,并执行下述步骤S3-S9。
S3、确定纹理贴图U方向的高度函数切线向量
S3-1、通过纹理贴图大小和步长缩放变量计算纹理贴图U方向的步长大小,公式为:U方向步长 = float2(_MainTex_TexelSize.x * _DeltaScale,0);其中MainTexTexelSize代表纹理贴图的大小,保存着纹理大小相关的信息,是一个 float4 类型的值,具体为 (1 / width, 1 / height, width, height);_DeltaScale是由人为设定调整的步长缩放变量,用以控制法线生成的精确度。
S3-2、基于S3-1所得U方向步长,利用中心差分法获取当前像素两侧的像素RGB。
S3-3、基于S3-2获取到的当前像素两侧的像素RGB,利用基于人眼感知的灰度值提取公式计算出当前像素两侧的高度值。
所述基于人眼感知的灰度值提取公式,是把RGB三个颜色分量做一个加权平均(color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722),提取出灰度值作为法线贴图的高度值。
S3-4、基于S3-1所得步长、S3-3所得当前像素两侧的高度值以及高度差比例变量,确定纹理贴图U方向的高度函数切线向量,公式为:U方向的高度函数切线向量= float3(纹理贴图U方向步长.x, 0, _HeightScale *当前像素两侧的高度值之差),_HeightScale是由人为设定调整的高度差比例变量。
S4、确定纹理贴图V方向的高度函数切线向量
S4-1、通过纹理贴图大小和步长缩放变量计算纹理贴图V方向的步长大小,公式为:V方向步长 = float2(0,_MainTex_TexelSize.y * _DeltaScale);其中,MainTexTexelSize代表纹理贴图的大小,保存着纹理大小相关的信息,是一个 float4 类型的值,具体为 (1 / width, 1 / height, width, height);_DeltaScale是由人为设定调整的步长缩放变量,用以控制法线生成的精确度。
S4-2、基于S4-1所得V方向步长,利用中心差分法获取当前像素两侧的像素RGB。
S4-3、基于S4-2获取到的当前像素两侧的像素RGB,利用基于人眼感知的灰度值提取公式计算出当前像素两侧的高度值。
所述基于人眼感知的灰度值提取公式,是把RGB三个颜色分量做一个加权平均(color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722),提取出灰度值作为法线贴图的高度值。
S4-4、根据S4-1所得步长、S4-3所得当前像素两侧的高度值以及高度差比例变量,确定纹理贴图V方向的高度函数切线向量,公式为:V方向的高度函数切线向量= float3(0,纹理贴图V方向步长.y, _HeightScale *当前像素两侧的高度值之差) ,_HeightScale是由人为设定调整的高度差比例变量。
S5、将S3所得U方向的切线向量与S4所得V方向的切线向量做叉积,获得当前像素点表面的法线向量。
S6、由于叉积的顺序,S3-S5计算出来的法线向量的z分量是朝向 -z 轴的,因此需将S5计算的法线向量的z分量乘以-1,使其变成切线空间下的法线。
S7、将经S6处理后的法线向量根据公式fixed4 color = 法线向量* 0.5 + 0.5进行转换处理,然后进行渲染。
S8、通过调整步长缩放变量_DeltaScale、高度差比例变量_HeightScale对法线效果进行渲染调整。
S9、调用引擎的相关 API 把渲染出来的法线贴图进行保存。
本实施例的方法能够使非专业三维模型制作人员在三维引擎中快速高效的制作模型法线贴图,并可以在三维引擎中根据场景环境进行调整,使模型到达最优的显示效果,进而提高三维虚拟仿真项目开发效率,同时可以批量根据模型纹理贴图制作出法线贴图,解决了需要专业模型制作人员手动为每一个模型制作法线贴图,以及无法根据模型场景实时调整法线贴图效果的问题。
Claims (4)
1.一种基于三维引擎批量生成法线贴图的方法,其特征在于,包括如下步骤:
S1、加载三维模型并将其纹理贴图导入到三维引擎的文件夹中;
S2、循环遍历纹理文件夹中的每一张纹理贴图,并执行下述步骤S3-S9;
S3、确定纹理贴图U方向的高度函数切线向量;
S4、确定纹理贴图V方向的高度函数切线向量;
S5、将S4所得V方向的切线向量与S4所得U方向的切线向量做叉积,获得当前像素点表面的法线向量;
S6、将S5计算的法线向量的z分量乘以-1,使其变成切线空间下的法线;
S7、将步骤S6计算的法线向量根据公式fixed4 color = 法线向量* 0.5 + 0.5进行转换处理,然后进行渲染;
S8、通过调整步长缩放变量_DeltaScale、高度差比例变量_HeightScale对法线效果进行渲染调整;
S9、调用引擎的相关 API 把渲染出来的法线贴图进行保存。
2.如权利要求1所述的一种基于三维引擎批量生成法线贴图的方法,其特征在于,
所述S3具体包括:
S3-1、通过纹理贴图大小和步长缩放变量计算纹理贴图U方向的步长大小,公式为:U方向步长 = float2(_MainTex_TexelSize.x * _DeltaScale,0);其中MainTexTexelSize代表纹理贴图的大小,保存着纹理大小相关的信息,是一个 float4 类型的值,具体为(1 /width, 1 / height, width, height);_DeltaScale是由人为设定调整的步长缩放变量,用以控制法线生成的精确度;
S3-2、基于S3-1所得U方向步长,利用中心差分法获取当前像素两侧的像素RGB;
S3-3、基于S3-2获取到的当前像素两侧的像素RGB,利用基于人眼感知的灰度值提取公式计算出当前像素两侧的高度值;
S3-4、基于S3-1所得步长、S3-3所得当前像素两侧的高度值以及高度差比例变量,确定纹理贴图U方向的高度函数切线向量,公式为:U方向的高度函数切线向量= float3(纹理贴图U方向步长.x, 0, _HeightScale *当前像素两侧的高度值之差),_HeightScale是由人为设定调整的高度差比例变量。
3.如权利要求1所述的一种基于三维引擎批量生成法线贴图的方法,其特征在于,
所述S4具体包括:
S4-1、通过纹理贴图大小和步长缩放变量计算纹理贴图V方向的步长大小,公式为:V方向步长 = float2(0,_MainTex_TexelSize.y * _DeltaScale);其中,MainTexTexelSize代表纹理贴图的大小,保存着纹理大小相关的信息,是一个 float4 类型的值,具体为 (1 /width, 1 / height, width, height);_DeltaScale是由人为设定调整的步长缩放变量,用以控制法线生成的精确度;
S4-2、基于S4-1所得V方向步长,利用中心差分法获取当前像素两侧的像素RGB;
S4-3、基于S4-2获取到的当前像素两侧的像素RGB,利用基于人眼感知的灰度值提取公式计算出当前像素两侧的高度值;
S4-4、根据S4-1所得步长、S4-3所得当前像素两侧的高度值以及高度差比例变量,确定纹理贴图V方向的高度函数切线向量,公式为:V方向的高度函数切线向量= float3(0, 纹理贴图V方向步长.y, _HeightScale *当前像素两侧的高度值之差),_HeightScale是由人为设定调整的高度差比例变量。
4.如权利要求2或3所述的一种基于三维引擎批量生成法线贴图的方法,其特征在于,
所述基于人眼感知的灰度值提取公式,是把RGB三个颜色分量做一个加权平均color.r* 0.2126 + color.g * 0.7152 + color.b * 0.0722,提取出灰度值作为法线贴图的高度值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210495614.6A CN114596400B (zh) | 2022-05-09 | 2022-05-09 | 一种基于三维引擎批量生成法线贴图的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210495614.6A CN114596400B (zh) | 2022-05-09 | 2022-05-09 | 一种基于三维引擎批量生成法线贴图的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114596400A true CN114596400A (zh) | 2022-06-07 |
CN114596400B CN114596400B (zh) | 2022-08-02 |
Family
ID=81813033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210495614.6A Active CN114596400B (zh) | 2022-05-09 | 2022-05-09 | 一种基于三维引擎批量生成法线贴图的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114596400B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117437345A (zh) * | 2023-12-22 | 2024-01-23 | 山东捷瑞数字科技股份有限公司 | 基于三维引擎实现渲染纹理镜面反射效果的方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020089511A1 (en) * | 2001-01-11 | 2002-07-11 | Aaftab Munshi | Apparatus and method for gradient mapping in a graphics processing system |
KR100721560B1 (ko) * | 2005-11-30 | 2007-05-23 | 한국전자통신연구원 | 임의 시점을 가지는 3차원 차량정보 제공 시스템 및 그방법 |
CN105046733A (zh) * | 2015-08-25 | 2015-11-11 | 克拉玛依红有软件有限责任公司 | 一种基于三维多纹理贴图方法 |
CN109377546A (zh) * | 2018-12-07 | 2019-02-22 | 网易(杭州)网络有限公司 | 虚拟现实模型渲染方法及装置 |
CN112465945A (zh) * | 2020-12-07 | 2021-03-09 | 网易(杭州)网络有限公司 | 一种模型生成方法、装置、存储介质及计算机设备 |
CN113674388A (zh) * | 2021-07-19 | 2021-11-19 | 中国地质调查局发展研究中心 | 一种基于机器学习的三维地质体纹理贴图方法 |
CN114119847A (zh) * | 2021-12-05 | 2022-03-01 | 北京字跳网络技术有限公司 | 一种图形处理方法、装置、计算机设备及存储介质 |
-
2022
- 2022-05-09 CN CN202210495614.6A patent/CN114596400B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020089511A1 (en) * | 2001-01-11 | 2002-07-11 | Aaftab Munshi | Apparatus and method for gradient mapping in a graphics processing system |
KR100721560B1 (ko) * | 2005-11-30 | 2007-05-23 | 한국전자통신연구원 | 임의 시점을 가지는 3차원 차량정보 제공 시스템 및 그방법 |
CN105046733A (zh) * | 2015-08-25 | 2015-11-11 | 克拉玛依红有软件有限责任公司 | 一种基于三维多纹理贴图方法 |
CN109377546A (zh) * | 2018-12-07 | 2019-02-22 | 网易(杭州)网络有限公司 | 虚拟现实模型渲染方法及装置 |
CN112465945A (zh) * | 2020-12-07 | 2021-03-09 | 网易(杭州)网络有限公司 | 一种模型生成方法、装置、存储介质及计算机设备 |
CN113674388A (zh) * | 2021-07-19 | 2021-11-19 | 中国地质调查局发展研究中心 | 一种基于机器学习的三维地质体纹理贴图方法 |
CN114119847A (zh) * | 2021-12-05 | 2022-03-01 | 北京字跳网络技术有限公司 | 一种图形处理方法、装置、计算机设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
BERNHARD ZEISL等: "Variational Regularization and Fusion of Surface Normal Maps", 《IEEE XPLORE》 * |
姚超: "浅谈切线空间法线贴图在三维建模中的应用", 《大众文艺》 * |
詹勇: "三维城市模型重复纹理合并方法研究", 《城市勘测》 * |
许铁心等: "三维水面模拟的研究与实现", 《湖北工业大学学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117437345A (zh) * | 2023-12-22 | 2024-01-23 | 山东捷瑞数字科技股份有限公司 | 基于三维引擎实现渲染纹理镜面反射效果的方法及系统 |
CN117437345B (zh) * | 2023-12-22 | 2024-03-19 | 山东捷瑞数字科技股份有限公司 | 基于三维引擎实现渲染纹理镜面反射效果的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114596400B (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11257286B2 (en) | Method for rendering of simulating illumination and terminal | |
CN112652044B (zh) | 粒子特效渲染方法、装置、设备及存储介质 | |
US20180225397A1 (en) | Systems and methods for fast simulation and visualization of sparse fluids | |
CN111714885B (zh) | 游戏角色模型生成、角色调整方法、装置、设备及介质 | |
CN114596400B (zh) | 一种基于三维引擎批量生成法线贴图的方法 | |
JPH09167255A (ja) | バンプマッピングとポンシェーディングを選択的に行う実時間レンダリング方法及び装置 | |
CN111773719A (zh) | 虚拟对象的渲染方法和装置、存储介质、电子装置 | |
EP4394713A1 (en) | Image rendering method and apparatus, electronic device, computer-readable storage medium, and computer program product | |
CN106898040A (zh) | 虚拟资源对象渲染方法和装置 | |
Merlo et al. | 3D model visualization enhancements in real-time game engines | |
CN110570491A (zh) | 热力图生成方法及装置 | |
CN114241151A (zh) | 三维模型简化方法、装置、计算机设备和计算机存储介质 | |
CN112206528A (zh) | 植被模型渲染方法、装置、设备及存储介质 | |
CN110969690B (zh) | 一种基于纹理的顶点动画数据存储方法及其系统 | |
Bao et al. | Realistic real-time rendering for large-scale forest scenes | |
US20240331330A1 (en) | System and Method for Dynamically Improving the Performance of Real-Time Rendering Systems via an Optimized Data Set | |
CN117745915B (zh) | 一种模型渲染方法、装置、设备及存储介质 | |
CN115228083A (zh) | 一种资源渲染方法及装置 | |
CN113160412B (zh) | 一种基于纹理贴图的软件模型自动生成方法及系统 | |
CN109785449A (zh) | 基于ffd的人物脸部编辑及贴花方法 | |
CN112927352A (zh) | 基于压平多边形的三维场景局部区域动态压平方法及装置 | |
CN117422811A (zh) | 模型烘焙方法、装置、设备及存储介质 | |
CN114549732A (zh) | 模型的渲染方法、装置及电子设备 | |
Yeo et al. | Efficient pixel-accurate rendering of animated curved surfaces | |
CN114937110B (zh) | 一种gpu加速的引流线建模方法、系统、设备及介质 |
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 |