CN114470756A - 星空模拟方法、星空模拟装置、计算机设备及介质 - Google Patents
星空模拟方法、星空模拟装置、计算机设备及介质 Download PDFInfo
- Publication number
- CN114470756A CN114470756A CN202111666592.7A CN202111666592A CN114470756A CN 114470756 A CN114470756 A CN 114470756A CN 202111666592 A CN202111666592 A CN 202111666592A CN 114470756 A CN114470756 A CN 114470756A
- Authority
- CN
- China
- Prior art keywords
- star
- point
- target
- preset
- spherical
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/60—3D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了一种星空模拟方法、星空模拟装置、计算机设备及介质。方法包括:在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点;对预设球面模型上的每个预设球面点计算距离最近的星点,将距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及像素信息生成第一贴图,其中,预设球面模型上的预设球面点与第一贴图上的像素点一一对应;利用着色器读取第一贴图,得到第一目标星点的星点参数信息;根据第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据第一目标星点的位置信息和目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟。本发明的方法增加了星空真实感。
Description
技术领域
本发明涉及场景模拟技术领域,尤其涉及一种星空模拟方法、星空模拟装置、计算机设备及介质。
背景技术
在目前的游戏中,通常会结合不同的天气和时间生成不同的场景。例如,晚上的场景中会有星空。
现有的星空场景通过着色器将预设贴图像贴瓷砖一样平铺显示到星空模型上得到,用户能看出来不同区域的星点具有一定的重复性。但由于真实的星空中,不同片区的星星布局都是不一样的,因此,现有的星空模型方法模拟的星空具有重复性,不真实。
发明内容
有鉴于此,本申请实施例的目的是提供一种星空模拟方法、星空模拟装置、计算机设备及介质,能够解决现有星空模型方法模拟的星空不真实的问题。
为了解决上述技术问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种星空模拟方法,包括:
在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,其中,每个所述星点通过星点参数信息表示,所述星点参数信息包括第一位置参数和噪声值;
对所述预设球面模型上的每个预设球面点计算距离最近的星点,将所述距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及所述像素信息生成第一贴图,其中,所述预设球面模型上的预设球面点与所述第一贴图上的像素点一一对应;
利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息;
根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,其中,所述目标星圆的星圆参数信息包括星圆半径及目标星圆中每个目标球面点的颜色信息。
根据本申请公开的一种具体实施方式,所述在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,包括:
在预设球面模型上,根据预设星点密度值以及第一贴图的预设大小随机生成预设数量的星点。
根据本申请公开的一种具体实施方式,所述方法还包括:
每生成一个新的星点,判断所述新的星点与已生成的星点的距离是否小于等于预设距离阈值;
若是,则删除所述新的星点。
根据本申请公开的一种具体实施方式,所述在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,包括:
对预设恒星数据进行抽样,得到预设数量的恒星数据;
在预设球面模型上,根据所述恒星数据随机生成预设数量的星点。
根据本申请公开的一种具体实施方式,所述利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息,包括:
在所述预设球面模型上,确定目标区域,其中,所述目标区域包括第一目标星点;
利用着色器读取所述第一贴图中所述目标区域对应的部分,得到第一目标星点的星点参数信息。
根据本申请公开的一种具体实施方式,所述根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,实现星空模拟,包括:
根据每个目标球面点的位置信息,确定所述目标球面点在第一贴图中对应的目标像素点;
根据每个所述目标像素点的像素信息,计算每个目标球面点与对应的最近的星点之间的距离;
若所述距离大于预设星圆半径阈值,则将所述目标球面点的颜色信息设置为第一预设颜色信息;
若所述距离小于等于预设星圆半径阈值,计算所述第一目标星点对应的目标星圆的星圆半径;
若所述距离大于所述星圆半径,则将所述目标球面点的颜色信息设置为第一预设颜色信息;
若所述距离小于等于所述星圆半径,则将所述目标球面点的颜色信息设置为初始颜色,其中,所述初始颜色为第二预设颜色信息乘以所述噪声值;
根据所述噪声值及预设公式得到变化值,并乘以所述初始颜色,得到所述目标球面点的颜色信息,并根据所述颜色信息渲染所述目标球面点,以得到目标星圆并实现星空模拟。
根据本申请公开的一种具体实施方式,所述方法还包括:
对于所述距离小于等于所述星圆半径的每个目标球面点,若所述目标球面点的颜色信息小于预设颜色信息阈值,则将所述目标球面点的颜色信息更改为所述预设颜色信息阈值。
根据本申请公开的一种具体实施方式,所述方法还包括:
根据smoothstep函数及所述距离,对所述目标星圆中每个目标球面点的颜色信息进行处理。
根据本申请公开的一种具体实施方式,所述方法还包括:
在预设星座图像中,提取预设星座中每个星点的坐标,生成第二贴图;
利用着色器读取所述第二贴图,得到第二目标星点的位置信息;
将与所述第二目标星点的距离小于预设距离阈值的所述第一目标星点替换为所述第二目标星点。
第二方面,本申请实施例提供了一种星空模拟装置,包括:
星点生成模块,用于在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,其中,每个所述星点通过星点参数信息表示,所述星点参数信息包括第一位置参数和噪声值;
贴图生成模块,用于对所述预设球面模型上的每个预设球面点计算距离最近的星点,将所述距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及所述像素信息生成第一贴图,其中,所述预设球面模型上的预设球面点与所述第一贴图上的像素点一一对应;
读取模块,用于利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息;
渲染模块,用于根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,其中,所述目标星圆的星圆参数信息包括星圆半径及目标星圆中每个目标球面点的颜色信息。
第三方面,本申请实施例提供了一种计算机设备,包括处理器和存储器,所述存储器上存储有程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
本申请的上述实施例提供的星空模拟方法、星空模拟装置、计算机设备及介质,每个星点的星点参数信息都是随机生成的,从而使得星圆的星圆参数信息同样是随机的。这样,避免了星点的重复性,增加了真实感。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本申请实施例提供的一种星空模拟方法的流程图;
图2a示出了本申请实施例提供的一张第一贴图的示意图;
图2b示出了本申请实施例提供的另一张第一贴图的示意图;
图3示出了本申请实施例提供的一张星空的示意图;
图4示出了本申请实施例提供的一张北斗七星的示意图;
图5示出了本申请实施例提供的一种星空模拟装置的结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
在游戏场景设计中,通常通过贴图、模型以及着色器(shader)一起实现物体图像的显示。贴图是预置的图片,在本申请中,贴图用于存储星点数据。模型通常通过多个相连的三角形平面来实现。着色器则是一段用来实现图像渲染的计算机程序。
在本申请中,采用球面模型来模拟星空。星星可以抽象成一个圆点,因此可以通过设置在球面模型上的星圆来呈现。星圆所表示的圆点是一个有一定半径的平面图形。球面模型上球面点P处的星圆实际是以P为圆心的一定半径范围内的所有点构成的图形,是个平面,假如这个平面垂直于点P与球面模型的球心的连线,那么除了点P之外,星圆上其余任何点都不属于球面。但是真正渲染出来的星圆是球面点P处的星圆在球面上的投影区域,是个曲面。综上所述,为了计算和描述方便,认为星圆是一个平面,实际渲染出来的星圆是个近似平面的曲面。
进一步的,星圆又可以抽象成星圆的圆心所在的点,也就是星点。需要说明的是,广义的星点指的是星圆的圆心所对应的球面模型中的点加上噪声值参数,即同时包含位置信息和噪声值,其中位置信息由三个参数表示,也就是星点由四个参数表示。星点可以理解为一种特殊的点,是对球面模型中的点的继承,具有球面模型中的点的所有特征,还具有它独有的特征。
狭义的星点不包含噪声值参数,就是球面模型中的点,只包含位置信息。
在本申请中涉及到星点的论述,都应该按广义来理解。狭义的概念仅在有些情况下使用,且含义是自动转换的。
请参阅图1,图1为本申请实施例提供的星空模拟方法的流程图,如图1所示,该方法包括以下步骤:
步骤101、在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,其中,每个所述星点通过星点参数信息表示,所述星点参数信息包括第一位置参数和噪声值。
具体的,预设球面模型上的每个球面点的位置信息可以通过两种方式表示,且两种方式可以相互转换。第一种,以所述预设球面模型的球心为原点,所述预设球面模型的底面为xy平面,所述预设球面模型的延伸方向为z轴,构建直角坐标系,那么预设球面模型上的每个球面点都可以用(x,y,z)来表示它的位置信息,在本申请中,将(x,y,z)称为三维直角坐标;第二种,在此基础上,基于球坐标系,预设球面模型上的每个球面点还可以用(r,θ,)来表示球面点的位置信息,其中,r表示原点到球面点的距离,θ表示原点到球面点的连线与正z轴之间的夹角,表示原点到球面点的连线在xy平面的投影线与正x轴之间的方位角。在本申请中,预设球面模型为单位球面模型,对于每个球面点,r的取值都是确定且一致的,因此用(θ,)来表示球面点的位置信息,在本申请中,将(θ,)称为二维球坐标。
预设球面模型把游戏场景内的其他物体包在内部。假设预设球面模型的半径足够大,游戏角色站在球心附近看球面上的点时,就跟人站在地面看天空上的星星一样。
在本实施例中,第一位置信息为三维直角坐标。后文的第二位置信息为二维球坐标。
噪声值是一个随机值。在本实施例中,噪声值的取值范围为[0,1]。优选地,噪声值的取值范围为[0.5,1],从而避免随机值之间的差异过大,同时还使得后续在利用噪声值生成星圆半径及星圆中每个球面点的颜色信息时,避免得到的数值过小。
由于每个星点的星点参数信息,即第一位置参数和噪声值都是随机生成的,因此,避免了星点的重复性,增加了真实感。
一种可选的实施方式中,步骤101包括:
在预设球面模型上,根据预设星点密度值以及第一贴图的预设大小随机生成预设数量的星点。
具体的,若第一贴图的预设大小为256*256个像素,预设星点密度值为0.05,则欲生成的星点数量,也即星点数量的期望值就是65536*0.05个,向下取整后为3276个。可以理解的是,第一贴图的预设大小及预设星点密度值都可以根据实际需求设定,预设星点密度值一般都设置得较小,以使星星较稀疏,降低星点密度。
根据预设星点密度值以及第一贴图的预设大小生成星点,由于这两个参数都可以根据实际需求设定,使得星点的数量可以根据实际需求进行调整,提高了星点数量的可调性。
在此基础上,所述方法还包括:
每生成一个新的星点,判断所述新的星点与已生成的星点的距离是否小于等于预设距离阈值;
若是,则删除所述新的星点。
具体的,生成过程中,通过判断每个新生成的星点是否和已生成的星点重叠,即两者之间的距离是否小于等于预设距离阈值,如果是,就认为重叠,将新生成的星点丢弃。在本实施例中,预设距离阈值为预设星圆半径的两倍。可以理解的是,最后实际生成的星点数量可能会小于期望值,但避免了星点的重叠,增加了真实感。
一种可选的实施方式中,步骤101包括:
对预设恒星数据进行抽样,得到预设数量的恒星数据;
在预设球面模型上,根据所述恒星数据随机生成预设数量的星点。
具体的,预设恒星数据为已公开的恒星数据,如依巴谷星表。由于星点的位置信息是根据已公开的恒星数据得到的,是存在于真实星空中的星星的数据,进一步增加了真实感。可以理解的是,在此种实施方式中,星点的位置信息是基于真实数据得到的,但噪声值仍然是随机生成的。同时,在抽样后,同样可以比较星点之间的距离,将距离小于等于预设距离阈值的两个星点中的任意一个剔除。
步骤102、对所述预设球面模型上的每个预设球面点计算距离最近的星点,将所述距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及所述像素信息生成第一贴图,其中,所述预设球面模型上的预设球面点与所述第一贴图上的像素点一一对应。
具体的,预设球面模型上包括无数个球面点。预设球面点,是球面点的一部分,指的是与贴图上的每个像素点一一对应的球面点,即贴图上有多少个像素,预设球面模型上就有多少个预设球面点,在本实施例中,第一贴图为长宽相同的正方形。例如,以256*256的贴图为例,预设球面模型上包括256*256,即65536个预设球面点。
在本实施例中,像素信息采用RGBA表示。
RGBA是代表Red(红色)Green(绿色)Blue(蓝色)和Alpha通道的色彩空间。Alpha通道一般用作不透明度参数。如果一个像素的Alpha通道数值为0%,那它就是完全透明的,也就是看不见的;而数值为100%则意味着一个完全不透明的像素。在0%和100%之间的值则使得背景可以透过像素显示出来,就像透过玻璃。Alpha通道的数值可以用百分比、整数或者像RGB参数那样用0到1的实数表示,本实施例中,Alpha通道值的取值范围为[0,1]。
对于预设球面模型上的任意一个预设球面点,可以通过计算找到距离它最近的星点N,星点N可以通过四个参数表示,即(x,y,z,a),其中,x、y、z为星点N的第一位置信息,a为噪声值,x、y、z、a的取值范围均为[0,1]。
假设每个像素可以抽象成一个正方形,则可以用正方形左下角的顶点代表这个像素,称为像素点。像素点虽然只是一个点,但它代表了像素抽象成的正方形,因此如果正方形上的点和一个其他图形上的点一一对应,则该像素点可以对应该图形的所有点。
对于贴图上的与所述预设球面点对应的一个像素点P,像素点的像素信息也可以通过四个参数表示,即(R,G,B,A),其中,R、G、B为像素点的颜色信息,A为Alpha通道值;以贴图的左下角为原点,两条边为xy轴构建二维直角坐标系,像素点P的位置信息可以通过(x,y)表示,x和y的取值范围均为[0,1]。例如,以256*256的贴图为例,贴图左下角的第一个像素点P1的坐标为(0,0),P1右上角相邻的像素点P2的坐标为(1/256,1/256)。
在本实施例中,因为像素点可以抽象成正方形,所以长宽相同的贴图也可以抽象成一个正方形,该正方形由贴图中每个像素点对应的正方形组成,根据上文,可以理解的是,由于只需要θ和两个参数就可以表示预设球面模型上的一个点,又因为对于一个正方形也可以用两个参数来表示它上面的任意一个点,参数取值都是[0,1],所以预设球面模型上的点可以和正方形上的点一一对应,进而使得贴图的每一个像素点与预设球面模型上的一个预设球面点一一对应,因此,预设球面点的第二位置信息和像素点的位置信息可以相互转换。
因此,星点可以用四个元素表示,正好一个像素点也有RGBA四个子元素,他们的取值范围均为[0,1],那么可以将所述距离最近的星点N的星点参数信息作为对应的像素点P的像素信息。然后根据每个预设球面点的第二位置参数与贴图像素点的对应关系来确定所述像素信息的存储位置,把所述像素信息存储到第一贴图中。对每一个预设球面点都进行这样的操作,即可生成第一贴图。请一并参阅图2a和图2b,图2a和图2b分别示出了本实施例提供的一张第一贴图,图2a所示的第一贴图对应星星比较稠密的星空,图2b所示的第一贴图对应星星比较稀疏的星空。第一贴图中的像素点可以根据自身的像素信息,即RGBA,显示对应的颜色。
可以理解的是,第一贴图中的每个像素点的像素信息即为与对应的预设球面模型中的预设球面点距离最近的星点的星点参数信息,因此,第一贴图存储了所有星点的星点参数信息。
步骤103、利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息。
具体的,由于第一贴图中存储了所有星点的星点参数信息,因此,利用着色器读取第一贴图,即可得到预设球面模型上的所有星点的星点参数信息,进而得到第一目标星点的星点参数信息。第一目标星点即为所有星点的一部分。可以理解的是,并不是预设球面模型上的所有球面点都需要进行渲染,只需要对预设球面模型上的部分区域内的所有球面点进行渲染,因此,一种可选的实施方式中,步骤103包括:
在所述预设球面模型上,确定目标区域,其中,所述目标区域包括第一目标星点;
利用着色器读取所述第一贴图中所述目标区域对应的部分,得到第一目标星点的星点参数信息。
具体的,在游戏场景中,目标区域与游戏角色的视角有关,视角外的星点不需要显示,可以根据游戏角色的视角确定预设球面模型上的目标区域。因此,利用着色器读取所述第一贴图中所述目标区域对应的部分,从而降低了数据处理量,提高了渲染效率。
步骤104、根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,其中,所述目标星圆的星圆参数信息包括星圆半径及目标星圆中每个目标球面点的颜色信息。
具体的,根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,再根据所述第一目标星点的位置信息及所述目标星圆的星圆参数信息,也即每个星圆的中心的位置、星圆半径、星圆中每个球面点的颜色信息,进行渲染,即可得到星圆。预设数量的目标星圆的组合,实现了星空的模拟。
一种可选的实施方式中,步骤104包括:
根据每个目标球面点的位置信息,确定所述目标球面点在第一贴图中对应的目标像素点;
根据每个所述目标像素点的像素信息,计算每个目标球面点与对应的最近的星点之间的距离;
若所述距离大于预设星圆半径阈值,则将所述目标球面点的颜色信息设置为第一预设颜色信息;
若所述距离小于等于预设星圆半径阈值,计算所述第一目标星点对应的目标星圆的星圆半径;
若所述距离大于所述星圆半径,则将所述目标球面点的颜色信息设置为第一预设颜色信息;
若所述距离小于等于所述星圆半径,则将所述目标球面点的颜色信息设置为初始颜色,其中,所述初始颜色为第二预设颜色信息乘以所述噪声值;
根据所述噪声值及预设公式得到变化值,并乘以所述初始颜色,得到所述目标球面点的颜色信息,并根据所述颜色信息渲染所述目标球面点,以得到目标星圆并实现星空模拟。
具体的,目标球面点,指的是每个需要渲染到屏幕上的球面点,是屏幕上的像素点对应的球面点,包括星圆范围内的所有球面点。针对预设球面模型上的一个目标球面点P,获取P点的第一位置参数,先转换为第二位置参数,然后根据第二位置参数从第一贴图中找到对应的目标像素点P’。
可以理解的是,三维直角坐标比二维球坐标更通用,通常着色器获取的也是三维直角坐标。
从第一贴图的生成过程可知,目标像素点P’中存储了与目标像素点P’对应的目标球面点P距离最近的星点N的星点参数信息。这样,就可以计算目标球面点P与星点N的距离。
先判断距离是否大于预设星圆半径阈值。若是,则将目标球面点P的颜色信息设置为第一预设颜色信息,本实施例中,第一预设颜色信息为(0,0,0,0),即为无色,不显示,并结束目标球面点P的渲染过程。通过上述步骤,完成了球面点的初筛,即初步排除一些不需要进一步渲染的球面点,保证渲染效率。可以理解的是,预设球面模型上的绝大部分需要渲染到屏幕上的球面点都在这一步被排除掉。
若不是,则对于每个星圆,根据预设星圆半径和噪声值,计算星圆半径。可以理解的是,由于每个星点的噪声值不一样,因此每个星圆的星圆半径也不一样,从而实现了星圆半径的随机,使得生成的星圆的大小不一,进一步增加了真实感。
进一步地,判断距离是否大于星圆半径。若是,则同样将目标球面点P的颜色信息设置为第一预设颜色信息,即为无色,不显示,并结束目标球面点P的渲染过程;若不是,则将目标球面点P的颜色信息设置为初始颜色。在本实施例中,初始颜色为第二预设颜色信息乘以噪声值a,第二预设颜色信息为(1,1,1,1),即为白色,则初始颜色为(a,a,a,a)。通过上述步骤,完成了球面点的复筛,即在初筛的基础上,再排除一些不需要进一步渲染的点,保证渲染效率。
可以理解的是,球面点的RGB值相同则显示为灰度色,灰度色是指黑色、白色以及介于两者之间的一系列从黑到白的过渡色,每个灰度色对应一个亮度值,不同的RBGA的取值会导致不同的球面点的亮度不同;同时,由于每个星点的噪声值不一样,因此,每个星圆中的球面点的颜色信息也不一样,从而实现了星圆最大亮度的随机,使得生成的星圆的最大亮度不一,进一步增加了真实感。
最后,根据噪声值及预设公式得到变化值,利用变化值乘以初始颜色,对于每个球面点,在某个时间点t,可以得到一个随时间动态变化的变化值W,进而得到一个随时间动态变化的颜色信息。本实施例中,预设公式为余弦曲线公式cos(ωt)。可以理解的是,预设公式还可以为sin(ωt),其中,ω的取值为距离球面点最近的星点的噪声值a,t为游戏引擎标准时间。可以理解的是,变化值W的取值范围为[0,1]。用这个值乘以球面点P的初始颜色,则球面点P的颜色信息变为(aW,aW,aW,aW)。
图3示出了本申请实施例提供的一张星空的示意图,图3是通过本申请提供的星空模拟方法得到的。可以理解的是,通过上述步骤,使得星星的颜色信息是动态变化的,可以实现星星闪烁的效果。可以理解的是,由于每个星点的噪声值不一样,因此不同星圆的闪烁时间点也不一样,从而实现了星圆的闪烁时间的随机,使得在一个时间点,不同的星圆的闪烁效果不一,进一步增加了真实感。
一种可选的实施方式中,在此基础上,所述方法还包括:
对于所述距离小于等于所述星圆半径的每个目标球面点,若所述目标球面点的颜色信息小于预设颜色信息阈值,则将所述目标球面点的颜色信息更改为所述预设颜色信息阈值。
可以理解的是,预设颜色信息阈值可以根据实际需求设定,具体的值可以为0.3、0.5等。注意需要对颜色信息进行一个限制,比如限制到0.3到1之间,否则如果颜色信息对应各参数的数值过低会让星圆的最低亮度过低,效果较差,影响用户观感。
一种可选的实施方式中,在此基础上,所述方法还包括:
根据smoothstep函数及所述距离,对所述目标星圆中每个目标球面点的颜色信息进行处理。
具体的,根据smoothstep函数及所述距离,计算渐变参数F,渐变参数F的取值范围为[0,1]。用渐变参数乘以颜色信息,即可得到球面点的最终颜色(aWF,aWF,aWF,aWF)。
通过上述处理,使得星圆可以产生渐变的效果,中间颜色深,周围颜色浅,避免整个星圆都是一个颜色,进一步增加了真实感。
一种可选的实施方式中,所述方法还包括:
在预设星座图像中,提取预设星座中每个星点的坐标,生成第二贴图;
利用着色器读取所述第二贴图,得到第二目标星点的位置信息;
将与所述第二目标星点的距离小于预设距离阈值的所述第一目标星点替换为所述第二目标星点。
具体的,为了进一步增加星空的真实感,可以在上述方案的基础上,加上已有的星座中的星星,从而实现特定星座的模拟。
以大熊座的北斗七星为例,请参阅图4,图4示出了本申请实施例提供的一张北斗七星的示意图。以图中的左下角为原点,构建二维直角坐标系,得到北斗七星的七个星点的坐标。再根据二维直角坐标与二维球坐标之间的映射关系,在预设球面模型中生成对应的七个星点。可以理解的是,后续由预设球面模型中的星点得到第二贴图的过程与第一贴图类似,为避免重复,这里不再赘述。
再利用着色器读取所述第二贴图,得到七个星点的位置信息。同时,由于在第一贴图中可能存在与第二目标星点的位置重叠的第一目标星点,因此需要将这些第一目标星点剔除,以避免星点的重叠。
需要说明的是,在本实施例中,不考虑北斗七星的方位变化,即不改变特定星座中的星星的方位,因为固定方位已经足以满足常规游戏场景的需求。
本申请实施例中提供的星空模拟方法,每个星点的星点参数信息都是随机生成的,从而使得星圆的星圆参数信息同样是随机的。这样,避免了星点的重复性,增加了真实感。
与上述方法实施例相对应,请参见图5,图5为本申请实施例提供的星空模拟装置的结构示意图,如图5所示,星空模拟装置500包括:
星点生成模块501,用于在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,其中,每个所述星点通过星点参数信息表示,所述星点参数信息包括第一位置参数和噪声值;
贴图生成模块502,用于对所述预设球面模型上的每个预设球面点计算距离最近的星点,将所述距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及所述像素信息生成第一贴图,其中,所述预设球面模型上的预设球面点与所述第一贴图上的像素点一一对应。
读取模块503,用于利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息;
渲染模块504,用于根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,其中,所述目标星圆的星圆参数信息包括星圆半径及目标星圆中每个目标球面点的颜色信息。
本申请实施例提供的星空模拟装置能够实现图1的方法实施例中星空模拟方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
可选的,本申请实施例还提供一种计算机设备,包括处理器和存储器,所述存储器上存储有程序或指令,该程序或指令被处理器执行时实现上述星空模拟方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
可选的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述星空模拟方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的计算机设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (12)
1.一种星空模拟方法,其特征在于,包括:
在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,其中,每个所述星点通过星点参数信息表示,所述星点参数信息包括第一位置参数和噪声值;
对所述预设球面模型上的每个预设球面点计算距离最近的星点,将所述距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及所述像素信息生成第一贴图,其中,所述预设球面模型上的预设球面点与所述第一贴图上的像素点一一对应;
利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息;
根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,其中,所述目标星圆的星圆参数信息包括星圆半径及目标星圆中每个目标球面点的颜色信息。
2.根据权利要求1所述的星空模拟方法,其特征在于,所述在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,包括:
在预设球面模型上,根据预设星点密度值以及第一贴图的预设大小随机生成预设数量的星点。
3.根据权利要求2所述的星空模拟方法,其特征在于,所述方法还包括:
每生成一个新的星点,判断所述新的星点与已生成的星点的距离是否小于等于预设距离阈值;
若是,则删除所述新的星点。
4.根据权利要求1所述的星空模拟方法,其特征在于,所述在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,包括:
对预设恒星数据进行抽样,得到预设数量的恒星数据;
在预设球面模型上,根据所述恒星数据随机生成预设数量的星点。
5.根据权利要求1所述的星空模拟方法,其特征在于,所述利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息,包括:
在所述预设球面模型上,确定目标区域,其中,所述目标区域包括第一目标星点;
利用着色器读取所述第一贴图中所述目标区域对应的部分,得到第一目标星点的星点参数信息。
6.根据权利要求1所述的星空模拟方法,其特征在于,所述根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,包括:
根据每个目标球面点的位置信息,确定所述目标球面点在第一贴图中对应的目标像素点;
根据每个所述目标像素点的像素信息,计算每个目标球面点与对应的最近的星点之间的距离;
若所述距离大于预设星圆半径阈值,则将所述目标球面点的颜色信息设置为第一预设颜色信息;
若所述距离小于等于预设星圆半径阈值,计算所述第一目标星点对应的目标星圆的星圆半径;
若所述距离大于所述星圆半径,则将所述目标球面点的颜色信息设置为第一预设颜色信息;
若所述距离小于等于所述星圆半径,则将所述目标球面点的颜色信息设置为初始颜色,其中,所述初始颜色为第二预设颜色信息乘以所述噪声值;
根据所述噪声值及预设公式得到变化值,并乘以所述初始颜色,得到所述目标球面点的颜色信息,并根据所述颜色信息渲染所述目标球面点,以得到目标星圆并实现星空模拟。
7.根据权利要求6所述的星空模拟方法,其特征在于,所述方法还包括:
对于所述距离小于等于所述星圆半径的每个目标球面点,若所述目标球面点的颜色信息小于预设颜色信息阈值,则将所述目标球面点的颜色信息更改为所述预设颜色信息阈值。
8.根据权利要求6所述的星空模拟方法,其特征在于,所述方法还包括:
根据smoothstep函数及所述距离,对所述目标星圆中每个目标球面点的颜色信息进行处理。
9.根据权利要求1所述的星空模拟方法,其特征在于,所述方法还包括:
在预设星座图像中,提取预设星座中每个星点的坐标,生成第二贴图;
利用着色器读取所述第二贴图,得到第二目标星点的位置信息;
将与所述第二目标星点的距离小于预设距离阈值的所述第一目标星点替换为所述第二目标星点。
10.一种星空模拟装置,其特征在于,包括:
星点生成模块,用于在预设球面模型上,基于预设规则随机生成预设数量的球面点对应的星点,其中,每个所述星点通过星点参数信息表示,所述星点参数信息包括第一位置参数和噪声值;
贴图生成模块,用于对所述预设球面模型上的每个预设球面点计算距离最近的星点,将所述距离最近的星点参数信息作为对应的像素点的像素信息,并根据每个球面点的第二位置参数及所述像素信息生成第一贴图,其中,所述预设球面模型上的预设球面点与所述第一贴图上的像素点一一对应;
读取模块,用于利用着色器读取所述第一贴图,得到第一目标星点的星点参数信息;
渲染模块,用于根据所述第一目标星点的星点参数信息,生成目标星圆的星圆参数信息,并根据所述第一目标星点的位置信息和所述目标星圆的星圆参数信息进行渲染得到目标星圆,以实现星空模拟,其中,所述目标星圆的星圆参数信息包括星圆半径及目标星圆中每个目标球面点的颜色信息。
11.一种计算机设备,其特征在于,包括处理器和存储器,所述存储器上存储有程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-9中任一项所述的星空模拟方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现如权利要求1-9中任一项所述的星空模拟方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111666592.7A CN114470756A (zh) | 2021-12-31 | 2021-12-31 | 星空模拟方法、星空模拟装置、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111666592.7A CN114470756A (zh) | 2021-12-31 | 2021-12-31 | 星空模拟方法、星空模拟装置、计算机设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114470756A true CN114470756A (zh) | 2022-05-13 |
Family
ID=81508196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111666592.7A Pending CN114470756A (zh) | 2021-12-31 | 2021-12-31 | 星空模拟方法、星空模拟装置、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114470756A (zh) |
-
2021
- 2021-12-31 CN CN202111666592.7A patent/CN114470756A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11257286B2 (en) | Method for rendering of simulating illumination and terminal | |
CN111508052B (zh) | 三维网格体的渲染方法和装置 | |
CN110115841B (zh) | 一种游戏场景中植被对象的渲染方法和装置 | |
US20230230311A1 (en) | Rendering Method and Apparatus, and Device | |
US20240087219A1 (en) | Method and apparatus for generating lighting image, device, and medium | |
WO2023066121A1 (zh) | 三维模型的渲染 | |
US11288774B2 (en) | Image processing method and apparatus, storage medium, and electronic apparatus | |
US8854392B2 (en) | Circular scratch shader | |
US20190206109A1 (en) | Method, apparatus and device for generating live wallpaper and medium | |
CN109544674B (zh) | 一种体积光实现方法及装置 | |
CN112150598A (zh) | 云层的渲染方法、装置、设备及存储介质 | |
CN112675545A (zh) | 地表仿真画面的显示方法和装置、存储介质及电子设备 | |
CN116402931A (zh) | 体积渲染方法、装置、计算机设备和计算机可读存储介质 | |
WO2015122302A1 (ja) | 3次元地図表示システム | |
CN103093505A (zh) | 山体模型的分层设色效果实现方法 | |
EP3437072B1 (en) | System and method for rendering points without gaps | |
CN114470756A (zh) | 星空模拟方法、星空模拟装置、计算机设备及介质 | |
WO2022264793A1 (ja) | 表示媒体、処理装置、プログラムおよびプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
CN115063330A (zh) | 头发渲染方法、装置、电子设备及存储介质 | |
KR100848687B1 (ko) | 3차원 그래픽 처리 장치 및 그것의 동작 방법 | |
CN115272628A (zh) | 一种三维模型的渲染方法、装置、计算机设备及存储介质 | |
CN115409962A (zh) | 虚幻引擎内构建坐标系统的方法、电子设备和存储介质 | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
CN111773683A (zh) | 一种基于移动终端的文字显示方法及装置 | |
KR100818286B1 (ko) | 안개 효과를 고려하여 3차원 그래픽스 데이터를 렌더링하는방법 및 장치 |
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 |