CN115965519A - 一种模型处理方法、装置、设备及介质 - Google Patents

一种模型处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN115965519A
CN115965519A CN202111172577.7A CN202111172577A CN115965519A CN 115965519 A CN115965519 A CN 115965519A CN 202111172577 A CN202111172577 A CN 202111172577A CN 115965519 A CN115965519 A CN 115965519A
Authority
CN
China
Prior art keywords
dimensional
target object
model
parameters
virtual
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
Application number
CN202111172577.7A
Other languages
English (en)
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.)
Beijing Zitiao Network Technology Co Ltd
Original Assignee
Beijing Zitiao Network 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 Beijing Zitiao Network Technology Co Ltd filed Critical Beijing Zitiao Network Technology Co Ltd
Priority to CN202111172577.7A priority Critical patent/CN115965519A/zh
Priority to PCT/CN2022/122434 priority patent/WO2023056879A1/zh
Publication of CN115965519A publication Critical patent/CN115965519A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本公开实施例涉及一种模型处理方法、装置、设备及介质,其中该方法包括:响应针对虚拟三维场景中目标对象的拍摄指令,获取目标对象的二维图像,并将二维图像保存在指定位置;其中,目标对象为位于虚拟三维场景中第一位置的三维模型;获取目标对象的原始模型参数;响应针对保存在指定位置中二维图像的三维还原指令,根据三维还原指令和原始模型参数,在虚拟三维场景中的第二位置还原目标对象;其中,三维还原指令用于指示第二位置。本公开实施例可以实现快速高效的模型还原。

Description

一种模型处理方法、装置、设备及介质
技术领域
本公开涉及数据处理技术领域,尤其涉及一种模型处理方法、装置、设备及介质。
背景技术
在诸如3D(three dimensional,三维)游戏、AR(Augmented Reality,增强现实)、VR(Virtual Reality,虚拟现实)等应用场景中,可能需要涉及到3D模型的重建,诸如基于已有的2D图片构建相应的3D模型,但是现有方法在重建模型时,存在诸如耗时低效等问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种模型处理方法、装置、设备及介质。
本公开实施例提供了一种模型处理方法,所述方法包括:
响应针对虚拟三维场景中目标对象的拍摄指令,获取所述目标对象的二维图像,并将所述二维图像保存在指定位置;其中,所述目标对象为位于所述虚拟三维场景中第一位置的三维模型;获取所述目标对象的原始模型参数;响应针对保存在所述指定位置中所述二维图像的三维还原指令,根据所述三维还原指令和所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象;其中,所述三维还原指令用于指示所述第二位置。
可选的,获取目标对象的二维图像的步骤,包括:按照指定的拍摄参数对所述目标对象进行二维投影,得到所述目标对象的二维图像。
可选的,获取所述目标对象的原始模型参数的步骤,包括:通过空间加速结构和/或视锥体裁剪方式,获取所述目标对象在所述拍摄参数对应的拍摄视角范围内呈现的三维模型的参数,将获取的所述三维模型的参数作为所述目标对象的原始模型参数。
可选的,根据所述三维还原指令和所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象的步骤,包括:根据所述三维还原指令、所述拍摄参数以及所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象。
可选的,所述三维还原指令还用于指示所述目标对象的还原形态。
可选的,所述三维还原指令是按照如下步骤生成的:如果监测到保存在所述指定位置中的所述二维图像被选中,将所述二维图像展示在所述三维虚拟场景中,并获取针对所述二维图像的用户操作;所述用户操作包括缩放操作、移动操作和旋转操作中的一种或多种;基于所述用户操作生成三维还原指令。
可选的,所述基于所述用户操作生成三维还原指令的步骤,包括:如果所述用户操作包括移动操作,根据所述移动操作确定所述二维图像在所述三维虚拟场景中的最终移动位置;如果所述用户操作包括旋转操作,根据所述旋转操作确定所述二维图像在所述三维虚拟场景中的最终空间角度;如果所述用户操作包括缩放操作,根据所述缩放操作确定所述二维图像在所述三维虚拟场景中的最终尺寸大小;根据确定的所述最终移动位置、所述最终空间角度以及所述最终尺寸大小中的一种或多种生成三维还原指令。
可选的,根据所述三维还原指令、所述拍摄参数以及所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象的步骤,包括:根据所述还原形态、所述拍摄参数以及所述原始模型参数,通过GPU绘制所述目标对象的还原模型;将所述目标对象的还原模型摆放在所述虚拟三维场景中的所述第二位置。
可选的,根据所述还原形态、所述拍摄参数以及所述原始模型参数,通过GPU绘制所述目标对象的还原模型的步骤,包括:根据所述还原形态、所述拍摄参数以及所述原始模型参数,确定所述目标对象的还原模型的裁剪边界以及材质参数;基于所述裁剪边界以及所述材质参数,采用GPU着色器绘制所述目标对象的还原模型。
可选的,所述方法还包括:响应于针对位于所述第二位置的目标对象的交互指令,执行与所述交互指令对应的操作。
本公开实施例还提供了一种模型处理装置,包括:图像获取模块,用于响应针对虚拟三维场景中目标对象的拍摄指令,获取所述目标对象的二维图像,并将所述二维图像保存在指定位置;其中,所述目标对象为位于所述虚拟三维场景中第一位置的三维模型;参数获取模块,用于获取所述目标对象的原始模型参数;还原模块,用于响应针对保存在所述指定位置中所述二维图像的三维还原指令,根据所述三维还原指令和所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象;其中,所述三维还原指令用于指示所述第二位置。
本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的模型处理方法。
本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的模型处理方法。
本公开实施例提供的上述技术方案,可以响应针对虚拟三维场景中目标对象的拍摄指令,从而获取目标对象的二维图像并将其保存在指定位置中;其中,目标对象为位于虚拟三维场景中第一位置的三维模型;之后可获取目标对象的原始模型参数;最后可以响应针对保存在指定位置中二维图像的三维还原指令(可指示第二位置),根据三维还原指令和原始模型参数,在虚拟三维场景中的第二位置还原目标对象。上述方式可以将已有的3D模型进行2D化处理(也即转换为图像),并进一步基于三维还原指令以及原始模型参数而将图像逆恢复为3D模型,从而可以对感兴趣的目标对象在不同位置上进行快速高效的模型还原。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种模型处理方法的流程示意图;
图2为本公开实施例提供的一种视锥体示意图;
图3a~图3e均为本公开实施例提供的一种虚拟三维场景的示意图;
图4为本公开实施例提供的另一种模型处理方法的流程示意图;
图5为本公开实施例提供的一种模型处理装置的结构示意图;
图6为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
现有的3D游戏、AR、VR等应用场景中,经常会出现需要基于已有的2D图片重建3D模型的情况,大多采用深度学习算法将2D图片恢复成3D模型或者点云,但是运行神经网络需要大量时间,较为费时,效率低下,而且精度不高。或者,部分相关技术中会预先建立并存储2D图片与3D模型之间的关联关系,也即,每个2D图片固定关联有一个3D模型,但这种方式仅能重建已有图片对应的固定视角下的3D模型,灵活性较差。为改善以上问题至少之一,本公开实施例提供了一种模型处理方法、装置、设备及介质,以下进行详细说明:
图1为本公开实施例提供的一种模型处理方法的流程示意图,该方法可以由模型处理装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法主要包括如下步骤S102~步骤S106:
步骤S102,响应针对虚拟三维场景中目标对象的拍摄指令,获取目标对象的二维图像,并将二维图像保存在指定位置;其中,目标对象为位于虚拟三维场景中第一位置的三维模型。
为便于理解,以下给出一种具体的应用示例:用户可以在虚拟三维场景中漫游,遇到感兴趣的目标对象时,通过虚拟的拍摄相机进行拍摄,得到目标对象的二维图像(也可称之为图片)。在实际应用中,可以根据喜好选择任一目标对象进行拍摄,或者也可理解为,可以根据喜好拍摄图片,图片中的内容均为目标对象,本公开实施例对目标对象不进行限制,诸如,目标对象可以是人、物品、甚至某物品的一部分,诸如树木的枝杈、部分桥梁等,任何虚拟三维场景中所包含的组成部分均可作为目标对象,也即,目标对象也为三维模型,且目标对象在虚拟三维场景中的原始位置即为上述第一位置。
在实际应用中,可由用户通过手势、手指触控、外部控制设备(诸如鼠标、键盘、手柄等)等方式针对目标对象发起拍摄指令,执行模型处理方法的电子设备在监测到用户的拍摄指令后,即可基于拍摄指令确定目标对象,并获取目标对象的二维图像。在一些实施方式中,该二维图像也即按照指定方式将作为三维模型的目标对象进行投影所得,该指定方式可基于拍摄指令确定,诸如,该拍摄指令携带有指定方式的信息,示例性的,该拍摄指令携带有拍摄参数。在此基础上,在一些实施方式中,获取所述目标对象的二维图像的步骤,包括:按照指定的拍摄参数对所述目标对象进行二维投影,得到所述目标对象的二维图像。该拍摄参数也即指示将目标对象的三维模型转换为二维图像的投影方式(或者也可理解为渲染方式)。
为便于理解,仍旧以虚拟的拍摄相机为例,该拍摄参数即为拍摄相机的相机参数,用户在采用拍摄相机对目标对象进行拍摄时,可以根据需求设置相机参数,相机参数包括但不限于焦距、焦点、拍摄视角或视场角、长宽比、相机姿态等一种或多种,然后基于该相机参数对目标对象进行拍摄,得到二维图像。
之后为了便于后续应用,可以将二维图像存储在指定位置,以游戏场景为例,用户可将二维图像存储在诸如游戏卡包或者工具箱等位置(对于电子设备的后台实现而言,是存储在游戏卡或者工具箱对应的存储空间中),便于后续用户在需要时,直接从指定位置调取该二维图像进行三维还原。
步骤S104,获取目标对象的原始模型参数。
由于目标对象是已构建的虚拟三维场景中的三维模型,虚拟三维场景的模型参数均已预先存储,因此也可以直接获取目标对象的原始模型参数。
步骤S106,响应针对保存在指定位置中二维图像的三维还原指令,根据三维还原指令和原始模型参数,在虚拟三维场景中的第二位置还原目标对象;其中,三维还原指令用于指示第二位置。在已知原始模型参数的情况下,即可需要的时候对模型进行快速还原,也即在接收到指示第二位置的三维还原指令时,基于该三维还原指令以及原始模型参数在第二位置实现2D至3D的还原,可简单理解为拍照(3D至2D)的逆过程。
为便于理解,以下给出一种具体的应用示例:用户在虚拟三维场景中对位于第一位置的目标对象进行拍照之后,用户可以继续漫游,当用户漫游到想要重建目标对象的第二位置时,可以直接在虚拟三维场景中的第二位置还原目标对象,以目标对象是一座桥梁为例,用户在该桥梁的原始位置(第一位置)进行拍照,得到桥梁图像,然后用户漫游到另一没有桥梁的河流边时,可以在该河流上重建该桥梁的三维模型,从而可通过重建后的桥梁过河。
本公开实施例对第二位置不进行限制,具体可以由用户确定第二位置,还原后的目标对象仍旧为三维模型,还原后的目标对象的三维模型在虚拟三维场景中第二位置的摆放方式和/或形态与位于第一位置的原有模型可以相同也可以不同,与视角相关,模型的拍摄视角以及还原视角可以任意,具体取决于用户,本公开实施例不进行限制。
综上所述,本公开实施例提供的上述模型处理方法,可以将已有的3D模型进行2D化处理(也即转换为图像),并进一步基于三维还原指令以及原始模型参数而将图像逆恢复为3D模型,从而可以对感兴趣的目标对象在不同位置上进行快速高效的模型还原。此外,在已有原始模型参数的基础上,通过上述逆恢复过程,可有效保证模型还原精度。另外,用户可以根据需求灵活选择感兴趣的目标对象,可以以任意视角拍摄其图像并进行模型还原,更为灵活自由,进一步改善了相关技术中仅能重建已有图片对应的固定视角下的3D模型,灵活性较差等问题。
在一些实施方式中,本公开实施例给出了上述步骤S102的实施方式,也即,上述获取目标对象的二维图像的步骤,包括:响应针对虚拟三维场景中目标对象的拍摄指令,通过拍摄相机以指定视角对目标对象进行拍摄,得到目标对象的二维图像;其中,目标对象和指定视角均是基于拍摄指令确定。
在实际应用中,用户可以在三维虚拟场景中漫游/游戏的过程中,在遇到感兴趣的目标对象时,通过虚拟相机拍摄目标对象的二维图像,也即,将目标对象进行2D化处理。在一些实施方式中,用户可以通过操控拍摄相机生成拍摄指令,拍摄相机的预览界面中呈现的内容即为目标对象,用户操控拍摄相机时的视角即为指定视角。应当注意的是,上述指定视角仅为用户在采用相机拍摄目标对象时的视角,可以是任意视角,具体可根据用户需求而定,本公开实施例不进行限制。在拍摄得到二维图像时,可以同时记录相机参数。
在一些实施方式中,获取目标对象的原始模型参数的步骤,包括:通过空间加速结构和/或视锥体裁剪方式,获取目标对象在拍摄参数对应的拍摄视角范围内呈现的三维模型的参数,将获取的三维模型的参数作为目标对象的原始模型参数。如前所述,拍摄参数可用于指示将目标对象转换为二维图像的具体投影方式或具体渲染方式,该拍摄参数可理解为采用虚拟的拍摄相机对目标对象进行拍照,得到二维图像时的相机参数,该拍摄参数诸如包含拍摄视角,拍摄视角均具有一定范围,也即上述拍摄视角范围。可以理解的是,在不同拍摄视角范围内将目标对象进行投影所得到的二维图像不同,本公开实施例在此获取拍摄视角范围内呈现的三维模型的参数,将其作为目标对象的原始模型参数。
在3D绘制应用中,空间加速结构可用于更快速地对3D场景中的物体判断相交、包含等几何关系,实现空间划分,本公开实施例对空间加速结构的实现方式不进行限制,诸如采用KD-tree、均匀栅格、BVH(Bounding volume hierarchy,层次包围体)等空间加速结构实现,具体可参照相关技术,在此不再赘述。视锥体,是指场景中摄像机的可见的一个锥体范围,它由上、下、左、右、近、远,共6个面组成,具体可参见图2所示的一种视锥体示意图,在视锥体内的景物可见,反之则不可见。为提高性能,可以只对其中与视锥体有交集的对象进行绘制,也即,视锥体裁剪是一种将不在视椎体中的物体剔除掉不绘制,而在视椎体内部或与视椎体相交的物体绘制的方法,能够提升3D绘制的性能。本公开实施例通过采用空间加速结构和/或视锥体裁剪方式,能够可靠准确地获取锁定目标对象在拍摄参数对应的拍摄视角范围内呈现的三维模型,进而获取其相应参数,便于后续3D绘制。
本公开实施例进一步提供了上述步骤S106的一种实施方式,也即,上述根据三维还原指令以及原始模型参数,在虚拟三维场景中的第二位置还原目标对象的步骤,包括:根据三维还原指令、拍摄参数以及原始模型参数,在虚拟三维场景中的第二位置还原目标对象。具体的,在一些实施方式中,直接基于三维还原指令确定第二位置,在另一些实施方式中,基于三维还原指令和拍摄参数共同确定第二位置。为便于理解,以下示例性解释说明:
在实际应用中,用户可以在三维虚拟场景中漫游/游戏的过程中,在遇到想要还原目标对象的场景时,通过将已采集的二维图像逆恢复为目标对象的三维模型,也即还原目标对象。在一些实施方式中,用户可以针对选中的二维图像生成三维还原指令,三维还原指令用于指示目标对象的第二位置和还原形态,还原形态可理解为目标对象被恢复的三维模型(还原模型)的形态,也可进一步理解为当前视角看到的还原模型在第二位置的大小、摆放角度以及在该摆放角度下所呈现的形态等。可以理解的是,用户在漫游过程中可能会拍摄多个目标对象的二维图像,并将得到的二维图像均保存于指定位置,后续在需要时,用户会从指定位置中选择所需还原的目标对象,诸如预先选中该目标对象的二维图像,并发起三维还原指令,用于执行模型处理方法的电子设备即可根据三维还原指令、拍摄参数以及原始模型参数,在虚拟三维场景中的第二位置还原目标对象。上述过程可以理解为拍照(3D至2D)的逆过程,为便于理解,还可以虚设一个摆放相机,与用于将三维模型渲染为二维图像的拍摄相机相对应,该摆放相机用于将二维图像还原为三维模型,在实际应用中,用户可以针对二维图像进行诸如缩放操作、移动操作和旋转操作等操作的一种或多种,通过对二维图像进行处理,可以确定目标对象的还原模型在虚拟三维场景中的摆放位置、还原形态等。也可理解为,当将目标对象最终按照三维还原指令恢复为还原模型之后,通过摆放相机拍摄到的图像即为上述经用户操作后的二维图像。在一些实施方式中,摆放相机的初始参数可基于前述拍摄参数(也即,拍摄相机的相机参数)确定,用户操作可以在初始参数的基础上进一步调整诸如焦点、焦距等部分参数,在用户操作之后,可确定摆放相机在“摆放”还原模型时所采用的焦点位置/焦平面等实际参数,而未经用户操作调整的参数仍旧保持原有拍摄参数。通过还原焦点位置和/或焦平面等,可进一步确定第二位置,也即,第二位置可以由三维还原指令以及拍摄参数综合确定。
基于此,本公开实施例给出了三维还原指令的生成方式,示例性地,三维还原指令可以按照如下步骤生成:如果监测到保存在指定位置中的二维图像被选中,将二维图像展示在三维虚拟场景中,并获取针对二维图像的用户操作;用户操作包括缩放操作、移动操作和旋转操作中的一种或多种;基于用户操作生成三维还原指令。如上所述,也可以理解如下:当用户对二维图像执行缩放操作时,实际在调整二维图像对应的还原模型相对于用户(或者上述摆放相机)的远近、当用户对二维图像执行移动操作时,实际在调整二维图像对应的还原模型在虚拟三维场景中的位置,当用户对二维图像执行旋转操作时,实际在调整二维图像对应的还原模型在虚拟三维场景中的摆放角度或者呈现形态,以上操作会直接影响到目标对象在虚拟三维场景中最终被恢复为还原模型的第二位置和还原形态。倘若未监测到用户执行某操作,说明当前不通过该操作进行相应调整,诸如,倘若未监测到用户执行旋转操作,说明当前不调整摆放角度或呈现形态,还是维持原有摆放角度或呈现形态。综上,用户通过上述操作,可生成用于指示目标对象的第二位置的三维还原指令,进一步,该三维还原指令还可以指示目标对象的还原形态,从而将目标对象最终按照三维还原指令在第二位置按照该还原形态恢复为还原模型。
基于用户操作生成三维还原指令时,可以参照如下步骤a~步骤d实现:
步骤a,如果用户操作包括移动操作,根据移动操作确定二维图像在三维虚拟场景中的最终移动位置。在实际应用中,二维图像展示在三维虚拟场景中,用户可以移动二维图像在三维虚拟场景中的位置,从而调整二维图像对应的还原模型在虚拟三维场景中的位置。在一些实施方式中,二维图像的最终移动位置即对应上述第二位置,在实际应用中,用户可以直接通过手势移动二维图像、通过手柄等外部控制器移动二维图像、或者也可以通过上述虚拟的摆放相机移动二维图像,此时二维图像即为显示在摆放相机的显示界面上的图像,通过移动摆放相机,二维图像也随之移动。
步骤b,如果用户操作包括旋转操作,根据旋转操作确定二维图像在三维虚拟场景中的最终空间角度。在实际应用中,二维图像展示在三维虚拟场景中,用户可以通过旋转二维图像,改变二维图像在虚拟三维场景中的空间角度,从而调整二维图像对应的还原模型在虚拟三维场景中摆放的方位角度。同上,用户可以通过手势、外部控制器、旋转摆放相机等方式执行二维图像的旋转操作,在此不再赘述。
步骤c,如果用户操作包括缩放操作,根据缩放操作确定二维图像在三维虚拟场景中的最终尺寸大小。在实际应用中,二维图像展示在三维虚拟场景中,用户可以通过缩放二维图像,改变二维图像在虚拟三维场景中的大小,从而调整二维图像对应的还原模型在虚拟三维场景中相对于用户当前视角的摆放远近,可以理解的是,还原模型距离用户当前视角越近,还原模型越大,用户可以通过放大二维图像来拉近距离,反之亦然。同上,用户可以通过手势、外部控制器、调整摆放相机的焦距等方式执行二维图像的缩放操作,在此不再赘述。
步骤d,根据确定的最终移动位置、最终空间角度以及最终尺寸大小中的一种或多种生成三维还原指令。其中,最终移动位置、最终空间角度以及最终尺寸大小中的一种或多种可直接影响第二位置以及还原形态,因此能够基于确定的最终移动位置、最终空间角度以及最终尺寸大小中的一种或多种确定用于指示第二位置以及还原形态的三维还原指令。
应当理解的是,用户可能会针对二维图像执行上述缩放操作、移动操作和旋转操作中的一种或多种,缩放操作和移动操作均会影响目标对象的还原模型的还原位置(第二位置),旋转操作会影响还原形态,倘若仅监测到用户执行诸如移动操作和/或缩放操作,而未执行旋转操作,则可认为仅调整第二位置,而还原形态保持原有不变;同理,倘若仅监测到用户针对显示在虚拟三维场景中的二维图像执行旋转操作,而未检测到用户执行移动操作,则可认为仅调整还原形态,而位置保持原有不变。因此,即便用户仅执行上述缩放操作、移动操作和旋转操作中的一种,也是可以确定目标对象当前的第二位置以及还原形态的。
在三维还原指令用于指示目标对象的第二位置和还原形态时,上述根据三维还原指令、拍摄参数以及原始模型参数,在虚拟三维场景中的第二位置还原目标对象的步骤,包括如下步骤(1)~步骤(2):
步骤(1),根据还原形态、拍摄参数以及原始模型参数,通过GPU绘制目标对象的还原模型。
在实际应用中,可以利用GPUGraphics pipeline(图形管道)绘制目标对象的还原模型,在一些具体的实施示例中,可以根据还原形态、拍摄参数以及原始模型参数,确定目标对象的还原模型的裁剪边界以及材质参数;其中,材质参数包括但不限于粗糙度、金属度、反射率等;然后基于裁剪边界以及材质参数,采用GPU着色器(Shader)绘制目标对象的还原模型。具体的,拍摄参数可以影响目标对象的拍摄视角范围,基于还原形态、拍摄参数以及原始模型参数,可以确定并裁剪掉视椎体以外的二维图像不可见的部分,并基于模型的裁剪边界进行裁剪,同时还原边界处的材质参数,在可以较好呈现出目标对象的还原模型的基础上也可以有效防止漏面,给用户呈现精度更高,更为逼真的还原模型。
步骤(2),将目标对象的还原模型摆放在虚拟三维场景中的第二位置。
由于通过上述逆过程所得的目标对象的还原模型实质上仍为原始模型,因此与虚拟三维场景中的其它模型一样,都可以正常做交互。因此,本公开实施例提供的上述方法还包括:响应于针对位于第二位置的目标对象的交互指令,执行与交互指令对应的操作。交互方式可以根据实际场景进行选择,在此不进行限制,诸如,以目标对象是箱子为例,用户可以开箱子等。
为便于理解,结合图3a~图3e进行说明,应当注意的是,图3a~图3e均为虚拟三维场景的示意图。图3a与图3b表示场景一,表现出了房子和多个树木,在图3b中,用户将房子作为目标对象,基于拍摄参数得到其二维图像,也可简单理解为采用虚拟的拍摄相机对房子进行拍照,得到二维图像,该拍摄参数即为相机参数。图3b在右下角简单示意出了相机标识,将房子框起来的黑色边框表示拍摄相机的预览画面,也即用户在拍摄相机的视角下拍摄得到的二维图像,通过该操作,获取到三维房子对应的二维图像,也即实现了3D模型2D化。用户在虚拟三维场景中继续漫游,直至漫游到场景二(对应图3c~图3e),其中,图3c表示场景二仅为光秃的河岸,图3d表示房子的二维图像展示在场景二中,在此之前,用户可以选中房子的二维图像,并通过对二维图像进行移动、旋转、缩放等操作,最终确定房子在场景二中的还原位置和形态,为了简单示意,图3d仅展示出二维图像的最终呈现状态,用户在此之前对二维图像进行了移动和缩放,确定了房子在场景中的位置,为简单示意,未对其进行旋转,因此房子朝向未发生变化,也可理解为形态未变。应当注意的是,场景二中的房子实际尺寸并非小于场景一中的房子实际尺寸,主要原因在于场景一中的房子距离用户视角更近,场景二中的房子距离用户视角更远。
在前述基础上,本公开实施例进一步提供了一种模型处理方法流程图,为便于理解,在该公开实施例中直接引入虚拟的拍摄相机,在虚拟三维场景中可直接给用户提供虚拟的拍摄相机,以便于用户通过操纵该拍摄相机设置拍摄参数,将目标对象投影为二维图像,其中,拍摄相机在拍摄目标对象时所采用的相机参数即为前述拍摄参数,具体的,参见图4所示,主要包括如下步骤S402~步骤S S414:
步骤S402:响应针对虚拟三维场景中目标对象的拍摄指令,通过拍摄相机以指定视角对目标对象进行拍摄,得到目标对象的二维图像。
步骤S404:获取目标对象的拍摄相机在得到二维图像时的相机参数。
步骤S406:通过空间加速结构和/或视锥体裁剪方式,获取目标对象在拍摄相机的拍摄视角范围内呈现的三维模型的参数,将获取的参数作为目标对象的原始模型参数。
步骤S418:如果监测到二维图像被选中,将二维图像展示在三维虚拟场景中,并获取针对二维图像的用户操作;用户操作包括缩放操作、移动操作和旋转操作中的一种或多种;
步骤S410:基于用户操作生成用于指示还原位置和还原形态的三维还原指令,并根据三维还原指令、相机参数以及原始模型参数,通过GPU绘制渲染目标对象的还原模型。其中,还原位置即为前述第二位置。
步骤S414:响应于针对目标对象的交互指令,执行与交互指令对应的操作。
应当理解的是,以上步骤仅为基于前述模型处理方法的一种实施示例,不应当被视为限制,在实际应用中,可以包含比上述步骤更少或者更多的步骤,上述步骤的具体实现方式可参照前述相关内容,在此不再赘述。
综上所述,与相关技术中采用神经网络模型进行模型重建,耗时低效,且精度较低相比,本公开实施例提供的上述模型处理方法,可以将已有的3D模型进行2D化处理(也即转换为图像),并进一步基于相机参数以及原始模型参数而将图像逆恢复为3D模型,从而可以对感兴趣的目标对象在不同位置上进行快速高效的模型还原。此外,在已有相机参数以及原始模型参数的基础上,通过GPU绘制实现逆恢复,充分利用3D空间结构、GPU裁剪以及边界绘制等方式,可有效保证模型还原精度,保证视觉效果。另外,与相关技术中仅能重建已有图片对应的固定视角下的3D模型,灵活性较差相比,本公开实施例提供的上述模型处理方法,用户可以根据需求灵活选择感兴趣的目标对象,可以以任意视角拍摄其图像并进行模型还原,更为灵活自由,不受限制。另外,应当理解的是,目标对象并非是某种预先指定类型的固定物品,本公开实施例也并非是简单的挪动物体位置,而是可以对于虚拟三维场景中的任一视角内的画面(也是由该视角内的三维虚拟模型构成,均可统称为目标对象)进行拍摄渲染,然后再通过记录诸如相机参数等二维数据以及原始模型参数按照需求进行灵活高效的还原。
本公开实施例提供的上述模型处理方法,可以应用但不局限于传统的3D游戏、AR、VR中,在对于诸如商品展示、数字城市等任何使用2D图片/3D模型进行转换、交互的应用,均可适用。
对应于前述模型处理方法,本公开实施例还提供了一种模型处理装置,图5为本公开实施例提供的一种模型处理装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中,如图5所示,模型处理装置500主要包括:
图像获取模块502,用于响应针对虚拟三维场景中目标对象的拍摄指令,获取目标对象的二维图像,并将二维图像保存在指定位置;其中,目标对象为位于虚拟三维场景中第一位置的三维模型;
参数获取模块504,用于获取目标对象的原始模型参数;
还原模块506,用于响应针对保存在指定位置中二维图像的三维还原指令,根据三维还原指令和原始模型参数,在虚拟三维场景中的第二位置还原目标对象;其中,三维还原指令用于指示第二位置。
本公开实施例提供的上述模型处理装置,可以将已有的3D模型进行2D化处理(也即转换为图像),并进一步基于三维还原指令以及原始模型参数而将图像逆恢复为3D模型,从而可以对感兴趣的目标对象在不同位置上进行快速高效的模型还原。此外,在已有原始模型参数的基础上,通过上述逆恢复过程,可有效保证模型还原精度。另外,用户可以根据需求灵活选择感兴趣的目标对象,可以以任意视角拍摄其图像并进行模型还原,更为灵活自由,进一步改善了相关技术中仅能重建已有图片对应的固定视角下的3D模型,灵活性较差等问题。
在一些实施方式中,图像获取模块502具体用于:按照指定的拍摄参数对所述目标对象进行二维投影,得到所述目标对象的二维图像。
在一些实施方式中,参数获取模块504具体用于:通过空间加速结构和/或视锥体裁剪方式,获取所述目标对象在所述拍摄参数对应的拍摄视角范围内呈现的三维模型的参数,将获取的所述三维模型的参数作为所述目标对象的原始模型参数。
在一些实施方式中,还原模块506具体用于:根据所述三维还原指令、所述拍摄参数以及所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象。
在一些实施方式中,所述三维还原指令还用于指示所述目标对象的还原形态。
在一些实施方式中,所述装置还包括指令生成模块,用于按照如下步骤生成三维还原指令:
如果监测到保存在所述指定位置中的所述二维图像被选中,将所述二维图像展示在所述三维虚拟场景中,并获取针对所述二维图像的用户操作;所述用户操作包括缩放操作、移动操作和旋转操作中的一种或多种;
基于所述用户操作生成三维还原指令。
在一些实施方式中,指令生成模块具体用于:如果所述用户操作包括移动操作,根据所述移动操作确定所述二维图像在所述三维虚拟场景中的最终移动位置;如果所述用户操作包括旋转操作,根据所述旋转操作确定所述二维图像在所述三维虚拟场景中的最终空间角度;如果所述用户操作包括缩放操作,根据所述缩放操作确定所述二维图像在所述三维虚拟场景中的最终尺寸大小;根据确定的所述最终移动位置、所述最终空间角度以及所述最终尺寸大小中的一种或多种生成三维还原指令。
在一些实施方式中,还原模块506具体用于:根据所述还原形态、所述拍摄参数以及所述原始模型参数,通过GPU绘制所述目标对象的还原模型;将所述目标对象的还原模型摆放在所述虚拟三维场景中的所述第二位置。
在一些实施方式中,还原模块506具体用于:根据所述还原形态、所述拍摄参数以及所述原始模型参数,确定所述目标对象的还原模型的裁剪边界以及材质参数;基于所述裁剪边界以及所述材质参数,采用GPU着色器绘制所述目标对象的还原模型。
在一些实施方式中,所述方法还包括:交互模块,用于响应于针对位于所述第二位置的目标对象的交互指令,执行与所述交互指令对应的操作。
本公开实施例所提供的模型处理装置可执行本公开任意实施例所提供的模型处理方法,具备执行方法相应的功能模块和有益效果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置实施例的具体工作过程,可以参考方法实施例中的对应过程,在此不再赘述。
本公开实施例还提供了一种电子设备,电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述任一项模型处理方法。图6为本公开实施例提供的一种电子设备的结构示意图。如图6所示,电子设备600包括一个或多个处理器601和存储器602。
处理器601可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。
存储器602可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行所述程序指令,以实现上文所述的本公开的实施例的模型处理方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置603还可以包括例如键盘、鼠标等等。
该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该电子设备600中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的模型处理方法。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的模型处理方法。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本公开实施例中的模型处理方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (13)

1.一种模型处理方法,其特征在于,包括:
响应针对虚拟三维场景中目标对象的拍摄指令,获取所述目标对象的二维图像,并将所述二维图像保存在指定位置;其中,所述目标对象为位于所述虚拟三维场景中第一位置的三维模型;
获取所述目标对象的原始模型参数;
响应针对保存在所述指定位置中所述二维图像的三维还原指令,根据所述三维还原指令和所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象;其中,所述三维还原指令用于指示所述第二位置。
2.根据权利要求1所述的方法,获取所述目标对象的二维图像的步骤,包括:
按照指定的拍摄参数对所述目标对象进行二维投影,得到所述目标对象的二维图像。
3.根据权利要求2所述的方法,其特征在于,获取所述目标对象的原始模型参数的步骤,包括:
通过空间加速结构和/或视锥体裁剪方式,获取所述目标对象在所述拍摄参数对应的拍摄视角范围内呈现的三维模型的参数,将获取的所述三维模型的参数作为所述目标对象的原始模型参数。
4.根据权利要求2所述的方法,其特征在于,根据所述三维还原指令和所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象的步骤,包括:
根据所述三维还原指令、所述拍摄参数以及所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象。
5.根据权利要求1所述的方法,其特征在于,所述三维还原指令还用于指示所述目标对象的还原形态。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述三维还原指令是按照如下步骤生成的:
如果监测到保存在所述指定位置中的所述二维图像被选中,将所述二维图像展示在所述三维虚拟场景中,并获取针对所述二维图像的用户操作;所述用户操作包括缩放操作、移动操作和旋转操作中的一种或多种;
基于所述用户操作生成三维还原指令。
7.根据权利要求6所述的方法,其特征在于,所述基于所述用户操作生成三维还原指令的步骤,包括:
如果所述用户操作包括移动操作,根据所述移动操作确定所述二维图像在所述三维虚拟场景中的最终移动位置;
如果所述用户操作包括旋转操作,根据所述旋转操作确定所述二维图像在所述三维虚拟场景中的最终空间角度;
如果所述用户操作包括缩放操作,根据所述缩放操作确定所述二维图像在所述三维虚拟场景中的最终尺寸大小;
根据确定的所述最终移动位置、所述最终空间角度以及所述最终尺寸大小中的一种或多种生成三维还原指令。
8.根据权利要求5所述的方法,其特征在于,根据所述三维还原指令、所述拍摄参数以及所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象的步骤,包括:
根据所述还原形态、所述拍摄参数以及所述原始模型参数,通过GPU绘制所述目标对象的还原模型;
将所述目标对象的还原模型摆放在所述虚拟三维场景中的所述第二位置。
9.根据权利要求8所述的方法,其特征在于,根据所述还原形态、所述拍摄参数以及所述原始模型参数,通过GPU绘制所述目标对象的还原模型的步骤,包括:
根据所述还原形态、所述拍摄参数以及所述原始模型参数,确定所述目标对象的还原模型的裁剪边界以及材质参数;
基于所述裁剪边界以及所述材质参数,采用GPU着色器绘制所述目标对象的还原模型。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于针对位于所述第二位置的目标对象的交互指令,执行与所述交互指令对应的操作。
11.一种模型处理装置,其特征在于,包括:
图像获取模块,用于响应针对虚拟三维场景中目标对象的拍摄指令,获取所述目标对象的二维图像,并将所述二维图像保存在指定位置;其中,所述目标对象为位于所述虚拟三维场景中第一位置的三维模型;
参数获取模块,用于获取所述目标对象的原始模型参数;
还原模块,用于响应针对保存在所述指定位置中所述二维图像的三维还原指令,根据所述三维还原指令和所述原始模型参数,在所述虚拟三维场景中的第二位置还原所述目标对象;其中,所述三维还原指令用于指示所述第二位置。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-10中任一所述的模型处理方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-10中任一所述的模型处理方法。
CN202111172577.7A 2021-10-08 2021-10-08 一种模型处理方法、装置、设备及介质 Pending CN115965519A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111172577.7A CN115965519A (zh) 2021-10-08 2021-10-08 一种模型处理方法、装置、设备及介质
PCT/CN2022/122434 WO2023056879A1 (zh) 2021-10-08 2022-09-29 一种模型处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111172577.7A CN115965519A (zh) 2021-10-08 2021-10-08 一种模型处理方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115965519A true CN115965519A (zh) 2023-04-14

Family

ID=85803156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111172577.7A Pending CN115965519A (zh) 2021-10-08 2021-10-08 一种模型处理方法、装置、设备及介质

Country Status (2)

Country Link
CN (1) CN115965519A (zh)
WO (1) WO2023056879A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116863081B (zh) * 2023-07-19 2023-12-29 分享印科技(广州)有限公司 一种包装盒的3d预览系统及其方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11032536B2 (en) * 2016-09-19 2021-06-08 Verizon Patent And Licensing Inc. Generating a three-dimensional preview from a two-dimensional selectable icon of a three-dimensional reality video
CN107134000B (zh) * 2017-05-23 2020-10-23 张照亮 一种融合现实的三维动态图像生成方法及系统
CN110249626B (zh) * 2017-10-26 2020-07-31 腾讯科技(深圳)有限公司 增强现实图像的实现方法、装置、终端设备和存储介质
CN109889914B (zh) * 2019-03-08 2021-04-02 腾讯科技(深圳)有限公司 视频画面推送方法、装置、计算机设备及存储介质
CN110807413B (zh) * 2019-10-30 2022-08-09 浙江大华技术股份有限公司 目标显示方法以及相关装置

Also Published As

Publication number Publication date
WO2023056879A1 (zh) 2023-04-13

Similar Documents

Publication Publication Date Title
JP7337104B2 (ja) 拡張現実によるモデル動画多平面インタラクション方法、装置、デバイス及び記憶媒体
US9519999B1 (en) Methods and systems for providing a preloader animation for image viewers
US9424676B2 (en) Transitioning between top-down maps and local navigation of reconstructed 3-D scenes
US20170038942A1 (en) Playback initialization tool for panoramic videos
CN110024002B (zh) 用于根据光场渲染视图的方法和系统
US11044398B2 (en) Panoramic light field capture, processing, and display
CN109906600B (zh) 模拟景深
JP5616223B2 (ja) デジタル画像をキャプチャするためのシステム及び方法
US9754398B1 (en) Animation curve reduction for mobile application user interface objects
JP2009508214A (ja) フォト・マンテル・ビューおよびアニメーション
CN113610981A (zh) 脸部模型生成方法、交互方法及相关装置
Kopf et al. Locally adapted projections to reduce panorama distortions
CN112652046A (zh) 游戏画面的生成方法、装置、设备及存储介质
JP2000348213A (ja) 三次元画像生成装置、三次元画像生成表示装置、及びその方法並びに記録媒体
WO2023056879A1 (zh) 一种模型处理方法、装置、设备及介质
JP2005327314A (ja) 画像表示方法および装置
CN115439634B (zh) 点云数据的交互呈现方法和存储介质
CN113920282B (zh) 图像处理方法和装置、计算机可读存储介质、电子设备
KR20150039049A (ko) 템플릿 편집 프레임 크기에 따른 사용자 인터페이스 제공 방법 및 그 장치
JP7125983B2 (ja) 実物体の相互作用的な3d表現を作成および表示するためのシステムおよび方法
CN112862981B (zh) 用于呈现虚拟表示的方法和装置、计算机设备和存储介质
CN112634439B (zh) 一种3d信息展示方法及装置
CN114913277A (zh) 一种物体立体交互展示方法、装置、设备及介质
CN110827411B (zh) 自适应环境的增强现实模型显示方法、装置、设备及存储介质
CN114327174A (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