CN117689787A - 一种3d凸透镜投影仿真方法及终端 - Google Patents
一种3d凸透镜投影仿真方法及终端 Download PDFInfo
- Publication number
- CN117689787A CN117689787A CN202311677365.3A CN202311677365A CN117689787A CN 117689787 A CN117689787 A CN 117689787A CN 202311677365 A CN202311677365 A CN 202311677365A CN 117689787 A CN117689787 A CN 117689787A
- Authority
- CN
- China
- Prior art keywords
- convex lens
- lens body
- negative
- positive
- light source
- 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
- 238000004088 simulation Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 49
- 239000000463 material Substances 0.000 claims abstract description 90
- 230000000694 effects Effects 0.000 claims abstract description 60
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012634 optical imaging Methods 0.000 claims description 6
- 238000003384 imaging method Methods 0.000 abstract description 34
- 238000010586 diagram Methods 0.000 description 10
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 239000011324 bead Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B5/00—Electrically-operated educational appliances
- G09B5/02—Electrically-operated educational appliances with visual presentation of the material to be studied, e.g. using film strip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- Business, Economics & Management (AREA)
- Educational Administration (AREA)
- Educational Technology (AREA)
- Lenses (AREA)
Abstract
本发明提供的一种3D凸透镜投影仿真方法及终端,通过在3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的两个摄像头,并将两个摄像头拍摄的图像分别绘制到创建的正向材质和负向材质中,后续通过获取光源和光屏的方向,验证光源、凸透镜和光屏彼此之间成像的有效性,并获取光源和光屏的位置和与凸透镜本体的距离,根据成像原理为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中,整个过程能实现以极低的性能消耗模拟凸透镜投影成像效果。
Description
技术领域
本发明涉及软件应用技术领域,特别涉及一种3D凸透镜投影仿真方法及终端。
背景技术
在物理学教学中,经常需要对现实世界的物体进行仿真来进行物理学现象的展示和教学,其中凸透镜作为光学成像的必修内容,在K12教育中尤为重要。
传统的利用光学原理进行凸透镜演示存在使用环境的局限性,无法满足每个学习者实操的需求,现有出现利用3D仿真软件(例如Unity 3D)来对凸透镜投影成像过程进行仿真,但依然存在如下问题:
1)由于凸透镜成像原理并非简单的小孔成像,存在物距、焦距和像距等参数,不同参数条件下成像不一致,在软件中难以控制。
2)凸透镜成像仿真需要对环境进行打印成像,在不同的操作条件下,打印成像占据内存极高,软件性能消耗大。
发明内容
本发明所要解决的技术问题是:提供一种3D凸透镜投影仿真方法及终端,以极低的性能消耗模拟凸透镜投影成像效果。
为了解决上述技术问题,本发明采用的技术方案为:
一种3D凸透镜投影仿真方法,包括步骤:
S1、在当前3D场景中创建凸透镜本体、光源和光屏,并在所述凸透镜本体中心处设置拍摄方向相反的正向摄像头和负向摄像头,定义所述正向摄像头的拍摄方向为所述凸透镜本体的正方向,所述负向摄像头的拍摄方向为所述凸透镜本体的负方向;
S2、创建正向材质和负向材质,并将所述正向摄像头和所述负向摄像头拍摄的图像分别绘制到所述正向材质和所述负向材质中;
S3、获取光源所在的方向、位置以及距所述凸透镜本体的距离,同时在所述凸透镜本体的中心处沿所述凸透镜本体的正方向和负方向分别发射一条射线,当所述射线碰撞到所述光屏所在的层级时,记录所述光屏所在的方向、位置以及距所述凸透镜本体的距离;
S4、判断所述光源和所述光屏所在的方向是否位于所述凸透镜本体的两侧,若是则进入步骤S5;
S5、根据所述光源和所述光屏的位置以及距所述凸透镜本体的距离,为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中。
为了解决上述技术问题,本发明采用的另一技术方案为:
一种3D凸透镜投影仿真终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时完成一种3D凸透镜投影仿真方法中的步骤。
本发明的有益效果在于:提供一种3D凸透镜投影仿真方法及终端,通过在3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的两个摄像头,并将两个摄像头拍摄的图像分别绘制到创建的正向材质和负向材质中,后续通过获取光源和光屏的方向,验证光源、凸透镜和光屏彼此之间成像的有效性,并获取光源和光屏的位置和与凸透镜本体的距离,根据成像原理为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中,整个过程能实现以极低的性能消耗模拟凸透镜投影成像效果。
附图说明
图1为本发明实施例中的一种3D凸透镜投影仿真方法的流程图;
图2为本发明实施例中的一种3D凸透镜投影仿真方法中创建凸透镜本体、光源和光屏的仿真示意图;
图3为本发明实施例中的一种3D凸透镜投影仿真方法中寻找光源的仿真示意图;
图4为本发明实施例中的一种3D凸透镜投影仿真方法中寻找光屏的仿真示意图;
图5为本发明实施例中的一种3D凸透镜投影仿真方法中进行有效性验证的仿真示意图一;
图6为本发明实施例中的一种3D凸透镜投影仿真方法中进行有效性验证的仿真示意图二;
图7为本发明实施例中的一种3D凸透镜投影仿真方法中设置模糊效果、放大效果以及投影效果的仿真示意图一;
图8为本发明实施例中的一种3D凸透镜投影仿真方法中设置模糊效果、放大效果以及投影效果的仿真示意图二;
图9为本发明实施例中的一种3D凸透镜投影仿真方法中设置模糊效果、放大效果以及投影效果的仿真示意图三;
图10为本发明实施例中的一种3D凸透镜投影仿真终端的结构示意图;
标号说明:
1、一种3D凸透镜投影仿真终端;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1至图9,一种3D凸透镜投影仿真方法,包括步骤:
S1、在当前3D场景中创建凸透镜本体、光源和光屏,并在所述凸透镜本体中心处设置拍摄方向相反的正向摄像头和负向摄像头,定义所述正向摄像头的拍摄方向为所述凸透镜本体的正方向,所述负向摄像头的拍摄方向为所述凸透镜本体的负方向;
S2、创建正向材质和负向材质,并将所述正向摄像头和所述负向摄像头拍摄的图像分别绘制到所述正向材质和所述负向材质中;
S3、获取光源所在的方向、位置以及距所述凸透镜本体的距离,同时在所述凸透镜本体的中心处沿所述凸透镜本体的正方向和负方向分别发射一条射线,当所述射线碰撞到所述光屏所在的层级时,记录所述光屏所在的方向、位置以及距所述凸透镜本体的距离;
S4、判断所述光源和所述光屏所在的方向是否位于所述凸透镜本体的两侧,若是则进入步骤S5;
S5、根据所述光源和所述光屏的位置以及距所述凸透镜本体的距离,为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中。
从上述描述可知,本发明的有益效果在于:提供一种3D凸透镜投影仿真方法及终端,通过在3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的两个摄像头,并将两个摄像头拍摄的图像分别绘制到创建的正向材质和负向材质中,后续通过获取光源和光屏的方向,验证光源、凸透镜和光屏彼此之间成像的有效性,并获取光源和光屏的位置和与凸透镜本体的距离,根据成像原理为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中,整个过程能实现以极低的性能消耗模拟凸透镜投影成像效果。
进一步地,所述步骤S1还包括:
为所述光源设置第一层级,将所述光源放置在所述第一层级中;
为所述光屏设置第二层级,将所述光屏放置在所述第二层级中。
由上述描述可知,为光源和光屏设置放置的层级,以便摄像头进行渲染。
进一步地,所述步骤S1还包括:
将所述正向摄像头和所述负向摄像头的背景设置为黑色,并定义所述正向摄像头只能渲染所述光源所在的所述第一层级,定义所述正向摄像头和所述负向摄像头只能渲染所述光源所在的所述第一层级。
由上述描述可知,将两个摄像头的背景均设置为黑色,以确保摄像头对光源所在的层级进行渲染的效果。
进一步地,所述步骤S1还包括:
在所述凸透镜本体的中心处创建正向贴花组件和负向贴花组件,定义所述正向贴花组件的朝向为所述凸透镜的正方向,定义所述负向贴花组件的朝向为所述凸透镜的负方向,并初始化所述正向贴花组件和所述负向贴花组件为禁用状态。
由上述描述可知,贴花组件可以将一个材质绘制到另一个材质上,就像在一张画上贴了一些图案,可以提高仿真效果。
进一步地,所述步骤S2具体为:
创建正向材质和负向材质,并启用所述正向贴花组件将所述正向摄像头拍摄的图像绘制到所述正向材质上,启用所述负向贴花组件将所述负向摄像头拍摄的图像绘制到所述负向材质上。
由上述描述可知,采用贴花组件即可将摄像头拍摄的图像贴图到创建的材质上,以便后续对摄像头拍摄的图像进行模糊和缩放等处理,进一步提高仿真效果。
进一步地,所述步骤S2还包括:
分别创建正向模糊组件和负向模糊组件,并初始化正向模糊组件和负向模糊组件为禁用状态;
所述步骤S5具体为:
S51、根据光学成像物理公式1/u+1/v=1/f,得到v=f×u/(u-f),其中u为个所述光源距所述凸透镜本体的距离,记为物距u,f为所述凸透镜本体的焦距,v为像距;
S52、根据像距v以及所述光屏到所述凸透镜本体的距离,计算得到模糊参数;
S53、根据所述光屏的位置,将所述模糊参数赋值给相应的所述正向模糊组件或所述负向模糊组件,并启用所述正向模糊组件或所述负向模糊组件对所述正向材质或所述负向材质的内容进行模糊化;
S54、根据焦距f和物距u计算缩放值,基于所述缩放值和所述光源的位置对相应的所述正向材质或所述负向材质进行缩放;
S55、根据所述光源的位置,将相应的所述正向材质或所述负向材质透射到显示窗口中。
由上述描述可知,模糊组件可以将材质的内容进行模糊化,从而进一步提高仿真效果,其中进行模糊化的参数可以通过获取到的光源和光谱的方向、位置和距凸透镜本体的距离基于光学原理计算得到。
进一步地,所述步骤S1还包括:
设置所述凸透镜本体的焦距为第一预设值,并限定所述正向摄像头和所述负向摄像头可拍摄物体的最近距离为所述焦距,最远距离为所述焦距加上第二预设值,所述第二预设值为大于第一预设值且小于第一预设值的两倍。
由上述描述可知,将摄像头的拍摄距离设置在第一预设值和第二预设值之间,其中最近距离为凸透镜本体的焦距,最远距离为凸透镜本体的一倍焦距到两倍焦距之间,根据凸透镜的光学成像原理,确保摄像头拍摄得到的是放大的实像。
进一步地,所述步骤S3在获取光源所在的方向、位置以及距所述凸透镜本体的距离之前,还包括:
S301、判断所述光源是否打开,若是则进入步骤S302,否则返回光源寻找失败;
S302、判断所述光源距所述凸透镜本体的距离是否小于等于第三预设值且所述光源与所述凸透镜本体的夹角是否小于等于第四预设值,若是则进入步骤S303,否则返回光源错误;
S303、判断光源所在的方向:
若所述光源位于所述凸透镜本体的正方向上,则新建第一正向变量,表示所述凸透镜本体的正方向上的所述光源与所述凸透镜本体的距离,新建第二正向变量,表示所述凸透镜本体的正方向上的所述光源的位置;
若所述光源位于所述凸透镜本体的负方向上,则新建第一负向变量,表示所述凸透镜本体的负方向上的所述光源与所述凸透镜本体的距离,新建第二负向变量,表示所述凸透镜本体的负方向上的所述光源的位置。
由上述描述可知,在获取光源的方向、位置和与凸透镜本体的距离之前,需要判断是否能够寻找到光源,以避免光源根本不在凸透镜本体的投影成像范围内,造成成像仿真失败。
进一步地,所述步骤S3还包括:
所述射线为圆柱形射线,所述射线的半径为第五预设值;
当所述射线沿所述凸透镜本体的正方向发射碰撞到所述光屏所在的层级时,判断所述光屏位于所述凸透镜本体的正方向上,则新建第三正向变量,表示所述凸透镜本体的正方向上的所述光屏与所述凸透镜本体的距离,新建第四正向变量,表示所述凸透镜本体的正方向上的所述光屏的位置;
当所述射线沿所述凸透镜本体的负方向发射碰撞到所述光屏所在的层级时,判断所述光屏位于所述凸透镜本体的负方向上,则新建第三负向变量,表示所述凸透镜本体的负方向上的所述光屏与所述凸透镜本体的距离,新建第四负向变量,表示所述凸透镜本体的负方向上的所述光屏的位置。
由上述描述可知,同理,也需要对光屏进行寻找,采用圆柱形射线的方式,由于射线只能与光屏所在的层级碰撞,因此能够根据射线在凸透镜本体的正方向还是负方向上发生了碰撞从而快速确定光屏所在的方向,同时对圆柱形射线设置相应的半径,也有效避免了光屏不在凸透镜本体的投影成像范围内造成成像仿真失败的情况。
请参照图10,一种3D凸透镜投影仿真终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时完成上述的一种3D凸透镜投影仿真方法中的步骤。
由上述描述可知,本发明的有益效果在于:基于同一技术构思,配合上述的一种3D凸透镜投影仿真方法,提供一种3D凸透镜方法终端,通过在3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的两个摄像头,并将两个摄像头拍摄的图像分别绘制到创建的正向材质和负向材质中,后续通过获取光源和光屏的方向,验证光源、凸透镜和光屏彼此之间成像的有效性,并获取光源和光屏的位置和与凸透镜本体的距离,根据成像原理为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中,整个过程能实现以极低的性能消耗模拟凸透镜投影成像效果。
本发明提供的一种3D凸透镜投影仿真方法及终端,主要应用于3D仿真凸透镜的成像原理进行教学的场景中,下面结合具体实施例进行具体说明:
请参照图1,本发明的实施例一为:
一种3D凸透镜投影仿真方法,包括步骤:
S1、在当前3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的正向摄像头和负向摄像头,定义正向摄像头的拍摄方向为凸透镜本体的正方向,负向摄像头的拍摄方向为凸透镜本体的负方向。
其中,光源设置第一层级,将光源放置在第一层级中,为光屏设置第二层级,将光屏放置在第二层级中;同时,将正向摄像头和负向摄像头的背景设置为黑色,并定义正向摄像头只能渲染光源所在的第一层级,定义正向摄像头和负向摄像头只能渲染光源所在的第一层级。即为光源和光屏设置放置的层级,以便摄像头进行渲染,且将两个摄像头的背景均设置为黑色,以确保摄像头对光源所在的层级进行渲染的效果。
同时,步骤S1还包括:
设置凸透镜本体的焦距为第一预设值,并限定正向摄像头和负向摄像头可拍摄物体的最近距离为焦距,最远距离为焦距加上第二预设值,第二预设值为大于第一预设值且小于第一预设值的两倍。
即将摄像头的拍摄距离设置在第一预设值和第二预设值之间,其中最近距离为凸透镜本体的焦距,最远距离为凸透镜本体的一倍焦距到两倍焦距之间,根据凸透镜的光学成像原理,确保摄像头拍摄得到的是放大的实像。
S2、创建正向材质和负向材质,并将正向摄像头和负向摄像头拍摄的图像分别绘制到正向材质和负向材质中。
S3、获取光源所在的方向、位置以及距凸透镜本体的距离,同时在凸透镜本体的中心处沿凸透镜本体的正方向和负方向分别发射一条射线,当射线碰撞到光屏所在的层级时,记录光屏所在的方向、位置以及距凸透镜本体的距离。
S4、判断光源和光屏所在的方向是否位于凸透镜本体的两侧,若是则进入步骤S5。
S5、根据光源和光屏的位置以及距凸透镜本体的距离,为绘制了图像的正向材质或负向材质设置模糊效果和缩放效果,并投射到显示窗口中。
即在本实施例中,通过在3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的两个摄像头,并将两个摄像头拍摄的图像分别绘制到创建的正向材质和负向材质中,后续通过获取光源和光屏的方向,验证光源、凸透镜和光屏彼此之间成像的有效性,并获取光源和光屏的位置和与凸透镜本体的距离,根据成像原理为绘制了图像的正向材质或负向材质设置模糊效果和缩放效果,并投射到显示窗口中,整个过程能实现以极低的性能消耗模拟凸透镜投影成像效果。
本发明的实施例二为:
一种3D凸透镜投影仿真方法,在上述实施例一的基础上,在本实施例中,步骤S1还包括:
在凸透镜本体的中心处创建正向贴花组件和负向贴花组件,定义正向贴花组件的朝向为凸透镜的正方向,定义负向贴花组件的朝向为凸透镜的负方向,并初始化正向贴花组件和负向贴花组件为禁用状态。
即增加贴花组件,以便将一个材质绘制到另一个材质上,就像在一张画上贴了一些图案,可以提高仿真效果,则在本实施例中,步骤S2具体为:
创建正向材质和负向材质,并启用正向贴花组件将正向摄像头拍摄的图像绘制到正向材质上,启用负向贴花组件将负向摄像头拍摄的图像绘制到负向材质上。
即采用贴花组件即可将摄像头拍摄的图像贴图到创建的材质上,以便后续对摄像头拍摄的图像进行模糊和缩放等处理,进一步提高仿真效果。
同时在本实施例中,步骤S2还包括:
分别创建正向模糊组件和负向模糊组件,并初始化正向模糊组件和负向模糊组件为禁用状态。
则在实施例中,步骤S5具体为:
S51、根据光学成像物理公式1/u+1/v=1/f,得到v=f×u/(u-f),其中u为个光源距凸透镜本体的距离,记为物距u,f为凸透镜本体的焦距,v为像距;
S52、根据像距v以及光屏到凸透镜本体的距离,计算得到模糊参数;
S53、根据光屏的位置,将模糊参数赋值给相应的正向模糊组件或负向模糊组件,并启用正向模糊组件或负向模糊组件对正向材质或负向材质的内容进行模糊化;
S54、根据焦距f和物距u计算缩放值,基于缩放值和光源的位置对相应的正向材质或负向材质进行缩放;
S55、根据光源的位置,将相应的正向材质或负向材质透射到显示窗口中。
即模糊组件可以将材质的内容进行模糊化,从而进一步提高仿真效果,其中进行模糊化的参数可以通过获取到的光源和光谱的方向、位置和距凸透镜本体的距离基于光学原理计算得到。
本发明的实施例三为:
一种3D凸透镜投影仿真方法,在上述实施例一或实施例二的基础上,在本实施例中,步骤S3在获取光源所在的方向、位置以及距凸透镜本体的距离之前,还包括:
S301、判断光源是否打开,若是则进入步骤S302,否则返回光源寻找失败。
S302、判断光源距凸透镜本体的距离是否小于等于第三预设值且光源与凸透镜本体的夹角是否小于等于第四预设值,若是则进入步骤S303,否则返回光源错误。
S303、判断光源所在的方向:
若光源位于凸透镜本体的正方向上,则新建第一正向变量,表示凸透镜本体的正方向上的光源与凸透镜本体的距离,新建第二正向变量,表示凸透镜本体的正方向上的光源的位置;
若光源位于凸透镜本体的负方向上,则新建第一负向变量,表示凸透镜本体的负方向上的光源与凸透镜本体的距离,新建第二负向变量,表示凸透镜本体的负方向上的光源的位置。
即在获取光源的方向、位置和与凸透镜本体的距离之前,需要判断是否能够寻找到光源,以避免光源根本不在凸透镜本体的投影成像范围内,造成成像仿真失败。
同时,步骤S3还包括:
射线为圆柱形射线,射线的半径为第五预设值。
当射线沿凸透镜本体的正方向发射碰撞到光屏所在的层级时,判断光屏位于凸透镜本体的正方向上,则新建第三正向变量,表示凸透镜本体的正方向上的光屏与凸透镜本体的距离,新建第四正向变量,表示凸透镜本体的正方向上的光屏的位置;
当射线沿凸透镜本体的负方向发射碰撞到光屏所在的层级时,判断光屏位于凸透镜本体的负方向上,则新建第三负向变量,表示凸透镜本体的负方向上的光屏与凸透镜本体的距离,新建第四负向变量,表示凸透镜本体的负方向上的光屏的位置。
即同理,也需要对光屏进行寻找,采用圆柱形射线的方式,由于射线只能与光屏所在的层级碰撞,因此能够根据射线在凸透镜本体的正方向还是负方向上发生了碰撞从而快速确定光屏所在的方向,同时对圆柱形射线设置相应的半径,也有效避免了光屏不在凸透镜本体的投影成像范围内造成成像仿真失败的情况。
请参照图2至图9,本发明的实施例四为:
以软件Unity3D执行上述实施例中的方法为例:
首先对以下出现的名词进行如下解释:
1、Unity3D:简称U3D或者Unity,是一款业界流行的3D游戏制作软件。
2、Camera:摄像头,是三维软件中必要的组件,3D软件通过算法,将Camera显示的内容打印到屏幕(即用户能够观看的显示窗口)上,作为用户看到的内容。
3、Main Camera:主摄像头,在3D软件中可以同时有多个摄像头,但是其中有一个是主摄像头,比如赛车软件中面向车辆前方的是一个车厢头,后视镜也是摄像头,但是其中有一个是主摄像头,通常我们认为表示用户视角(玩家的眼睛)或者用户所在位置的摄像头为主摄像头。
4、Field Of View(FOV):相机视野,是Camera的一个可配置参数,表示相机的视野角度,即相机能够看到的水平视野的范围。
5、Texture:贴图,可以理解为皮肤,3D软件中,同一个物体用不同的“皮肤”就会显示出相同形状的不同的样子。
6、Layer:渲染层级,3D软件中为了便于管理,可以将场景中的物件进行“归类”,每一类就是一个层级。
7、焦距(f):平行光经过凸透镜的时候汇聚到一个点,这个点和凸透镜的距离叫做焦距。
8、物距(u):被透镜观察的物体,距离透镜的距离。
9、像距(v):成像位置距离透镜的距离。
本实施例的仿真方法分为三个阶段:初始化阶段、刷新阶段和销毁阶段,具体如下:
A.初始化阶段
初始化阶段在程序(模块)开始的时候,执行一次。
该阶段具体方案如下:
1、创建一个凸透镜本体并命名为:Convex,Convex在屏幕上看起来像一个透镜,如图2所示,是用户交互的主体,在本实施例中可以根据需求给Convex设置焦距:f。
2、创建一个光屏并命名为:Screen,如图2所示,Screen用于显示光源的成像效果。
3、创建一个光源并命名为:Light,如图2所示,Light用于显示光源效果。
其中,图2所示的仿真示意图中仅显示创建的凸透镜本体Convex、光源Light和光屏Screen,其他组件由于在屏幕上是不可见对象,所以没有标记处理。
4、创建一个Layer并命名为LightSourceLayer(即第一层级),将场景中的光源放到这个层级中,例如:蜡烛的火焰,L型灯的灯珠等等。
5、创建一个Layer并命名为LightScreenLayer(即第二层级),将场景中的光屏放到这个层级中。
6、创建两个材质分别命名为:lightForwardRT(即正向材质)和lightBackwardRT(即负向材质)。
7、创建一个Camera并命名为lightForwardCamera(即正向摄像头),主要作用是拍摄凸透镜正方向的光源(比如:蜡烛的火焰),并对其进行如下设置:
(1)将lightForwardCamera的位置设置为Convex的中心位置;
(2)将lightForwardCamera的朝向设置为Convex的正方向;
(3)设置lightForwardCamera背景色为黑色;
(4)设置lightForwardCamera只能渲染LightSourceLayer层级的内容;
(5)将lightForwardCamera可拍摄物体的最近距离设置为:焦距f
(6)将lightForwardCamera可拍摄物体的最远距离设置为:焦距f+1
(7)将lightForwardCamera拍摄到的内容,绘制到lightForwardRT上。
8、创建一个Camera并命名为lightBackwardCamera(即负向摄像头),主要作用是拍摄凸透镜负方向的光源(比如:蜡烛的火焰),并对其进行如下设置:
(1)将lightBackwardCamera的位置设置为Convex的中心位置;
(2)将lightBackwardCamera的朝向设置为Convex的负方向;
(3)设置lightBackwardCamera背景色为黑色;
(4)设置lightBackwardCamera只能渲染LightSourceLayer层级的内容;
(5)将lightBackwardCamera可拍摄物体的最近距离设置为:焦距f;
(6)将lightBackwardCamera可拍摄物体的最远距离设置为:焦距f+1;
(7)将lightBackwardCamera拍摄到的内容,绘制到lightBackwardRT上。
9、创建两个投影器(贴花)组件分别命名为:lightForwardProj(即正向贴花组件)和lightBackwardProj(即负向贴花组件),这个组件的功能是将一个材质绘制到另一个材质上,就像在一张画上贴了一幅画,所以也叫做贴花组件,其设置如下:
(1)设置lightForwardProj和lightBackwardProj默认都为禁用状态;
(2)设置lightForwardProj和lightBackwardProj的位置设置为Convex的中心位置;
设置lightForwardProj的朝向为为Convex的正方向,lightBackwardProj的朝向为Convex的负方向。
10、创建两个模糊组件分别命名为:lightForwardBlur(即正向模糊组件)和lightBackwardBlur(即负向模糊组件),这个组件的功能是将材质的内容进行模糊化。
B.刷新阶段
刷新阶段在每帧(每次刷新用户界面)的时候都会触发一次。
1、寻找光源,如图3所示:
(1)判断光源是否打开(例如蜡烛是否点燃),如果未打开表示寻找失败,不在执行以下步骤。
(2)判断光源距离Convex的距离和夹角,如果距离大于1米夹角大于45°,判定为光源超过可视范围,不执行以下步骤。
(3)判断光源所在方向:
①如果在Convex的正方向,新建变量lightForwardDistance(即第一正向变量)表示他们的距离,lightForwardPosition(即第二正向变量)表示光源的位置;
②如果在Convex的负反向,新建变量lightBackwardDistance(即第一负向变量)表示他们的距离,lightBackwardPosition(即第二负向变量)表示光源的位置。
2、寻找光屏,如图4所示:
(1)从Convex的正方向发射一条圆柱形的射线,操作如下:
①射线开始位置在Convex的中心位置;
②射线的朝向是Convex的正方向;
③射线的半径是0.26米(可根据具体应用决定);
④射线的最远距离是5米(可根据具体应用决定);
⑤限制射线只和LightScreenLayer层级的物体发生碰撞;
⑥如果射线碰撞到物体,新建变量screenForwardDistance(即第三正向变量)表示透镜到这个光屏的距离,screenForwardPositon(即第四正向变量)表示光屏位置。
(2)将步骤(1)的射线,调整为Convex的负反向,如果射线碰撞到物体,新建变量screenBackwardDistance(即第三负向变量)表示透镜到这个光屏的距离,screenBackwardPosition(即第四负向变量)表示光屏位置。
3、有效性验证,如图5至图6所示:
如果lightForwardPosition和screenBackwardPosition不为空,或者lightBackwardPosition和screenForwardPositon不为空,表示光源和光屏在凸透镜的两侧,执行后续步骤,否则终止执行后续步骤。
如图7至图9所示:
4、设置模糊效果
(1)在前面步骤中已经得到了光源距离透镜的距离,这里我们用物距u表示,同时也知道Convex的焦距f;
(2)根据物理公式:1/u+1/v=1/f可以得到像距:v=f*u/(u-f);
(3)根据像距v以及光屏到透镜的距离,可以计算出模糊参数。
(4)根据光屏位置,将计算出来的模糊参数赋值给lightForwardBlur或者lightBackwardBlur。
5、设置缩放效果
根据f和u计算出缩放值,并根据光源对lightForwardRT或者lightBackwardRT进行缩放。
6、设置投影效果
根据光源位置,将lightForwardRT或者lightBackwardRT投射到Screen组件(显示窗口)中。
C.销毁阶段
销毁阶段在退出程序(模块)的时候,执行一次,用于优化性能,避免内存泄漏,这个阶段销毁初始化阶段创建的所有对象。
请参照图10,本发明的实施例五为:
一种3D凸透镜投影仿真终端1,包括存储器2、处理器3以及存储在存储器2上并可在处理器3上运行的计算机程序,处理器3执行计算机程序时完成上述实施例一至四任一实施例中的一种3D凸透镜投影仿真方法中的步骤。
综上所述,本发明提供的一种3D凸透镜投影仿真方法及终端,通过在3D场景中创建凸透镜本体、光源和光屏,并在凸透镜本体中心处设置拍摄方向相反的两个摄像头,并将两个摄像头拍摄的图像分别绘制到创建的正向材质和负向材质中,后续通过获取光源和光屏的方向,验证光源、凸透镜和光屏彼此之间成像的有效性,并获取光源和光屏的位置和与凸透镜本体的距离,根据成像原理为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中,整个过程能实现以极低的性能消耗模拟凸透镜投影成像效果。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种3D凸透镜投影仿真方法,其特征在于:包括步骤:
S1、在当前3D场景中创建凸透镜本体、光源和光屏,并在所述凸透镜本体中心处设置拍摄方向相反的正向摄像头和负向摄像头,定义所述正向摄像头的拍摄方向为所述凸透镜本体的正方向,所述负向摄像头的拍摄方向为所述凸透镜本体的负方向;
S2、创建正向材质和负向材质,并将所述正向摄像头和所述负向摄像头拍摄的图像分别绘制到所述正向材质和所述负向材质中;
S3、获取光源所在的方向、位置以及距所述凸透镜本体的距离,同时在所述凸透镜本体的中心处沿所述凸透镜本体的正方向和负方向分别发射一条射线,当所述射线碰撞到所述光屏所在的层级时,记录所述光屏所在的方向、位置以及距所述凸透镜本体的距离;
S4、判断所述光源和所述光屏所在的方向是否位于所述凸透镜本体的两侧,若是则进入步骤S5;
S5、根据所述光源和所述光屏的位置以及距所述凸透镜本体的距离,为绘制了图像的所述正向材质或所述负向材质设置模糊效果和缩放效果,并投射到显示窗口中。
2.根据权利要求1所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S1还包括:
为所述光源设置第一层级,将所述光源放置在所述第一层级中;
为所述光屏设置第二层级,将所述光屏放置在所述第二层级中。
3.根据权利要求2所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S1还包括:
将所述正向摄像头和所述负向摄像头的背景设置为黑色,并定义所述正向摄像头只能渲染所述光源所在的所述第一层级,定义所述正向摄像头和所述负向摄像头只能渲染所述光源所在的所述第一层级。
4.根据权利要求1所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S1还包括:
在所述凸透镜本体的中心处创建正向贴花组件和负向贴花组件,定义所述正向贴花组件的朝向为所述凸透镜的正方向,定义所述负向贴花组件的朝向为所述凸透镜的负方向,并初始化所述正向贴花组件和所述负向贴花组件为禁用状态。
5.根据权利要求4所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S2具体为:
创建正向材质和负向材质,并启用所述正向贴花组件将所述正向摄像头拍摄的图像绘制到所述正向材质上,启用所述负向贴花组件将所述负向摄像头拍摄的图像绘制到所述负向材质上。
6.根据权利要求4所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S2还包括:
分别创建正向模糊组件和负向模糊组件,并初始化正向模糊组件和负向模糊组件为禁用状态;
所述步骤S5具体为:
S51、根据光学成像物理公式1/u+1/v=1/f,得到v=f×u/(u-f),其中u为个所述光源距所述凸透镜本体的距离,记为物距u,f为所述凸透镜本体的焦距,v为像距;
S52、根据像距v以及所述光屏到所述凸透镜本体的距离,计算得到模糊参数;
S53、根据所述光屏的位置,将所述模糊参数赋值给相应的所述正向模糊组件或所述负向模糊组件,并启用所述正向模糊组件或所述负向模糊组件对所述正向材质或所述负向材质的内容进行模糊化;
S54、根据焦距f和物距u计算缩放值,基于所述缩放值和所述光源的位置对相应的所述正向材质或所述负向材质进行缩放;
S55、根据所述光源的位置,将相应的所述正向材质或所述负向材质透射到显示窗口中。
7.根据权利要求1所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S1还包括:
设置所述凸透镜本体的焦距为第一预设值,并限定所述正向摄像头和所述负向摄像头可拍摄物体的最近距离为所述焦距,最远距离为所述焦距加上第二预设值,所述第二预设值为大于第一预设值且小于第一预设值的两倍。
8.根据权利要求1所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S3在获取光源所在的方向、位置以及距所述凸透镜本体的距离之前,还包括:
S301、判断所述光源是否打开,若是则进入步骤S302,否则返回光源寻找失败;
S302、判断所述光源距所述凸透镜本体的距离是否小于等于第三预设值且所述光源与所述凸透镜本体的夹角是否小于等于第四预设值,若是则进入步骤S303,否则返回光源错误;
S303、判断光源所在的方向:
若所述光源位于所述凸透镜本体的正方向上,则新建第一正向变量,表示所述凸透镜本体的正方向上的所述光源与所述凸透镜本体的距离,新建第二正向变量,表示所述凸透镜本体的正方向上的所述光源的位置;
若所述光源位于所述凸透镜本体的负方向上,则新建第一负向变量,表示所述凸透镜本体的负方向上的所述光源与所述凸透镜本体的距离,新建第二负向变量,表示所述凸透镜本体的负方向上的所述光源的位置。
9.根据权利要求1所述的一种3D凸透镜投影仿真方法,其特征在于,所述步骤S3还包括:
所述射线为圆柱形射线,所述射线的半径为第五预设值;
当所述射线沿所述凸透镜本体的正方向发射碰撞到所述光屏所在的层级时,判断所述光屏位于所述凸透镜本体的正方向上,则新建第三正向变量,表示所述凸透镜本体的正方向上的所述光屏与所述凸透镜本体的距离,新建第四正向变量,表示所述凸透镜本体的正方向上的所述光屏的位置;
当所述射线沿所述凸透镜本体的负方向发射碰撞到所述光屏所在的层级时,判断所述光屏位于所述凸透镜本体的负方向上,则新建第三负向变量,表示所述凸透镜本体的负方向上的所述光屏与所述凸透镜本体的距离,新建第四负向变量,表示所述凸透镜本体的负方向上的所述光屏的位置。
10.一种3D凸透镜投影仿真终端,其特征在于:包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时完成权利要求1-9任一所述一种3D凸透镜投影仿真方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311677365.3A CN117689787A (zh) | 2023-12-07 | 2023-12-07 | 一种3d凸透镜投影仿真方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311677365.3A CN117689787A (zh) | 2023-12-07 | 2023-12-07 | 一种3d凸透镜投影仿真方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117689787A true CN117689787A (zh) | 2024-03-12 |
Family
ID=90125786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311677365.3A Pending CN117689787A (zh) | 2023-12-07 | 2023-12-07 | 一种3d凸透镜投影仿真方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117689787A (zh) |
-
2023
- 2023-12-07 CN CN202311677365.3A patent/CN117689787A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210090608A1 (en) | Video processing method, device and electronic equipment | |
US11663733B2 (en) | Depth determination for images captured with a moving camera and representing moving features | |
CN107306332B (zh) | 闭塞直接视图增强现实系统、计算设备及方法 | |
CN107452031B (zh) | 虚拟光线跟踪方法及光场动态重聚焦显示系统 | |
US11425283B1 (en) | Blending real and virtual focus in a virtual display environment | |
WO2023207452A1 (zh) | 基于虚拟现实的视频生成方法、装置、设备及介质 | |
JP2006523067A (ja) | 物体上に出力画像を表示する方法 | |
CN101631257A (zh) | 一种实现二维视频码流立体播放的方法及装置 | |
AU2018225269B2 (en) | Method, system and apparatus for visual effects | |
CN208506731U (zh) | 图像展示系统 | |
CN110870304B (zh) | 向用户提供信息以观察多视图内容的方法和装置 | |
WO2022133683A1 (zh) | 一种混合现实显示的方法、混合现实设备及存储介质 | |
CN117689787A (zh) | 一种3d凸透镜投影仿真方法及终端 | |
WO2021145913A1 (en) | Estimating depth based on iris size | |
CN114339029B (zh) | 拍摄方法、装置及电子设备 | |
Pocock et al. | The computer animator's technical handbook | |
KR20210142722A (ko) | 이미지 캡쳐 및 투영을 위한 시스템, 시스템의 사용, 그리고 이미지 캡쳐, 투영 및 삽입 방법 | |
EP4150560B1 (en) | Single image 3d photography with soft-layering and depth-aware inpainting | |
CN117974946A (zh) | 一种图像处理方法、系统及电子设备 | |
CN117672060A (zh) | 一种3d凸透镜成像的仿真方法及终端 | |
Abad et al. | Integrating synthetic objects into real scenes | |
Del Gallego | Synthetic image generation and the use of virtual environments for image enhancement tasks | |
Setkov | IVORA (Image and Computer Vision for Augmented Reality): Color invariance and correspondences for the definition of a camera/video-projector system | |
CN115917598A (zh) | 用于确定视频中的移动对象的一致深度的模型 | |
CN118379223A (zh) | 图像处理方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |