CN109716395B - 在虚拟现实中保持对象稳定性 - Google Patents

在虚拟现实中保持对象稳定性 Download PDF

Info

Publication number
CN109716395B
CN109716395B CN201780058201.9A CN201780058201A CN109716395B CN 109716395 B CN109716395 B CN 109716395B CN 201780058201 A CN201780058201 A CN 201780058201A CN 109716395 B CN109716395 B CN 109716395B
Authority
CN
China
Prior art keywords
bone
vertex
region
filter
anchor
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
Application number
CN201780058201.9A
Other languages
English (en)
Other versions
CN109716395A (zh
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.)
Google LLC
Original Assignee
Google LLC
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
Priority claimed from US15/463,225 external-priority patent/US10311621B2/en
Priority claimed from US15/465,135 external-priority patent/US10162381B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of CN109716395A publication Critical patent/CN109716395A/zh
Application granted granted Critical
Publication of CN109716395B publication Critical patent/CN109716395B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/212Input arrangements for video game devices characterised by their sensors, purposes or types using sensors worn by the player, e.g. for measuring heart beat or leg activity
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • A63F13/5255Changing parameters of virtual cameras according to dedicated instructions from a player, e.g. using a secondary joystick to rotate the camera around a player's character
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/163Wearable computers, e.g. on a belt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Architecture (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

在VR中使对象动画化的技术涉及将运动过滤器应用到随对象上的顶点而变化的对象。按此逻辑,VR计算机通过产生近似对象表面的三角形网格和包括定义基于锚顶点的运动的顶点的骨头来产生用于交互式、三维游戏的对象。当用户选择对象的顶点作为关于其来移动对象的锚顶点时,VR计算机为每个骨头产生可变的过滤器,该过滤器基于该骨头与锚顶点的距离来限制该骨头的运动。因此,当用户以控制器产生具有定义锚顶点的运动路径的姿势时,包括锚顶点的骨头经过未过滤的运动,而远离锚顶点的骨头经过更受限制的运动。

Description

在虚拟现实中保持对象稳定性
本申请要求于2017年3月20日提交的标题为“在虚拟现实中保持对象稳定性”的美国非临时专利申请No.15/463,225的优先权,并且是其继续申请,其公开内容通过引用在此完整地结合于此。
技术领域
本说明书通常涉及在虚拟现实(VR)中对象的表示。
附图说明
图1是用于执行本文描述的改进技术的示例电子环境的框图。
图2是描绘根据改进技术的示例方法的流程图。
图3是描绘在图1中所示的电子环境内的对象的示例过滤的示意图。
图4是描绘在图1中所示的电子环境内的对象的另一示例变形的示意图。
图5是描绘能够用于实施本文描述的改进的计算机设备的示例的示意图。
图6是描绘用于虚拟现实(VR)环境的示例头戴式显示器(HMD)的示意图。
图7A、图7B和图7C是描绘示例VR HMD和示例控制器的示意图。
各个附图中的相同参考符号表示相同元素。
具体实施方式
生成虚拟环境的虚拟现实(VR)***包括VR计算机和控制器。人类用户通过与虚拟环境内的各种对象交互来体验由VR计算机生成的虚拟环境。例如,人类用户可以使用控制器经由姿势通过平移和/或旋转来移动对象。为了响应于来自人类用户的姿势提供对象的运动的自然模拟,VR计算机根据刚性变换执行对象的动画。
使对象动画化的方法能够涉及定义对象的顶点和这些顶点的刚性变换,该刚性变换表示对象的各个部分的移动。在某些情况下,存在应用于刚性变换以模拟对象的质量的过滤器。
作为一个简单的例子,假设该对象是棒球棒。棒球棒是长而刚性的对象。如果球棒是单个刚性元件,那么通过运动(即,平移和旋转)球棒上每对点的相应距离保持固定。也就是说,响应于平移和旋转运动,球棒的每个点被平移相同的量并且经历相同的旋转角度。
本文中在虚拟环境中使对象动画化的一些手段很好地缩放到,诸如在虚拟现实(VR)中的那些,交互式动画。例如,这些方法可能不考虑噪声源,其包括(i)用户用来控制虚拟环境中的对象的手持控制器中的测量噪声,和(ii)自然手部振动。当用户相对静止地握住对象时,噪声源在虚拟环境中产生不自然的抖动运动。
噪声具有平移分量和旋转分量。对于远离固定锚点的顶点,噪声的旋转分量被放大,较大的对象对该旋转噪声特别敏感。
例如,返回参考上面介绍的球棒示例,球棒对在其一端(即,用户名义上握住球棒的手柄)的运动的响应可能不一致,因为球棒可能不是完美的刚性。按此逻辑,用户可能在他或她握住球棒时引入旋转噪音。用户握住球棒的手柄处的旋转噪声可能在远离用户的球棒的另一端被放大。这种放大的旋转噪声可能导致,如在虚拟环境中所表示的,球棒的不自然的外观和感觉。
其他更复杂的对象,诸如人和动物,可以被建模为具有通过非刚性元件连接在一起的刚性元件(“骨头”)。在人和动物的情况下,非刚性元件可以包括关节和其他***。在这些情况下,在一个点(例如,手)处的旋转噪声可能在远程点(例如,肩部)处产生不自然的大的旋转噪声。
简单地过滤该旋转噪声是不可取的。当用户在VR中握住对象时,对用户的手的附着的刚性对于保持存在是重要的。如果对象开始落后于手,无论旋转地还是位置地,用户体验都会被污染。应用于刚性变换以模拟对象质量的过滤器可以在固定锚点处抑制这种高频运动,但是这种过滤器可能使得远离锚点的无意识振动变得更糟并且损害用户的体验。
本文描述的在VR中使对象动画化的技术涉及将运动过滤器应用到随对象上的顶点而变化的对象。按此逻辑,VR计算机通过产生近似对象表面的三角形网格以及包括基于锚顶点的运动定义顶点的运动的骨头或刚性元件,产生用于交互式、三维游戏的对象。例如,球棒可以通过单个骨头表示(例如,使用其建模)。作为另一示例,虚拟环境中的化身的手臂或手可以由多个连接的骨头表示。
对象的骨头是包括对象的顶点的刚性元件,使得当骨头移动时,骨头的每个顶点以相同的方式运动。当用户选择对象的顶点作为关于其来移动对象的锚顶点时,VR计算机为每个骨头生成可变的过滤器,该过滤器基于该骨头与锚顶点的距离来限制该骨头的运动。过滤器可以通过减少与旋转噪声相关联的高频运动的量来限制该运动。因此,当用户以控制器产生具有定义锚顶点的运动路径的姿势时,包括锚顶点的骨头经过未过滤的运动,而远离锚顶点的骨头经过更受限制的运动。同时,在没有骨头的对象的内部区域中,对象表面的顶点可以平滑地变形,从而在运动期间实现远离锚顶点的对象的刚性。然而,VR计算机可以执行保留对象的内部区域的体积的双重四元数蒙皮操作。
在一些实施方式中,双重对象是形式为f+∈g的数学对象,其中∈2=0。即,例如,(f+∈g)2=f2+∈·2fg。四元数是形式为的量,其中/>是四元数单位,并且/>其中四元数单位的乘法是反交换。因此,双重四元数是其中量a、b、c和d是双重对象的四元数。用双重四元数表示各种旋转和平移操作允许保持体积的对象的非刚性部分的变换。
图1是描绘根据本文所描述的改进技术的示例电子环境100的框图。电子环境100包括具有VR控制器和显示器110的用户112、VR计算机120和网络180。
VR控制器110可以采用头戴式显示器(HMD)的形式,其由用户112佩戴以提供沉浸式虚拟环境。在示例电子环境100中,佩戴VR控制器110的用户112持有用户设备,即,用户设备114。用户设备114可以是,例如,智能手机、控制器、操纵杆或可与VR控制器110配对并与之通信以在沉浸式虚拟环境中交互的另一便携式手持设备。用户设备114可以经由例如,有线连接或无线连接(诸如,例如,WiFi或蓝牙连接)与VR控制器110可操作地耦合或配对。用户设备114和VR控制器110的这种配对或可操作地耦合可以提供用户设备114和VR控制器110之间的通信以及用户设备114和VR控制器110之间的数据交换。这可以允许用户设备114用作与VR控制器110通信的控制器,以在沉浸式虚拟环境中交互。也就是说,在由VR控制器110提供的沉浸式虚拟环境中,用户设备114的操纵,诸如,例如,由用户设备114发射并且指向虚拟对象或特征以供选择的光束或射线、和/或在用户设备114的触摸表面上接收到的输入和/或用户设备114的运动,可以被翻译成相应的选择、或运动或其他类型的交互。
VR计算机120被配置来生成用于沉浸式虚拟环境的虚拟环境(VE)数据130,并通过网络180将该数据发送到用户设备114。如图1所示,VR计算机120被实现为通过网络180与用户设备114通信的计算机***。
VR计算机120包括网络接口122、处理单元124的集合、存储器126和信号接收器128。网络接口122包括用于将从网络180接收的电和/或光信号转换成电形式以供虚拟环境计算机120使用的,例如,以太网适配器、令牌环适配器等。处理单元124的集合包括一个或多个处理芯片和/或组件。存储器126包括易失性存储器(例如,RAM)和非易失性存储器,诸如,一个或多个ROM、磁盘驱动器、固态驱动器等。处理单元124的集合和存储器126一起形成控制电路,该控制电路被配置和布置来执行如本文所述的各种方法和功能。
在一些实施例中,VR算机120的一个或多个部件能够是,或者能够包括被配置为处理存储在存储器126中的指令的处理器(例如,处理单元124)。如图1描述的这种指令的示例包括虚拟环境(VE)管理器160和对象变换管理器170。存储器126还可以将由处理器传递的各种数据存储到由指令实现的例程中。如图1所描述的,这样的数据包括VE数据130、其依次包括对象数据140(1),......,140(M)。
VE管理器160被配置来生成VE数据130以通过VR控制器110作为沉浸式虚拟环境来实现。例如,当VR计算机120被配置为处理用于交互式、沉浸式游戏的数据时,由VR计算机120生成的VE数据130可以包括呈现为房间的墙壁或室外环境的一些背景数据。此外,VE数据130还包括一组对象140(1),...,140(M),用户112可以经由VR控制器110与其交互。VR计算机120可以呈现对象140(1),...,140(M)中的任何到显示器/控制器110上以供用户112观看。
每个对象(例如,对象140(1))表示虚拟环境内的一些物理对象。例如,如果VR计算机120正在处理飞镖游戏,则一个虚拟对象可以是飞镖,另一个虚拟对象可以是飞镖靶。在这样的游戏中,经由控制器110,用户112可以与控制器的化身与对象140(1)交互。按此逻辑,用户112将控制器110移动到对象140(1)上的点,即,锚顶点。然后,用户可以通过控制器的一系列姿势来操纵对象140(1)。也就是说,VR计算机120可以将每个姿势解释为沿着特定路径移动对象140(1)的命令。
对象140(1)包括定义对象140(1)的表面的多个顶点142(1)。通常,VR计算机120从三维空间中的三角网格构造对象140(1)。然后,三角网格的每个顶点形成对象140(1)的表面的顶点142(1)。
原则上,当对象140(1)是完全刚性时,对象140(1)的通过路径的运动由每个顶点142(1)的刚性变换表示。该运动通常具有平移分量和旋转分量。在一些实施方式中,运动可以表示为被相加和/或相乘在一起的一系列矩阵。然而,在其他实施方式中,这种运动可以由双重四元数表示。
然而,在大多数情况下,对象140(1)不是真正刚性并且可以预期一些变形。例如,骨头之间的对象的部分可能不是刚性的,并且这些部分中的顶点可能相对于彼此全部不同地移动。在这些情况下,对象还包含一组骨头(即刚性元件)144(1)(1),...,144(1)(N1),其每个都是对象140(1)的刚性部分并且具有对象表面的至少一个顶点142(1)。代替将变换与每个顶点相关联,而是将变换与每个骨头,例如,骨头144(1)(1)相关联。每个骨头的顶点根据骨头的变换而移动。例如,如果骨头被旋转,则相对于相应骨头的末端固定的每个顶点将随骨头旋转。作为另一示例,如果骨头被平移,则相对于相应骨头的末端固定的每个顶点将随骨头平移。如果骨头的一端比骨头的另一端移动得多,则基于骨头的运动,一个顶点将比另一个顶点移动得多。
图3中示出了骨头的示例。在图3中,示出了细长的对象300。对象300在相应的刚性区域310和320中具有两个骨头315和325。这些骨头315和325中的每一个都表示为虚线,因为骨头不是对象300的真实部分,而是帮助可视化对象300的一些部分如何移动的设备。每个骨头(例如,骨头315)具有两个顶点:锚顶点340和与对象的非刚性区域330相邻的第二顶点350。例如,再次假设该对象是棒球棒。用户将在点340处,在一端(手柄)握住球棒。在此端的锚顶点的运动中引起的任何类型的噪声可能在球棒的另一端的点380处引起非常大量的旋转噪声。然而,通过在远端(点380)处的与在手柄或闭合端(点340)处的不同地过滤,则这种在点380处抑制运动的这种过滤器能够用于减少或消除点380处的抖动。回到图1中,因为已经发现在远离锚顶点移动的骨头的运动对噪声(例如,自然人手抖动以及来自控制器110的机器引起的噪声)更敏感,每个骨头144(1)(1)具有其各自的运动过滤器146(1)(1)。然后,过滤器146(1)(1),......,146(1)(N1)可以是不同的。在一些实施方式中,过滤器146(1),......,146(1)(N1)根据距锚顶点的距离来抑制运动中的这种噪声。对于包括锚顶点的骨头,例如骨头144(1)(N1),运动可以是未过滤的,即,过滤器146(1)(N1)由同一性变换表示。
过滤器146(1)(1)中的每一个可以采用双重四元数量的形式,其倍增或以其他方式修改表示骨头144(1)(1)的运动的双重四元数变换。在一些实施方式中,过滤器146(1)(1)可以采用恒定阻尼项的形式。在其他实施方式中,过滤器146(1)(1)可以采用频率空间中的低通滤波器的形式,其抑制或消除诸如抖动的高频运动。以这种方式,可以实现模拟的真实性增加和虚拟世界中运动的显示。
对象变换管理器170被配置为响应于来自用户112经由控制器110的姿势来变换所选对象,例如,对象140(1)(1)。如上所述,姿势由VR计算机120解释作为沿平移和旋转路径移动对象的请求。
对象变换管理器170还被配置为生成过滤器146(1)(1)并将其应用于每个骨头144(1)(1)。在一些实施方式中,可以基于从锚顶点的距离计算每个过滤器。过滤器的应用可以是矩阵、四元数或双重四元数乘法。
网络180被配置和布置为在VR控制器110和虚拟环境计算机120之间提供网络连接。网络180可以实现通常用于通过因特网或其他网络进行通信的各种协议和拓扑中的任何一种。进一步地,网络180可以包括在这种通信中使用的各种部件(例如,电缆、交换机/路由器、网关/网桥等)。
在一些实施方式中,存储器126能够是任何类型的存储器,诸如,随机存取存储器、磁盘驱动器存储器和闪存等。在一些实施方式中,存储器126能够被实施为与虚拟环境计算机120的部件相关联的多于一个存储器部件(例如,多于一个RAM组件或磁盘驱动器存储器)。在一些实施方式中,存储器126能够是数据库存储器。在一些实现中,存储器126能够是或能够包括非本地存储器。例如,存储器126能够是或能够包括由多个设备(未示出)共享的存储器。在一些实施方式中,存储器126能够在网络内与服务器设备(未示出)相关联,并且被配置为服务虚拟环境计算机120的部件。
在一些实施方式中,VR计算机120能够是,例如,有线设备和/或无线设备(例如,WiFi使能的设备),以及能够是,例如,计算实体(例如,个人计算设备)、服务器设备(例如,网络服务器)、移动电话、触摸屏设备、个人数字助理(PDA)、便携式电脑、电视、平板设备和电子阅读器等。这样的(一个或多个)设备能够被配置为基于一个或多个平台(例如,一个或多个类似或不同的平台)操作,所述平台能够包括一种或多种类型的硬件、软件、固件、操作***、运行时库和/或等等。
VR计算机120的部件(例如,模块、处理单元124)能够被配置为基于一个或多个平台(例如,一个或多个类似或不同的平台)操作,所述平台能够包括一种或多种类型的硬件、软件、固件、操作***、运行时库和/或等等。在一些实施方式中,VR计算机120的部件能够被配置为在设备集群(例如,服务器群)内操作。在这样的实施方式中,VR计算机120的部件的功能和处理能够分配到设备集群的多个设备。
VR计算机120的部件能够是或能够包括被配置为处理属性的任何类型的硬件和/或软件。在一些实施方式中,VR计算机120的部件中示出的部件的一个或多个部分能够是或能够包括基于硬件的模块(例如,数字信号处理器(DSP)、现场可编程门阵列(FPGA)和存储器)、固件模块和/或基于软件的模块(例如,计算机代码的模块、能够在计算机处执行的计算机可读指令集合)。例如,在一些实施方式中,VR计算机120的部件的一个或多个部分能够是或能够包括被配置为通过至少一个处理器(未示出)的执行的软件模块。在一些实施方式中,部件的功能可以能够被包括在与图1中所示的部件不同的模块和/或不同的部件中。
尽管未示出,但是在一些实施方式中,VR计算机120的部件(或其部分)能够被配置为在,例如,数据中心(例如,云计算环境)、计算机***、一个或多个服务器/主机设备和/或等等内操作。在一些实施方式中,VR计算机120的部件(或其部分)能够被配置为在网络内操作。因此,VR计算机120的部件(或其部分)能够被配置为在能够包括一个或多个设备和/或一个或多个服务器设备的各种类型的网络环境中起作用。例如,网络能够是或能够包括局域网(LAN)、广域网(WAN)和/或等等。网络能够是或能够包括无线网络和/或使用,例如,网关设备、网桥、交换机和/或等等实现的无线网络。网络能够包括一个或多个段和/或能够具有基于,诸如,因特网协议(IP)和/或专有协议的各种协议的部分。网络能够包括因特网的至少一部分。
图2是描绘在虚拟环境中动画化对象的示例方法200的流程图。方法200可以通过结合图1所描述的软件构造来执行,所述软件构造驻留在VR计算机120的存储器126中并由处理单元124的集合运行。
在202处,VR计算机120在虚拟环境中生成对象。该对象具有表面并包括多个骨头。对象的表面包括多个顶点。多个顶点中的每一个包括在多个骨头的相应骨头中。多个骨头中的每一个根据刚性变换定义该骨头的每个顶点的运动。
在204处,VR计算机120接收移动包括在多个骨头的第一骨头中的对象的表面的第一顶点和包括在多个骨头的第二骨头中的对象的表面的第二顶点的请求。
在206处,VR计算机120响应于该请求,将第一过滤器应用于骨头集合中的第一骨头,并将第二过滤器应用于骨头集合中的第二骨头。在分别应用于第一骨头和第二骨头时,第一过滤器和第二过滤器中的每一个以第一量限制第一骨头的第一顶点的运动,并且以与第一量不同的第二量限制第二骨头的第二顶点的运动。
基于上文所描述的过滤器,具有远离锚点的部分的对象对于,例如,旋转噪声能够是稳定的。不使用这种依赖于距离的过滤器,相对远离锚点的部分可能具有倾向于在远处顶点处被放大的旋转噪声。因此,相对于近点处的运动,远程点处的过滤器将抑制远程点处的运动。例如,假设该对象是棒球棒。用户将在一端(手柄)处握住球棒。包括在此端锚顶点的运动中的任何类型的旋转噪声可能导致在球棒的另一端处有非常大的、嘈杂的旋转运动。除非,通过在手柄处不同于地在远端过滤,然后过滤器能够用于衰减,即,相对于近端的运动,减少与远端处的旋转噪声相关的高频运动。
在通常情况下,这种非均匀过滤可能导致中间的、非刚性区域中的对象变形。也就是说,如下文将结合图3和图4所描述的,能够控制在这种非刚性区域中对象的变形。
图3是描绘对象300的示例过滤的示意图。如图3所示,对象300被划分为三个距离范围或区域。该划分是具有两个骨头和这些骨头之间的非刚性连接体的对象的模型。
第一区域310具有第一骨头315,该第一骨头315依次包括锚顶点340和内部端点350。第二区域320具有骨头325,该骨头325依次包括对象300的表面的远程顶点380和内部端点360。在第一和第二区域之间的第三区域330是非刚性的并且没有骨头。而是,表面370包括对象300的顶点,顶点可以相对于彼此不同地移动并且可以变形。
在收到相对于锚顶点340移动对象300的命令(例如,移动锚点340并因此移动骨头315和顶点350的来自人类用户的姿势)时,VR计算机120(图1),经由对象变换管理器170,计算刚性变换,以将包括锚顶点340的骨头315移动到沿路径的最终点,以及将包含远程顶点380的骨头基于其初始位置和方向运动到另一个目的地。对象变换管理器170还为包括远程顶点380的骨头325生成过滤器,以便抑制高频抖动。
图3中示出的对象300是高度定向的,而虚拟环境中的许多对象可能不是这样的。对于具有高度和低度方向性两者的对象的一般情况,已经发现将区域320中的骨头(即,包括远程顶点380的骨头325)定义为与区域310中的骨头315(即,包括锚顶点340的骨头)相同是有利的。这将限制VR计算机120对围绕锚点的旋转进行过滤,而同时VR计算机120将能够处理任意对象而不仅仅是高度定向的对象。
就索具(rigging)而言,锚顶点340和端点350之间的所有顶点100%映射到锚的变换;经过端点360的所有顶点100%映射到过滤(远程)变换,并且使用将顶点和锚点之间的距离作为输入的常规函数可以映射点350和点360之间的顶点。
图4是描绘用于映射区域330(图3)中的顶点的示例映射函数400的示意图。为了避免人工影响,映射函数可能不会在表面中引入中断。因此,对象变换管理器170在端点350和端点360处可以生成具有零斜率的权重映射函数。
如图4中所示,当非刚性区域330中沿对称轴(即,水平轴)的距离映射到区间[0,1]时,权重映射函数采用的形式。以这种方式,更远离端点350并且更靠近端点360,即,更远离锚顶点的顶点经历更多失真。
返回到图3,由权重映射函数400在区域330中引入的这种失真被示为区域330中的失真表面370。这里,对象300的表面在该非刚性区域中逐渐变细。注意,实际锥形将具有圆柱形端部,以便满足端点350和360处的零斜率约束。
在一些布置中,用于区域320中的骨头的过滤器可以采用渐近过滤器的形式,所述渐近过滤器具有与未过滤的和先前过滤的方向之间的当前角度距离成比例的过滤比率。例如,再次假设对象是在点380处的远端受到旋转噪声的细长的对象300(例如,动物的腿)。然后,渐近过滤器在点380处与未过滤的运动和由于旋转噪声(“差异”)的先前过滤的运动之间的角度差成比例地抑制运动。该过滤器根据该过滤比率(“strength_pct”)限制(例如,抑制)远端处的运动并且抑制旋转噪声的影响。因此,这种过滤器的应用将使动物的腿响应于一端处的旋转噪声而在两端处稳定。在这种情况下,描述这种过滤器的计算的一些伪代码可以采用以下形式:
在上面的伪代码中,最初有表示为双重四元数的两个过滤器:应用于骨头310的第一、同一性过滤器和如上文所述的应用于骨头320的第二、渐近过滤器,所述第二、渐近过滤器以第一量限制第一骨头的第一顶点的运动并且以与第一量不同的第二量抑制第二骨头的第二顶点的运动。区间限定函数强制量strength_pct在0到1之间取值。混合函数根据旋转噪声更新第一过滤器和第二过滤器。
在一些布置中,对象变换管理器170对对象300执行蒙皮操作。蒙皮是涉及将对象的表面的部分(即,皮肤)与对象的骨头相关联的过程。在具有许多独立的可运动的骨头的对象中,皮肤的一些部分可以与一个以上的骨头相关联,例如,与动物的腿的两个骨头之间的关节相关联的皮肤。
在一些实施方式中,对象变换管理器170使用双重四元数蒙皮,以便利用这种变换的特定体积保持特性。在这种情况下,描述这种蒙皮操作的一些伪代码可以采用以下形式。
#define dual_quat mat2x4
uniform float influence_start;
uniform float influence_end;
uniform dual_quat filtered_dq;
uniform mat4 object_to_anchor;uniform mat4 anchor_to_object;
/*precomputed version of inverse(object_to_anchor)*/
float weight_map(float v){
/*Insert easing function such as that described in FIG.4*/
}
vec4dquat_transform(dual_quat dq,vec4v)(
/*Insert known dual quaternion transformation code*/
}
/*Notice that only the vertex position is altered,and not the per-
vertex normal.This helps in hidingthe distortion.*/
#define dual_quat mat2x4
uniform float influence_start;
uniform float influence_end;
uniform dual_quat filtered_dq;
uniform mat4 object_to_anchor;uniform mat4 anchor_to_object;
/*precomputed version of inverse(object_to_anchor)*/
float weight_map(float v){
/*Insert easing function such as that described in FIG.4*/
}
vec4dquat_transform(dual_quat dq,vec4v)(
/*Insert known dual quaternion transformation code*/
}
/*Notice that only the vertex position is altered,and notthe per-
vertex normal.This helps in hidingthe distortion.*/
如伪代码清楚地表明,映射函数仅改变顶点位置而不改变顶点法线,使得非刚性区域330中的失真对用户来说不明显(或可感知)。再次,最初有表示为双重四元数的两个过滤器:应用于骨头310的第一、同一性过滤器和如上文所述的第二、渐近过滤器。
作为示例,动物的腿具有两个骨头315和325以及这些骨头315和325之间的非刚性区域330。因为皮肤会与在骨头325中所导致的噪声运动相关联,非刚性区域330(即,骨头之间的关节)中的蒙皮操作可能受点380处的未过滤的旋转噪声影响。通过如上所述的抑制旋转噪声并引入参照图4所定义的权重函数,可以执行蒙皮过程以在骨头315和325之间映射对象300的表面的失真。
图5示出了通用计算机设备500和通用运动计算机设备550的示例,其可以与涉及VR的应用的上下文中所述的技术一起使用。计算设备500包括处理器502、存储器504、存储设备506、连接到存储器504和高速扩展端口510的高速接口508以及连接到低速总线514和存储设备506的低速接口512。组件502、504、506、508、510和512中的每一个使用各种总线互连,并且可以适当地安装在公共主板上或以其他方式安装。处理器502能够处理用于在计算设备500内执行包括存储在存储器504中或存储设备506上的指令,以在外部输入/输出设备,诸如与高速接口耦合508的显示器516上为GUI显示图形信息。在其他实施方式中,和多个存储器和多个类型的存储器一起,可以适当地使用多个处理器和/或多个总线。此外,多个计算设备500可以连接到提供必要操作(例如,作为服务器库、一组刀片服务器或多处理器***)的部分的每个设备。
存储器504存储计算设备500内的信息。在一个实施方式中,存储器504是(一个或多个)易失性存储器单元。在另一实施方式中,存储器504是(一个或多个)非易失性存储器单元。存储器504还可以是另一种形式的计算机可读介质,诸如,磁盘或光盘。
存储设备506能够为计算设备500提供大容量存储。在一个实施方式中,存储设备506可以是或包括计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储设备或包括存储区域网络中的设备或其他配置的设备阵列。计算机程序产品能够有形地实现在信息载体中。计算机程序产品还可以包含指令,所述指令在被执行时执行一个或多个方法,诸如上面描述的方法。信息载体是计算机或机器可读介质,诸如存储器504、存储设备506、或处理器502上的存储器。
高速控制器508管理计算设备500的带宽密集型操作,而低速控制器512管理较低带宽密集型操作。这种功能分配仅是示例性的。在一个实施方式中,高速控制器508耦合到存储器504、显示器516(例如,通过图形处理器或加速器)和到高速扩展端口510,该高速扩展端口510可以接受各种扩展卡(未示出)。在该实施方式中,低速控制器512耦合到存储设备506和低速扩展端口514。低速扩展端口,其可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网),例如通过网络适配器耦合到一个或多个输入/输出设备,诸如键盘、指示设备、扫描仪或诸如交换机或路由器的网络设备。
如图中所示,计算设备500可以以多种不同的形式实现。例如,它可以实现为标准服务器520,或者在一组这样的服务器中实现多次。它还可以实现为机架服务器***524的一部分。此外,它可以在诸如笔记本电脑522的个人计算机中实现。可替换地,来自计算设备500的组件可以与诸如设备550的移动设备(未示出)中的其他组件组合。这些设备中的每一个可以包含计算设备500、计算设备550中的一个或多个,并且整个***可以由彼此通信的多个计算设备500、计算设备550组成。
计算设备550除了其他组件之外包括处理器552、存储器564、诸如显示器554的输入/输出设备、通信接口566和收发器568。设备550还可以设置有存储设备,诸如微驱动器或其他设备,以提供额外的存储。组件550、552、564、554、566和568中的每一个使用各种总线互连,并且若干组件可以适当地在公共主板上或以其他方式安装。
处理器552可以执行计算设备550内的指令,包括存储在存储器564中的指令。处理器可以实现为芯片的芯片组,其包括单独的和多个模拟和数字处理器。处理器可以提供例如用于协调设备550的其他组件,诸如用户界面的控制、设备550运行的应用和设备550的无线通信。
处理器552可以通过控制接口558和耦合到显示器554的显示器接口556与用户通信。显示器554可以是,例如TFT LCD(薄膜晶体管液晶显示器)或OLED(有机发光二极管)显示器或其他合适的显示技术。显示器接口556可以包括用于驱动显示器554以向用户呈现图形和其他信息的合适的电路。控制接口558可以从用户接收命令并将它们转换以提交给处理器552。此外,可以提供与处理器552通信的外部接口562,以便实现设备550与其他设备的近区域通信。外部接口562可以,例如,在一些实施方式中,提供用于有线通信,或者在其他实施方式中提供用于无线通信,并且多个接口还可以被使用。
存储器564存储计算设备550内的信息。存储器564能够被实现为计算机可读介质、易失性存储器单元或非易失性存储器单元中的一个或多个。扩展存储器574还可以被提供并且通过扩展接口572(其可以包括例如SIMM(单列直插存储器模块)卡接口)连接到设备550。这样的扩展存储器574可以为设备550提供额外的存储空间,或者还可以存储用于设备550的应用程序或其他信息。具体地,扩展存储器574可以包括执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器574可以被提供为用于设备550的安全模块,并且可以被编程有允许设备550的安全使用的指令。此外,可以经由SIMM卡提供安全应用程序以及附加信息,诸如以不可入侵地方式将识别信息放置在SIMM卡上。
如下所述,存储器可以包括,例如闪存和/或NVRAM存储器。在一个实施方式中,计算机程序产品是有形地体现在信息载体中。该计算机程序产品包含在执行时执行一种或多种方法,例如上述方法的指令。信息载体是计算机或机器可读介质,诸如存储器564、扩展存储器574或处理器552上的存储器,其可以,例如通过收发器568或外部接口562接收。
设备550可以通过通信接口566无线通信,通信接口566可以在必要时包括数字信号处理电路。通信接口566可以提供各种模式或协议下的通信,例如GSM语音呼叫,SMS,EMS或MMS消息,CDMA,TDMA,PDC,WCDMA,CDMA2000或GPRS等。这种通信可以例如通过射频收发器568发生。此外,可以发生短程通信,例如使用蓝牙,WiFi或其他这样的收发器(未示出)。另外,GPS(全球定位***)接收器模块570可以向设备550提供附加的导航和位置相关的无线数据,其可以由在设备550上运行的应用适当地使用。
设备550还可以使用音频编解码器560可听地通信,音频编解码器560可以从用户接收语音信息并将其转换为可用的数字信息。例如在设备550的手机中,音频编解码器560同样可以为用户,诸如通过扬声器,产生可听地声音。这种声音可以包括来自语音电话呼叫的声音、可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备550上操作的应用程序生成的声音。
如图中所示,计算设备550可以以多种不同的形式实现。例如,它可以实现为蜂窝电话580。它还可以实现为智能电话582、个人数字助理或其他类似移动设备的一部分。
本文描述的***和技术的各种实施方式能够在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些各种实施方式能够包括在可编程***上可执行和/或可解释的一个或多个计算机程序中的实施方式,其中可编程***包括至少一个可编程处理器,其可以是专用的或通用的,被耦合以从存储***、至少一个输入设备和至少一个输出设备接收数据和指令并向其发送数据和指令。
这些计算机程序(也称为程序、软件、软件应用程序或代码)包括用于可编程处理器的机器指令,并且能够在高级过程和/或面向对象的编程语言和/或在汇编/机器语言中实现。如本文所使用的,术语“机器可读介质”、“计算机可读介质”指的是用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器和可编程逻辑设备(PLD)),包括接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于向可编程处理器提供机器指令和/或数据的任何信号。
为了提供与用户的交互,本文描述的***和技术可以在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)和键盘以及用户可以通过其向计算机提供输入的指示设备(例如,鼠标或轨迹球)的计算机上实现。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且能够以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
本文描述的***和技术可以在包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)或包括前端组件(例如,具有用户可以通过其与本文描述的***和技术的实现交互的图形用户界面或Web浏览器的客户端计算机),或者所述后端、中间件或前端组件的任何组合的计算***中实施。***的组件能够通过数字数据通信(例如,通信网络)的任何形式或介质的互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)和因特网。
计算***能够包括客户端和服务器。客户端和服务器一般彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
在一些实施方式中,图5中描绘的计算设备能够包括:与虚拟现实(VR头戴式装置590)对接的传感器。例如,包括在图5中描绘的计算设备550或其他计算设备上的一个或多个传感器能够向VR头戴式装置590提供输入,或者通常向VR空间提供输入。传感器能够包括,但不限于触摸屏、加速计、陀螺仪、压力传感器、生物识别传感器、温度传感器、湿度传感器和环境光传感器。计算设备550能够使用传感器来确定VR空间中计算设备的绝对位置和/或检测到的旋转,然后可以将其用作VR空间的输入。例如,计算设备550可以作为,诸如,控制器、激光指示器、键盘、武器等的虚拟对象并入VR空间。当并入VR空间中时通过用户的计算设备/虚拟对象的定位能够允许用户定位计算设备以在VR空间中以特定方式查看虚拟对象。例如,如果虚拟对象表示激光指示器,则用户能够像其是实际的激光指示器一样操纵计算设备。用户能够左右、上下和在圈内等移动计算设备,并以与使用激光指示器类似的方式使用该设备。
在一些实施方式中,包括在计算设备550上或连接到计算设备550的一个或多个输入设备能够用作到VR空间的输入。输入设备能够包括,但不限于,触摸屏、键盘、一个或多个按钮、触控板、触摸板、指示设备、鼠标、轨迹球、操纵杆、相机、麦克风,耳机或具有输入功能的芽(bud)、游戏控制器或其他可连接的输入设备。当计算设备被并入VR空间中时,与包括在计算设备550上的输入设备交互的用户能够在VR空间中引起特定动作发生。
在一些实施方式中,计算设备550的触摸屏能够被呈现为VR空间中的触摸板。用户能够与计算设备550的触摸屏交互。例如,在VR头戴式装置590中,交互被呈现为VR空间中呈现的触摸板上的移动。呈现的移动能够控制VR空间中的对象。
在一些实施方式中,包括计算设备550上的一个或多个输出设备可以向VR空间中的VR头戴式装置590的用户提供输出和/或反馈。输出和反馈能够是视觉的、策略上的或音频的。输出和/或反馈能够包括但不限于,振动、使一个或多个灯或闪光灯打开和关闭或闪烁和/或闪光、发出警报、播放铃声,播放歌曲以及播放音频文件。输出设备能够包括但不限于,振动马达、振动线圈、压电设备、静电设备、发光二极管(LED)、闪光灯和扬声器。
在一些实施方式中,计算设备550可以在计算机生成的3D环境中表现为另一个对象。用户与计算设备550的交互(例如,旋转、摇动、触摸触摸屏、在触摸屏上滑动手指)可以被解释为与VR空间中的对象的交互。在VR空间中的激光指示器的示例中,计算设备550在计算机生成的3D环境中表现为虚拟激光指示器。当用户操纵计算设备550时,VR空间中的用户看到激光指示器的移动。用户从计算设备550上或VR头戴式装置590上的VR空间中与计算设备550的交互接收反馈。
在一些实施方式中,除了计算设备(例如,鼠标、键盘)之外的一个或多个输入设备能够在计算机生成的3D环境中呈现。呈现的输入设备(例如,呈现的鼠标、呈现的键盘)能够用作呈现在VR空间中以控制VR空间中的对象。
计算设备500旨在表示各种形式的数字计算机,诸如,便携式计算机、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算设备550旨在表示各种形式的运动设备,诸如,个人数字助理、蜂窝电话、智能电话和其他类似的计算设备。这里示出的部件,它们的连接和关系以及它们的功能仅仅是示例性的,并不意味着限制本文中描述和/或要求保护的发明的实施方式。
图6示出了如图3和图4中所示的头戴式显示器的示例实施方式。在图6中,佩戴HMD600的用户正握持便携式手持电子设备602。手持电子设备602可以是例如智能手机、控制器、操纵杆或其他便携式手持电子设备(一个或多个),其可以与HMD 600配对和与其通信以用于在由HMD 600生成的沉浸式虚拟环境中进行交互。手持式电子设备602可以经由,例如有线连接或诸如例如WiFi或蓝牙连接的无线连接与HMD 600可操作地耦合或与其配对。手持电子设备602和HMD 600的这种配对或可操作地耦合可以提供手持电子设备602和HMD600之间的通信以及手持电子设备602和HMD 600之间的数据交换。这可以允许手持电子设备602用作与用于在由HMD 600生成的沉浸式虚拟环境中进行交互的HMD 600通信的控制器。即,在HMD 600生成的沉浸式虚拟环境中,手持电子设备602的操纵,诸如,例如由手持电子设备602发射并且指向虚拟对象或特征以供选择的光束或射线、和/或在电子设备602的触摸表面上接收到的输入和/或手持电子设备602的移动,可以被翻译成相应的选择、或移动或其他类型的交互。例如,HMD 600与手持电子设备602一起可以生成如上所述的虚拟环境,并且手持电子设备602可以***纵以实现用户相对于如上所述虚拟环境中的虚拟特征的规模或视角的变化。
图7A和图7B是诸如,例如,图6中的用户佩戴的HMD 600的示例HMD的透视图,以及图7C示出了例如,图6中所示的手持电子设备602的示例性手持电子设备。
手持电子设备702可以包括容纳设备702的内部组件的外壳703,以及外壳703外部上的用户可访问的用户界面704。用户界面704可以包括被配置为接收用户触摸输入的触敏表面706。用户界面704还可以包括用于用户操纵的其他组件,诸如,例如,致动按钮、旋钮、操纵杆等。在一些实施方式中,用户界面704的至少一部分可以被配置为触摸屏,其中用户界面704的该部分被配置用于向用户显示用户界面项,并且还用于在触敏表面706上接收来自用户的触摸输入。手持电子设备702还可以包括光源708,该光源708被配置为例如响应于在用户界面704接收到的用户输入通过外壳703中的端口选择性地发射光,例如光束或射线。
HMD 700可以包括耦合到框架720的外壳710和也耦合到框架720的包括例如安装在耳机中的扬声器的音频输出设备730。在图7B中,外壳710的前部710a远离外壳710的基部710b旋转,使得容纳在外壳710中的一些部件是可见的。显示器740可以安装在外壳710的前部710a的面向内侧上。透镜750可以当前部710a相对于外壳710的基部710b处于关闭位置时在外壳710中安装在用户的眼睛和显示器840之间。在一些实施方式中,HMD 700可以包括包含各种传感器的感测***760和控制***770,控制***770包括处理器790和各种控制***设备,以促进HMD 700的操作。
在一些实施方式中,HMD 700可以包括相机780,以捕获静止图像和运动图像。由相机780捕获的图像可以用于帮助跟踪现实世界中的用户和/或手持电子设备702的物理位置、或者相对于虚拟环境的物理环境和/或可以在透视模式下在显示器740上显示给用户,从而允许用户临时离开虚拟环境并返回物理环境而不移除HMD 700或以其他方式改变HMD700的配置以将外壳710移出用户的视线。
在一些实施方式中,HMD 700可包括凝视跟踪设备765以检测和跟踪用户的眼睛凝视。凝视跟踪设备765可以包括,例如图像传感器765A或多个图像传感器765A,以捕获用户眼睛的图像,例如用户眼睛的特定部分,诸如,例如瞳孔,以检测并跟踪用户凝视的方向和运动。在一些实施方式中,HMD 700可以被配置为使得检测到的凝视被处理为用户输入以被转换为沉浸式虚拟体验中的相应交互。
已经描述了许多实施例。然而,应该理解的是,在不脱离本说明书的精神和范围的情况下,可以进行各种修改。
另外,图中描绘的逻辑流程不需要所示的特定顺序或次序顺序来实现期望的结果。另外,可以从所描述的流程中提供其他步骤,或者消除步骤,并且可以从所述***中添加或移除其他组件。因此,其他实施例在以下权利要求的范围内。

Claims (20)

1.一种用于在VR中使对象动画化的方法,所述方法包括:
通过虚拟现实计算机的处理电路在虚拟环境中生成对象,所述对象具有表面并且包括包含第一顶点的第一骨头和包含第二顶点的第二骨头,所述第一骨头根据保持所述第一骨头上的点之间的距离的刚性变换定义所述第一顶点的运动;
接收移动包括在所述第一骨头中的所述对象的所述表面的所述第一顶点和包括在所述第二骨中的所述对象的所述表面的所述第二顶点的请求;
响应于所述请求,将第一过滤器应用于所述第一骨头并将第二过滤器应用于所述第二骨头,在对于所述第一骨头的应用时,所述第一过滤器以第一量限制所述第一骨头的所述第一顶点的运动,以及在对于所述第二骨头的应用时,所述第二过滤器以与所述第一量不同的第二量限制所述第二顶点的运动,其中骨头的运动基于该骨头和锚顶点之间的距离被限制。
2.根据权利要求1所述的方法,其中,接收所述请求包括将所述第一顶点定义为锚顶点;
其中,所述运动包括平移分量和旋转分量;以及
其中,所述第一过滤器在被应用于所述第一骨头时以零距离抑制所述锚顶点的所述运动的所述平移分量并且以零角度抑制所述锚顶点的所述运动的所述旋转分量,使得所述锚顶点根据所述刚性变换沿路径移动。
3.根据权利要求2所述的方法,其中,所述对象包括:包括所述锚顶点的第一区域;包括所述第二顶点的第二区域;以及位于所述第一区域和所述第二区域之间的第三区域,所述对象在所述第三区域中变形,所述第二顶点远离所述锚顶点;以及
其中,所述方法进一步包括:对所述第三区域内的顶点执行变形操作,以在所述第三区域中产生变形的对象。
4.根据权利要求3所述的方法,其中,对所述第三区域内的所述顶点执行所述变形操作包括:根据连续映射函数映射所述第三区域内的每个所述顶点的位置,所述连续映射函数在所述第一区域和所述第三区域之间的边界处以及所述第二区域和所述第三区域之间的边界处具有零斜率。
5.根据权利要求3所述的方法,其中,在所述虚拟环境中生成所述对象包括:在所述对象的绑定姿势中将所述第二骨头定义为与所述第一骨头一致。
6.根据权利要求5所述的方法,其中,将所述第二过滤器应用于所述第二骨头包括:将所述第二过滤器定义为具有与顶点的未过滤运动导致的所述第二骨头的顶点的位置和响应于将所述第二过滤器应用于所述第二骨头的运动导致的所述顶点的位置之间的当前角度距离成比例的过滤比率。
7.根据权利要求5所述的方法,其中,定义附着到所述第一骨头和所述第二骨头中的骨头的每个顶点的所述运动的所述刚性变换包括坐标变换的双重四元数表示;以及
其中,所述方法进一步包括:在将所述第二过滤器应用于所述第二骨头之后,对所述第三区域执行蒙皮操作,以保持所述第三区域中的所述对象的体积。
8.根据权利要求1所述的方法,进一步包括:在显示器中显示所述对象,所述显示器被配置为呈现所述虚拟环境以供所述虚拟现实计算机的用户观看。
9.一种存储指令的非易失性计算机可读存储介质,所述指令在由虚拟现实计算机的处理电路执行时使所述处理电路执行方法,所述方法包括:
在虚拟环境中生成对象,所述对象具有表面并且包括包含第一顶点的第一骨头和包含第二顶点的第二骨头,所述第一骨头根据保持所述第一骨头上的点之间的距离的刚性变换定义所述第一顶点的运动;
接收移动包括在所述第一骨头中的所述对象的所述表面的所述第一顶点和包括在所述第二骨中的所述对象的所述表面的所述第二顶点的请求;
响应于所述请求,将第一过滤器应用于所述第一骨头并将第二过滤器应用于所述第二骨头,在对于所述第一骨头的应用时,所述第一过滤器以第一量限制所述第一骨头的所述第一顶点的运动,以及在对于所述第二骨头的应用时,所述第二过滤器以与所述第一量不同的第二量限制所述第二顶点的运动,其中骨头的运动基于该骨头和锚顶点之间的距离被限制。
10.根据权利要求9所述的非易失性计算机可读存储介质,其中,接收所述请求包括将所述第一顶点定义为锚顶点;
其中,所述运动包括平移分量和旋转分量;以及
其中,所述第一过滤器在被应用于所述第一骨头时以零距离抑制所述锚顶点的所述运动的所述平移分量并且以零度数抑制所述锚顶点的所述运动的所述旋转分量,使得所述锚顶点根据所述刚性变换沿路径移动。
11.根据权利要求10所述的非易失性计算机可读存储介质,其中,所述对象包括:包括所述锚顶点的第一区域;包括所述第二顶点的第二区域;以及位于所述第一区域和所述第二区域之间的第三区域,所述对象在所述第三区域中变形,所述第二顶点远离所述锚顶点;以及
其中,所述方法进一步包括:对所述第三区域内的顶点执行变形操作,以在所述第三区域中产生变形的对象。
12.根据权利要求11所述的非易失性计算机可读存储介质,其中,对所述第三区域内的所述顶点执行所述变形操作包括:根据连续映射函数映射所述第三区域内的每个所述顶点的位置,所述连续映射函数在所述第一区域和所述第三区域之间的边界处以及所述第二区域和所述第三区域之间的边界处具有零斜率。
13.根据权利要求11所述的非易失性计算机可读存储介质,其中,在所述虚拟环境中生成所述对象包括:在所述对象的绑定姿势中将所述第二骨头定义为与所述第一骨头一致。
14.根据权利要求13所述的非易失性计算机可读存储介质,其中,将所述第二过滤器应用于所述第二骨头包括:将所述第二过滤器定义为具有与顶点的未过滤运动导致的所述第二骨头的顶点的位置和响应于将所述第二过滤器应用于所述第二骨头的运动导致的所述顶点的位置之间的当前角度距离成比例的过滤比率。
15.根据权利要求13所述的非易失性计算机可读存储介质,其中,定义附着到所述第一骨头和所述第二骨头中的骨头的每个顶点的所述运动的所述刚性变换包括坐标变换的双重四元数表示;以及
其中,所述方法进一步包括:在将所述第二过滤器应用于所述第二骨头之后,对所述第三区域执行蒙皮操作,以保持所述第三区域中的所述对象的体积。
16.根据权利要求9所述的非易失性计算机可读存储介质,其中,所述方法进一步包括:在显示器中显示所述对象,所述显示器被配置为呈现所述虚拟环境以供所述虚拟现实计算机的用户观看。
17.一种虚拟现实计算机,包括:
存储器;以及
耦合到所述存储器的控制电路,所述控制电路被配置为:
在虚拟环境中生成对象,所述对象具有表面并且包括包含第一顶点的第一骨头和包含第二顶点的第二骨头,所述第一骨头根据保持所述第一骨头上的点之间的距离的刚性变换定义所述第一顶点的运动;
接收移动包括在所述第一骨头中的所述对象的所述表面的所述第一顶点和包括在所述第二骨头中的所述对象的所述表面的所述第二顶点的请求;
响应于所述请求,将第一过滤器应用于所述第一骨头并将第二过滤器应用于所述第二骨头,在对于所述第一骨头的应用时,所述第一过滤器以第一量限制所述第一骨头的所述第一顶点的运动,以及在对于所述第二骨头的应用时,所述第二过滤器以与所述第一量不同的第二量限制所述第二顶点的运动,其中骨头的运动基于该骨头和锚顶点之间的距离被限制。
18.根据权利要求17所述的虚拟现实计算机,其中,被配置为接收所述请求的所述控制电路进一步被配置为将所述第一顶点定义为锚顶点;
其中,所述运动包括平移分量和旋转分量;以及
其中,所述第一过滤器在被应用于所述第一骨头时以零距离抑制所述锚顶点的所述运动的所述平移分量并且以零度数抑制所述锚顶点的所述运动的所述旋转分量,使得所述锚顶点根据所述刚性变换沿路径移动。
19.根据权利要求18所述的虚拟现实计算机,其中,所述对象包括:包括所述锚顶点的第一区域;包括所述第二顶点的第二区域;以及位于所述第一区域和所述第二区域之间的第三区域,所述对象在所述第三区域中变形,所述第二顶点远离所述锚顶点;以及
其中,所述控制电路进一步被配置为:对所述第三区域内的顶点执行变形操作,以在所述第三区域中产生变形的对象。
20.根据权利要求19所述的虚拟现实计算机,其中,被配置为对所述第三区域内的所述顶点执行所述变形操作的所述控制电路进一步被配置为:根据连续映射函数映射所述第三区域内的每个所述顶点的位置,所述连续映射函数在所述第一区域和所述第三区域之间的边界处以及所述第二区域和所述第三区域之间的边界处具有零斜率。
CN201780058201.9A 2017-03-20 2017-12-01 在虚拟现实中保持对象稳定性 Active CN109716395B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/463,225 2017-03-20
US15/463,225 US10311621B2 (en) 2017-03-20 2017-03-20 Held object stabilization in virtual reality
US15/465,135 2017-03-21
US15/465,135 US10162381B2 (en) 2017-03-21 2017-03-21 Hinged electronic device held in configurations by magnets
PCT/US2017/064146 WO2018174970A1 (en) 2017-03-20 2017-12-01 Held object stabilization in virtual reality

Publications (2)

Publication Number Publication Date
CN109716395A CN109716395A (zh) 2019-05-03
CN109716395B true CN109716395B (zh) 2023-09-15

Family

ID=63585691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780058201.9A Active CN109716395B (zh) 2017-03-20 2017-12-01 在虚拟现实中保持对象稳定性

Country Status (5)

Country Link
EP (1) EP3526771B1 (zh)
JP (1) JP6793255B2 (zh)
KR (1) KR102177734B1 (zh)
CN (1) CN109716395B (zh)
WO (1) WO2018174970A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240070992A1 (en) * 2022-08-26 2024-02-29 Snap Inc. Hand-tracking stabilization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3864940B2 (ja) * 2003-08-21 2007-01-10 株式会社村田製作所 膜強度測定方法、膜を有する被測定物の良否判定方法
CN102770836A (zh) * 2010-02-26 2012-11-07 阿尔卡特朗讯公司 用于在三维虚拟环境中控制对象的运动的方法
CN103460256A (zh) * 2011-03-29 2013-12-18 高通股份有限公司 在扩增现实***中将虚拟图像锚定到真实世界表面

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3597360B2 (ja) 1997-11-17 2004-12-08 株式会社リコー モデリング方法および記録媒体
US8749556B2 (en) 2008-10-14 2014-06-10 Mixamo, Inc. Data compression for real-time streaming of deformable 3D models for 3D animation
US8897491B2 (en) * 2011-06-06 2014-11-25 Microsoft Corporation System for finger recognition and tracking
US9214036B1 (en) * 2012-06-26 2015-12-15 Pixar Animation engine for blending computer animation data
JP6391465B2 (ja) * 2014-12-26 2018-09-19 Kddi株式会社 ウェアラブル端末装置およびプログラム
WO2016157951A1 (ja) * 2015-03-31 2016-10-06 ソニー株式会社 表示制御装置、表示制御方法および記録媒体
CA2995722A1 (en) 2015-08-17 2017-02-23 Side Effects Software Inc. Physically based simulation methods for modeling and animating two- and three-dimensional deformable objects

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3864940B2 (ja) * 2003-08-21 2007-01-10 株式会社村田製作所 膜強度測定方法、膜を有する被測定物の良否判定方法
CN102770836A (zh) * 2010-02-26 2012-11-07 阿尔卡特朗讯公司 用于在三维虚拟环境中控制对象的运动的方法
CN103460256A (zh) * 2011-03-29 2013-12-18 高通股份有限公司 在扩增现实***中将虚拟图像锚定到真实世界表面

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Chapter 7. Motion Tracking Requirements and Technologies";Eric Foxlin;《Handbook of Virtual Environment Technology》;20021231;第7.2.5节、第6-8页 *
"虚拟手的姿态控制与变形仿真";刘磊 等;《计算机与现代化》;20130831(第08期);第95-98页 *

Also Published As

Publication number Publication date
JP2020509439A (ja) 2020-03-26
EP3526771B1 (en) 2021-02-24
WO2018174970A1 (en) 2018-09-27
KR102177734B1 (ko) 2020-11-12
CN109716395A (zh) 2019-05-03
EP3526771A1 (en) 2019-08-21
JP6793255B2 (ja) 2020-12-02
KR20190047723A (ko) 2019-05-08

Similar Documents

Publication Publication Date Title
US11043031B2 (en) Content display property management
CN109643159B (zh) 在增强和/或虚拟现实环境中利用六自由度控制器操纵虚拟对象
JP7008730B2 (ja) 画像に挿入される画像コンテンツについての影生成
US9367136B2 (en) Holographic object feedback
JP2024028376A (ja) 拡張現実および仮想現実のためのシステムおよび方法
JP6352426B2 (ja) ヘッドマウントディスプレイを使用して拡張ディスプレイを提供するデバイス、方法、及びシステム
JP6929361B2 (ja) 仮想現実システムのための入力コントローラ安定化技術
CN108697935B (zh) 虚拟环境中的化身
EP3814876B1 (en) Placement and manipulation of objects in augmented reality environment
CN109074149A (zh) 用于增强或虚拟现实环境的头戴式参考系中的对象跟踪
CN108700944B (zh) 与在虚拟现实环境中的运动有关的***和方法
CN109716395B (zh) 在虚拟现实中保持对象稳定性
US10311621B2 (en) Held object stabilization in virtual reality
JP2024047587A (ja) 情報処理システムおよびプログラム
JP2024047008A (ja) 情報処理システム
KR20240126840A (ko) 모션 의존 디스플레이
WO2023212349A1 (en) Avatar state versioning for multiple devices
Alger Dynamic Slider Scaling
Tecchia et al. Addressing the problem of Interaction in fully Immersive Virtual Environments: from raw sensor data to effective devices

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
GR01 Patent grant
GR01 Patent grant