在3D建模中利用沉浸式手势选择顶点的制作方法

专利2022-05-09  29


在3d建模中利用沉浸式手势选择顶点
技术领域
1.本发明涉及计算机程序和系统领域,并且更具体地,涉及一种用于在3d沉浸式环境中在3d对象的顶点之中选择顶点的方法。


背景技术:

2.市场上提供了许多用于对象的设计、工程和制造的系统和程序。cad是计算机辅助设计的首字母缩略词,例如它涉及用于设计对象的软件解决方案。cae是计算机辅助工程的缩写,例如它涉及用于模拟未来产品的物理行为的软件解决方案。cam是计算机辅助制造的首字母缩略词,例如它涉及用于定义制造过程和操作的软件解决方案。在这种计算机辅助设计系统中,图形用户界面在技术效率方面起着重要的作用。这些技术可能嵌入在产品生命周期管理(plm)系统中。plm指的是一种商业战略,其帮助企业共享产品数据,应用通用流程,并利用企业知识进行从概念到产品生命尽头的跨越扩展企业概念的产品开发。达索系统(dassault syst
è
mes)(以catia、enovia和delmia为商标)提供的plm解决方案提供了组织产品工程知识的工程中心、管理制造工程知识的制造中心、以及使企业能够集成和连接到工程中心和制造中心二者的企业中心。整个系统提供了一个开放的对象模型,以链接产品、过程和资源,以实现动态的、基于知识的产品创建和决策支持,这推动了优化的产品定义、制造准备、生产和服务。
3.cad应用允许以交互方式创建准确的3d对象。当3d对象忠实地复制相应的真实对象时,该3d对象被认为是准确的。一种标准是最小化3d对象的包络和实际对象的包络之间的差异。因此,传统上用cad应用创建的3d对象针对3d对象的粗糙部分包含许多小的拓扑元素。已经实现了几种用于选择感兴趣的拓扑元素进行设计的方法。传统上,使用基于鼠标的方法。
4.在这里,小的拓扑元素可以被定义为具有小的可见表面(surface)的元素。在基于鼠标的方法中,小的拓扑元素可以定义为具有小的可点击表面的元素。换句话说,由于用户需要非常精确地定义鼠标位置,因此很难选择基于鼠标的方法中的小拓扑元素。拓扑元素也可能经常重叠和/或被部分或完全遮挡。因此,即使拓扑元素不小,在基于鼠标的方法的情况下它们的可点击表面也可能很小甚至为零。
5.在3d应用中,众所周知的问题是关于用户要选择哪些元素的歧义(ambiguity)。在cad应用中,基于鼠标的方法倾向于选择光标指向的最小元素,但这不能完全解决歧义。为了减少这种歧义,众所周知的解决方案是让用户指定他们想要选择哪种类型的拓扑元素。使用此信息,可以在选择期间按类型过滤元素。该解决方案是耗时的,并且需要例如在2d面板中显示可用的各种过滤器。选择元素期间的另一个问题是减少选择一个元素所需的强制单击次数。例如,经常有必要放大感兴趣的区域以选择3d对象的感兴趣的元素。当感兴趣的元素被遮挡时,更改3d场景的视点也是必要的。这两种情况需要用户采取若干措施,并且是耗时的。
6.近来,手部交互在3d设计应用中变得越来越重要。实际上,沉浸式技术的最新进展
已使全手跟踪(full hand tracking)在虚拟现实(vr)、增强现实(ar)和混合现实(mr)中得到广泛应用。虚拟现实是一种3d沉浸式环境,其可以被定义为用软件创建并以用户中止信任(belief)并将其接受为真实环境的方式呈现给用户的人工环境。在虚拟现实(vr)中,用户对现实的感知完全基于虚拟信息。增强现实(ar)以及混合现实(mr)与虚拟现实(vr)的不同之处在于,3d沉浸式环境由实际真实的周围环境和添加到真实环境中的一些层的虚拟对象构成。在增强现实(ar)和混合现实(mr)中,向用户提供了其他计算机生成的信息,其增强他们对现实的感知。另一方面,在虚拟现实(vr)中,周围环境是完全虚拟的。增强现实和混合现实之间的区别在于,用户无法直接与增强现实(ar)中的虚拟对象进行交互。在混合现实中,将计算机生成的附加信息“混合”在一起以创建现实的环境。用户可以导航该环境并与既真实又虚拟的对象进行交互。
7.例如,增强现实(ar)可以在物理桌子上显示虚拟3d盒子。在混合现实(mr)的情况下,用户可能可以拿起并打开盒子。
8.在虚拟、增强和混合现实的定义中,真实对象是物理地存在于环境世界中的对象。
9.现有的cad应用都不允许使用自然的手部交互在沉浸式环境中创建准确的3d对象。
10.在此上下文内,仍然需要一种改进的方法,以用于在cad系统的3d沉浸式环境中通过使用手势来选择诸如3d对象的顶点之类的拓扑元素。


技术实现要素:

11.因此,提供了一种计算机实现的方法,以用于在cad系统的3d沉浸式环境中在3d对象的顶点之中选择顶点。每个顶点在3d沉浸式环境中具有位置。该方法包括:
12.‑
在3d沉浸式环境中显示3d对象;
13.‑
检测到手势,该手势包括使食指和拇指的指肚相对,两个指肚间隔开;
14.‑
确定与连接食指和拇指的指肚的线段平行的线段,所确定的线段在3d沉浸式环境中具有位置;以及
15.‑
识别与所确定的线段具有最接近位置的3d对象的顶点。
16.该方法可以包括以下一项或多项:
17.‑
识别进一步包括从确定的平行线段投射平行于3d对象的中心的射线;
18.‑
所述3d对象的每个顶点还具有法线,并且所述手指和拇指的相对的指肚还与法线形成定向平面,并且其中,所述识别进一步包括:
19.‑
最小化函数f:
[0020][0021]
其中:
[0022]

顶点是感兴趣的顶点;
[0023]

且且{w1 w2>0};
[0024]

||fh||是3d沉浸式环境中顶点vertex的位置与定向平面的位置h之间的欧几里得距离;并且
[0025]

是3d沉浸式环境中顶点vertex的法线和定向平面的法线之间的角度。
[0026]

函数f的项||fh||替换为||fh

||,其中,h

通过以下方式计算:
[0027]
h

=e eh*max(1,a*(||eomax||)/||ehmax||)
[0028]
其中:
[0029]

h’是虚拟手的定向平面的位置;
[0030]

e是用户视点的位置;
[0031]

h是由手指和拇指的相对的指肚形成的定向平面的位置;
[0032]

eh是从e到h的向量;
[0033]

omax是3d对象的距e最远的顶点的位置;
[0034]

hmax是用户手的中心在用户身体横向平面上距e最远的位置;
[0035]

[0036]

||eomax||是从e到omax的向量的范数;并且
[0037]

||ehmax||是从e到hmax的向量的范数。
[0038]

函数f的项||fh||或||fh

||进一步包括在3d沉浸式环境中顶点位置和3d模型与射线的至少一个交点之间的欧几里得距离,该射线从头部的中心或优势眼或眼睛之间的点投射到3d模型的中心;
[0039]

识别包括:确定与所确定的线段具有最接近位置的3d对象的顶点;计算所确定的顶点的一个或多个n相邻顶点、一个或多个相邻顶点和所确定的顶点,以形成可选择的顶点的子集;以及从可选择的顶点的子集中识别与定向平面具有最接近取向的3d对象的顶点;
[0040]

修改可选择的顶点的子集中的顶点的第一渲染;
[0041]

修改所识别的顶点的第二渲染;
[0042]

所述3d对象的顶点可以是三角形的一部分和/或四边形的一部分和/或拓扑面的一部分和/或参数曲面(parametric surface)的一部分和/或过程表面(procedural surface)的一部分;
[0043]

检测到所述手势包括使食指和拇指的指肚相对,食指和拇指实质上平行;
[0044]

通过检测到手势进一步包括食指和拇指的指肚之间的接触,来选择3d对象的所识别的顶点;
[0045]

检测到手势还包括所有手指的外展,并取消选择所选择的顶点。
[0046]
还提供了一种计算机程序,其包括用于执行该方法的指令。
[0047]
还提供了一种系统,该系统包括显示器以及与存储器通信地耦合的处理电路,该存储器存储该计算机程序。
[0048]
还提供了一种其上记录有该计算机程序的计算机可读介质。
附图说明
[0049]
现在将通过非限制性示例并参考附图来描述本发明的实施例,在附图中:
[0050]

图1示出了该方法的流程图的示例;
[0051]

图2示出了该方法的步骤s40的流程图的示例;
[0052]

图3示出了系统的示例;
[0053]

图4示出了默认姿态下的右手的骨架的后前视图的示例;
[0054]

图5示出了检测到的手势的示例;
[0055]

图6示出了从检测到的手势生成的虚拟平面的示例;
[0056]

图7示出了用于选择顶点的手势的示例;
[0057]

图8和图9示出了使用虚拟手的示例;并且
[0058]

图10示出了虚拟骨架的示例。
具体实施方式
[0059]
参考图1的流程图,提出了一种计算机实现的方法,以用于在cad系统的3d沉浸式环境中在3d对象的顶点之中选择顶点。每个顶点在3d沉浸式环境中都有位置。该方法包括在3d沉浸式环境中显示3d对象。然后,检测到手势。手势包括使食指和拇指的指肚相对,两个指肚间隔开。因此,食指和拇指处于准备好捏手指(finger pinch)的位置。然后,该方法还包括确定与连接食指和拇指的指肚的线段平行的线段。确定的平行线段在3d沉浸式环境中具有位置。接下来,该方法包括识别与所确定的线段具有最接近位置的3d对象的顶点。
[0060]
这构成了一种改进的方法,该方法用于在cad系统的3d沉浸式环境中使用手部交互在3d对象的顶点之中选择顶点。值得注意的是,该方法解决了关于用户想要选择哪个元素的歧义的问题。如上所述,在cad应用中,3d对象包含许多小元素。由于该元素的尺寸或从用户的角度来看的该元素的可见表面的尺寸,利用基于鼠标的方法选择元素可能是困难的。实际上,如果尺寸小,则在基于鼠标的方法的情况下,用户需要非常精确地移动鼠标和/或放大和/或更改3d场景的视点。此处介绍的方法解决了此缺陷。实际上,该方法使用了顶点的相应位置以及从手势期间从食指和拇指的相对指肚计算出的线段的位置,以确定用户想要选择哪个元素。手势产生线段,该线段的长度取决于用户:用户可以调整线段的长度,以选择位置最接近的顶点。可以区分3d对象的元素,并因此由用户使用该方法对其进行选择。另外,使拇指和食指指肚相对是一种非常简单和基本的手势,其可以由用户轻松执行。
[0061]
方法是计算机实现的。这是指该方法的步骤(或基本上所有步骤)由至少一台计算机或任何类似系统执行。因此,该方法的步骤由计算机执行,可能是全自动执行,也可能是半自动执行。在示例中,可以通过用户计算机交互来执行该方法的至少一些步骤的触发。所需的用户

计算机交互级别可以取决于预见的自动级别,并与实现用户意愿的需求保持平衡。在示例中,该级别可以是用户定义的和/或预定义的。
[0062]
例如,检测s20和确定s30部分地取决于用户动作。作为用户动作的结果执行检测s20,该用户动作包括具有食指和拇指的相对的指肚的用户手势。作为包括用户手势的用户动作的结果来执行确定s30,其中,利用用于识别用户想要选择的元素的位置来创建线段。
[0063]
方法的计算机实现的典型示例是使用适用于此目的的系统执行该方法。该系统可以包括耦合到存储器和图形用户界面(gui)的处理器,该存储器上记录有计算机程序,该计算机程序包括用于执行该方法的指令。存储器还可以存储数据库。该存储器是适合于这种的存储的任何硬件,可能包括几个物理上不同的部分(例如,一个用于程序,而可能一个用于数据库)。
[0064]
图3示出了系统的示例,其中该系统是客户端计算机系统,例如用户的工作站。
[0065]
该示例的客户计算机包括连接至内部通信总线1000的中央处理单元(cpu)1010、也连接至总线的随机存取存储器(ram)1070。客户端计算机还被提供有图形处理单元(gpu)
1110,其与连接到总线的视频随机存取存储器1100相关联。视频ram 1100在本领域中也称为帧缓冲器。大容量存储设备控制器1020管理对大容量存储设备(例如,硬盘驱动器1030)的访问。适合于有形地体现计算机程序指令和数据的大容量存储设备包括所有形式的非易失性存储器,包括例如:半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及cd

rom盘1040。上述任何内容可以通过专门设计的asic(专用集成电路)进行补充或被包括在专门设计的asic中。网络适配器1050管理对网络1060的访问。客户端计算机还可以包括触觉设备1090,例如光标控制设备、键盘等。在客户端计算机中使用光标控制设备以允许用户将光标选择性地定位在显示器1080上的任何期望位置处。此外,光标控制设备允许用户选择各种命令并输入控制信号。光标控制设备包括多个信号生成设备,以用于将控制信号输入到系统。通常,光标控制设备可以是鼠标,该鼠标的按钮用于生成信号。可替代地或附加地,客户计算机系统可以包括敏感垫和/或敏感屏幕。
[0066]
该计算机程序可以包括可由计算机执行的指令,该指令包括用于使上述系统执行该方法的单元。该程序可以是可记录在任何数据存储介质上的,包括系统的存储器。该程序可以例如以数字电子电路或计算机硬件、固件、软件或它们的组合来实现。该程序可以被实现为装置,例如有形地体现在机器可读存储设备中以由可编程处理器执行的产品。方法步骤可以通过以下方式来执行:可编程处理器执行指令程序以通过对输入数据进行操作并生成输出来执行该方法的功能。因此,处理器可以是可编程的并且被耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向其发送数据和指令。如果需要,可以以高级过程或面向对象的编程语言或汇编或机器语言来实现应用程序。在任何情况下,该语言都可以是编译语言或解释语言。该程序可以是完整的安装程序或更新程序。在任何情况下,程序在系统上的应用都会得到执行该方法的指令。
[0067]
该方法操纵3d对象。此后,对3d对象的任何引用都将指数字建模的3d对象,而不是物理对象。数字建模的3d对象可以表示在用例如cad软件解决方案或cad系统进行其虚拟设计完成之后在现实世界中要制造的产品的几何形状,例如(例如,机械)零件或零件的组装件(或等效地,零件的组装件,因为从方法的角度看零件的组装件可以看作是零件本身,或者该方法可以独立地应用于组装件的每个零件)或者更一般地任何刚体组装件(例如,移动机构)。cad软件解决方案允许在各种不受限的工业领域中的产品设计,包括:航空航天、建筑、建造、消费品、高科技设备、工业设备、运输、船舶和/或海上油/气生产或运输。因此,此处的3d建模对象可以表示工业产品,该产品可以是任何机械零件,例如:陆地载具(包括例如汽车和轻型卡车设备、赛车、摩托车、卡车和机动车设备、卡车和公共汽车、火车)的零件,飞行器(包括例如机身设备、航空航天设备、推进设备、国防产品、航空设备、航天设备)的零件,海上载具(包括例如海军设备、商用船、海上设备、游艇和工作船、船舶设备)的零件,通用机械零件(包括例如工业制造机械、重型移动机械或设备、安装的设备、工业设备产品、金属制品、轮胎制品),机电或电子零件(包括例如消费者电子产品、安全和/或控制和/或仪器产品、计算和通信设备、半导体、医疗设备和装备),消费品(包括例如家具、家居和花园产品、休闲用品、时尚产品、硬商品零售商的产品、软商品零售商的产品),包装(包括例如食品和饮料和烟草、美容和个人护理、家用产品包装)。
[0068]
3d对象可以由以下三种拓扑实体中的至少一种构成:面、边和顶点。根据定义,面是表面的有界部分。边是曲线的有界部分。顶点是3d空间中的点。它们之间的相互关系如
下。曲线的有界部分由位于曲线上的两个点(顶点)定义。表面的有界部分由其边界定义,该边界是位于表面上的一组边。面的边界的边通过共享顶点连接。通过共享边来连接面。如果两个面共享边,则它们是相邻的。同样,如果两个边共享顶点,则它们是相邻的。面的所有边都可以位于同一平面上,也可以不在同一平面上。可以通过获取面的两条边的向量叉积来计算该面的法线。如果不是面的所有边都位于同一平面上,则值得注意的是,可以根据为计算叉积而选择的边来计算各种法线。可以提供和/或计算顶点的法线。也可以编辑面或顶点的法线。例如,在面的所有边均不在同一平面上的情况下,通常会编辑法线。法线给出了面的方向。换句话说,法线确定面的正面和背面。传统上,对于3d对象,其顶点的法线指向3d对象的外部。可以从顶点所属的面的法线演绎顶点的法线。顶点通常属于至少3个面,也就是说,该顶点与相应至少3个面的至少3个边共享。
[0069]
从现在开始,我们假设所有取向、方向和位置都是在3d沉浸式环境的参考框架中计算的。
[0070]
3d对象也可以使用边或线、表面、顶点来定义。线、边或表面可以各种方式表示,例如非均匀有理b样条(nurbs)。这些边、线和/或表面可以用作输入,根据该输入可以生成3d对象的几何形状,这进而允许生成3d对象的表示。由于非均匀有理b样条(nurbs)线、边和表面包含用户可能想要选择的顶点,因此此处描述的方法可用于基于非均匀有理b样条(nurbs)线、边和表面的3d对象。更一般地,表面也可以是参数曲面和/或过程表面,这些表面包括顶点。参数曲面是欧几里德空间中的表面,其由具有两个参数的参数方程定义。过程表面是定义为过程(procedure)的表面。细分表面可以视为过程表面。细分表面是一种经由指定较粗的分段线性多边形网格来表示平滑曲面的方法。
[0071]
可以根据从实体模型的激光扫描获得的点云来计算3d对象。这样的点云通常由不连接的顶点组成,但也可以包含表示数字化实体模型的形状的互连边。
[0072]
3d对象可以是线框3d对象。线框可以根据点云获得,也可以由用户设计。
[0073]
现在参考图1,该方法在3d沉浸式环境中显示s10至少一个3d对象。如果在3d沉浸式环境中显示了多于一个3d对象,则存在识别为感兴趣的3d对象的一个3d对象。从现在起,将感兴趣的3d对象称为3d对象。
[0074]
如上所述,可以在虚拟、增强或混合现实中使用3d沉浸式环境。3d沉浸式环境具有参考框架。因此,在此3d沉浸式环境中,所有对象及其所有拓扑元素都可以相对于此参考框架定位。然后可以在虚拟、增强和混合现实中使用该方法来选择3d沉浸式环境中任何3d对象的顶点。该方法还可以在包括具有参考框架的环境的任何其他现实中使用,该参考框架允许定位至少一个3d对象。
[0075]
然后,检测手势s20。手势包括使食指和拇指的指肚相对。每个指肚具有基本平坦的表面;当指肚基本上彼此平行时,它们彼此相对。食指和拇指的指肚不接触,使得两个指肚之间有间隔。该间隔由用户选择。优选地,两个指肚之间的间隔大于1厘米。换句话说,该手势可以看作是用食指和拇指形成了开口扳手。
[0076]
可以通过跟踪用户的身体的一部分的位置和取向,或者通过跟踪用户的身体的若干部分的相应的位置和取向,或者甚至跟踪完整的用户身体的位置和取向,来完成用户与3d沉浸式环境的交互。
[0077]
在示例中,用户身体的部分是用户的手。
[0078]
手部追踪提供直接且自然的交互,并改善了沉浸式体验。实际上,用户不需要使用特定的虚拟、混合或增强现实手部控制器。传统上,为了在3d沉浸式环境中与3d对象进行交互,一种方法包括在用虚拟3d线指向3d对象之后单击特定控制器的按钮。
[0079]
手部跟踪允许检测手的特定姿态或手势。例如,可以使用视频记录器或手套来完成对特定姿态的手部跟踪,而可以使用加速度计来完成对特定手势的手部跟踪。该方法可以与用户的右手或左手一起使用。姿态是使用身体的一部分的位姿(pose),并且这里的手势可以定义为允许一部分改变其姿态的运动。换句话说,第二姿态可以看作是从第一姿态开始的手势的结果。因此,可以通过检测第二姿态并将该第二姿态与第一姿态进行比较来检测手势。如果检测到的第二姿态与第一姿态相同,则没有手势发生。如果检测到的姿态与第一姿态不同,则可以将手势定义为第二姿态和第一姿态之间的差异。更一般地,手势可以被定义为由用户身体的一部分(例如,用户的手)的位置和/或取向的改变触发的姿态改变。例如,在该方法中,检测手势可以由计算当前姿态与默认姿态的差异组成。在该示例中,默认姿态对应于第一姿态,并且当前手势对应于第二姿态。可以利用用户的手的位置和/或取向的改变来推断差异。值得注意的是,对特定姿态的手部跟踪是通过以高帧速率(例如,每秒至少10帧)捕获姿态的设备执行的,因此未检测到这样的运动的风险相当低:其涉及在有第二中间姿态的情况下从第一姿态到第一姿态的运动。默认姿态可以是允许检测食指和拇指的相对指肚的任何姿态,两个指肚以最小距离间隔开。右手的默认姿态的示例在图10中示出。此默认姿态是休息的右手的常用姿态的示例。换句话说,默认姿态是其中所有肌肉都松弛的右手姿态的示例。默认姿态也可以定义为任何姿态,该姿态不会被检测为该方法的任何步骤中使用的特定姿态。
[0080]
手势的检测可以以各种方式来完成。在示例中,可以通过对身体的各个部分的相对位置和/或取向进行数学比较来检测手势,并具有一定的容忍度以考虑形态变化。请注意,系统可能需要校准阶线段以适应用户的形态(morphology)。在另一个示例中,还可以通过训练神经网络区分不同的可能手势,来使用机器学习技术检测手势。
[0081]
在示例中,可以通过虚拟骨架(例如,如图10所示)来提供手的手势的运动学参数。虚拟骨架包括一个或多个关节和一个或多个骨骼。该虚拟骨架不需要复制真实骨架。换句话说,虚拟骨架的关节和骨骼与真实骨架的关节和骨骼之间可能没有对应关系。例如,手的虚拟骨架可能比手的真实骨架具有更少或更多的关节。此外,即使虚拟骨架的每个关节都对应于真实骨架的关节,它们的位置和取向也可能会发生变化。通过使用虚拟骨架的关节的线速度和角速度、位置和取向,可以检测真实骨架的手势或姿态。为了简单起见,从现在开始,我们将考虑虚拟骨架复制手的真实骨架。
[0082]
值得注意的是,本发明的方法独立于用于检测所描述的各种姿态的检测方法。因此,可以使用能够基于或不基于虚拟骨架来检测姿态变化(例如,用户身体的一部分的位置和/或取向的变化)的任何技术。
[0083]
在图4中示出了手的真实骨架的示例。手包含五个手指,通常称为:拇指、食指、中指、无名指和小指。拇指由掌指关节10和指间关节60组成。食指由掌指关节20、近端指间关节70和远端指间关节110组成。中指由掌指关节30、近端指间关节80和远端指间关节120组成。无名指由掌指关节40、近端指间关节90和远端指间关节130组成。小指由掌指关节50、近端指间关节100和远端指间关节140组成。手的其余部分可以分为三个区域。第一个区域是
手掌,它是手前部的中央区域。第二区域是手背,其是手掌在手后部的相应区域。第三区域是位于手掌近侧部分中的手的跟(heel)。
[0084]
使食指和拇指的指肚相对是准备在食指和拇指之间捏抓对象(例如,3d模型的顶点元素)的动作的手势。如在图5的示例中所示,食指的指肚300和拇指的指肚302面对,但不接触。它们被间隔的距离由用户选择。该距离由连接食指和拇指的指肚的线段200表示。仍然参考图5,食指进行屈曲。例如,可以由近端指间关节70执行屈曲,远端指间关节110没有或几乎没有屈曲。这允许食指的远端指骨和中间指骨基本成一直线,从而使得手势的检测更加容易。拇指可以略微伸展,以使拇指的远端指骨和中间指骨也基本成一直线。因此,如图5所示,当使食指和拇指的指肚相对时,食指和拇指的远端和中间指骨基本平行;因此,食指和拇指的指肚也基本平行。
[0085]
回到图1,在检测到s20包括使食指和拇指的指肚相对的手势之后,该方法包括确定s30与连接食指和拇指的指肚的线段平行的线段。连接食指和拇指的指肚的线段可以连接食指和拇指的指肚的中心。
[0086]
在示例中,与连接指肚的线段平行的线段的计算是通过确定连接指尖的线段来进行的。与检测将食指和拇指的指肚的中心相连的线段相比,这更容易执行。连接两个指尖的线段的计算可以使用用户手的虚拟骨架来执行。所确定的平行线段在3d空间中具有位置。这意味着线段上的每个点在3d空间中都有位置,例如线段的两个端点。因此,在这些示例中,s30包括确定将食指的指尖与拇指的指尖连接的线或线段,并且然后根据该线或线段计算出将食指的指肚与拇指的指肚连接的线段或将食指的指肚的中心与拇指的指肚的中心连接的线段。
[0087]
在示例中,平行线段包括连接食指和拇指的指肚的线段。该线段可以连接食指的指肚的中心和拇指的指肚的中心。在这些示例中,直接确定了连接食指指肚(的中心)和拇指指肚(的中心)的线段。因此,在这些示例中,s30包括确定连接食指的指肚和拇指的指肚的线段,或者确定连接食指的指肚的中心和拇指的指肚的中心的线段。
[0088]
确定s30也可以在没有任何虚拟骨架的情况下完成。作为示例,确定s30可以基于被训练为从视频记录器确定s30的神经网络。
[0089]
然后,该方法进一步包括利用所确定的平行线段来识别s40具有最接近位置的3d对象的顶点。通过将3d模型的每个顶点的位置与平行线段的位置进行比较来确定最接近的位置。因此,对于3d模型的每个顶点,计算所述每个顶点的位置与平行线段之间的距离。该距离可以是欧几里得距离。
[0090]
在示例中,在平行线段上选择点以识别具有最接近位置的顶点。由于必须计算较少的距离,因此在使用计算资源方面改进了最接近位置的确定。
[0091]
在示例中,平行线段上的点位于平行线段的中间(即,平行线段的中心)。该特定位置改善了用户的人机工程学和交互,这是因为他们可以更轻松地调整手的位置和/或两个指肚之间的空间以选择感兴趣的顶点。两个指肚之间的间隙可以用作视线:视线中的顶点(从用户角度来看)是可选的。
[0092]
在本公开的示例中,可以通过考虑3d对象的每个顶点来迭代地完成识别s40。应当理解,当确定具有与平行线段最接近位置的3d对象的顶点时,可以仅使用3d对象的顶点的子集。例如,可能仅使用用户的手可到达并且用户可见的顶点。
[0093]
在示例中,可以通过从所确定的平行线段投射平行于3d对象的中心的射线来执行识别。在此,“从所确定的平行线段
……
平行于3d对象的中心的”的表达是指射线在到达3d模型之前经过平行线段;射线不一定从平行线段开始。在示例中,射线经过平行线段的中间。
[0094]
在示例中,可以从用户的头部的中心或用户的优势眼或者用户的眼睛之间的点投射射线。这使得用户的选择更加容易,这是因为在用户看到的食指和拇指之间的顶点与该方法将要选择的顶点之间存在改进的匹配。
[0095]
在示例中,3d对象的每个顶点可以具有法线,并且手指和拇指的相对的指肚可以与法线形成定向平面。如前所述,如果3d模型的顶点没有法线,则可以计算顶点的法线。如果执行了计算,则其可以在该方法的任何步骤处(优选在识别s40之前)发生。手指和拇指的相对指肚可形成以法线定向的平面。可以在步骤s20、s30或s40处执行平面的确定。当食指和拇指的指肚相对时,基于食指和拇指的位置确定定向平面。实际上,如已经讨论的,当食指和拇指的指肚相对时,食指和拇指的远端和中间指骨基本上成一直线,并且可以形成包括这两条线的平面。此外,该平面可以包括平行线段。因此,可以认为当食指和拇指的远端和中间指骨相对时形成平面。必须对这样形成的平面进行定向,并添加该平面的法线。平面的取向是任意的,例如它可以由用户选择。
[0096]
现在讨论图6。图6示出了通过使食指的指肚和拇指的指肚相对而形成的平面的示例。食指的远端指骨和中间指骨基本成一直线,并且拇指的远端指骨和中间指骨也是如此。另外,食指和拇指的中间指骨基本平行,使得食指和拇指的远端指骨和中间指骨形成平面202的支撑。如图6所示,平行线段200属于平面202。平面202被定向并且图形提示204可以被显示以向用户指示平面202的法线。平面202可以被显示或不被显示,优选地其不被显示以便保持手势尽可能自然,例如用户不受平面表示的干扰;在该方法期间可减轻眼睛疲劳。因此,手与通过使食指的指肚和拇指的指肚相对而形成的平面相关联。从现在开始,这将被称为手的定向平面。
[0097]
在示例中,该平面可以从由三个点形成的三角形中得出:(i)由食指和拇指的指尖或指肚或指肚的中心形成的两个点,以及(ii)由食指和拇指掌骨之间的关节指形成的一个点,或由这些骨骼或腕部定义的线的交点形成的一个点。在这些示例中,平行线段可以属于平面。
[0098]
在3d对象的每个顶点还具有法线并且手指和拇指的相对的指肚还形成具有法线的定向平面的示例中,识别s40可以包括在顶点之中识别顶点,这最小化了记为f的函数,其用以下等式(1)计算:
[0099][0100]
其中:
[0101]

vertex是感兴趣的顶点;
[0102]

且且{w1 w2>0};
[0103]

||fh||是3d沉浸式环境中顶点vertex的位置与手的定向平面的位置h之间的欧几里得距离;并且
[0104]

是3d沉浸式环境中顶点face的法线与手的定向平面的法线之间的角度。
[0105]
函数f是两项的加权和。实际上,第一项||fh||乘以因子w1,并且第二项乘以因子w2。
[0106]
第一加权项||fh||是3d沉浸式环境中顶点vertex的位置与食指和拇指的指肚相对时由食指和拇指的指肚形成的定向平面的位置h之间的欧几里得距离。定向平面的位置h可以是平行线段的位置,例如,平行线段的中心。
[0107]
第二加权项是顶点vertex的法线向量和定向平面的法线向量之间的夹角。第二加权项也可以基于顶点vertex的取向和通过使食指和拇指的指肚相对而形成的定向平面的取向。
[0108]
每个权重w1和w2可以等于或大于0。两个权重的总和严格大于0。如果权重之一等于0,则意味着该函数仅考虑两个项之一。例如,可以将w1设置在0.1和0.5之间,并且可以将w2设置在0.5和0.9之间。
[0109]
权重w1和w2可以被预先计算。例如,可以基于3d对象的顶点的数量和大小对其进行预先计算。权重w1和w2例如可以在包含3d对象的3d沉浸式环境的加载时被预先计算。如果3d对象具有许多顶点,则第二项的权重可能大于第一项的权重。权重也可以取决于所使用的设备。例如,一些设备可能给出手部位置的有限精度,但更好的取向精度。权重在方法期间也可能有所不同。例如,权重可以根据位于用户视野中的3d对象的表面的3d对象的顶点的数量和大小而变化。视野可以被定义为在给定时间的可观察环境的范围。因此,由于在该方法期间视野可能会发生变化,因此权重w1和w2也可能会发生变化。
[0110]
在示例中,可以通过考虑3d对象的每个顶点来迭代地完成识别s40。在另一示例中,可以通过考虑3d对象的子集的每个顶点来迭代地完成识别s40。对于每个顶点,计算函数f的结果。具有最小值的顶点是使函数f最小化的3d对象的顶点。
[0111]
在示例中,函数f的项|fh|可以替换为项||fh

||。通过以下方式使用公式(2)计算h


[0112]
h

=e eh*max(1,a*(||eomax||)/||ehmax||)
ꢀꢀꢀ
(2)
[0113]
其中:
[0114]

h’是虚拟手的中心的计算位置;
[0115]

e是用户视点的位置;
[0116]

h是用户手部中心的位置;
[0117]

eh是从e到h的向量;
[0118]

omax是3d对象的距e最远的顶点的位置;
[0119]

hmax是用户手的中心在用户身体横向平面上距e最远的位置;
[0120]

[0121]

||eomax||是从e到omax的向量的范数;并且
[0122]

||ehmax||是从e到hmax的向量的范数;
[0123]
h’是虚拟手的定向平面的计算出的位置。可以如上所述地获得虚拟手的定向平面:虚拟手包括从虚拟手的虚拟手指和虚拟拇指的相对指肚获得的虚拟平面。因此,虚拟手再现(或模仿)用户执行的手势。虚拟手可以被定义为这样的手:在3d沉浸式环境中从用户的视点e看,其虚拟地定位在至少比用户的手更远的位置。为了确保从用户的视点来看,项|
|fh

||始终与顶点的距离有关,使用虚拟手是有用的。从用户的视点e来看,虚拟手可能不会比用户的手更近。用户的视点e可能位于例如他们的头部中心,或位于他们的优势眼处,或位于他们的眼睛中间。omax是从用户视点e看3d对象的最远顶点的位置。例如,可以在方法开始时,例如在检测s20开始时,确定从用户的视点e看被视为3d对象的最远顶点的顶点。例如,从用户视点e来看被视为3d对象的最远顶点的顶点也可以在整个方法中进行更新。如果在此方法期间用户的视点e和/或3d对象移动,则更新从用户的视点e看被视为3d对象的最远顶点的顶点特别有用。换句话说,作为示例,可以在检测s20期间确定omax,并且可以在整个方法期间更新omax。hmax是用户的手的定向平面在用户身体的横向平面中距用户的视点e最远的位置。因此,hmax是是否可通过使用考虑顶点距用户视点e的距离的方法来选择顶点的指标。hmax例如是当用户的手臂在他们面前水平伸展时用户的手的定向平面的位置。hmax可以例如在校准阶线段期间被预先计算。hmax也可以由用户设置。a用作||eomax||/||ehmax||的因子。例如,a是由用户在使用该方法之前设置的。如果a=1,则意味着当在用户的身体的横向平面中从用户视点e看3d对象的最远顶点之间的距离大于从用户视点e看用户的手的定向平面的最远位置时,则在3d沉浸式环境中虚拟手将比用户的手更远。对a使用大于1的值将允许用户选择从用户的视点e看3d对象的最远顶点,而不必完全伸展其手臂。例如,a的值可以设置为在1.5和2之间。为简单起见,下面我们将考虑a=1。
[0124]
使用虚拟手可以改善用户与3d对象的交互(并且一般地说,在3d环境中)。图8和图9的示例示出了使用虚拟手在人体工程学方面的改进。
[0125]
在图8的示例中,使用虚拟手可以允许用户选择3d对象的任何顶点,而不必完全伸展他们的手臂。保持手臂的伸展可能会使用户疲劳,因此使用虚拟手解决了此问题。
[0126]
在图9的示例中,使用虚拟手允许用户选择3d对象的任何顶点而无需移动用户的视点e。事实上,例如,当在用户的身体的横向平面上3d对象的最远顶点与用户的视点e之间的距离大于用户手的中心距e的最远的位置之间的距离时,则在不使用虚拟手的情况下3d对象的一些顶点可能是不可选择的。在这种情况下,从用户的视点e看虚拟手定位于比用户的手e更远处。在不使用虚拟手的情况下,项||fh||将对从用户的视点e看3d对象的最远顶点的选择进行惩罚。因此,该方法将因该项而有所偏差。虚拟手通过虚拟地移动用户的手在3d沉浸式环境中的位置来解决此问题,以便确保虚拟h'可以始终至少与3d对象的最远顶点一样远,其中,两个位置都是从用户的视点e考虑的。
[0127]
在示例中,使用虚拟手可以与从虚拟手发送的射线投射结合。例如,如果用户的手确实接近用户的头部,则可以激活此组合。射线的方向可以正交于虚拟手的定向平面朝向3d对象中心。虚拟手的定向平面是从食指和拇指的虚拟相对指肚获得的,射线可以优选地从虚拟平行线段投射,该虚拟平行线段是从连接再现用户手的手势的虚拟手的食指和拇指的指尖的线段获得的。例如,在混合现实或增强现实中,此组合对于选择可能被真实障碍物包围的3d对象的任何顶点可以是非常有用的。使用射线投射的方向以从3d对象的顶点之中选择顶点对于选择从用户的视角看位于对象背面的顶点特别有用。作为示例,可以在识别s40期间使用从虚拟手的(从食指和拇指的虚拟相对指肚获得的)定向平面的方向。因此,通过将他们的手掌转向他们的头部,该方法允许他们选择从用户的视角看位于对象背面的顶点。
[0128]
在示例中,函数f的项||fh||或||fh

||(分别用等式(1)或等式(2)计算)还可以包
括3d沉浸式环境中以下二者的位置之间的欧几里得距离:顶点;以及3d模型与从用户视点e投射的射线之间的至少一个交点。例如,射线可以从头部的中心或优势眼或眼睛之间的点投射到3d模型的中心。投射的方向可以例如由用户的凝视或用户的头部的方向定义。例如,还可以从用户的视点e的位置到3d模型中心的位置计算投射的方向。3d模型的中心可以例如被定义为3d模型的边界框的中心。例如,从用户的视点e的位置到3d模型中心的位置来计算投射的方向。射线投射经过虚拟平行线段,该虚拟平行线段是从连接再现用户手部的手势的虚拟手的(虚拟)食指和(虚拟)拇指的指尖的线段获得的。
[0129]
将基于3d沉浸式环境中的欧几里德距离(其为顶点与3d模型与从用户视点e投射的射线的至少一个交点的位置之间的欧几里德距离)的项添加到项||fh||或||fh

||允许该方法对用户的视点e的位置敏感。换句话说,这允许促进选择与以下二者之间的线对齐的顶点:用户的视点e;以及3d模型与射线的至少一个交点。如果3d模型在视野之外部分渲染,则这将特别有用。在这种情况下,该方法将惩罚对视野之外的顶点的选择。
[0130]
为了取回用户头部的位置和/或取向,可以使用任何能够检测到姿态或运动的变化的技术来进行头部跟踪。例如,存在在虚拟、混合或增强现实中提供此类信息的头戴式受话器或眼镜。为了取回用户凝视的方向和/或取向,可以使用眼睛跟踪技术。
[0131]
在示例中,参考图2的示例,识别s40可以进一步包括:确定s400与所确定的线段具有最接近位置的3d对象的顶点。识别s40可以进一步包括计算s410形成可选择的顶点的子集230的确定的顶点的一个或多个n相邻顶点、一个或多个相邻顶点和所确定的顶点。所确定的顶点的n相邻顶点是与所确定的顶点的n

1相邻顶点共享边且不与n

2相邻顶点共享边的顶点。因此,所确定的顶点的1相邻顶点是与所确定的顶点共享边的顶点,并且所确定的顶点的2相邻顶点是与所确定的顶点的1相邻顶点共享边且不与所确定的顶点共享的边的顶点。识别s40还包括:从可选择的顶点的子集中,识别s420与定向平面具有最接近取向的3d对象的顶点。可以基于3d对象的顶点的大小来预先确定n。也可以基于形成子集的顶点的大小或基于形成子集的顶点的从用户视点e看的可见表面的大小和/或基于用户的视点与所确定的顶点之间的距离来更新n。也可以基于设备规格或基于用户偏好来预先确定n。
[0132]
确定s400和s420还可通过确定具有最接近方向的3d对象的顶点或通过确定使等式(1)或(2)的函数f最小化的顶点来执行。可以使用确定s400和s420之间的所有组合。例如,确定s400可以通过确定具有最接近方向的3d对象的顶点来完成,并且确定s420可以通过确定使函数f最小化的顶点来完成。
[0133]
在另一示例中,可以通过确定使函数f最小化的顶点来完成确定s400和确定s420。在这种情况下,在确定s400期间,权重w1可以比w2大四倍,并且在确定s420期间,权重w1可以比w2小四倍。
[0134]
在示例中,该方法可以进一步包括修改可选择的顶点的子集的顶点的第一渲染。在步骤s410中计算可选择的顶点的子集。如上所述,例如,在确定s40期间,基于所确定的顶点来计算子集。子集的大小取决于在计算s410中使用的n的值。在示例中,可以计算n的值以确保从用户的角度看的可见表面总是足够大以使用户容易地标识它。修改子集的渲染有助于用户识别在步骤s420期间哪些顶点将被视为可选的。因此,用户将容易地识别感兴趣的顶点不在该子集之中,并且因此在步骤s410期间修改其手的位置和/或取向以改变子集。
[0135]
在示例中,用户在标识可选择的顶点的子集之后,可以修改其手的位置以便改变
可选择的顶点的子集和/或他们可以修改他们的手的取向以便改变可选择的顶点的相同子集之中的所识别的顶点。
[0136]
渲染的修改可以以各种方式来完成。渲染的修改可以在计算s410和/或识别s420期间完成。作为示例,可以通过突出显示可选择的顶点来执行渲染的修改。作为另一个示例,可以通过将特定纹理应用于可选择的顶点来执行渲染的修改。渲染也可以仅针对可选择的顶点的边进行修改。例如,边可以被突出显示或变粗。在另一个示例中,渲染的修改还可以包括放大(zoom

in)可选择的顶点和将可选择的顶点与3d对象断开连接。可以通过对用户的任何另一反馈(例如,在识别的顶点上自动捕捉图形用户信息)来完成渲染的修改。通过更改手的表示,渲染的修改也可能出现在用户手之上。例如,手的颜色可能改变,或者线可能覆盖在手指之上。
[0137]
在示例中,该方法可以进一步包括修改所识别的顶点的第二渲染。所识别的顶点可以是例如在步骤s40期间识别的顶点。因此,对识别的顶点的渲染的修改开始,并帮助用户选择感兴趣的顶点。
[0138]
所识别的顶点也可以是例如在步骤s420期间识别的顶点。所识别的顶点也可以是例如在步骤s400期间确定的顶点。在这些情况下,例如,第二渲染和第三渲染可能与可选择的顶点子集的第一渲染不同。第二渲染也可能与第三渲染不同。第一渲染和/或第二渲染和/或第三渲染改善了用户在3d环境中与3d对象的交互:实际上,如果用户需要改变手的位置以便改变可选择的顶点子集,则用户可以在步骤s420期间更容易地掌握,和/或他们可以修改其手的取向,以便在可选择的顶点的相同子集之中改变已识别的顶点。需要较少的用户交互以选择想要的顶点。
[0139]
可以以各种方式来执行渲染的修改。在示例中,可以通过突出显示可选择的顶点来执行渲染。在另一个示例中,可以通过将特定纹理应用于可选择的顶点来执行渲染。渲染也可以仅针对可选择的顶点的边进行修改,例如边可能突出显示或变粗。在另一个示例中,渲染的修改还可以包括放大可选择的顶点和将可选择的顶点与3d对象断开连接。可以通过对用户的任何其他反馈(例如,在识别的顶点上自动捕捉图形用户信息)来完成渲染的修改。通过改变手的表示,渲染效果的修改也可能出现在用户的手之上;例如手的颜色可能改变,或者线可能覆盖在手指上。
[0140]
在提供持续的用户反馈和避免过度弹出之间可以找到良好的平衡。提供连续的用户反馈可以被定义为具有响应用户输入的方法。换句话说,例如,一旦用户提供输入,该方法就应该在没有可见延迟的情况下更新识别s40的结果和/或确定s400的结果和/或计算s410的结果和/或识别s420的结果。通过具有响应用户的输入的该方法,存在该方法提供过度弹出的风险。该术语定义了用户界面在各种状态之间快速且连续地切换的趋势。在该方法中,例如其可以是在视为被识别的顶点的两个或多个顶点之间进行迅速且快速的切换。
[0141]
作为示例,可以保留具有修改的渲染的被识别的顶点,直到已经确信地识别了相同维度的更好的候选为止。换句话说,识别s40可以包括最小化函数f,一旦另一顶点的函数f的值小于当前识别的顶点的函数f的值,则将不进行从当前识别的顶点到另一顶点的切换。为了避免过度弹出,可以在识别s40期间使用惩罚阈值或惩罚因子,以将当前识别的顶点的函数f的结果的值与另一顶点进行比较。换句话说,具有修改后的渲染的所识别的顶点可以被保留,直到具有相同维度的更好的候选将函数f最小化为止,其具有增加的惩罚阈值
和/或向候选的函数f的结果乘以惩罚因子。可替代地,可以仅在检测到用户的手在特定时间段内没有移动后,才从当前识别的顶点切换到另一个顶点,从而避免出现过度弹出。
[0142]
连续的用户反馈可以例如通过修改3d对象的渲染和/或通过在3d对象附近和/或用户的手附近添加虚拟表示和/或通过来自设备的触觉反馈来完成。
[0143]
在示例中,该方法中的3d对象的顶点可以是三角形的一部分和/或四边形的一部分和/或拓扑面的一部分和/或参数曲面的一部分和/或过程表面的一部分。拓扑面是一组相邻的三角形或一组相邻的四边形,它们形成较大的“逻辑”连续面,同时仍潜在地显示每个图元之间的各种各样的不同取向,尤其是在拓扑面是大的时。在cad程序中,拓扑面大部分时间都受拓扑边的约束,并且因此受拓扑边的顶点约束。所谓相邻的三角形和/或相邻的四边形,应当理解,组的每个三角形或四边形是所述组的三角形或四边形的1相邻三角形或四边形。例如,代表汽车的cad对象可以由数千个三角形组成,这些三角形可以分组在少于一百个拓扑顶点中。例如,一个拓扑顶点可以代表汽车座椅的上表面。
[0144]
在示例中,该方法还包括通过检测到手势还包括食指的指肚和拇指的指肚之间的接触来选择3d对象的所识别的顶点。换句话说,当手势进一步包括食指的指肚与拇指的指肚的接触时,将3d对象的所识别的顶点添加到当前的顶点选择。
[0145]
在示例中,该方法进一步包括通过检测到手势还包括食指的指尖和拇指的指尖之间的接触来选择3d对象的所识别的顶点。通过检测手势进一步包括食指的指尖和拇指的指尖的接触进行的选择的示例在图7中示出。换句话说,当手势还包括食指的指尖与拇指的指尖的接触时,将3d对象的所识别的顶点添加到当前的顶点选择中。
[0146]
在示例中,该方法还包括通过检测手势还包括食指的指肚和拇指的指肚之间的小于预定值(例如,小于或等于1厘米)的距离来选择3d对象的所识别的顶点。
[0147]
在示例中,在选择第一顶点之后,用户可以返回默认手势和/或再次执行手势以用于选择另一个顶点(第二个顶点)。第一个所选择的顶点可以被保留在存储器中,使得第一个顶点和第二个顶点被存储在存储器中。通过重复手势,用户可以选择3d模型的若干个顶点。
[0148]
在示例中,该方法可以进一步包括检测到手势还包括所有手指的外展并取消选择所选择的顶点。该检测可以在该方法的任何步骤期间发生。例如,用户可以因此取消选择最后选择的顶点。作为另一个示例,用户可以取消选择他们对顶点的整个当前选择。
[0149]
在预先选择期间(即,在选择之前),顶点渲染的大小可以与拇指和食指之间的距离成反比,从而针对用户改善了人体工程学。
[0150]
用户可以预先选择若干个顶点(对选择的当前顶点),并执行对所有预先选择的顶点的选择。
[0151]
在本描述中,术语
“……
的中心”可以被解释为意指“实质上在
……
中心”。

技术特征:
1.一种计算机实现的方法,其用于在cad系统的3d沉浸式环境中的3d对象的顶点之中选择顶点,每个顶点在所述3d沉浸式环境中具有位置,所述方法包括:

在所述3d沉浸式环境中显示(s10)所述3d对象;

检测到(s20)手势,所述手势包括使食指的指肚和拇指的指肚相对,两个指肚是间隔开的;

确定(s30)与连接所述食指的指肚和所述拇指的指肚的线段平行的线段,所确定的线段在所述3d沉浸式环境中具有位置;以及

识别(s40)与所确定的线段具有最接近位置的所述3d对象的顶点。2.根据权利要求1所述的计算机实现的方法,其中,所述识别还包括:

从所确定的平行线段投射平行于所述3d对象的中心的射线。3.根据权利要求1或2所述的计算机实现的方法,其中,所述3d对象的每个顶点还具有法线,并且所述食指和所述拇指的相对的指肚还与法线形成定向平面,并且其中,所述识别(s40)还包括:

使函数f最小化:其中:

vertex是感兴趣的顶点;

且且{w1 w2>0};

||fh||是所述3d沉浸式环境中顶点vertex的位置与所述定向平面的位置h之间的欧几里得距离;并且

是所述3d沉浸式环境中所述顶点vertex的法线与所述定向平面的法线之间的角度。4.根据权利要求3所述的计算机实现的方法,其中,函数f的项||fh||被替换为||fh

||,其中,h

通过以下方式计算:h

=e eh*max(1,a*(||eo
max
||)/||eh
max
||)其中:

h

是虚拟手的定向平面的位置;

e是用户视点的位置;

h是由所述食指和所述拇指的相对的指肚形成的所述定向平面的位置;

eh是从e到h的向量;

o
max
是所述3d对象的距e最远的顶点的位置;

hmax是所述用户的手的中心在所述用户的身体横向平面中距e最远的位置;
‑‑
||eo
max
||是从e到o
max
的向量的范数;并且

||eh
max
||是从e到hmax的向量的范数。5.根据权利要求4所述的计算机实现的方法,其中,所述函数f的项||fh||或||fh

||还包括在所述3d沉浸式环境中的所述顶点的位置和3d模型与射线的至少一个交点之间的欧
几里得距离,所述射线从头部的中心或优势眼或眼睛之间的点投射到所述3d模型的中心。6.根据权利要求1至5中的任一项所述的计算机实现的方法,其中,所述识别包括:

确定(s400)与所确定的线段具有最接近位置的所述3d对象的顶点;

计算(s410)所确定的顶点的一个或多个n相邻顶点、一个或多个相邻顶点以及所确定的顶点,以形成可选择的顶点的子集;以及

从所述可选择的顶点的子集中识别(s420)与所述定向平面具有最接近取向的所述3d对象的顶点。7.根据权利要求6所述的计算机实现的方法,还包括:修改可选择的顶点的子集中的顶点的第一渲染。8.根据权利要求1至7中的任一项所述的计算机实现的方法,还包括:修改所识别的顶点的第二渲染。9.根据权利要求1至8中的任一项所述的计算机实现的方法,其中,所述3d对象的顶点能够是三角形的一部分和/或四边形的一部分和/或拓扑面的一部分和/或参数曲面的一部分和/或过程表面的一部分。10.根据权利要求1至9中的任一项所述的计算机实现的方法,其中,检测到(s20)所述手势包括使所述食指的指肚和所述拇指的指肚相对,所述食指和所述拇指实质上平行。11.根据权利要求1至10中的任一项所述的计算机实现的方法,还包括:

通过检测到所述手势还包括所述食指的指肚和所述拇指的指肚之间的接触,来选择所述3d对象的所识别的顶点。12.根据权利要求11所述的计算机实现的方法,还包括:

检测到所述手势还包括所有手指的外展;以及

取消选择所选择的顶点。13.一种计算机程序,包括允许计算机执行权利要求1至12中的任一项的方法的指令。14.一种系统,包括显示器以及与存储器通信地耦合的处理电路,所述存储器存储根据权利要求13所述的计算机程序。15.一种计算机可读介质,其存储根据权利要求13所述的计算机程序。
技术总结
本发明尤其涉及一种计算机实现的方法,该方法用于在CAD系统的3D沉浸式环境中在3D对象的顶点之中选择顶点。每个顶点在3D沉浸式环境中都有一个位置。该方法包括:在3D沉浸式环境中显示3D对象;检测到包括使食指和拇指的指肚相对的手势,两个指肚间隔开;确定与将食指的指肚和拇指的指肚连接的线段平行的线段,所确定的线段在3D沉浸式环境中具有位置,并识别与所确定的线段具有最接近位置的3D对象的顶点。所确定的线段具有最接近位置的3D对象的顶点。所确定的线段具有最接近位置的3D对象的顶点。


技术研发人员:F
受保护的技术使用者:达索系统公司
技术研发日:2020.12.29
技术公布日:2021/7/15

转载请注明原文地址:https://doc.8miu.com/read-650072.html

最新回复(0)