一种户型场景光照效果生成方法及系统转让专利

申请号 : CN201911101210.9

文献号 : CN111008416B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈旋周海王洪建刘化丹赵瑞新席璐刘尧辉

申请人 : 江苏艾佳家居用品有限公司

摘要 :

本发明公开了一种户型场景光照效果生成方法及系统,更具体是涉及一种基于户型空间区域几何特征以及家具模型所占空间信息的自动补光方法及系统,属于计算机辅助设计技术领域。本发明提出一种基于户型空间区域几何特征以及家具模型所占空间信息的自动补光方法及系统。利用区域几何特征数据以及模型在空间所占据的空间信息,自动计算补光灯所要摆放的具体位置。节省设计师工作的效率,加快工作流。

权利要求 :

1.一种户型场景光照效果生成方法,其特征在于,包括如下步骤:

第1步,获取户型图中各个房间的边界区域,识别出边界点;对于相互之间为共线关系的边界点的集合,从集合当中删除掉除两端的边界点以外的边界点;并继续对剩余的边界点按照逆时针或者顺时针编号;

第2步,对于餐厅、客厅或者卧室的边界点的有序点集,依次对每个边界点进行遍历,计算当前点与下一点之间的向量V1、当前点下一点与再下一点之间的向量V2、当前点的上一点与A点之间的向量V3;再计算V3与V1的外积A1、V1与V2的外积A2;如果A1和A2的内积符号为正,则依次将由当前点的上一点、当前点、当前点的下一点、当前点的再下一点构成的区域标记出凸出区域;完成遍历过程后,识别出全部的凸出区域;对于凸出区域的三条依次相连的线段,取其首尾两条线段中的最短的一条线段与中间的线段构成一个矩形,作为凸出矩形;若首尾两条线段长度相等,则任意取其中一条与中间的线段构成一个矩形;选取出面积最大的凸出矩形,并进入第3步;

第3步,将矩形的四个顶点等比例向矩形的中心收缩一定距离,得到四个收缩点;分别将四个收缩点与矩形中心点之间的中点的水平方向坐标作为备选的补光点的水平方向坐标,以墙的高度减去一定距离后的高度作为补光点的垂直方向坐标;

第4步,获取房间中的家具的最小包围盒坐标,选取出高度较高的家具,获得高度较高的家具在水平面上的投影区域,并将投影区域放大一定比例,作为家具投影区;若备选的补光点在水平面上的投影位置落在家具投影区内部,则将该补光点从备选中删除,剩余的补光点作为补光灯的位置;

凸出区域的面积是通过如下方法得到:面积=首尾两条线段中较短的线段的长度×中间一条线段的长度;

第3步中将矩形的四个顶点等比例向矩形的中心收缩一定距离是指收缩15到30厘米;

第3步中以墙的高度减去一定距离是指WallHeight‑Height‑Tol,WallHeight是墙的高度,Height是吊顶的底面距离墙顶的高度,Tol的值设为10厘米‑20厘米之间;

第4步中高度较高的家具是指高度高于250厘米的家具;第4步中将投影区域放大一定比例是指放大0.05‑0.3倍的面积。

2.根据权利要求1所述的户型场景光照效果生成方法,其特征在于,还包括对卫生间的补光灯位置的确定方法,包括如下步骤:对于干湿分离类型的卫生间,识别出干湿分隔墙,取墙的中点分别向墙的两侧作垂线,垂线分别与卫生间的边界线段相交后,得到两个相交点,分别将两个相交点与墙的中点之间的线段的中点作为补光灯的水平方向位置。

3.根据权利要求1所述的户型场景光照效果生成方法,其特征在于,还包括对厨房、储藏间或者衣帽间的补光灯位置的确定方法,包括如下步骤:执行所述的第3步,得到备选的补光点的水平和垂直方向坐标;识别出房间中的物体,并得到物体的最小包围盒,判定备选的补光点是否落在最小包围盒内;若存在至少一个备选的补光点不在最小包围盒内,则任意取其中一个作为补光灯的位置;若全部的备选的补光点都在最小包围盒内,则取房间的门的中点,沿着中点向房间内部延伸一定的距离,作为补光灯的水平方向坐标;

沿着中点向房间内部延伸一定的距离是指延长20‑30厘米。

4.根据权利要求1所述的户型场景光照效果生成方法,其特征在于,还包括对走廊或者玄关区域的补光灯位置的确定方法,包括如下步骤:判定客厅和餐厅是否是相邻的位置关系。

5.根据权利要求1所述的户型场景光照效果生成方法,其特征在于,1)如果客厅和餐厅相邻,找到客厅的最大的凸出矩形,将矩形的首尾两条线段延长,若能够将线段延长并能够与客厅得到至少一个交点,那么将得到交点的延长线的朝向客厅外部的分割区域作为玄关或者走廊;以延长线的中点作出一条贯穿分割区域的垂线,并得到垂线与分割区域的另一个交点,定义延长线的中点为oldstart点,另一个交点为oldend点;将oldstart点和oldend点分别向垂线的中点收缩一定距离ShrinkL,newstart与newend之间的距离为TempL,oldstart与oldend之间的距离TempLength;计算TempL除以(2*ShrinkL)的值TempN;临时待补光灯的个数NumOfLights=TempN+1;若TempLength<=150厘米或者NumOfLights<=2;则计算oldStart与oldEnd的中心点作为补光灯的水平方向坐标;若NumOfLights>=3,计算灯间距值EachDis=(TempLength‑2*ShrinkL)/(NumOfLights‑1),将上述newstart与newend作为待补光点以及在这两点之间每隔EachDis距离之后,新增一个点作为待补光点;2)如果客厅和餐厅不相邻,则分别找到客厅或餐厅的全部凸出矩形,除了面积最大的凸出矩形外,在其它的凸出矩形的内部设置补光点;ShrinkL设置为65‑70厘米之间。

6.根据权利要求1所述的户型场景光照效果生成方法,其特征在于,还包括:自动生成户型中的观察点的方法,包括如下步骤:对于各个房间,确定相机的初始位置,作为观察点;

使相机的镜头朝向所在房间的中心点,进行观察;对于客厅和餐厅,如果客厅和餐厅是相邻的,则以客厅和餐厅的中心点的连线的中点,作为客厅或餐厅的观察点;如果客厅和餐厅是不相邻的,那么分别对客厅或餐厅进行观察点的确定,步骤是:计算房间的门洞数量,如果门洞数量为1,则门洞二维中心点向区域内延伸80厘米,作为观察点;如果门洞数量大于等于2,则取与房间中心点最近的门洞,门洞二维中心点向区域内延伸80厘米,作为观察点。

7.根据权利要求1所述的户型场景光照效果生成方法,其特征在于,对于卧室,确定出床贴紧于卧室边界的边的数量;如果是床单边靠墙或者双边靠墙,找到床的长边与短边,找到墙,取床的包围盒的中心点Center,从Center点出发,按照床的长边的方向及反方向发出射线,使两条射线与卧室的边界线相交得到交点,得到两条线段,取两条线段当中较长的线段,将较长的线段与床的包围盒的交点定义为第一交点,较长的线段与卧室的交点定义为第二交点,取第一交点和第二交点的中点为观察点;如果是床三边靠墙,(1)如果卧室为四边形,则取卧室的中心点与门的中心点连线的中点作为观察点;(2)如果卧室的边界线条数大于等于5条,则识别出卧室的最大凸出矩形;找到卧室中不归属于这个最大凸出矩形中的其它线段,并找到其它线段中与最大凸出矩形的中间一条线段相平行的线段,作为平行线段,取平行线段的中点与卧室的中心点的连线的中点,作为观察点。

说明书 :

一种户型场景光照效果生成方法及系统

技术领域

[0001] 本发明公开了一种户型场景光照效果生成方法及系统,更具体是涉及一种基于户型空间区域几何特征以及家具模型所占空间信息的自动补光方法及系统,属于计算机辅助设计技术领域。

背景技术

[0002] 在户型设计效果的展示中,往往由于自定义的灯光照射效果存在不足,需要进行增加光源,以增加户型室内的展示效果。
[0003] 现有的家装设计软件,补光的方法主要基于人为手动地拖动补光灯,逐一在方案场景里摆放,手动调节补光灯的位置。若要想要达到比较好的补光效果,往往需要多数的补光灯,不停调节,需要耗费设计师很多的时间。
[0004] 另外,在完成了补光之后,为了更好地向客户展示设计效果,还需要通过软件自动生成一个较好的观察位置。室内全景图的呈现有利于用户能够便捷地体验家装设计后的预见效果,但是全景图的初始化视角以及相机观察点(或者可以称为模拟人在三维空间中所在的位置信息)对全景图的视觉效果极为重要,一个好的观察点,可以给观察者更好的体验对于每一个空间区域而言,自动化的计算初始化相机方向向量以及观察点,可以减少设计师家装设计的过程中繁琐地手动点击的过程,提高工作效率。而在现有的家装软件中,并没有自动生成一个较好的全局观察点的方法。

发明内容

[0005] 本发明的目的是:解决现有的家装设计软件不能自动化地在户型中增加补光点的问题。本发明提出一种基于户型空间区域几何特征以及家具模型所占空间信息的自动补光方法及系统。利用区域几何特征数据以及模型在空间所占据的空间信息,自动计算补光灯所要摆放的具体位置。节省设计师工作的效率,加快工作流。同时,本发明还能够实现在得到补光设置之后,找到更好的展现各类房间的设计效果的自动化展示点的确定方法,可以有效地根据各类房间的不同特点确定出软件中的展示位置和角度。
[0006] 技术方案如下:
[0007] 一种户型场景光照效果生成方法,包括如下步骤:
[0008] 第1步,获取户型图中各个房间的边界区域,识别出边界点;对于相互之间为共线关系的边界点的集合,从集合当中删除掉除两端的边界点以外的边界点;并继续对剩余的边界点按照逆时针或者顺时针编号;
[0009] 第2步,对于餐厅、客厅或者卧室的边界点的有序点集,依次对每个边界点进行遍历,计算当前点与下一点之间的向量V1、当前点下一点与再下一点之间的向量V2、当前点的上一点与A点之间的向量V3;再计算V3与V1的外积A1、V1与V2的外积A2;如果A1和A2的内积符号为正,则依次将由当前点的上一点、当前点、当前点的下一点、当前点的再下一点构成的区域标记出凸出区域;完成遍历过程后,识别出全部的凸出区域;对于凸出区域的三条依次相连的线段,取其首尾两条线段中的最短的一条线段与中间的线段构成一个矩形,作为凸出矩形;若首尾两条线段长度相等,则任意取其中一条与中间的线段构成一个矩形;选取出面积最大的凸出矩形,并进入第3步;
[0010] 第3步,将矩形的四个顶点等比例向矩形的中心收缩一定距离,得到四个收缩点;分别将四个收缩点与矩形中心点之间的中点的水平方向坐标作为备选的补光点的水平方向坐标,以墙的高度减去一定距离后的高度作为补光点的垂直方向坐标;
[0011] 第4步,获取房间中的家具的最小包围盒坐标,选取出高度较高的家具,获得高度较高的家具在水平面上的投影区域,并将投影区域放大一定比例,作为家具投影区;若备选的补光点在水平面上的投影位置落在家具投影区内部,则将该补光点从备选中删除,剩余的补光点作为补光灯的位置。
[0012] 在一个实施方式中,凸出区域的面积是通过如下方法得到:面积=首尾两条线段中较短的线段的长度×中间一条线段的长度。
[0013] 在一个实施方式中,第3步中将矩形的四个顶点等比例向矩形的中心收缩一定距离是指收缩15到30厘米。
[0014] 在一个实施方式中,第3步中以墙的高度减去一定距离是指WallHeight‑Height‑Tol,WallHeight是墙的高度,Height是吊顶的底面距离墙顶的高度,Tol的值设为10厘米‑20厘米之间。
[0015] 在一个实施方式中,第4步中高度较高的家具是指高度高于250厘米的家具。
[0016] 在一个实施方式中,第4步中将投影区域放大一定比例是指放大0.05‑0.3倍的面积。
[0017] 在一个实施方式中,还包括对卫生间的补光灯位置的确定方法,包括如下步骤:
[0018] 对于干湿分离类型的卫生间,识别出干湿分隔墙,取墙的中点分别向墙的两侧作垂线,垂线分别与卫生间的边界线段相交后,得到两个相交点,分别将两个相交点与墙的中点之间的线段的中点作为补光灯的水平方向位置。
[0019] 在一个实施方式中,还包括对厨房、储藏间或者衣帽间的补光灯位置的确定方法,包括如下步骤:
[0020] 执行所述的第3步,得到备选的补光点的水平和垂直方向坐标;
[0021] 识别出房间中的物体,并得到物体的最小包围盒,判定备选的补光点是否落在最小包围盒内;若存在至少一个备选的补光点不在最小包围盒内,则任意取其中一个作为补光灯的位置;若全部的备选的补光点都在最小包围盒内,则取房间的门的中点,沿着中点向房间内部延伸一定的距离,作为补光灯的水平方向坐标。
[0022] 在一个实施方式中,沿着中点向房间内部延伸一定的距离是指延长20‑30厘米。
[0023] 在一个实施方式中,还包括对走廊或者玄关区域的补光灯位置的确定方法,包括如下步骤:
[0024] 判定客厅和餐厅是否是相邻的位置关系;
[0025] 1)如果客厅和餐厅相邻,找到客厅的最大的凸出矩形,将矩形的首尾两条线段延长,若能够将线段延长并能够与客厅得到至少一个交点,那么将得到交点的延长线的朝向客厅外部的分割区域作为玄关或者走廊;
[0026] 以延长线的中点作出一条贯穿分割区域的垂线,并得到垂线与分割区域的另一个交点,定义延长线的中点为oldstart点,另一个交点为oldend点;将oldstart点和oldend点分别向垂线的中点收缩一定距离ShrinkL,newstart与newend之间的距离为TempL,oldstart与oldend之间的距离TempLength;
[0027] 计算TempL除以(2*ShrinkL)的值TempN;临时待补光灯的个数NumOfLights=TempN+1;
[0028] 若TempLength<=150厘米或者NumOfLights<=2;则计算oldStart与oldEnd的中心点作为补光灯的水平方向坐标;
[0029] 若NumOfLights>=3,计算灯间距值EachDis=(TempLength‑2*ShrinkL)/(NumOfLights‑1),将上述newstart与newend作为待补光点以及在这两点之间每隔EachDis距离之后,新增一个点作为待补光点;
[0030] 2)如果客厅和餐厅不相邻,则分别找到客厅或餐厅的全部凸出矩形,除了面积最大的凸出矩形外,在其它的凸出矩形的内部设置补光点。
[0031] 在一个实施方式中,ShrinkL设置为65‑70厘米之间。
[0032] 在一个实施方式中,还包括确定客厅的背景墙的方法,包括如下步骤:
[0033] 对于客厅的边界点,任意取其中两个相邻的点,构成线段并求其向量,记为[0034] 获取客厅中的所有墙体线段的数据,分别计算其向量,记为
[0035] 将全部的边界点构成的线段与全部的墙体线段两两配对,判定其相互之间的向量是否小于设定阈值,若小于一定阈值时,则判定为相互之间为平行关系,再计算两条线段之间的距离,若小于一定阈值时,则判定墙体线段贴合于边界点构成的线段,将该墙体记为归属于该边界点之间线段的墙体;依次对全部的边界点构成的线段和墙体线段完成遍历,直至将全部的墙体线段的归属判定完成;
[0036] 找到其中长度最长的墙体线段,将补光灯在水平方向上的坐标向远离长度最长的墙体线段的方向移动一定距离。
[0037] 在一个实施方式中,还包括:自动生成户型中的观察点的方法,包括如下步骤:
[0038] 对于各个房间,确定相机的初始位置,作为观察点;使相机的镜头朝向所在房间的中心点或者近似中心点,进行观察。
[0039] 在一个实施方式中,对于客厅和餐厅,如果客厅和餐厅是相邻的,则以客厅和餐厅的中心点或者近似中心点的连线的中点,作为客厅或餐厅的观察点;
[0040] 如果客厅和餐厅是不相邻的,那么分别对客厅或餐厅进行观察点的确定,步骤是:计算房间的门洞数量,如果门洞数量为1,则门洞二维中心点向区域内延伸80厘米,作为观察点;如果门洞数量大于等于2,则取与房间中心点或者近似中心点最近的门洞,门洞二维中心点向区域内延伸80厘米,作为观察点。
[0041] 在一个实施方式中,对于卧室,确定出床贴紧于卧室边界的边的数量;
[0042] 如果是床单边靠墙或者双边靠墙,找到床的长边与短边,找到墙那么取床的包围盒的中心点Center,从Center点出发,按照床的长边的方向及反方向发出射线,使两条射线与卧室的边界线相交得到交点,得到两条线段,取两条线段当中较长的线段,将较长的线段与床的包围盒的交点定义为第一交点,较长的线段与卧室的交点定义为第二交点,取第一交点和第二交点的中点为观察点;
[0043] 如果是床三边靠墙,(1)如果卧室为四边形,则取卧室的中心点与门的中心点连线的中点作为观察点;(2)如果卧室的边界线条数大于等于5条,则识别出卧室的最大凸出矩形;找到卧室中不归属于这个最大凸出矩形中的其它线段,并找到其它线段中与最大凸出矩形的中间一条线段相平行的线段,作为平行线段,取平行线段的中点与卧室的中心点或近似中心点的连线的中点,作为观察点。
[0044] 有益效果
[0045] 本发明可以让用户在家装设计过程中,减少用户操作,提高设计师的工作效率。针对不同的方案不同的区域进行自动补光,补光灯的位置可智能计算,同时可以自动规避家具模型,避免补光灯的位置落在模型内部或者贴着模型,灯与灯之间的间距分布合理,可达到一个较好的补光效果。
[0046] 本发明可以让用户在家装设计过程中,减少用户操作,自动计算全景图观察点以及初始化相机方向向量,减少设计师人工繁琐的界面操作,提高工作效率。而且根据计算,可以反推出图形的形状(即区域的形状),适用于多种类型的方案,计算效果可以接近于人为手动放置的习惯标准,给人呈现较好的视觉体验。

附图说明

[0047] 图1是自动补光流程图
[0048] 图2是“凸出”区域说明图
[0049] 图3是“凸出”区域说明图
[0050] 图4是“凸出”区域计算流程图
[0051] 图5是预选的光源点的确定示意图
[0052] 图6是模型包围盒扩大示意图
[0053] 图7是某区域最大局部区域自动补光灯位置示意图
[0054] 图8是卫生间类型示意图
[0055] 图9是计算干湿分离类型卫生间补光灯位置的示意图
[0056] 图10是走廊以及玄关自动补光的点位示意图
[0057] 图11是背景墙的确定示意图
[0058] 图12是背景墙的确定示意图
[0059] 图13自动计算室内全景图观察点的流程图
[0060] 图14自动化计算室内全景图初始化相机方向向量的流程
[0061] 图15观察点自动生成效果示例
[0062] 图16区域近似中心点自动生成效果示例
[0063] 图17相机初始化方向向量示意图
[0064] 图18床头与区域一条边贴近的情况
[0065] 图19普通床的包围盒有两侧边与区域边贴近的情况
[0066] 图20普通床的包围盒有三侧边与区域边贴近的情况
[0067] 图21计算卧室观察点的示意图
[0068] 图22计算卧室观察点的示意图

具体实施方式

[0069] 本发明中的补光效果自动化生成方法的主要步骤如图1所示。
[0070] 首先,打开家装设计软件,加载户型方案;获取区域数据中的客厅以及餐厅的区域数据;这里的区域数据包括:用于表示客厅或餐厅的房间形状大小的线段集合,以及线段的边界点集合。预处理客厅以及餐厅的区域数据,主要是对区域边界中两点之间共线的点进行去除。
[0071] 对客厅或餐厅的自动补光方法。
[0072] 对于得到的客厅或餐厅的户型线段点集,记录此时边界点的个数为N,若此时点的个数N=4,则该整个矩形作为最大局部区域;若N>4,需要对餐厅和客厅的区域进行“凸出”区域的识别。具体过程如图2‑图4所示,详述如下:如图2所示,在图形中存在有“凸出”的区域,例如BCDE区域,本发明的方法中,在区域的客厅的区域之后,需要对其中的“凸出”的区域进行识别。识别的过程如下:
[0073] a.获取更新后的多边形边界点集;
[0074] b.遍历多边形的每一点,计算该点与相邻点构成的向量,以图中A为例,计算向量AB、FA、BC;(A点为当前点,由于多边形的顶点排序方向是逆时针方向,那么B点为它的下一点,C点为它的再下一点,F点为它的上一点;因此,其可以表述为A点与下一点之间的向量、A点下一点与再下一点之间的向量、A点的上一点与A点之间的向量)
[0075] c.计算上述步骤中的向量FA与向量AB的外积A1以及向量AB与向量BC的外积A2;
[0076] d.计算上述步骤中V1和V2的向量的内积InnnerCrossValue;
[0077] e.若上述步骤中的InnerCrossValue的内积符号为正,则表示点F、A、B、C构成的凸出的区域部分,记为FABC。
[0078] 至此就可以了对一个凸出区域的识别,通过依次对各个顶点的遍历,标识出全部的凸出区域;
[0079] 另外,对于每一个凸出区域,需要定义其面积,本发明的方法中,凸出区域是由三条依次相连的线段所构成的。对于首尾两条线段,找到其中较短的一条(如果首尾两条的长度相等,则任取一条),设凸出区域的面积=凸出区域的中间一条线段的长度×首尾两条中较短的一条的长度。
[0080] 接下来,根据上面的方法,可以计算出方案中客厅、餐厅的具有最大面积的凸出的矩形区域,具体的计算客厅,餐厅局部最大矩形的方法如上所述;如图5所示,假设各个凸出区域中具有最大面积的是PaPbPcPd矩形;
[0081] 在计算得到最大局部矩形之后,以最大局部矩形四个角点Pa,Pb,Pc,Pd分别向最大局部矩形的中心点LocalCenter收缩一段距离(可设置为15到30厘米),收缩一段距离的目的是为了避开吊顶所占用的空间,得到收缩后的四个点PA,PB,PC,PD;
[0082] 如图5所示,分别计算LocalCenter与PA,PB,PC,PD的中点得到Light1,Light2,Light3,Light4,同时计算该区域内的吊顶模型或者定制吊顶的底面距离墙顶的高度Height,以及墙高WallHeight,将WallHeight‑Height‑Tol作为补光灯的z轴坐标(Tol的值一般设为10厘米‑20厘米之间),通过这样的距离相减之后,使得补光灯的高度是从墙高起算,扣除掉吊顶的厚度,再扣除掉一小段灯座所占用的距离,作为实际的光源的高度;另外,光源的x,y坐标与上述Light1,Light2,Light3,Light4保持一致,这些点做为灯的待选位置;一般来说,光源需要具有较为靠近中间位置,因此,本步骤中设计的四个中点作为预选的光源点;同时,由于考虑到光源有可能受到房间内的物体的遮挡,可能会影响到照射的效果,接下来,需要对房间内的物体情况进行考察。
[0083] 获取区域内所有的模型,这里的模型是指布置于房间中的各个家具或其它配件,例如客厅中的柜子、立式灯、桌子、沙发、空调柜机等,每个模型在户型三维图中都会有一个包围盒,通常情况下,较高的物体会对光源的照明产生影响,因此在各个物体的包围盒中,计算出包围盒高度高于250厘米的所有模型;
[0084] 获取上述模型的投影面,然后对该投影面进行一定比例扩大,具体比例计算的方法:以图6为例,EFGH是某个模型的投影面,长边为EF,短边为HE,计算四边形HEFG的中心点PCenter,计算PCenter到长边EF的距离为DisL,长边EF往外扩张的距离为AddDis,则扩大比例Ratio=DisL/(DisL+AddDis)。将H,E,F,G按照上述扩大比例Ratio进行向外扩充,得到更新后的四个点:H’,E’,F’,G’;判定补光灯待选点的投影点是否在上述H’E’F’G’四边形内,若在,则剔除该灯位,若不在,则做为最终的补光灯的位置。本方法中,通过将选出的模型得到的投影面积进行适当的扩大,考察是否有光源的在地面上的投影落在这个投影范围内,就可以确定出这个光源是否与这个较高的物体的距离过近、是否会影响到光源的照明效果;如果在这个范围内,则不应该将这个位置上的光源选定,而对于不在这个位置范围内的光源,则应理解为其照射补光效果更好。
[0085] 对卧室的自动补光方法。
[0086] 计算卧室类型区域的最大局部矩形区域,具体计算方法参考上述计算客厅或餐厅最大局部矩形区域的方法;图7是某卧室自动补光的灯位的示意图(圆点是补光灯的位置);
[0087] 对卫生间的自动补光方法。
[0088] 对于卫生间的补光设置,需要首先判定卫生间的区域类型,即判定是否是干湿分离的区域,或者是非干湿分离区域,接着依据不同类型的卫生间,按照相应的方法计算具体补光灯的位置。卫生间的类型见图8所示;
[0089] 判定干湿分离的区域的方法:
[0090] 获取卫生间区域的边界点集,该点集首尾相连构成一个多边形;
[0091] 判定上述多边形内部是否存在某个墙的中心点的投影点(目的:定位是否在卫生间区域内存在一堵将干区与湿区分离的墙);若存在,则为干湿分离类型的卫生间,若不存在,则为非干湿分离类型的卫生间;
[0092] 若为干湿分离型的卫生间,则分别在干区和湿区计算一个点位。我们以图为例进行计算说明:
[0093] (1)计算卫生间内部墙的中点:WallCenter;
[0094] (2)以WallCenter为射线起点,分别沿着垂直于墙的前后两侧方向分别做射线L1,L2;
[0095] (3)计算上述步骤中的L1,L2分别与区域(多边形ABCD)的交点,记为InterSectP1,InterSectP2;
[0096] (4)计算上述步骤中的InterSectP1,InterSectP2分别与WallCenter的中点,分别作为干湿区的补光灯的点位;
[0097] 图9是计算干湿分离类型卫生间补光灯位置的示意图。
[0098] 若为非干湿区类型,则按照上述计算客厅区域最大局部矩形的方法,计算最大局部矩形的中心点;
[0099] 对厨房、储藏间、衣帽间等区域的自动补光方法。
[0100] 对于厨房、储藏间、衣帽间这一类的房间类型,通常其空间较为紧凑狭小,因此,在设置补光位置时,应考虑其结构的特殊性。
[0101] 主要的步骤同上方所描述的,按照上述计算最大局部矩形的方法,获得最大局部矩形的中心点;计算该空间下的吊顶的高度,按照类似上述计算该区域内的吊顶模型或者定制吊顶的底面距离墙顶的高度Height,以及墙高WallHeight,将WallHeight‑Height‑Tol作为补光灯的z轴坐标(Tol的值一般设为10厘米‑20厘米之间);再依照上文所述的方法,进而可以获得4个备选的补光点,得到待补光的灯的位置;
[0102] 接下来,识别出房间中的物体,包括柜子、吊顶等,确定其最小包围盒,判断上述4个待补灯的位置是否在该空间下的模型包围盒内部;如果不在模型的包围盒内,则任意选取其中一个作为补光点;若4个补光点都会处于模型的包围盒中,则获得该空间下的门,计算上述步骤的门的底部中心点,计算该中心点向空间内延伸一段距离的点(通常设置为20‑30厘米之间),该点的z取上述的待补光点的z值;本步骤中,由于这三类房间的空间位置相对狭小,因此有可能会出现自动生成的补光点落于物体的包围盒内部,导致了补光生成错误,而对于狭小房间来说,门的打开关闭都是不会受到阻挡的,因此,取门的中心点再向房间内延长一段距离也是必定不会与其它物体出现碰撞,并且,对于狭小空间来说,用户在观察布局时,主要是以在门口的位置进行观察,那么采用门作为补光位置的确定起始点,也可以满足补光点充分使门口位置被照亮的效果。
[0103] 走廊以及玄关区域的自动补光方法。
[0104] 对于这两处位置,在进行补光设置时,需要考虑到客厅以及餐厅的邻接类型,是否相邻。判定方法如下:遍历客厅的每一条边,计算该边的中点到餐厅的所有边的距离,从上述距离中,得到最小值的那个;若上述最小距离小于等于某一极小阈值(记为MinDis,常设为0.1‑0.5厘米),则该客厅与餐厅相邻,否则不相邻。
[0105] 当客厅餐厅区域相邻时:
[0106] 计算客厅的最大局部区域;如图10所示,其中GHIJ为最大的凸出矩形区域;
[0107] 从上述最大局部区域的首尾两侧线段的末端(图中的点G和J)出发,沿着GH的反方向以及JI的反方向打射线,计算射线与客厅的另外交点:
[0108] 若存在至少一个交点,说明该户型中至少存在着走廊或者玄关;若这两条首尾的线段不能得到交点,则说明在该户型中并没有走廊或者玄关;对于存在走廊或玄关的情况,当得到了首尾线段的交点之后,可以实现对客厅进行区域的切割,形成至少一侧的小的区域,记为SmallRegion(在图10中,由于存在两条线段的延长线交点,那么就可以得到两个被分割的小区域),同时计算两条延长线段中心点之间的连线段,记为MiddleSeg;
[0109] 计算上述SmallRegion的中轴线,中轴线的首尾两点oldStart,oldEnd向轴线的中心点内缩ShrinkL距离(ShrinkL通常设置为65‑70厘米之间)得到两个新的点newstart,newend,设置这样的一个收缩距离,主要是为了避开玄关中的入户门的打开过程占用的扇面,也可以避开吊顶所占用的一定的宽度距离。计算newstart与newend之间的距离TempL;同时计算中轴线原首尾两点oldStart,oldEnd之间的距离,记为TempLength;
[0110] 计算上述TempL除以(2*ShrinkL)的值TempN;
[0111] 计算临时待补光灯的个数NumOfLights=TempN+1;
[0112] 若上述TempLength<=150厘米或者NumOfLights<=2,代表玄关的中间长度较短,不需要设置过多的补光灯,则计算oldStart与oldEnd的中心点作为补光灯的位置;
[0113] 若NumOfLights>=3,则认为玄关的长度较长,需要设置多个补光灯,则执行下面步骤;
[0114] 若NumOfLights>=3,则计算灯间距值:EachDis=(TempLength‑2*ShrinkL)/(NumOfLights‑1)【长度的单位均为厘米】。
[0115] 将上述newstart与newend作为待补光点以及在这两点之间每隔EachDis距离之后,新增一个点作为待补光点;
[0116] 同理计算MiddleSeg线段上的待补光点;
[0117] 若不存在两个交点,则按照以下的客厅和餐厅不相连的情况进行设置补光点。
[0118] 当客厅与餐厅不相邻时:
[0119] 结合客厅以及餐厅的区域点集,计算客厅以及餐厅局部“凸出”区域补光灯的位置;
[0120] 获取该区域除最大局部区域外的其余的局部“凸出”区域;采用该步骤的目的,是因为对于客厅或餐厅不相邻的情况下的户型,走廊或玄关必定是位于客厅或餐厅的一个较小的凸出区域,因此,需要在这个较小的凸出区域内进行补光。
[0121] 按照类似的方法,计算“凸出”区域中轴线上的待补光点的位置;
[0122] 将上述所有的待补光点位进行过滤,去除靠墙太近的点位(通常设置距离阈值为20厘米);
[0123] 另外,在一个改进的实施方式中,由于客厅中通常是需要安装电视机,因此,补光灯的距离需要进行相应的调整,将补光灯需要进行调整,使灯光的水平面的位置稍远离电视,否则容易导致灯光干扰电视的观看效果。
[0124] 那么,需要对客厅中的背景墙进行自动化的识别。
[0125] 如图11所示,在客厅数据识别之后,一般是由客厅的外部边界线(细线)以及与边界线内部的墙体(粗实线)构成,当得到了客厅边界线的边界点及线段之后,称得到的多边形为Polygon,则进一步判定多边形对应的区域中有哪些实体墙,具体步骤如下:
[0126] 任意取Polygon两个相邻的点,构建线段Edge并求取其向量,进行向量单位化处理,该向量记为
[0127] 获取户型中所有的实体墙数据,将其存在一个墙体集合SolidWalls中;
[0128] 从上述SolidWalls中逐一选取一个墙体,计算其起始点构建的线段WallSeg,并计算其单位向量,该向量记为
[0129] 判定上述过程中的向量 是否与 共线,就是判断向量是否在设定的阈值范围内,若小于一定的阈值,则认为是共线的向量;若共线进一步计算Edge与WallSeg之间的最短距离,若该距离小于等于10厘米,则将该墙体归属于该区域;
[0130] 依次进行下去,直到SolidWalls中所有的墙体处理完毕。我们将得到该区域的所有实体墙体称为RegionWalls。
[0131] 从上述过程中的RegionWalls中去除含有门,门洞或者窗户的墙体,去除后的墙体集合称为NewWalls;然后计算长度最大的对应的墙体,记为MaxLengthWall;通常情况下,客厅中的电视机应安装于长度最大的墙体附近,因此,当确定了客厅中的最长的墙体之后,[0132] 将补光灯的位置朝着远离MaxLengthWall的方向移动适当距离。
[0133] 当确定了补光灯的位置之后,为了更好地展示房间中的设计效果,需要在软件中自动化地生成初始的全景展示位置。其具体的方法如图13和图14所示。在具体的方法中,需要首先确定各个房间以及各个房间的功能,房间是由边界点构成的线段所表示的,并且在房间中还显示出各个墙的位置和形状,获取每一地面区域边界的墙体,每一墙体都是由多个点集构成的多面体,区域与墙体的集合构成映射关系,以及每一墙体都有自己的属性,包括墙厚,墙的起始点,墙高,内侧墙,外侧墙等等;
[0134] 全景展示过程中,主要的设计思路是:首先需要确定出一个相机的初始位置,同时,相机的镜头应朝向着该房间的中心点(或者近似中心点),通过确定了这样的一个初始位置之后,向中心位置进行观察,就实现了更好地展示房间设计效果的目的。其中,中心点或者近似中心点的确定过程,可以采用按照专利文献CN109960850A《一种计算室内全景图采集点及屋顶灯具布局的方法及系统》当中所披露的全景图采集点的方法进行确定。
[0135] 以下针对各个房间的特点,进行相机初始位置点的说明:
[0136] 客餐厅区域数据以及厨房区域的展示:
[0137] 由于方案户型种类多样化,尤其是客餐厅和厨房。客餐厅区域多样化:某些方案户型的客餐厅是相邻的(即客餐厅两区域之间没有实际墙体),也有一些方案客餐厅是不相邻的;厨房区域多样化:某些方案厨房是开放式厨房(即厨房与相邻的区域之间存在非实际墙体),某些方案厨房是正常独立的空间。预处理客餐厅以及厨房区域数据,主要是为了识别客餐厅区域类型是两者相邻还是独立空间,以及识别厨房是否是开放式厨房。
[0138] 预处理客餐厅区域数据流程:获取客厅以及餐厅两者区域数据(即区域内轮廓有序点集);设置一个距离阈值,例如设置该值为5厘米;遍历客厅区域上每一点,计算该点到餐厅每一点的距离α,若α≤5则结束该步骤计算流程,将此时客餐厅归纳为是相邻的类型;若未出现α≤5,则将此时客餐厅归纳为两个独立空间;
[0139] 获取所有区域轮廓数据(即区域内线有序点集),并将该区域数据与各自空间名称一一匹配;将厨房区域数据(即内线有序点集构成的多边形)与其它区域数据(多边形形式)逐一判定厨房区域是否与其它区域存在公共点或者是否相交:若存在公共点或者相交,则判定该厨房是开放式厨房;否则归纳该厨房为闭合区域类型的厨房;
[0140] 依据上述步骤预处理客餐厅区域数据流程中的结果,若客餐厅属于相邻区域的类型,则用客餐厅两区域的近似中心点的均值点作为客厅以及餐厅公共的观察点;
[0141] 若客餐厅属于两个独立不相邻区域类型时,则分别按照独立空间处理,具体方法如下:
[0142] 客厅观察点计算方法:
[0143] 统计客厅区域门或者门洞数目NumOfDoors;
[0144] 若NumOfDoors=1,从门或者门洞二维中心点向区域内延伸80厘米进行计算,得到客厅的观察点;
[0145] 若NumOfDoors>=2,计算距离客厅近似中心点距离最近的门或者门洞,然后从门或者门洞二维中心点向区域内延伸80厘米进行计算,得到客厅的观察点;
[0146] 同理餐厅的观察点同上。
[0147] 卧室区域数据以及卧室区域的展示:
[0148] 自动计算卧室一类区域(空间名为:主卧,次卧,第三房,第四房等房间类型的区域观察点以及该区域的近似中心点):获取该类型区域的有序点集(以多边形形式存在),假设命名为Polygon,记录Polygon的顶点个数为N;
[0149] 获取该空间下的床的模型类型【通常床的模型类型有普通床,儿童床,上下层组合床等】,若是普通床类型,则计算该床模型的包围盒,记为Box,接着执行下面步骤;
[0150] 获取上述Box在底面的投影四边形,记为ProjectPolygon;
[0151] 计算上述四边形ProjectPolygon的长与宽,并计算距离该区域某边距离最近的短边:具体分情况计算如下:
[0152] (1)床有一边靠墙,见图18:
[0153] 矩形HIJK是普通床的包围盒的投影形成的一个矩形,KJ是贴近床头部分,HI是贴近床尾部分;多边形ABCDEF是一个区域构成的多边形。
[0154] 具体识别的方法:
[0155] 遍历普通床包围盒投影矩形的每一条边,计算该边到区域每一条边的最短距离MinDis,记录MinDis<=5厘米的统计数目NumCount,若NumCount=1,则表示普通床包围盒仅有一边与区域边界贴合较近;
[0156] 计算普通床包围盒的最长边与最短边,以及长轴所在的方向向量【例如图18中,即由点HK构成的向量】;
[0157] 从普通床包围盒投影矩形的中心点Center出发,沿着长轴所在方向向量以及其反方向发射射线,在如图21中,从Center分别向两侧发出射线时,这两条射线都会与卧室的边界线都分别有交点,得到的线段为第一线段和第二线段,取两者当中较长的线段,将较长的线段与床的包围盒的交点定义为第一交点(图中为M),较长的线段与卧室的交点定义为第二交点(图中为G),取MG的中点为初始相机的位置点。
[0158] (2)床有两边靠墙【见图19】:
[0159] 矩形HIJK是普通床的包围盒的投影形成的一个矩形,KJ是贴近床头部分,HI是贴近床尾部分;多边形ABCDEF是一个区域构成的多边形。
[0160] 具体识别的方法:
[0161] 遍历普通床包围盒投影矩形的每一条边,计算该边到区域每一条边的最短距离MinDis,记录MinDis<=5厘米的统计数目NumCount,若NumCount=2,则表示普通床包围盒仅有两边与区域边界贴合较近;
[0162] 计算上述贴近区域边界的包围盒投影矩形的两条边,计算两边长度差值,若满足条件:差值的绝对值大于某一小距离值(例如设置成2厘米),则卧室内床的布置情况类似图18所示。计算普通床包围盒长轴所在的方向向量
[0163] 类似的流程计算与一边靠墙的计算方法类似该区域的观察点以及观察点的朝向。
[0164] 对于上述的一边靠墙和两边靠墙的情况的计算方法,其可以较好地确定出的位置能够一方面兼顾房间的整体展示,主要是由于先找到床的长边和短边之后,以长边的方向,找到中心点的延长线作为相机的初始点所在位置,并确定出相机的位置之后,可以更好地将床的大部分主体效果展现在相机前;使得床和房间两者的视觉效果都得到兼顾。
[0165] (3)床有三边靠墙【见图20所示】:
[0166] 矩形HIJK是普通床的包围盒的投影形成的一个矩形,KJ是贴近床头部分,HI是贴近床尾部分;多边形ABCDEF是一个区域构成的多边形。
[0167] 具体识别的方法:
[0168] 遍历普通床包围盒投影矩形的每一条边,计算该边到区域每一条边的最短距离MinDis,记录MinDis<=5厘米的统计数目NumCount,若NumCount=3,则表示普通床包围盒有三边与区域边界贴合较近;
[0169] 计算该区域预处理后点的个数,即N的值;
[0170] 若N=4,则计算该区域的中心点记为RegionCenter,以及该区域门的中心点DoorCenter,计算RegionCenter与DoorCenter的中点,将其取为该区域的观察点,且观察点朝向指向区域中心点;
[0171] 若N>=5,则计算该区域的最大局部矩形,计算与局部最大矩形“中间线段”平行的线段【例如图22所示,矩形MBCD是区域局部最大矩形,BC称为其“中间线段”,MD是局部最大矩形中平行于“中间线段”的,ED是区域原有的线段】;
[0172] 从局部最大矩形线段中,找到平行于“中间线段”的线段【图22中的ED】,并取该线段相交于区域内部的部分线段的中点【即线段ME的中点】,然后计算该点与最大局部区域中心点的中点作为观察点,观察点朝向指向最大局部区域中心点;采用这样的设计时,可以兼顾床和房间的整体设计效果展示。
[0173] 若该空间下的床是非普通床类型,且该区域预处理后顶点个数N=4则:
[0174] 若上述步骤中的N=4,判定该区域的某边是否与其他区域相邻;
[0175] 具体判定的方法如下:
[0176] 遍历该区域的相邻两点组成的每一条线段Segment;
[0177] 判定是否满足下列条件:
[0178] 条件一:Segment是否与某个墙体底部的同侧两点构成的线段WallSeg平行;
[0179] 若满足条件一,进一步判定条件二:计算Segment与WallSeg线段之间的最短距离DisOfSegs,判定DisOfSegs是否小于等于25厘米(通常墙厚度为20厘米);
[0180] 若仅满足条件一,则该区域存在一条未与实体墙体相贴的情况(如图所示),按照S1到S2计算:
[0181] S1计算该区域的中心点(即多边形Polygon2的中心点,记为RoomCenter);
[0182] S2获取该区域内所有附属的门洞(共8个点组成,示意图见图),遍历每一门洞底部的同侧两点,判定该两点构建的线段是否与Polygon2的某条边平行且与该边的最短距离小于等于25厘米,若满足上述条件,则计算该边的中点TempNode;接着计算TempNode到该区域中心点RoomCenter的1/3或1/4(或者其它等分数)的等分点;该等分点作为待选的观察点,方向指向区域中心点;
[0183] 若满足上述条件一和条件二
[0184] 若如图所示类型(区域边界都是与实体墙相邻):
[0185] 获取该区域附属的所有门洞,找到门洞宽度小于等于150厘米的某个门洞,记为TargetDoor;
[0186] 用上述TargetDoor的底部中心点,与该区域的中心点构建的线段的中点作为待选的观察点,方向指向区域中点;
[0187] 若该空间下的床是非普通床类型,且该区域预处理后顶点个数N>4则:
[0188] 计算该区域的最大面积局部矩形,具体计算方法如下:
[0189] 对该区域进行四边形切分,得到面积最大的切分后的四边形:
[0190] (1)该区域的边界点集是以逆时针方向排序。以A点为例,A点下一点是B,再下一点是C,A点前一点是F。
[0191] (2)用上述点分别构成向量 向量 向量
[0192] (3)计算向量外积:
[0193] (4)判定上述步骤中向量 的z轴分量与向量 的z轴分量的符号是否相同;
[0194] (5)如果上述步骤中符号相同,则计算长度AF,长度BC,比较两长度大小,得到长度较小的那一个线段,图1中对应的是AF,从点F出发,沿着平行于AB的方向进行切分,得到与线段BC相交的点,取名为F’,则FABF’为区域的一个切分的四边形;
[0195] (6)按照上述类似的方法,依次计算剩下的点,得到整个区域的全部的切分后的四边形;
[0196] (7)对上述所有切分后的四边形进行面积计算,得到面积最大的切分四边形,将其做为最大面积的局部矩形;
[0197] 获取上述最大面积局部矩形的中心点;
[0198] 计算该区域内门的个数,记为NumOfDoors;
[0199] 若NumOfDoors=1,
[0200] 判定门归属于哪个局部切分的四边形(即判定门的某同侧底部两地构成的线段与区域的哪条边平行,且距离该边的最短距离小于等于25厘米(墙的厚度通常为20厘米);
[0201] 进一步确定门所在的边,是在局部切分的四边形的中间线段,还是两侧线段【见图示意】;若在中间线段,则执行S3;若在两侧边中较短的一条边上时,则执行若门落在两侧边中较长的一条边上时,则执行S4;
[0202] 从门的中心点出发,沿着指向区域内部且垂直于门底部长边的方向发射一条射线,计算该射线于区域边界的交点,该交点与门中心点构成的线段记为seg;
[0203] S3计算区域最大局部矩形的中点垂直于上述步骤中的seg线段的交点,记为point,将该点作为该区域的观察点,方向指向该区域最大矩形的中心;
[0204] S4若门落在图所示:计算从门洞中心向区域内部发射垂直于边的射线,计算射线与区域的另一交点,计算该交线段长度,若该长度小于2米,则从该相交线段的中点出发,沿着指向主区域内部且垂直于该交线段的方向发射射线,计算射线与区域的交点,此时的交线段记为segment,计算最大局部区域中心在该segment上的投影点,该投影点作为该区域的观察点,方向指向最大局部区域中心点;
[0205] 按照上述类似方法计算:计算从门洞中心向区域内部发射垂直于边的射线,计算射线与区域的另一交点,计算该交线段长度,若该长度小于2米,则从该相交线段的中点出发,沿着指向主区域内部且垂直于该交线段的方向发射射线,计算射线与区域的交点,此时的交线段记为segment,计算最大局部区域中心在该segment上的投影点,该投影点作为该区域的观察点,方向指向最大局部区域中心点;若该线段长度大于2米,则直接计算最大局部矩形的中心点在长度较长的一侧边上投影点,将投影点作为某线段起始点,区域最大局部矩形的中心点作为该线段的末端点,计算该线段的三等分或者四等分点作为该区域的观察点,方向指向区域局部最大面积矩形的中心。
[0206] 自动计算阳台区域的观察点
[0207] 获取该类型区域的有序点集(以多边形形式存在),假设命名为Polygon1;
[0208] 对上述步骤的多边形Polygon1中存在共线的中间点进行合并的操作(即去掉两个共线点之间的中间点),此时的多边形记录为Polygon2;
[0209] 计算该区域内的近似中心点【即区域的局部最大矩形中心点】,该近似中心点作为观察点,该点作为观察点,观察点朝向指向门洞;
[0210] 第六步:自动计算主卫,客卫等区域的观察点
[0211] 获取该类型区域的有序点集(以多边形形式存在),假设命名为Polygon1;
[0212] 对上述步骤的多边形Polygon1中存在共线的中间点进行合并的操作(即去掉两个共线点之间的中间点),此时的多边形记录为Polygon2;
[0213] 判定卫生间类型是否是干湿分离类型:即判定卫生间区域内部是否存在一堵墙,若存在,则为干湿分离型的,若不存在,则为普通卫生间类型,卫生间类型示意图参考图;
[0214] 若为普通卫生间类型,则获取该卫生间门洞底部中心点,以及计算该区域近似中心点【最大局部区域的中心点】,计算门洞底部中心点与最大局部区域中心点的连线的中点作为观察点,观察点朝向指向区域中心点;若为干湿分离类型,获取区域内部墙底部的中心点,垂直于该门洞底部长边,分别沿着门洞前后方向发射射线,得到门洞前后两侧的交点,计算交点与门洞中心点的距离,选择距离较大值对应的那个射线向量作为观察点的朝向,选取门洞底部中心点与其匹配交点构成线段的三等分点作为观察点;
[0215] 第七步:自动计算厨房区域的观察点
[0216] 获取该类型区域的有序点集(以多边形形式存在),假设命名为Polygon1;
[0217] 对上述步骤的多边形Polygon1中存在共线的中间点进行合并的操作(即去掉两个共线点之间的中间点),此时的多边形记录为Polygon2;
[0218] 依据第二步中预处理厨房区域数据的结果:
[0219] 若该厨房是开放式厨房,则计算该区域内的近似中心点【即区域的局部最大矩形中心点】,方法参考上述步骤。该近似中心点作为观察点。
[0220] 若该厨房是非开放式厨房(即独立闭合区域),则统计厨房区域门或者门洞数目NumOfDoors;若NumOfDoors=1,则从门或者门洞二维中心点向区域内延伸50厘米进行计算,得到观察点;若NumOfDoors>=2,计算距离客厅近似中心点距离最近的门或者门洞,然后从门或者门洞二维中心点向区域内延伸50厘米进行计算得到观察点,观察点朝向指向区域内部
[0221] 第八步:自动计算储藏间区域的观察点:
[0222] 获取该类型区域的有序点集(以多边形形式存在),假设命名为Polygon1;
[0223] 对上述步骤的多边形Polygon1中存在共线的中间点进行合并的操作(即去掉两个共线点之间的中间点),此时的多边形记录为Polygon2;
[0224] 统计该区域内的门或者门洞的数目,从门或者门洞二维中心点向区域内延伸25厘米进行计算,得到观察点;观察点朝向指向区域内部。
[0225] 第九步:自动计算衣帽间区域的观察点:
[0226] 同上述储藏间的方法
[0227] 自动化计算室内全景图初始化相机方向向量的方法:
[0228] 自动化计算室内全景图初始化相机方向向量的流程如图14所示。
[0229] 具体方法如下所述:
[0230] 第一步:数据加载获取方案户型的所有区域数据;
[0231] 第二步:自动计算各区域空间的近似中心点;
[0232] 第三步:自动计算各区域全景图观察点;
[0233] 第四步:逐一判定各区域的近似中心点与观察点是否一致:
[0234] 若不一致,则用区域近似中心点坐标减去对应该区域观察点坐标,得到向量并进行归一化处理,该向量作为该区域观察点对应的初始化方向向量;
[0235] 若一致(参照本专利自动求观察点的内容,可以发现阳台,开放式厨房或者部分卫生间区域的观察点与空间近似中心点一致),则先自动计算与观察点匹配的门或者门洞的中心点,即计算距离观察点最近的门或者门洞的中心点DoorCenter;
[0236] 第五步:计算观察点与门或者门洞中心点之间构建的向量,并进行归一化处理:
[0237] 对于阳台或者开放式厨房,用DoorCenter减去观察点,得到向量并进行归一化,该向量作为此区域初始化相机方向向量;
[0238] 对于部分卫生间区域,用观察点减去DoorCenter,得到向量并进行归一化,该向量作为此区域初始化相机方向向量。