CN114596400B - 一种基于三维引擎批量生成法线贴图的方法 - Google Patents

一种基于三维引擎批量生成法线贴图的方法 Download PDF

Info

Publication number
CN114596400B
CN114596400B CN202210495614.6A CN202210495614A CN114596400B CN 114596400 B CN114596400 B CN 114596400B CN 202210495614 A CN202210495614 A CN 202210495614A CN 114596400 B CN114596400 B CN 114596400B
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.)
Active
Application number
CN202210495614.6A
Other languages
English (en)
Other versions
CN114596400A (zh
Inventor
王涛
李腾
鞠洪利
李传彬
赵磊
柳晓坤
任雨桐
孙宏伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Jerei Digital Technology Co Ltd
Original Assignee
Shandong Jerei Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Jerei Digital Technology Co Ltd filed Critical Shandong Jerei Digital Technology Co Ltd
Priority to CN202210495614.6A priority Critical patent/CN114596400B/zh
Publication of CN114596400A publication Critical patent/CN114596400A/zh
Application granted granted Critical
Publication of CN114596400B publication Critical patent/CN114596400B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting 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 (2)

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 把渲染出来的法线贴图进行保存;
所述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是由人为设定调整的高度差比例变量;
所述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是由人为设定调整的高度差比例变量。
2.如权利要求1所述的一种基于三维引擎批量生成法线贴图的方法,其特征在于,
所述基于人眼感知的灰度值提取公式,是把RGB三个颜色分量做一个加权平均color.r* 0.2126 + color.g * 0.7152 + color.b * 0.0722,提取出灰度值作为法线贴图的高度值。
CN202210495614.6A 2022-05-09 2022-05-09 一种基于三维引擎批量生成法线贴图的方法 Active CN114596400B (zh)

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 CN114596400A (zh) 2022-06-07
CN114596400B true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117437345B (zh) * 2023-12-22 2024-03-19 山东捷瑞数字科技股份有限公司 基于三维引擎实现渲染纹理镜面反射效果的方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114119847A (zh) * 2021-12-05 2022-03-01 北京字跳网络技术有限公司 一种图形处理方法、装置、计算机设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850244B2 (en) * 2001-01-11 2005-02-01 Micron Techology, Inc. 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 克拉玛依红有软件有限责任公司 一种基于三维多纹理贴图方法
CN109377546B (zh) * 2018-12-07 2023-07-18 网易(杭州)网络有限公司 虚拟现实模型渲染方法及装置
CN112465945B (zh) * 2020-12-07 2024-04-09 网易(杭州)网络有限公司 一种模型生成方法、装置、存储介质及计算机设备
CN113674388A (zh) * 2021-07-19 2021-11-19 中国地质调查局发展研究中心 一种基于机器学习的三维地质体纹理贴图方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114119847A (zh) * 2021-12-05 2022-03-01 北京字跳网络技术有限公司 一种图形处理方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN114596400A (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
US11257286B2 (en) Method for rendering of simulating illumination and terminal
US20180225397A1 (en) Systems and methods for fast simulation and visualization of sparse fluids
CN110111417A (zh) 三维局部人体模型的生成方法、装置及设备
CN114596400B (zh) 一种基于三维引擎批量生成法线贴图的方法
US10089782B2 (en) Generating polygon vertices using surface relief information
CN110115841B (zh) 一种游戏场景中植被对象的渲染方法和装置
CN111773719A (zh) 虚拟对象的渲染方法和装置、存储介质、电子装置
CN106898040A (zh) 虚拟资源对象渲染方法和装置
EP2709068A1 (en) Image processing apparatus
Merlo et al. 3D model visualization enhancements in real-time game engines
CN112206528A (zh) 植被模型渲染方法、装置、设备及存储介质
CN110570491A (zh) 热力图生成方法及装置
Bao et al. Realistic real-time rendering for large-scale forest scenes
CN102096948B (zh) 一种适用图形硬件的分格化方法
CN109785449A (zh) 基于ffd的人物脸部编辑及贴花方法
CN115228083A (zh) 一种资源渲染方法及装置
CN114549732A (zh) 模型的渲染方法、装置及电子设备
CN112927352A (zh) 基于压平多边形的三维场景局部区域动态压平方法及装置
CN114119821A (zh) 虚拟对象的毛发渲染方法、装置及设备
CN115908650A (zh) 动画数据的处理方法及装置、存储介质、终端
CN113838170A (zh) 目标虚拟对象的处理方法、装置、存储介质和电子装置
CN114937110B (zh) 一种gpu加速的引流线建模方法、系统、设备及介质
CN116630486B (zh) 一种基于Unity3D渲染的半自动化动画制作方法
CN117745915B (zh) 一种模型渲染方法、装置、设备及存储介质
CN117058301B (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