CN111754631B - 三维模型的生成方法、装置、设备及可读存储介质 - Google Patents
三维模型的生成方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111754631B CN111754631B CN202010784459.0A CN202010784459A CN111754631B CN 111754631 B CN111754631 B CN 111754631B CN 202010784459 A CN202010784459 A CN 202010784459A CN 111754631 B CN111754631 B CN 111754631B
- Authority
- CN
- China
- Prior art keywords
- model
- house
- scanning
- vertex
- node data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/13—Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/18—Details relating to CAD techniques using virtual or augmented reality
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Civil Engineering (AREA)
- Architecture (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Structural Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种三维模型的生成方法、装置、设备及可读存储介质,涉及程序设计领域。该方法包括:获取目标虚拟房屋的屋体模型;生成与所述屋体模型对应的包围盒;以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域;根据所述空缺区域确定所述目标虚拟房屋对应的门窗模型。通过生成与屋体模型对应的包围盒,并根据包围盒对屋体模型的墙面进行扫描,确定屋体模型墙面的空缺区域,从而自动生成与屋体模型对应的门窗模型,将物体模型与门窗模型结合构建得到目标虚拟房屋的三维模型,由于门窗模型的门窗数据是通过对墙面的扫描自动生成的,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
Description
技术领域
本申请实施例涉及程序设计领域,特别涉及一种三维模型的生成方法、装置、设备及可读存储介质。
背景技术
在基于虚拟环境运行的应用程序中,通常包括多种在虚拟环境中的虚拟对象和虚拟物体,其中,虚拟对象指示在虚拟环境中被玩家控制运动的虚拟人物、虚拟动物等,虚拟物体指示在虚拟环境中设置的三维模型,如:虚拟房屋、虚拟树木、虚拟载具等。
相关技术中,在虚拟环境中设置的虚拟房屋,需要逐个配置,也即需要开发人员根据房屋的外观手动绘制框体,以及确定对应门窗的位置,并进行门窗数据组件的设置。
然而,通过上述方式配置房屋的门窗数据时,需要耗费大量的人力资源,门窗设置效率较低。
发明内容
本申请实施例提供了一种三维模型的生成方法、装置、设备及可读存储介质,能够提高虚拟房屋三维模型的生成效率。所述技术方案如下:
一方面,提供了一种三维模型的生成方法,所述方法包括:
获取目标虚拟房屋的屋体模型;
生成与所述屋体模型对应的包围盒,所述包围盒对应所述屋体模型的内部容纳区域;
以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域;
根据所述空缺区域确定所述目标虚拟房屋对应的门窗模型,所述屋体模型和所述门窗模型组合得到所述目标虚拟房屋的三维模型。
另一方面,提供了一种三维模型的生成装置,所述装置包括:
获取模块,用于获取目标虚拟房屋的屋体模型;
生成模块,用于生成与所述屋体模型对应的包围盒,所述包围盒对应所述屋体模型的内部容纳区域;
扫描模块,用于以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域;
所述生成模块,还用于根据所述空缺区域确定所述目标虚拟房屋对应的门窗模型,所述屋体模型和所述门窗模型组合得到所述目标虚拟房屋的三维模型。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中任一所述三维模型的生成方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述本申请实施例中任一所述的三维模型的生成方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的三维模型的生成方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过生成与屋体模型对应的包围盒,并根据包围盒对屋体模型的墙面进行扫描,确定屋体模型墙面的空缺区域,从而自动生成与屋体模型对应的门窗模型,将物体模型与门窗模型结合构建得到目标虚拟房屋的三维模型,由于门窗模型的门窗数据是通过对墙面的扫描自动生成的,无需开发人员手动对门窗数据进行绘制,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的屋体模型的示意图;
图2是本申请一个示例性实施例提供的屋体模型对应的包围盒的示意图;
图3是本申请一个示例性实施例提供的计算机系统的结构框图;
图4是本申请一个示例性实施例提供的三维模型的生成方法的流程图;
图5是基于图4示出的实施例提供的包围盒的设置过程示意图;
图6是基于图4示出的实施例提供的包围盒的设置过程示意图;
图7是基于图4示出的实施例提供的包围盒的生成过程示意图;
图8是基于图4示出的实施例提供的根据节点数据直接生成包围盒的流程示意图;
图9是基于图4示出的实施例提供的门窗模型的示意图;
图10是本申请一个示例性实施例提供的三维模型的生成方法的流程图;
图11是基于图10示出的实施例提供的门窗自动扫描检测过程的示意图;
图12是本申请一个示例性实施例提供的三维模型的生成方法的流程图;
图13是基于图12示出的实施例提供的墙面扫描过程流程图;
图14是基于图12示出的实施例提供的墙面扫描过程流程图;
图15是基于图12示出的实施例提供的空缺点检测过程的流程图;
图16是基于图12示出的实施例提供的空缺点检测过程的流程图;
图17是本申请一个示例性实施例提供的三维模型的生成装置的结构框图;
图18是本申请另一个示例性实施例提供的三维模型的生成装置的结构框图;
图19是本申请一个示例性实施例提供的终端的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,针对本申请实施例中涉及的名词进行简单介绍:
虚拟环境:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境。虚拟环境可以是二维虚拟环境、2.5维虚拟环境和三维虚拟环境中的任意一种,本申请对此不加以限定。下述实施例以虚拟环境是三维虚拟环境来举例说明。在一些实施例中,虚拟环境用于为至少两个主控虚拟角色提供作战环境。该虚拟环境包括对称的左下角区域和右上角区域,属于两个敌对阵营的主控虚拟角色分别占据其中一个区域,并以摧毁对方区域深处的目标建筑,或据点,或基地,或水晶来作为胜利目标。
在虚拟现实应用程序、三维地图程序、军事仿真程序、第一人称射击游戏(FirstPerson Shooting Game,FPS)、多人在线战术竞技(Multiplayer Online Battle Arena,MOBA)游戏等应用程序中,通常需要在虚拟环境中设置多种虚拟物体以构建完整的虚拟环境场景,如:虚拟房屋、虚拟树木、虚拟载具、虚拟河流等,其中,在构建虚拟房屋的过程中,需要首先由开发人员构建虚拟房屋的屋体模型,并在屋体模型的基础上,逐个配置门窗数据,其中,开发人员根据屋体模型,在墙体的空缺位置处根据虚拟房屋的外观手动绘制门窗框体,从而进行门窗组件的设置。
屋体模型:是指通过开发人员设计构建的虚拟房屋的整体结构模型,屋体模型与对应的门窗模型组合构建得到虚拟房屋的三维模型,也即,屋体模型中不包括虚拟房屋对应的门窗数据。可选地,屋体模型中不包括虚拟房屋中的放置的其他虚拟物体,如:虚拟家具、虚拟电器、虚拟装饰品等,也即,在确定虚拟房屋的屋体模型后,确定与屋体模型对应匹配的门窗模型,以及确定在虚拟房屋中设置的其他虚拟物体的模型,从而构建得到虚拟房屋的三维模型。
示意性的,请参考图1,其示出了本申请一个示例性实施例提供的屋体模型的示意图,如图1所示,屋体模型100包括虚拟房屋的整体框架的三维模型,其中,屋体模型100上包括空缺区域110和空缺区域120,该空缺区域110为门体模型对应的设置区域,空缺区域120为窗体模型对应的设置区域。
包围盒:是指在虚拟环境场景下,用于描述虚拟对象所处房间的立方体,该包围盒用于在虚拟环境中划分物理区域,且根据立方体的尺寸不同,在虚拟环境中产生声音时,播放对应不同的声音效果,如:在立方体较大时,也即房间空间较大时,播放的声音效果对应较大空间的声音传播特点。
本申请中提供的方法可以应用于虚拟现实应用程序、三维地图程序、军事仿真程序、FPS游戏、MOBA游戏等,下述实施例是以在游戏中的应用来举例说明。
基于虚拟环境的游戏由一个或多个游戏世界的地图构成,游戏中的虚拟环境模拟真实世界的场景,用户可以操控游戏中的主控虚拟角色在虚拟环境中进行行走、跑步、跳跃、射击、格斗、驾驶、释放技能、受到其他虚拟角色的攻击、受到虚拟环境中的伤害、攻击其他虚拟角色等动作,交互性较强,并且多个用户可以在线组队进行竞技游戏。
本申请实施例中,在虚拟环境中设置有虚拟房屋,虚拟房屋的三维模型中包括屋体模型和门窗模型,可选地,虚拟房屋的三维模型内部还设置有其他虚拟物体模型。本实施例中,在构建虚拟房屋的三维模型时,首先对虚拟房屋的屋体模型进行构建,并生成与屋体模型对应的包围盒,以包围盒为扫描基准,对屋体模型的墙体部分进行扫描,得到墙体上的空缺区域,根据空缺区域确定门窗模型对应的门窗数据,从而自动生成虚拟房屋的门窗模型。
示意性的,请参考图2,获取虚拟房屋的屋体模型210,并生成与屋体模型210对应的包围盒220,包围盒220对应屋体模型的内部容纳区域,以包围盒220为扫描基准,对屋体模型210的墙体部分进行扫描,得到墙体上的空缺区域230,从而根据空缺区域230生成门窗模型,通过门窗数据对空缺区域230进行封闭处理。
图3示出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统300包括:第一终端320、服务器340和第二终端360。
第一终端320安装和运行有支持虚拟环境的应用程序。该应用程序可以是虚拟现实应用程序、三维地图程序、军事仿真程序、FPS游戏、MOBA游戏、多人枪战类生存游戏、大逃杀类型的射击游戏中的任意一种。第一终端320是第一用户使用的终端,第一用户使用第一终端320控制位于虚拟环境中的第一主控虚拟角色进行活动,该活动包括但不限于:调整身体姿态、行走、奔跑、跳跃、释放技能、拾取、攻击、躲避其他虚拟角色的攻击中的至少一种。示意性的,第一主控虚拟角色是第一虚拟人物,比如仿真人物角色或动漫人物角色。示意性的,第一主控虚拟角色在虚拟环境中释放区域型技能,虚拟环境画面由主控虚拟角色所在的位置向区域型技能指示器选中的目标区域移动。区域型技能指示器用于主控虚拟角色在释放技能时选择释放区域。
第一终端320通过无线网络或有线网络与服务器340相连。
服务器340包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。示意性的,服务器340包括处理器344和存储器342,存储器342又包括接收模块3421、控制模块3422和发送模块3423,接收模块3421用于接收客户端发送的请求,如组队请求;控制模块3422用于控制虚拟环境画面的渲染;发送模块3423用于向客户端发送消息通知,如组队成功通知。服务器340用于为支持三维虚拟环境的应用程序提供后台服务。可选地,服务器340承担主要计算工作,第一终端320和第二终端360承担次要计算工作;或者,服务器340承担次要计算工作,第一终端320和第二终端360承担主要计算工作;或者,服务器340、第一终端320和第二终端360三者之间采用分布式计算架构进行协同计算。
第二终端360通过无线网络或有线网络与服务器340相连。
第二终端360安装和运行有支持虚拟环境的应用程序。该应用程序可以是虚拟现实应用程序、三维地图程序、军事仿真程序、FPS游戏、MOBA游戏、多人枪战类生存游戏、大逃杀类类型的射击游戏中的任意一种。第二终端360是第二用户使用的终端,第二用户使用第二终端360控制位于虚拟环境中的第二主控虚拟角色进行活动,该活动包括但不限于:调整身体姿态、行走、奔跑、跳跃、释放技能、拾取、攻击、躲避其他主控虚拟角色的攻击中的至少一种。示意性的,第二主控虚拟角色是第二虚拟人物,比如仿真人物角色或动漫人物角色。
可选地,第一虚拟人物角色和第二虚拟人物角色处于同一虚拟环境中。可选地,第一虚拟人物角色和第二虚拟人物角色可以属于同一个队伍、同一个组织、具有好友关系或具有临时性的通讯权限。
可选地,第一终端320和第二终端360上安装的应用程序是相同的,或两个终端上安装的应用程序是不同控制系统平台的同一类型应用程序。第一终端320可以泛指多个终端中的一个,第二终端360可以泛指多个终端中的一个,本实施例仅以第一终端320和第二终端360来举例说明。第一终端320和第二终端360的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机中的至少一种。以下实施例以终端包括智能手机来举例说明。
本领域技术人员可以知晓,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
图4是本申请一个示例性实施例提供的三维模型的生成方法的流程图,以该方法应用于终端中为例,该方法包括:
步骤401,获取目标虚拟房屋的屋体模型。
屋体模型为预先设定好的模型,也即由程序开发人员对虚拟房屋的屋体模型进行构建后,直接获取该已构建好的屋体模型。
屋体模型为目标虚拟房屋对应的房屋框架模型,也即屋体模型对应目标虚拟房屋在外观上除了门窗以外其他部分的轮廓,屋体模型内部对应有容纳区域,也即目标虚拟房屋内部的容纳区域,该容纳区域用于容纳其他虚拟物体和/或虚拟对象,示意性的,虚拟家居设备和虚拟家具设置于容纳区域的地面,虚拟对象在容纳区域的地面上进行活动,虚拟装饰品挂于内部容纳区域的墙体上。
步骤402,生成与屋体模型对应的包围盒。
包围盒对应屋体模型的内部容纳区域,也即,以屋体模型的内部容纳区域为生成基准,生成与屋体模型内部的墙体贴合或近似贴合的包围盒。
可选地,在生成与屋体模型对应的包围盒时,包括如下方式中的任意一种:
第一,获取屋体模型内部的节点数据,该节点数据中包括屋体模型内部至少四个节点的数据,根据节点数据构建包围盒;
第二,获取根节点数据和边长数据,根据根节点数据和边长数据构建候选包围盒,通过三维虚拟引擎对屋体模型进行边缘检测,得到屋体模型的边缘,以屋体模型的边缘对候选包围盒进行调整,得到包围盒。
本申请实施例中,以获取屋体模型内部的节点数据为例进行说明。在包围盒设置界面中指定屋体模型内的根节点数据、高度节点数据、长边节点数据和宽边节点数据。其中,在确定节点数据的过程中,从屋体模型内部通过三维虚拟引擎对屋体模型进行射线检测,也即通过三维虚拟引擎的摄像机,向拍摄方向范围内进行射线检测,将生成的节点贴近检测到的屋体模型的边缘,从而得到节点数据。可选地,在射线检测得到节点时,向检测到的节点位置处设置标记物体,开发人员能够对标记物体的位置进行微调,从而对包围盒进行调整。
示意性的,请参考图5,在选单界面500中显示有包围盒的设置选项,其中包括根节点设置项510、高度设置项520、长度设置项530和宽度设置项540,通过对根节点设置项510进行选择,由开发人员指定屋体模型内的摄像机视角,并在屋体模型中向摄像机的拍摄范围内发出射线,对根节点进行识别并进行根节点的位置设置;通过对高度设置项520进行选择,由开发人员指定屋体模型内的摄像机视角,并在屋体模型中向摄像机的拍摄范围内发出射线,对高度节点进行识别并进行高度节点的位置设置;通过对长度设置项530进行选择,由开发人员指定屋体模型内的摄像机视角,并在屋体模型中向摄像机的拍摄范围内发出射线,对长度节点进行识别并进行长度节点的位置设置;通过对宽度设置项540进行选择,由开发人员指定屋体模型内的摄像机视角,并在屋体模型中向摄像机的拍摄范围内发出射线,对宽度节点进行识别并进行宽度节点的位置设置,设置完毕后,点击创建选项550,从而得到候选包围盒560,可选地,在生成包围盒560后,开发人员对包围盒进行调整。
为了便于示出在屋体模型内部生成的包围盒,将包围盒高度调高进行示意,如图6所示,屋体模型600对应的包围盒调高后得到立方体610。
示意性的,请参考图7,包围盒的创建过程如图7所示,该过程中包括:步骤701,用户点击指定屋体模型的根节点设置/长度节点设置/高度节点设置/宽度节点设置。也即,用户选择对包围盒进行设置的节点。步骤702,获取摄像机位置以及朝向。也即获取在对屋体模型内部进行拍摄时,三维虚拟引擎的观察位置以及朝向。步骤703,向摄像机的朝向发出射线。也即以摄像机的拍摄方向进行射线检测,可选地,在摄像机的拍摄范围内进行射线检测。步骤704,在射线命中位置创建标记物体。可选地,将标记物体的位置靠近射线检测所检测到的边缘节点。步骤705,手动调整标记物体的位置。也即,由开发人员手动对标记物体的位置进行调整,将标记物体向屋体模型内部的边缘贴近。
示意性的,在指定好节点数据后,根据节点数据直接生成包围盒,如图8所示,包围盒的自动生成过程包括:步骤801,选择创建包围盒。即,开发人员在生成包围盒的设置界面中,在设置完毕节点数据后选择创建包围盒。步骤802,根据节点数据创建高度向量Vh,长度向量Vl和宽度向量Vw。步骤803,生成的包围盒中心点为根节点坐标+(Vh+Vl+Vw)/2。步骤804,包围盒的长宽高分别为长度向量Vl,宽度向量Vw和高度向量Vh的向量长度。步骤805,取宽度向量Vw与(1,0,0)的角度a,并将包围盒沿垂直方向的向量旋转角度a。示意性的,在Unity3D引擎中,围绕向量(0,1,0)旋转角度a。步骤806,开发人员对包围盒进行微调。
步骤403,以包围盒为扫描基准,对屋体模型的墙体进行扫描,得到墙体上的空缺区域。
可选地,以包围盒为扫描基准,在包围盒中除顶面以外的其他面进行扫描;或,对包围盒中的每个面进行扫描,得到空缺区域。
可选地,在对墙体进行扫描的过程中,以单面墙体为例进行说明,从单面墙体的底部开始,进行逐层扫描,其中,当针对单层进行扫描时,该层扫描过程中存在空缺区域时,则确定该层扫描过程中的空缺开始位置和空缺结束位置,并与该层上下产生的空缺区域结合作为完整的空缺区域;当针对单层进行扫描时,该层扫描过程中不存在空缺区域时,则将当前已扫描的所有空缺区域进行门窗数据设置封闭处理,如:第3层、第4层和第5层扫描到空缺区域,第6层未扫描到空缺区域,则将第3层、第4层和第5层扫描到的空缺区域结合得到一个整合的空缺区域并进行封闭处理,向整合的空缺区域设置门窗数据。
步骤404,根据空缺区域确定目标虚拟房屋对应的门窗模型。
可选地,在确定空缺区域后,选择生成门窗数据选项后,根据空缺区域自动生成门窗。
示意性的,请参考图9,在屋体模型900上,在确定空缺区域后,选择生成门窗数据后,自动生成门窗910,如图9所示,该门窗910的模型方向为由屋体模型900内部向外。
综上所述,本申请实施例提供的三维模型的生成方法,通过生成与屋体模型对应的包围盒,并根据包围盒对屋体模型的墙面进行扫描,确定屋体模型墙面的空缺区域,从而自动生成与屋体模型对应的门窗模型,将物体模型与门窗模型结合构建得到目标虚拟房屋的三维模型,由于门窗模型的门窗数据是通过对墙面的扫描自动生成的,无需开发人员手动对门窗数据进行绘制,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
在一个可选的实施例中,对墙体的扫描为逐层进行的,图10是本申请一个示例性实施例提供的三维模型的生成方法的流程图,以该方法应用于终端中为例进行说明,如图10所示,该方法包括:
步骤1001,获取目标虚拟房屋的屋体模型。
屋体模型为目标虚拟房屋对应的房屋框架模型,也即屋体模型对应目标虚拟房屋在外观上除了门窗以外其他部分的轮廓,屋体模型内部对应有容纳区域,也即目标虚拟房屋内部的容纳区域,该容纳区域用于容纳其他虚拟物体和/或虚拟对象,示意性的,虚拟家居设备和虚拟家具设置于容纳区域的地面,虚拟对象在容纳区域的地面上进行活动,虚拟装饰品挂于内部容纳区域的墙体上。
步骤1002,获取屋体模型内部的节点数据。
节点数据中包括根节点数据、长度节点数据、宽度节点数据和高度节点数据。
步骤1003,根据根节点数据和长度节点数据,确定第一顶点的位置。
第一顶点为位于根节点第一方向的顶点。可选地,由于在三维虚拟引擎对节点数据的识别过程中,存在长度节点与其他节点构成的矩形存在角度的问题根据长度节点数据和根节点数据以及其他节点数据对长度节点进行调整,得到第一顶点的位置,第一顶点为长度节点对应的包围盒的顶点。
步骤1004,根据根节点和宽度节点数据,确定第二顶点的位置。
第二顶点为位于根节点第二方向的顶点,且第一方向和第二方向属于水平方向。
第二顶点为对宽度节点进行调整后得到的包围盒的顶点,第一方向和第二方向为两个相互垂直的方向。
步骤1005,根据根节点和高度节点数据,确定第三顶点的位置。
第三顶点为位于根节点第三方向的顶点,第三方向属于垂直方向,其中,第一方向、第二方向和第三方向相互垂直。
步骤1006,根据根节点、第一顶点、第二顶点和第三顶点构建包围盒。
包围盒对应屋体模型的内部容纳区域,也即,以屋体模型的内部容纳区域为生成基准,生成与屋体模型内部的墙体贴合或近似贴合的包围盒。
步骤1007,从根节点开始,在垂直方向的高度范围内向水平方向,对屋体模型的墙面进行逐层扫描,得到墙体上的空缺区域。
可选地,在第三顶点的高度范围内,对墙面进行水平方向的逐层扫描。
也即,从根节点开始向第一方向进行逐层扫描,得到第一墙面的第一空缺区域;从根节点开始,向第二方向进行逐层扫描,得到第二墙面的第二空缺区域;从第一顶点开始,向第二方向进行逐层扫描,得到第三墙面的第三空缺区域;从第二顶点开始,向第一方向进行逐层扫描,得到第四墙面的第四空缺区域。
示意性的,在生成的包围盒中,将与根节点Proot相连的三个点(即第一顶点、第二顶点和第三顶点)中,X坐标值较大的第一顶点记为Pl,Z坐标值较大的第二顶点记为Pr,Y坐标值较大的第三顶点即为Pt,则,记向量Vr=Pr-Proot;记向量Vl=Pl-Proot;记向量Vt=Pt-Proot,则门窗自动扫描检测的过程如图11所示,该过程包括:步骤1101,用户选择生成门窗。也即,用户在生成包围盒后,选择自动生成门窗的选项,进行自动扫描并生成门窗数据。可选地,在测试过程中,该选项还可以实现为,删除现有门窗并自动生成门窗,也即,在测试过程中,需要多次生成门窗时,需要首先删除已生成的门窗,再重新生成新的门窗数据。步骤1102,删除已生成的门窗数据。步骤1103,以Proot为起点,向Vr方向进行墙壁扫描。步骤1104,以Proot为起点,向Vl方向进行墙壁扫描。步骤1105,以Proot+Vl为起点,向Vr方向进行墙壁扫描。步骤1106,以Proot+Vr为起点,向Vl方向进行墙壁扫描。步骤1107,检查扫描结果是否符合要求。
通过上述步骤1101至步骤1107,对屋体模型的侧面墙壁进行扫描检测,得到侧面墙壁上的空缺区域,在一些实施例中,对屋体模型的顶面进行扫描检测,得到顶面天花板上的空缺区域。
步骤1008,根据空缺区域确定目标虚拟房屋对应的门窗模型。
可选地,在确定空缺区域后,选择生成门窗数据选项后,根据空缺区域自动生成门窗。
综上所述,本申请实施例提供的三维模型的生成方法,通过生成与屋体模型对应的包围盒,并根据包围盒对屋体模型的墙面进行扫描,确定屋体模型墙面的空缺区域,从而自动生成与屋体模型对应的门窗模型,将物体模型与门窗模型结合构建得到目标虚拟房屋的三维模型,由于门窗模型的门窗数据是通过对墙面的扫描自动生成的,无需开发人员手动对门窗数据进行绘制,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
本实施例提供的方法,通过在屋体模型的墙面进行逐层扫描,确定墙面上的空缺区域,从而向空缺区域设置门窗数据,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
在一个可选的实施例中,在墙体扫描的过程中,针对扫描路径上的空缺点确定空缺区域,图12是本申请一个示例性实施例提供的三维模型的生成方法的流程图,以该方法应用于终端中为例进行说明,如图12所示,该方法包括:
步骤1201,获取目标虚拟房屋的屋体模型。
屋体模型为目标虚拟房屋对应的房屋框架模型,也即屋体模型对应目标虚拟房屋在外观上除了门窗以外其他部分的轮廓,屋体模型内部对应有容纳区域,也即目标虚拟房屋内部的容纳区域,该容纳区域用于容纳其他虚拟物体和/或虚拟对象,示意性的,虚拟家居设备和虚拟家具设置于容纳区域的地面,虚拟对象在容纳区域的地面上进行活动,虚拟装饰品挂于内部容纳区域的墙体上。
步骤1202,获取屋体模型内部的节点数据。
节点数据中包括根节点数据、长度节点数据、宽度节点数据和高度节点数据。
步骤1203,根据节点数据构建包围盒。
包围盒对应屋体模型的内部容纳区域,也即,以屋体模型的内部容纳区域为生成基准,生成与屋体模型内部的墙体贴合或近似贴合的包围盒。
步骤1204,从根节点开始,在垂直方向的高度范围内向水平方向,对屋体模型的墙面进行逐层扫描,得到墙体上的空缺区域。
可选地,在第三顶点的高度范围内,对墙面进行水平方向的逐层扫描。
也即,从根节点开始向第一方向进行逐层扫描,得到第一墙面的第一空缺区域;从根节点开始,向第二方向进行逐层扫描,得到第二墙面的第二空缺区域;从第一顶点开始,向第二方向进行逐层扫描,得到第三墙面的第三空缺区域;从第二顶点开始,向第一方向进行逐层扫描,得到第四墙面的第四空缺区域。
步骤1205,在逐层扫描的过程中,针对每层扫描路径,响应于扫描路径上包括空缺点,确定扫描路径上的空缺起始点和空缺终止点。
可选地,以预设扫描检测在扫描路径上进行扫描,并针对扫描过程对扫描路径进行如下标记:
响应于第一扫描点不空缺,在第一扫描点上以第一标记进行标注,第一标记用于表示第一扫描点不空缺;响应于第二扫描点空缺,且第二扫描点之前一个扫描点不空缺,在第二扫描点上以第二标记进行标注,第二标记用于表示第二扫描点为空缺起始点;响应于第三扫描点空缺,且第三扫描点之前一个扫描点空缺,在第三扫描点上以第三标记进行标注,第三标记用于表示第三扫描点为空缺点;响应于第四扫描点空缺,且第四扫描点之后的扫描点不空缺,在第四扫描点上以第四标记进行标注,第四标记用于表示第四扫描点为空缺终止点。
示意性的,请参考图13,在屋体模型1300的墙面1310上进行扫描,当扫描点不空缺时,向扫描点设置第一标记1311,当扫描点空缺,且之前一个扫描点不空缺时,向扫描点设置第二标记1312,当扫描点空缺,且之前一个扫描点空缺时,向扫描点设置第三标记1313,当扫描点空缺,且之后一个扫描点不空缺时,向扫描点设置第四标记1314。
步骤1206,响应于扫描路径上不包括空缺点,根据已确定的空缺起始点和空缺终止点生成空缺区域。
示意性的,墙壁扫描过程请参考如图14所示,该过程包括:步骤1401,启动墙壁扫描子程序。墙壁扫描子程序用于对墙壁进行射线检测,从而确定墙壁上的检测点是否为空缺点。步骤1402,确定扫描过程中的当前点。步骤1403,判断当前扫描路径上是否存在空缺点。也即,在逐层扫描的过程中,确定单层扫描路径上是否存在空缺点。步骤1404,当扫描路径上存在空缺点,通过候选门窗子程序进行标记。也即,通过候选门窗子程序对空缺点进行标记。可选地,非空缺点也通过候选门窗子程序进行标记,空缺点与非空缺点的标记方式不同。步骤1405,当扫描路径上不存在空缺点,封闭当前未封闭的门窗候选区域。也即,当扫描路径上不存在空缺点时,也即在该扫描路径以下的区域中已生成的空缺区域构建成完整的空缺区域。步骤1406,将当前路径向上移动预设长度。步骤1407,判断移动后是否超出高度范围。步骤1408,当超出高度范围,则针对空缺区域设置门窗数据。也即,设置门窗对应的包围盒。其中,设置方向为由屋体模型内部向外。
上述扫描子程序在对空缺点进行检测的过程中,请参考图15,主要包括如下过程:步骤1501,确定扫描过程中的当前点。步骤1502,记录点Pt1和Pt2,Pt1为当前点向前进方向的垂直方向移动W1长度的点,Pt2为当前点向前进方向的垂直方向移动W2长度的点。其中,Pt1和Pt2向相反方向移动。步骤1503,由Pt1向Pt2进行射线检测,判断两个点之间是否存在物体。步骤1504,当存在物体,且上次检测结果为否,则记录空缺点为空缺终止点。步骤1505,当不存在物体,且上次检测结果为是,则记录空缺点为空缺起始点。步骤1506,保存空缺起始点和空缺终止点。步骤1507,向前进方向移动当前点。步骤1508,判断坐标是否超出包围盒范围。
可选地,当前扫描路径上存在空缺点时,请参考图16,候选门窗扫描子程序的工作过程包括如下过程:步骤1601,遍历每一个空缺点。步骤1602,遍历每一个未封闭的候选空缺区域。步骤1603,判断当前空缺点与当前候选空缺区域是否重叠。步骤1604,当重叠时,将当前空缺点设置入当前空缺区域。步骤1605,遍历结束时,判断是否所有候选空缺区域与空缺点都不重叠。步骤1607,当都不重叠时,新建候选空缺区域并记录。
步骤1207,根据空缺区域确定目标虚拟房屋对应的门窗模型。
可选地,在确定空缺区域后,选择生成门窗数据选项后,根据空缺区域自动生成门窗。
综上所述,本申请实施例提供的三维模型的生成方法,通过生成与屋体模型对应的包围盒,并根据包围盒对屋体模型的墙面进行扫描,确定屋体模型墙面的空缺区域,从而自动生成与屋体模型对应的门窗模型,将物体模型与门窗模型结合构建得到目标虚拟房屋的三维模型,由于门窗模型的门窗数据是通过对墙面的扫描自动生成的,无需开发人员手动对门窗数据进行绘制,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
图17是本申请一个示例性实施例提供的三维模型的生成装置的结构框图,如图17所示,该装置包括:
获取模块1710,用于获取目标虚拟房屋的屋体模型;
生成模块1720,用于生成与所述屋体模型对应的包围盒,所述包围盒对应所述屋体模型的内部容纳区域;
扫描模块1730,用于以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域;
所述生成模块1720,还用于根据所述空缺区域确定所述目标虚拟房屋对应的门窗模型,所述屋体模型和所述门窗模型组合得到所述目标虚拟房屋的三维模型。
在一个可选的实施例中,所述获取模块1710,还用于获取所述屋体模型内部的节点数据,所述节点数据中包括所述屋体模型内部至少四个节点的数据;
所述生成模块1720,还用于根据所述节点数据构建所述包围盒。
在一个可选的实施例中,所述获取模块1710,还用于从所述屋体模型内部通过三维虚拟引擎对所述屋体模型进行射线检测,得到所述屋体模型的边缘节点对应的所述节点数据。
在一个可选的实施例中,所述节点数据中包括根节点数据、长度节点数据、宽度节点数据和高度节点数据;
如图18所示,生成模块1720,包括:
确定单元1721,用于根据所述根节点数据和所述长度节点数据,确定第一顶点的位置,所述第一顶点为位于根节点第一方向的顶点;
所述确定单元1721,还用于根据所述根节点数据和所述宽度节点数据,确定第二顶点的位置,所述第二顶底为位于所述根节点第二方向的顶点,所述第一方向和所述第二方向属于水平方向;
所述确定单元1721,还用于根据所述根节点数据和所述高度节点数据,确定第三顶点的位置,所述第三顶点为位于所述根节点第三方向的顶点,所述第三方向属于垂直方向;
构建单元1722,用于根据所述根节点、所述第一顶点、所述第二顶点和所述第三顶点构建所述候选包围盒。
在一个可选的实施例中,所述扫描模块1730,还用于从所述根节点开始,在所述垂直方向的高度范围内向所述水平方向,对所述屋体模型的墙体进行逐层扫描,得到所述墙体上的空缺区域。
在一个可选的实施例中,所述扫描模块1730,还用于从所述根节点开始,向所述第一方向进行逐层扫描,得到第一墙面的第一空缺区域;从所述根节点开始,向所述第二方向进行逐层扫描,得到第二墙面的第二空缺区域;从所述第一顶点开始,向所述第二方向进行逐层扫描,得到第三墙面的第三空缺区域;从所述第二顶点开始,向所述第一方向进行逐层扫描,得到第四墙面的第四空缺区域。
在一个可选的实施例中,所述扫描模块1730,还用于在逐层扫描的过程中,针对每层扫描路径,响应于所述扫描路径上包括空缺点,确定所述扫描路径上的空缺起始点和空缺终止点;
所述生成模块1720,还用于响应于所述扫描路径上不包括所述空缺点,根据已确定的所述空缺起始点和所述空缺终止点生成所述空缺区域。
在一个可选的实施例中,所述扫描模块1730,还用于以预设扫描间隔在所述扫描路径上进行扫描;
所述扫描模块1730,还用于响应于第一扫描点不空缺,在所述第一扫描点上以第一标记进行标注,所述第一标记用于标识所述第一扫描点不空缺;
所述扫描模块1730,还用于响应于第二扫描点空缺,且所述第二扫描点之前一个扫描点不空缺,在所述第二扫描点上以第二标记进行标注,所述第二标记用于标识所述第二扫描点为所述空缺起始点;
所述扫描模块1730,还用于响应于第三扫描点空缺,且所述第三扫描点之前一个扫描点空缺,在所述第三扫描点上以第三标记进行标注,所述第三标记用于标识所述第三扫描点为所述空缺点;
所述扫描模块1730,还用于响应于所述第四扫描点空缺,且所述第四扫描点之后的扫描点不空缺,在所述第四扫描点上以第四标记进行标注,所述第四标记用于标识所述第四扫描点为所述空缺终止点。
综上所述,本申请实施例提供的三维模型的生成装置,通过生成与屋体模型对应的包围盒,并根据包围盒对屋体模型的墙面进行扫描,确定屋体模型墙面的空缺区域,从而自动生成与屋体模型对应的门窗模型,将物体模型与门窗模型结合构建得到目标虚拟房屋的三维模型,由于门窗模型的门窗数据是通过对墙面的扫描自动生成的,无需开发人员手动对门窗数据进行绘制,提高了门窗模型的生成效率,提高了虚拟房屋的构建效率。
需要说明的是:上述实施例提供的三维模型的生成装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的三维模型的生成装置与三维模型的生成方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还提供了一种终端,该终端包括处理器和存储器,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的基于虚拟环境的技能释放方法由第一终端执行的步骤或由第二终端执行的步骤。需要说明的是,该终端可以是如下图19所提供的终端。
图19示出了本申请一个示例性实施例提供的终端1900的结构框图。该终端1900可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1900包括有:处理器1901和存储器1902。
处理器1901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1901所执行以实现本申请中方法实施例提供的三维模型的生成方法。
在一些实施例中,终端1900还可选包括有:外围设备接口1903和至少一个外围设备。处理器1901、存储器1902和外围设备接口1903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1903相连。具体地,外围设备包括:射频电路1904、显示屏1905、摄像头组件1906、音频电路1907、定位组件1908和电源1909中的至少一种。
外围设备接口1903可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1901和存储器1902。在一些实施例中,处理器1901、存储器1902和外围设备接口1903被集成在同一芯片或电路板上;在一些其他实施例中,处理器1901、存储器1902和外围设备接口1903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1905是触摸显示屏时,显示屏1905还具有采集在显示屏1905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1901进行处理。此时,显示屏1905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1905可以为一个,设置终端1900的前面板;在另一些实施例中,显示屏1905可以为至少两个,分别设置在终端1900的不同表面或呈折叠设计;在再一些实施例中,显示屏1905可以是柔性显示屏,设置在终端1900的弯曲表面上或折叠面上。甚至,显示屏1905还可以设置成非矩形的不规则图形,也即异形屏。显示屏1905可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1906用于采集图像或视频。可选地,摄像头组件1906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1901进行处理,或者输入至射频电路1904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1901或射频电路1904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1907还可以包括耳机插孔。
定位组件1908用于定位终端1900的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1908可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1909用于为终端1900中的各个组件进行供电。电源1909可以是交流电、直流电、一次性电池或可充电电池。当电源1909包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1900还包括有一个或多个传感器1910。该一个或多个传感器1910包括但不限于:加速度传感器1911、陀螺仪传感器1912、压力传感器1913、指纹传感器1914、光学传感器1915以及接近传感器1916。
加速度传感器1911可以检测以终端1900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1911可以用于检测重力加速度在三个坐标轴上的分量。处理器1901可以根据加速度传感器1911采集的重力加速度信号,控制触摸显示屏1905以横向视图或纵向视图进行用户界面的显示。加速度传感器1911还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1912可以检测终端1900的机体方向及转动角度,陀螺仪传感器1912可以与加速度传感器1911协同采集用户对终端1900的3D动作。处理器1901根据陀螺仪传感器1912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1913可以设置在终端1900的侧边框和/或触摸显示屏1905的下层。当压力传感器1913设置在终端1900的侧边框时,可以检测用户对终端1900的握持信号,由处理器1901根据压力传感器1913采集的握持信号进行左右手识别或快捷操作。当压力传感器1913设置在触摸显示屏1905的下层时,由处理器1901根据用户对触摸显示屏1905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1914用于采集用户的指纹,由处理器1901根据指纹传感器1914采集到的指纹识别用户的身份,或者,由指纹传感器1914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1914可以被设置终端1900的正面、背面或侧面。当终端1900上设置有物理按键或厂商Logo时,指纹传感器1914可以与物理按键或厂商Logo集成在一起。
光学传感器1915用于采集环境光强度。在一个实施例中,处理器1901可以根据光学传感器1915采集的环境光强度,控制触摸显示屏1905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1905的显示亮度;当环境光强度较低时,调低触摸显示屏1905的显示亮度。在另一个实施例中,处理器1901还可以根据光学传感器1915采集的环境光强度,动态调整摄像头组件1906的拍摄参数。
接近传感器1916,也称距离传感器,通常设置在终端1900的前面板。接近传感器1916用于采集用户与终端1900的正面之间的距离。在一个实施例中,当接近传感器1916检测到用户与终端1900的正面之间的距离逐渐变小时,由处理器1901控制触摸显示屏1905从亮屏状态切换为息屏状态;当接近传感器1916检测到用户与终端1900的正面之间的距离逐渐变大时,由处理器1901控制触摸显示屏1905从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图19中示出的结构并不构成对终端1900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请的实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的三维模型的生成方法。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述各方法实施例提供的三维模型的生成方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的三维模型的生成方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种三维模型的生成方法,其特征在于,所述方法包括:
获取目标虚拟房屋的屋体模型;
生成与所述屋体模型对应的包围盒,所述包围盒对应所述屋体模型的内部容纳区域;
以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域;
根据所述空缺区域确定所述目标虚拟房屋对应的门窗模型,所述屋体模型和所述门窗模型组合得到所述目标虚拟房屋的三维模型。
2.根据权利要求1所述的方法,其特征在于,所述生成与所述屋体模型对应的包围盒,包括:
获取所述屋体模型内部的节点数据,所述节点数据中包括所述屋体模型内部至少四个节点的数据;
根据所述节点数据构建所述包围盒。
3.根据权利要求2所述的方法,其特征在于,所述获取所述屋体模型内部的节点数据,包括:
从所述屋体模型内部通过三维虚拟引擎对所述屋体模型进行射线检测,得到所述屋体模型的边缘节点对应的所述节点数据。
4.根据权利要求2所述的方法,其特征在于,所述节点数据中包括根节点数据、长度节点数据、宽度节点数据和高度节点数据;
所述根据所述节点数据构建所述包围盒,包括:
根据所述根节点数据和所述长度节点数据,确定第一顶点的位置,所述第一顶点为位于根节点第一方向的顶点;
根据所述根节点数据和所述宽度节点数据,确定第二顶点的位置,所述第二顶点为位于所述根节点第二方向的顶点,所述第一方向和所述第二方向属于水平方向;
根据所述根节点数据和所述高度节点数据,确定第三顶点的位置,所述第三顶点为位于所述根节点第三方向的顶点,所述第三方向属于垂直方向;
根据所述根节点、所述第一顶点、所述第二顶点和所述第三顶点构建候选包围盒。
5.根据权利要求4所述的方法,其特征在于,所述以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域,包括:
从所述根节点开始,在所述垂直方向的高度范围内向所述水平方向,对所述屋体模型的墙体进行逐层扫描,得到所述墙体上的空缺区域。
6.根据权利要求5所述的方法,其特征在于,所述从所述根节点开始在所述垂直方向的高度范围内向所述水平方向,对所述屋体模型的墙体进行逐层扫描,得到所述墙体上的空缺区域,包括:
从所述根节点开始,向所述第一方向进行逐层扫描,得到第一墙面的第一空缺区域;
从所述根节点开始,向所述第二方向进行逐层扫描,得到第二墙面的第二空缺区域;
从所述第一顶点开始,向所述第二方向进行逐层扫描,得到第三墙面的第三空缺区域;
从所述第二顶点开始,向所述第一方向进行逐层扫描,得到第四墙面的第四空缺区域。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在逐层扫描的过程中,针对每层扫描路径,响应于所述扫描路径上包括空缺点,确定所述扫描路径上的空缺起始点和空缺终止点;
响应于所述扫描路径上不包括所述空缺点,根据已确定的所述空缺起始点和所述空缺终止点生成所述空缺区域。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
以预设扫描间隔在所述扫描路径上进行扫描;
响应于第一扫描点不空缺,在所述第一扫描点上以第一标记进行标注,所述第一标记用于标识所述第一扫描点不空缺;
响应于第二扫描点空缺,且所述第二扫描点之前一个扫描点不空缺,在所述第二扫描点上以第二标记进行标注,所述第二标记用于标识所述第二扫描点为所述空缺起始点;
响应于第三扫描点空缺,且所述第三扫描点之前一个扫描点空缺,在所述第三扫描点上以第三标记进行标注,所述第三标记用于标识所述第三扫描点为所述空缺点;
响应于第四扫描点空缺,且所述第四扫描点之后的扫描点不空缺,在所述第四扫描点上以第四标记进行标注,所述第四标记用于标识所述第四扫描点为所述空缺终止点。
9.一种三维模型的生成装置,其特征在于,所述装置包括:
获取模块,用于获取目标虚拟房屋的屋体模型;
生成模块,用于生成与所述屋体模型对应的包围盒,所述包围盒对应所述屋体模型的内部容纳区域;
扫描模块,用于以所述包围盒为扫描基准,对所述屋体模型的墙体进行扫描,得到所述墙体上的空缺区域;
所述生成模块,还用于根据所述空缺区域确定所述目标虚拟房屋对应的门窗模型,所述屋体模型和所述门窗模型组合得到所述目标虚拟房屋的三维模型。
10.根据权利要求9所述的装置,其特征在于,所述获取模块,还用于获取所述屋体模型内部的节点数据,所述节点数据中包括所述屋体模型内部至少四个节点的数据;
所述生成模块,还用于根据所述节点数据构建所述包围盒。
11.根据权利要求10所述的装置,其特征在于,所述获取模块,还用于从所述屋体模型内部通过三维虚拟引擎对所述屋体模型进行射线检测,得到所述屋体模型的边缘节点对应的所述节点数据。
12.根据权利要求10所述的装置,其特征在于,所述节点数据中包括根节点数据、长度节点数据、宽度节点数据和高度节点数据;
所述生成模块,包括:
确定单元,用于根据所述根节点数据和所述长度节点数据,确定第一顶点的位置,所述第一顶点为位于根节点第一方向的顶点;
所述确定单元,还用于根据所述根节点数据和所述宽度节点数据,确定第二顶点的位置,所述第二顶点为位于所述根节点第二方向的顶点,所述第一方向和所述第二方向属于水平方向;
所述确定单元,还用于根据所述根节点数据和所述高度节点数据,确定第三顶点的位置,所述第三顶点为位于所述根节点第三方向的顶点,所述第三方向属于垂直方向;
构建单元,用于根据所述根节点、所述第一顶点、所述第二顶点和所述第三顶点构建候选包围盒。
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一所述的三维模型的生成方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一所述的三维模型的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010784459.0A CN111754631B (zh) | 2020-08-06 | 2020-08-06 | 三维模型的生成方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010784459.0A CN111754631B (zh) | 2020-08-06 | 2020-08-06 | 三维模型的生成方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111754631A CN111754631A (zh) | 2020-10-09 |
CN111754631B true CN111754631B (zh) | 2023-06-30 |
Family
ID=72713147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010784459.0A Active CN111754631B (zh) | 2020-08-06 | 2020-08-06 | 三维模型的生成方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111754631B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969877A (zh) * | 2021-02-24 | 2022-08-30 | 广东博智林机器人有限公司 | 一种门窗布置方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101107632A (zh) * | 2005-01-25 | 2008-01-16 | 科乐美数码娱乐株式会社 | 图像生成装置、自动配置方法、记录介质以及程序 |
JP2008242590A (ja) * | 2007-03-26 | 2008-10-09 | Fujitsu Ltd | 三次元内部空間モデル生成方法、装置及びプログラム |
DE102008002241A1 (de) * | 2008-06-05 | 2009-12-10 | Robert Bosch Gmbh | Verfahren und Messsystem zur bildbasierten Vermessung eines Raumes |
CN107635750A (zh) * | 2015-07-31 | 2018-01-26 | 惠普发展公司,有限责任合伙企业 | 用于3d打印构建包络的部件布置确定 |
CN110047152A (zh) * | 2019-04-12 | 2019-07-23 | 腾讯科技(深圳)有限公司 | 基于虚拟环境的物体构建方法、装置及可读存储介质 |
CN110197525A (zh) * | 2019-06-10 | 2019-09-03 | 网易(杭州)网络有限公司 | 虚拟建筑模型的窗口灯光控制方法、装置、处理器及终端 |
WO2019228188A1 (zh) * | 2018-05-30 | 2019-12-05 | 贝壳找房(北京)科技有限公司 | 在虚拟三维房屋模型内标注和显示空间尺寸的方法与装置 |
CN111191306A (zh) * | 2019-12-12 | 2020-05-22 | 江苏艾佳家居用品有限公司 | 一种房间设计效果展示方法及系统 |
-
2020
- 2020-08-06 CN CN202010784459.0A patent/CN111754631B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101107632A (zh) * | 2005-01-25 | 2008-01-16 | 科乐美数码娱乐株式会社 | 图像生成装置、自动配置方法、记录介质以及程序 |
JP2008242590A (ja) * | 2007-03-26 | 2008-10-09 | Fujitsu Ltd | 三次元内部空間モデル生成方法、装置及びプログラム |
DE102008002241A1 (de) * | 2008-06-05 | 2009-12-10 | Robert Bosch Gmbh | Verfahren und Messsystem zur bildbasierten Vermessung eines Raumes |
CN107635750A (zh) * | 2015-07-31 | 2018-01-26 | 惠普发展公司,有限责任合伙企业 | 用于3d打印构建包络的部件布置确定 |
WO2019228188A1 (zh) * | 2018-05-30 | 2019-12-05 | 贝壳找房(北京)科技有限公司 | 在虚拟三维房屋模型内标注和显示空间尺寸的方法与装置 |
CN110047152A (zh) * | 2019-04-12 | 2019-07-23 | 腾讯科技(深圳)有限公司 | 基于虚拟环境的物体构建方法、装置及可读存储介质 |
CN110197525A (zh) * | 2019-06-10 | 2019-09-03 | 网易(杭州)网络有限公司 | 虚拟建筑模型的窗口灯光控制方法、装置、处理器及终端 |
CN111191306A (zh) * | 2019-12-12 | 2020-05-22 | 江苏艾佳家居用品有限公司 | 一种房间设计效果展示方法及系统 |
Non-Patent Citations (2)
Title |
---|
三维室内场景分析及合成算法研究;杨佳丽;中国优秀硕士学位论文全文数据库 信息科技辑;第I138-991 * |
基于样本库的室内场景自动生成;黄鹏;中国优秀硕士学位论文全文数据库 工程科技II辑;第C038-526页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111754631A (zh) | 2020-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11256384B2 (en) | Method, apparatus and device for view switching of virtual environment, and storage medium | |
KR102410802B1 (ko) | 마커 포인트 위치를 표시하기 위한 방법, 전자 장치, 및 컴퓨터 판독가능 저장매체 | |
WO2019205838A1 (zh) | 虚拟场景中的距离信息显示方法、终端及计算机设备 | |
WO2019153836A1 (zh) | 虚拟环境中虚拟对象的姿态确定方法、装置及介质 | |
CN108671543A (zh) | 虚拟场景中的标记元素显示方法、计算机设备及存储介质 | |
JP7191210B2 (ja) | 仮想環境の観察方法、デバイス及び記憶媒体 | |
CN111921197B (zh) | 对局回放画面的显示方法、装置、终端及存储介质 | |
CN111035918A (zh) | 基于虚拟环境的侦察界面显示方法、装置及可读存储介质 | |
JP7186901B2 (ja) | ホットスポットマップの表示方法、装置、コンピュータ機器および読み取り可能な記憶媒体 | |
CN112156464A (zh) | 虚拟对象的二维形象展示方法、装置、设备及存储介质 | |
CN110496392B (zh) | 虚拟对象的控制方法、装置、终端及存储介质 | |
CN111744185B (zh) | 虚拟对象控制方法、装置、计算机设备及存储介质 | |
CN111589141B (zh) | 虚拟环境画面的显示方法、装置、设备及介质 | |
CN111273780B (zh) | 基于虚拟环境的动画播放方法、装置、设备及存储介质 | |
WO2019184782A1 (zh) | 虚拟场景中的对象控制方法、装置及计算机设备 | |
CN111589127A (zh) | 虚拟角色的控制方法、装置、设备及存储介质 | |
CN109806583B (zh) | 用户界面显示方法、装置、设备及系统 | |
WO2022227915A1 (zh) | 显示位置标记的方法、装置、设备及存储介质 | |
CN111026318A (zh) | 基于虚拟环境的动画播放方法、装置、设备及存储介质 | |
US12061773B2 (en) | Method and apparatus for determining selected target, device, and storage medium | |
CN110833695A (zh) | 基于虚拟场景的业务处理方法、装置、设备及存储介质 | |
CN112843703B (zh) | 信息显示方法、装置、终端及存储介质 | |
CN112604302B (zh) | 虚拟环境中虚拟对象的互动方法、装置、设备及存储介质 | |
CN111754631B (zh) | 三维模型的生成方法、装置、设备及可读存储介质 | |
CN112057861B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40030697 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |