JP2020509439A - 仮想現実における保持オブジェクトの安定化 - Google Patents

仮想現実における保持オブジェクトの安定化 Download PDF

Info

Publication number
JP2020509439A
JP2020509439A JP2019524892A JP2019524892A JP2020509439A JP 2020509439 A JP2020509439 A JP 2020509439A JP 2019524892 A JP2019524892 A JP 2019524892A JP 2019524892 A JP2019524892 A JP 2019524892A JP 2020509439 A JP2020509439 A JP 2020509439A
Authority
JP
Japan
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.)
Granted
Application number
JP2019524892A
Other languages
English (en)
Other versions
JP6793255B2 (ja
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 JP2020509439A publication Critical patent/JP2020509439A/ja
Application granted granted Critical
Publication of JP6793255B2 publication Critical patent/JP6793255B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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
    • 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日に出願され「仮想現実における保持オブジェクトの安定化(HELD OBJECT STABILIZATION IN VIRTUAL REALITY)」と題された米国非仮特許出願番号第15/463,225号の優先権を主張し、その継続出願であり、米国非仮特許出願番号第15/463,225号の開示全体を本明細書に引用により援用する。
技術分野
本説明は概して、仮想現実(virtual reality:VR)におけるオブジェクトの表現に関する。
本明細書に記載の改良された技法を実行するための例示的な電子環境のブロック図である。 改良された技法に係る例示的な方法を示すフロー図である。 図1に示される電子環境内のオブジェクトの例示的なフィルタリングを示す図である。 図1に示される電子環境内のオブジェクトの別の例示的な変形を示す図である。 本明細書に記載の改良を実現するために使用することができるコンピュータデバイスの例を示す図である。 仮想現実(VR)環境で用いる例示的なヘッドマウントディスプレイ(HMD)を示す図である。 例示的なVR HMDおよび例示的なコントローラを示す図である。 例示的なVR HMDおよび例示的なコントローラを示す図である。 例示的なVR HMDおよび例示的なコントローラを示す図である。
詳細な説明
さまざまな図面における同様の参照記号は同様の要素を示す。
仮想環境を生成する仮想現実(VR)システムは、VRコンピュータおよびコントローラを含む。人間のユーザは、VRコンピュータによって生成される仮想環境内のさまざまなオブジェクトと対話することによって、仮想環境を体験する。たとえば、人間のユーザはコントローラを用いて、オブジェクトをジェスチャを介して並進および/または回転により動かすことができる。人間のユーザからのジェスチャに応答してオブジェクトの動作の自然なシミュレーションを提供するために、VRコンピュータは剛体変換に従ってオブジェクトのアニメーション化を実行する。
オブジェクトをアニメーション化する手法は、オブジェクトの頂点を定義することと、オブジェクトのさまざまな部分の動きを表わすそれらの頂点の剛体変換とを必要とし得る。場合によっては、オブジェクトの質量をシミュレートするために剛体変換に適用されるフィルタが存在する。
単純な例として、オブジェクトが野球用バットであると仮定する。野球用バットは、長い剛体のオブジェクトである。バットが単一の剛体要素である場合は、バット上の点の各対の相対距離は、動作(すなわち、並進および回転)の間中固定され続ける。すなわち、バットの各点は、並進および回転動作に応答して同じ量だけ並進し、同じ回転角を受ける。
仮想環境におけるオブジェクトをアニメーション化する本明細書に記載のいくつかの手法は、仮想現実(VR)におけるアニメーション化などの対話型アニメーション化に対して良好にスケーリングする。たとえば、当該手法は、(i)仮想環境におけるオブジェクトを制御するためにユーザによって用いられるハンドヘルドコントローラ内の測定ノイズと、(ii)自然な手の振動とを含むノイズ源の原因となり得ない。ノイズ源は、ユーザがオブジェクトを比較的静止した状態で持っているときに、仮想環境において不自然なジッタのような動作を生じさせる。
ノイズは、並進成分および回転成分を有する。ノイズの回転成分は、固定アンカー点から離れた頂点について増幅される。大きなオブジェクトはこの回転ノイズに特に敏感である。
たとえば、上記に紹介したバットの例を再び参照して、バットの一端(すなわち、ユーザが名目上バットを握るハンドル)における動作に対するバットの反応は、バットが完全には剛体でない場合があるため、均一でない場合がある。この観点に沿って、ユーザは、バットを握ったときに回転ノイズを導入し得る。ユーザがバットを握るハンドルにおける回転ノイズは、ユーザからさらに離れたバットの他端において増幅され得る。このような増幅された回転ノイズは、仮想環境において表わされる際にバットの不自然な外観および感覚をもたらし得る。
人物および動物などの他のより複雑なオブジェクトは、非剛体要素によって互いに連結された剛体要素(「ボーン」)を有してモデル化され得る。人物および動物の場合、非剛体要素はジョイントおよび他の結合組織を含み得る。これらの場合、たとえば手などの1点における回転ノイズは、たとえば肩などの遠隔点における不自然に大きい回転ノイズを生成し得る。
この回転ノイズを単純にフィルタリングすることは望ましくない。ユーザがVRにおいてオブジェクトを保持しているときのユーザの手へのアタッチメントの剛性は、存在を維持するのに重要である。オブジェクトの回転または位置が手から遅れ始めるようになると、ユーザ体験が悪化することになる。オブジェクトの質量をシミュレートするために剛体変換に適用されるフィルタは、固定アンカー点におけるこのような高周波動作を減衰させ得るが、このようなフィルタは、アンカー点から離れた意図しない振動を悪化させてユーザの体験を損なう場合がある。
本明細書に記載のVRにおけるオブジェクトをアニメーション化する技法は、オブジェクト上の頂点によって変化するオブジェクトにモーションフィルタを適用することを必要とする。この観点に沿って、VRコンピュータは、オブジェクトの表面および剛体要素、またはアンカー頂点の動作に基づく頂点の動作を定義する頂点を含むボーンを近似する三角形メッシュを生成することによって、対話型の三次元ゲームについてのオブジェクトを生成する。たとえば、バットは、単一のボーンによって(たとえば、単一のボーン用いてモデル化されることによって)表わされ得る。別の例として、仮想環境におけるアバターの腕または手が、接続された複数のボーンによって表わされ得る。
オブジェクトのボーンは、オブジェクトの頂点を含む剛体要素であり、ボーンが動くと、ボーンの各頂点が同じように動く。ユーザが、その周りにオブジェクトを動かすアンカー頂点としてオブジェクトの頂点を選択すると、VRコンピュータは、アンカー頂点からそのボーンまでの距離に基づいてそのボーンの動作を制限する可変フィルタを各ボーンについて生成する。このフィルタは、回転ノイズに関連付けられた高周波動作の量を減少させることによって、その動作を制限し得る。したがって、ユーザが、アンカー頂点についての動作経路を定義するジェスチャをコントローラを用いて生成すると、アンカー頂点を含むボーンはフィルタリングされていない動作を行ない、一方、アンカー頂点から遠隔のボーンはより制限された動作を行なう。一方、ボーンがないオブジェクトの内部領域では、オブジェクトの表面の頂点は、アンカー頂点から遠隔のオブジェクトの剛性が動作中に達成されるように、滑らかに変形し得る。しかしそれにもかかわらず、VRコンピュータは、オブジェクトの内部領域のボリュームを保存するデュアルクォータニオンスキニング操作を実行し得る。
いくつかの実装例では、デュアルオブジェクトはf+εgの形態の数学的オブジェクトであり、ε2=0である。すなわち、たとえば、(f+εg)2=f2+ε・2fgである。クォータニオンは、
Figure 2020509439
の形態の量であり、
Figure 2020509439
がクォータニオン単位であり、かつ、
Figure 2020509439
であり、クォータニオン単位の乗算は非可換である。したがって、デュアルクォータニオンは、量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とペアリングされ得るかもしくはVRコントローラ110と通信し得るその他の携帯ハンドヘルド電子装置であってもよい。ユーザデバイス114は、たとえば、有線接続、またはたとえばWiFiもしくはブルートゥース(登録商標)接続などの無線接続を介してVRコントローラ110に作動的に結合され得るかまたはVRコントローラ110とペアリングされ得る。ユーザデバイス114とVRコントローラ110とのこのペアリングまたは作動的な結合によって、ユーザデバイス114とVRコントローラ110との間の通信、およびユーザデバイス114とVRコントローラ110との間のデータ交換が提供され得る。これによって、ユーザデバイス114は、VRコントローラ110と通信して没入型仮想環境で対話するコントローラとして機能することができ得る。すなわち、たとえば、ユーザデバイス114によって放射され、選択する仮想オブジェクトもしくは特徴に方向付けられるビームもしくは光線、および/またはユーザデバイス114のタッチ面上で受信する入力、および/またはユーザデバイス114の動きなどの、ユーザデバイス114の操作が、VRコントローラ110によって提供される没入型仮想環境における対応する選択、または動き、または他のタイプの対話に変換され得る。
VRコンピュータ120は、没入型仮想環境のための仮想環境(virtual environment:VE)データ130を生成して、そのデータをネットワーク180上でユーザデバイス114に送信するように構成される。図1に示されるように、VRコンピュータ120は、ネットワーク180上でユーザデバイス114と通信するコンピュータシステムとして実装される。
VRコンピュータ120は、ネットワークインターフェイス122と、一組の処理ユニット124と、メモリ126と、信号受信機128とを含む。ネットワークインターフェイス122は、たとえば、ネットワーク180から受信した電子および/または光信号を仮想環境コンピュータ120が使用する電子形態に変換するためのイーサネット(登録商標)アダプタ、トークンリングアダプタなどを含む。一組の処理ユニット124は、1つ以上の処理チップおよび/またはアセンブリを含む。メモリ126は、揮発性メモリ(たとえばRAM)、および1つ以上のROM、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリの両方を含む。一組の処理ユニット124およびメモリ126はともに制御回路し、当該制御回路は、本明細書に記載のようなさまざまな方法および機能を実行するように構成および配置される。
いくつかの実施形態では、VRコンピュータ120のコンポーネントの1つ以上は、メモリ126に格納された命令を処理するように構成されたプロセッサ(たとえば処理ユニット124)であってもよく、または当該プロセッサを含んでもよい。図1に示されるようなこのような命令の例としては、仮想環境マネージャ160およびオブジェクト変換マネージャ170が挙げられる。メモリ126は、プロセッサによって、命令によって実現されるルーチンに入れられるさまざまなデータも格納してもよい。図1に示されるように、このようなデータはVEデータ130を含み、VEデータ130は次いでオブジェクトデータ140(1),…,140(M)を含む。
VEマネージャ160は、VRコントローラ110によって没入型仮想環境として実現されることになるVEデータ130を生成するように構成される。たとえば、VRコンピュータ120が対話型の没入型ゲームについてのデータを処理するように構成されている場合、VRコンピュータ120によって生成されるVEデータ130は、部屋の壁または屋外環境としてレンダリングする何らかのバックグラウンドデータを含み得る。さらに、VEデータ130は一組のオブジェクト140(1),…,140(M)も含み、ユーザ112はVRコントローラ110を介して当該オブジェクトと対話し得る。VRコンピュータ120は、オブジェクト140(1),…,140(M)のいずれかをユーザ112が見ることができるようにディスプレイ/コントローラ110上にレンダリングし得る。
各オブジェクト、たとえばオブジェクト140(1)は、仮想環境内の何らかの物理オブジェクトを表わす。たとえば、VRコンピュータ120がダーツゲームを処理している場合、1つの仮想オブジェクトはダーツであってもよく、別のオブジェクトはダーツボードであってもよい。このようなゲームでは、ユーザ112はコントローラ110を介して、コントローラのアバターを介してオブジェクト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)の剛体部分であり、オブジェクトの表面の少なくとも1つの頂点142(1)を有する。変換を各頂点に関連付けるのではなく、変換は各ボーン、たとえばボーン144(1)(1)に関連付けられる。各ボーンの頂点は、当該ボーンへの変換に従って動く。たとえば、ボーンを回転させると、ボーンのそれぞれの端に固定されている頂点の各々がボーンとともに回転することになる。別の例として、ボーンを並進させると、ボーンのそれぞれの端に固定されている頂点の各々がボーンとともに並進することになる。ボーンの一端をボーンの他端よりも大きく動かすと、当該ボーンの動きに基づいて一方の頂点が他方の頂点よりも大きく動くことになる。
ボーンの例を図3に示す。図3には、細長いオブジェクト300が示されている。オブジェクト300は、それぞれの剛体領域310および320に2つのボーン315および325を有する。これらのボーン315,325は、オブジェクト300の実在の部分ではなく、むしろオブジェクト300のいくつかの部分がどのように動くかを視覚化するのを助ける図案であるため、これらのボーンの各々は破線で表わされている。ボーンの各々、たとえばボーン315は、2つの頂点、すなわち、アンカー頂点340と、オブジェクトの非剛体領域330に隣接した第2の頂点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は、コントローラ110を介したユーザ112からのジェスチャに応答して、たとえばオブジェクト140(1)(1)などの選択されたオブジェクトを変換するように構成される。上述のように、ジェスチャは、VRコンピュータ120によって、オブジェクトを並進および回転経路に沿って動かす要求として解釈される。
オブジェクト変換マネージャ170はさらに、フィルタ146(1)(1)を生成してボーン144(1)(1)の各々に適用するように構成される。各フィルタは、いくつかの実装例では、アンカー頂点からの距離に基づいて計算され得る。フィルタの適用は、マトリックス、クォータニオン、またはデュアルクォータニオン乗算であり得る。
ネットワーク180は、VRコントローラ110と仮想環境コンピュータ120との間のネットワーク接続を提供するように構成および配置される。ネットワーク180は、インターネットまたは他のネットワーク上での通信に一般的に用いられるさまざまなプロトコルおよびトポロジのいずれかを実装し得る。さらに、ネットワーク180は、このような通信に用いられるさまざまなコンポーネント(たとえばケーブル、スイッチ/ルータ、ゲートウェイ/ブリッジなど)を含み得る。
いくつかの実装例では、メモリ126は、ランダムアクセスメモリ、ディスクドライブメモリ、フラッシュメモリ、および/またはその他などの任意のタイプのメモリであり得る。いくつかの実装例では、メモリ126は、仮想環境コンピュータ120のコンポーネントに関連付けられた2つ以上のメモリコンポーネント(たとえば2つ以上のRAMコンポーネントまたはディスクドライブメモリ)として実装され得る。いくつかの実装例では、メモリ126はデータベースメモリであってもよい。いくつかの実装例では、メモリ126は、非ローカルメモリであってもよく、または当該非ローカルメモリを含んでもよい。たとえば、メモリ126は、複数のデバイス(図示せず)によって共有されるメモリであってもよく、または当該メモリを含んでもよい。いくつかの実装例では、メモリ126は、ネットワーク内のサーバデバイス(図示せず)に関連付けられ、仮想環境コンピュータ120のコンポーネントを供するように構成され得る。
いくつかの実装例では、VRコンピュータ120は、たとえば、有線デバイスおよび/または無線デバイス(たとえばWiFiにより可能化されるデバイス)であってもよく、たとえば、コンピューティングエンティティ(たとえばパーソナルコンピューティングデバイス)、サーバデバイス(たとえばウェブサーバ)、携帯電話、タッチスクリーンデバイス、携帯情報端末(PDA)、ラップトップ、テレビ、タブレットデバイス、電子リーダ、および/またはその他であってもよい。このようなデバイスは、1つ以上のタイプのハードウェア、ソフトウェア、ファームウェア、オペレーティングシステム、ランタイムライブラリ、および/またはその他を含み得る1つ以上のプラットフォーム(たとえば1つ以上の同様のもしくは異なるプラットフォーム)に基づいて動作するように構成され得る。
VRコンピュータ120のコンポーネント(たとえばモジュール、処理ユニット124)は、1つ以上のタイプのハードウェア、ソフトウェア、ファームウェア、オペレーティングシステム、ランタイムライブラリ、および/またはその他を含み得る1つ以上のプラットフォーム(たとえば1つ以上の同様のもしくは異なるプラットフォーム)に基づいて動作するように構成され得る。いくつかの実装例では、VRコンピュータ120のコンポーネントは、デバイスのクラスタ(たとえばサーバファーム)内で動作するように構成され得る。このような実装例では、VRコンピュータ120のコンポーネントの機能および処理は、デバイスのクラスタのいくつかのデバイスに分散され得る。
VRコンピュータ120のコンポーネントは、属性を処理するように構成された任意のタイプのハードウェアおよび/またはソフトウェアであってもよく、または当該ハードウェアおよび/またはソフトウェアを含んでもよい。いくつかの実装例では、VRコンピュータ120のコンポーネント内に示されるコンポーネントの1つ以上の部分は、ハードウェアベースのモジュール(たとえば、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリ)、ファームウェアモジュール、および/またはソフトウェアベースのモジュール(たとえば、コンピュータコードのモジュール、コンピュータにおいて実行可能な一組のコンピュータ読取可能な命令)であってもよく、またはそれらを含んでもよい。たとえば、いくつかの実装例では、VRコンピュータ120のコンポーネントの1つ以上の部分は、少なくとも1つのプロセッサ(図示せず)によって実行されるように構成されたソフトウェアモジュールであってもよく、または当該ソフトウェアモジュールを含んでもよい。いくつかの実装例では、コンポーネントの機能は、図1に示されているのとは異なるモジュールおよび/または異なるコンポーネントに含まれてもよい。
図示されていないが、いくつかの実装例では、VRコンピュータ120のコンポーネント(またはその一部)は、たとえば、データセンター(たとえばクラウドコンピューティング環境)、コンピュータシステム、1つ以上のサーバ/ホストデバイス、および/またはその他の内部で動作するように構成され得る。いくつかの実装例では、VRコンピュータ120のコンポーネント(またはその一部)は、ネットワーク内で動作するように構成され得る。したがって、VRコンピュータ120のコンポーネント(またはその一部)は、1つ以上のデバイスおよび/または1つ以上のサーバデバイスを含み得るさまざまなタイプのネットワーク環境内で機能するように構成され得る。たとえば、ネットワークは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、および/またはその他であってもよく、またはそれらを含んでもよい。ネットワークは、無線ネットワーク、ならびに/または、たとえば、ゲートウェイデバイス、ブリッジ、スイッチ、および/もしくはその他を用いて実現される無線ネットワークであってもよく、またはそれらを含んでもよい。ネットワークは、インターネットプロトコル(IP)および/または所有権付きプロトコルなどのさまざまなプロトコルに基づく1つ以上のセグメントを含んでもよく、および/またはそれらに基づく部分を有してもよい。ネットワークは、インターネットの少なくとも一部を含み得る。
図2は、仮想環境におけるオブジェクトをアニメーション化する例示的な方法200を示すフローチャートである。方法200は、VRコンピュータ120のメモリ126内にあり、一組の処理ユニット124によって実行される、図1に関連して説明されたソフトウェア構造によって実行され得る。
202において、VRコンピュータ120は、仮想環境におけるオブジェクトを生成する。このオブジェットは表面を有し、複数のボーンを含む。オブジェクトの表面は複数の頂点を含む。複数の頂点の各々は、複数のボーンのそれぞれのボーンに含まれる。複数のボーンの各々は、剛体変換に従ってそのボーンの各頂点の動作を定義する。
204において、VRコンピュータ120は、複数のボーンのうちの第1のボーンに含まれるオブジェクトの表面の第1の頂点と、複数のボーンのうちの第2のボーンに含まれるオブジェクトの表面の第2の頂点とを動かす要求を受信する。
206において、VRコンピュータ120は、この要求に応答して、第1のフィルタを一組のボーンのうちの第1のボーンに適用し、第2のフィルタを一組のボーンのうちの第2のボーンに適用する。第1のフィルタおよび第2のフィルタの各々は、第1のボーンおよび第2のボーンにそれぞれに適用されると、第1のボーンの第1の頂点の動作を第1の量だけ制限し、第2の頂点の動作を第1の量とは異なる第2の量だけ制限する。
上述のフィルタリングに基づいて、アンカー点から離れた部分を有するオブジェクトは、たとえば回転ノイズに対して安定していることができる。このような距離依存フィルタを使用しない場合、アンカー点から比較的離れた部分は、遠い頂点において増幅される傾向がある回転ノイズを有し得る。したがって、遠隔点におけるフィルタは、遠隔点における動作を近点における動作に比べて減衰させることになる。たとえば、オブジェクトが野球用バットであると仮定する。ユーザは、バットの一端(ハンドル)を握ることになる。この端におけるアンカー頂点の動作において引き起される任意の種類の回転ノイズは、バットの他端における非常に大きく騒がしい回転動作の原因となり得る。しかしそれにもかかわらず、遠端におけるフィルタリングをハンドルにおけるフィルタリングとは異なるように行なうことによって、フィルタを用いて、近端における動作に対する遠端における回転ノイズに関連付けられた高周波動作を減衰させる、すなわち減少させることができる。
典型的な場合では、このような不均一なフィルタリングによって、中間の非剛体領域におけるオブジェクトが変形し得る。しかし、以下に図3および図4に関連して説明されるように、このような非剛体領域におけるオブジェクトの変形を制御することができる。
図3は、オブジェクト300の例示的なフィルタリングを示す図である。図3に示されるように、オブジェクト300は3つの距離範囲または領域に分割されている。この分割は、2つのボーンと、これらのボーン同士の間の非剛体コネクタとを有するオブジェクトのモデルである。
第1の領域310は第1のボーン315を有し、第1のボーン315は次いでアンカー頂点340および内部エンドポイント350を含む。第2の領域320はボーン325を有し、ボーン325は次いでオブジェクト300の表面の遠隔頂点380および内部エンドポイント360を含む。第1および第2の領域同士の間の第3の領域330は非剛体であり、ボーンを有していない。むしろ、表面370は、互いに異なるように動き得る、かつ変形し得るオブジェクト300の頂点を含む。
オブジェクト300をアンカー頂点340に対して動かすコマンド(たとえば、アンカー点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は、高い方向性を有するオブジェクトのみではなく任意のオブジェクトに対処できるようになる。
リギングに関しては、アンカー頂点340とエンドポイント350との間のすべての頂点はアンカーの変換に100%マッピングされ、エンドポイント360を過ぎたすべての頂点はフィルタリングされた(遠隔の)変換に100%マッピングされ、点350と360との間の頂点は、頂点とアンカー点との間の距離を入力として用いる正則関数を用いてマッピングされ得る。
図4は、領域330(図3)における頂点をマッピングするために用いられる例示的なマッピング関数400を示す図である。アーティファクトを回避するために、マッピング関数は表面に不連続性を導入しなくてもよい。したがって、オブジェクト変換マネージャ170は、エンドポイント350および360における傾斜がゼロである重みマッピング関数を生成し得る。
図4に示されるように、非剛体領域330における対称軸(すなわち横軸)に沿った距離が間隔[0,1]にマッピングされた場合、重みマッピング関数は
Figure 2020509439
の形態を取る。このようにして、エンドポイント350からさらに離れておりエンドポイント360にさらに近い、すなわちアンカー頂点からさらに離れた頂点は、さらなる歪みを経験する。
図3に戻って、重みマッピング関数400によって領域330に導入されるこのような歪みは、領域330における歪み面370として示されている。ここで、オブジェクト300の表面は、この非剛体領域において先細りしている。なお、実際の先細りは、エンドポイント350および360において傾斜がゼロとなる制約を満たすために、円筒形の端を有することになる。
いくつかの構成では、領域320におけるボーンについてのフィルタは、フィルタリングされていない向きと以前にフィルタリングされた向きとの間の現在の角距離に比例するフィルタリング率を有する漸近フィルタの形態を取り得る。たとえば、オブジェクトが、点380における遠端において回転ノイズを受ける細長いオブジェクト300(たとえば動物の脚)であると再び仮定する。そうすると、漸近フィルタは、回転ノイズ(「diff」)に起因するフィルタリングされていない動作と以前にフィルタリングされた動作との間の角度の差に比例して点380における動作を減衰させる。このフィルタは、このフィルタリング率(「strength_pct」)に従って遠端における動作を制限し(たとえば減衰させ)、回転ノイズの影響を減衰させる。したがって、このフィルタを適用すると、動物の脚が一端における回転ノイズに応答して両端で安定することになる。この場合、このようなフィルタの計算を記述する何らかの擬似コードは以下の形態を取り得る。
Figure 2020509439
上記の擬似コードでは、デュアルクォータニオンとして表わされる2つのフィルタ、すなわち、ボーン310に適用される第1のアイデンティティフィルタと、第1のボーンの第1の頂点の動作を第1の量だけ制限し、第2の頂点の動作を第1の量とは異なる第2の量だけ減衰させる、ボーン320に適用される上述の第2の漸近フィルタとが当初存在する。クランプ関数は、量strength_pctに0から1の間の値を強制的に取らせる。混合関数は、回転ノイズに基づいて第1および第2のフィルタを更新する。
いくつかの構成では、オブジェクト変換マネージャ170は、オブジェクト300に対してスキニング操作を実行する。スキニングは、オブジェクトの表面の一部、すなわちスキンをオブジェクトのボーンに関連付けることを必要とする処理である。独立して可動な多くのボーンを有するオブジェクトでは、スキンのいくつかの部分は2つ以上のボーンに関連付けられ得、たとえば、スキンは動物の脚の2つのボーン同士の間のジョイントに関連付けられ得る。
いくつかの実装例では、オブジェクト変換マネージャ170は、このような変換のある特定のボリュームを保存する性質を利用するために、デュアルクォータニオンスキニングを使用する。この場合、このようなスキニング操作を記述する何らかの擬似コードは以下の形態を取り得る。
Figure 2020509439
この擬似コードによって明らかなように、マッピング関数は、非剛体領域330における歪みがユーザの目に明らかでない(またはユーザの目には知覚できない)ように、頂点位置のみを変更し、頂点法線は変更しない。ここでも、デュアルクォータニオンとして表わされる2つのフィルタ、すなわち、ボーン310に適用される第1のアイデンティティフィルタと、ボーン320に適用される上述の第2の漸近フィルタとが当初存在する。
一例として、動物の脚は、2つのボーン315および325と、これらのボーン315と325との間の非剛体領域330とを有する。スキンは、ボーン325をもたらすノイズ動作に関連付けられることになるため、非剛体領域330におけるスキニング操作(すなわち、ボーン同士の間のジョイント)は、点380においてフィルタリングされていない回転ノイズの影響を受け得る。上述のように回転ノイズを減衰させ、図4に関して定義された重み関数を導入することによって、スキニング処理を実行して、ボーン315と325との間のオブジェクト300の表面の歪みをマップアウトすることができる。
図5は、VRを伴うアプリケーションの文脈において本明細書に記載の技法とともに用いられ得る一般的なコンピュータデバイス500および一般的なモバイルコンピュータデバイス550の例を示す。コンピューティングデバイス500は、プロセッサ502と、メモリ504と、記憶装置506と、メモリ504および高速拡張ポート510に接続する高速インターフェイス508と、低速バス514および記憶装置506に接続する低速インターフェイス512とを含む。コンポーネント502,504,506,508,510および512の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。プロセッサ502は、コンピューティングデバイス500内で実行される命令を処理可能であり、これらの命令は、GUIのためのグラフィカル情報を、高速インターフェイス508に結合されたディスプレイ516などの外部入出力デバイス上に表示するために、メモリ504内または記憶装置506上に格納された命令を含む。他の実装例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用されてもよい。また、複数のコンピューティングデバイス500が接続されてもよく、各デバイスは(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
メモリ504は、情報をコンピューティングデバイス500内に格納する。一実装例では、メモリ504は1つまたは複数の揮発性メモリユニットである。別の実装例では、メモリ504は1つまたは複数の不揮発性メモリユニットである。メモリ504はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能な媒体であってもよい。
記憶装置506は、コンピューティングデバイス500のための大容量記憶を提供可能である。一実装例では、記憶装置506は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、または、ストレージエリアネットワークもしくはその他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能な媒体であってもよく、または当該コンピュータ読取可能な媒体を含んでもよい。コンピュータプログラムプロダクトが情報担体において有形に具体化され得る。コンピュータプログラムプロダクトはまた、実行されると上述の方法などの1つ以上の方法を行なう命令を含んでもよい。情報担体は、メモリ504、記憶装置506、またはプロセッサ502上のメモリといった、コンピュータ読取可能な媒体または機械読取可能な媒体である。
高速コントローラ508はコンピューティングデバイス500のための帯域幅集約的な動作を管理し、一方、低速コントローラ512はより低い帯域幅集約的な動作を管理する。機能のこのような割当ては例示にすぎない。一実装例では、高速コントローラ508は、メモリ504、ディスプレイ516に(たとえば、グラフィックスプロセッサまたはアクセラレータを介して)、および、さまざまな拡張カード(図示せず)を受付け得る高速拡張ポート510に結合される。この実装例では、低速コントローラ512は、記憶装置506および低速拡張ポート514に結合される。さまざまな通信ポート(たとえば、USB、ブルートゥース、イーサネット、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入出力デバイスに、または、スイッチもしくはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合されてもよい。
コンピューティングデバイス500は、図に示されるように多くの異なる形態で実装されてもよい。たとえばそれは、標準サーバ520として、またはこのようなサーバのグループで複数回実装されてもよい。それはまた、ラックサーバシステム524の一部として実装されてもよい。加えて、それは、ラップトップコンピュータ522などのパーソナルコンピュータにおいて実装されてもよい。これに代えて、コンピューティングデバイス500からのコンポーネントは、デバイス550などのモバイルデバイス(図示せず)におけるその他のコンポーネントと組合されてもよい。このようなデバイスの各々は、コンピューティングデバイス500,550のうちの1つ以上を含んでもよく、システム全体が、互いに通信する複数のコンピューティングデバイス500,550で構成されてもよい。
コンピューティングデバイス550は、数あるコンポーネントの中でも特に、プロセッサ552と、メモリ564と、ディスプレイ554などの入出力デバイスと、通信インターフェイス566と、送受信機568とを含む。デバイス550にはまた、追加の格納を提供するために、マイクロドライブまたは他のデバイスなどの記憶装置が設けられてもよい。コンポーネント550,552,564,554,566および568の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたはその他の態様で適宜搭載されてもよい。
プロセッサ552は、メモリ564に格納された命令を含む、コンピューティングデバイス550内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス550が実行するアプリケーション、およびデバイス550による無線通信の制御といった、デバイス550の他のコンポーネント同士の連携を提供してもよい。
プロセッサ552は、ディスプレイ554に結合された制御インターフェイス558およびディスプレイインターフェイス556を介してユーザと通信してもよい。ディスプレイ554は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であってもよい。ディスプレイインターフェイス556は、ディスプレイ554を駆動してグラフィカル情報およびその他の情報をユーザに提示するための適切な回路を含んでもよい。制御インターフェイス558は、ユーザからコマンドを受信し、それらをプロセッサ552に送出するために変換してもよい。加えて、デバイス550と他のデバイスとの近接通信を可能にするように、外部インターフェイス562がプロセッサ552と通信した状態で設けられてもよい。外部インターフェイス562は、たとえば、いくつかの実装例では有線通信を提供してもよく、または他の実装例では無線通信を提供してもよく、複数のインターフェイスも使用されてもよい。
メモリ564は、情報をコンピューティングデバイス550内に格納する。メモリ564は、1つもしくは複数のコンピュータ読取可能な媒体、1つもしくは複数の揮発性メモリユニット、または、1つもしくは複数の不揮発性メモリユニットの1つ以上として実装されてもよい。拡張メモリ574も設けられ、拡張インターフェイス572を介してデバイス550に接続されてもよく、拡張インターフェイス572は、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含んでもよい。このような拡張メモリ574は、デバイス850に余分の格納スペースを提供してもよく、または、デバイス550のためのアプリケーションもしくは他の情報も格納してもよい。具体的には、拡張メモリ574は、上述のプロセスを実行または補足するための命令を含んでもよく、セキュアな情報も含んでもよい。このため、たとえば、拡張メモリ574はデバイス550のためのセキュリティモジュールとして設けられてもよく、デバイス550のセキュアな使用を許可する命令でプログラムされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を乗せるといったように、セキュアなアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
メモリはたとえば、以下に述べるようなフラッシュメモリおよび/またはNVRAMメモリを含んでもよい。一実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述の方法のような1つ以上の方法を行なう命令を含む。情報担体は、メモリ564、拡張メモリ574、またはプロセッサ552上のメモリといった、コンピュータ読取可能な媒体または機械読取可能な媒体であり、たとえば送受信機568または外部インターフェイス562を通して受信されてもよい。
デバイス550は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス566を介して無線通信してもよい。通信インターフェイス566は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下での通信を提供してもよい。このような通信は、たとえば無線周波数送受信機568を介して生じてもよい。加えて、ブルートゥース、Wi−Fi、または他のこのような送受信機(図示せず)使用するなどして、短距離通信が生じてもよい。加えて、GPS(Global Positioning System:全地球測位システム)受信機モジュール570が、追加のナビゲーション関連および位置関連の無線データをデバイス550に提供してもよく、このデータは、デバイス550上で実行されるアプリケーションによって適宜使用されてもよい。
デバイス550はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック560を使用して、音声通信してもよい。音声コーデック560は同様に、たとえばデバイス550のハンドセットにおいて、スピーカを介すなどして、ユーザに聞こえる音を生成してもよい。このような音は、音声電話からの音を含んでもよく、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでもよく、デバイス550上で動作するアプリケーションが生成する音も含んでもよい。
コンピューティングデバイス550は、図に示されるように多くの異なる形態で実装されてもよい。たとえばそれは、携帯電話580として実装されてもよい。それはまた、スマートフォン582、携帯情報端末、または他の同様のモバイルデバイスの一部として実装されてもよい。
本明細書に記載のシステムおよび技法のさまざまな実装例は、デジタル電子回路、集積回路、特別設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせにおいて実現されてもよい。これらのさまざまな実装例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装例を含んでもよく、このプロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するとともに、これらにデータおよび命令を送信するように結合されてもよい。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知)は、プログラマブルプロセッサのための機械命令を含んでおり、高レベル手続き型および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ/機械言語で実装されてもよい。ここに使用されるように、「機械読取可能な媒体」「コンピュータ読取可能な媒体」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置および/またはデバイス(たとえば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指し、機械命令を機械読取可能な信号として受信する機械読取可能な媒体を含む。「機械読取可能な信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
ユーザとの対話を提供するために、本明細書に記載のシステムおよび技法は、情報をユーザに表示するためのディスプレイ装置(たとえば、CRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタ)と、ユーザが入力をコンピュータに提供できるようにするキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有するコンピュータ上で実装されてもよい。その他の種類の装置を使用してユーザとの対話を提供してもよく、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信されてもよい。
本明細書に記載のシステムおよび技法は、(たとえばデータサーバとしての)バックエンドコンポーネントを含む、またはミドルウェアコンポーネント(たとえばアプリケーションサーバ)を含む、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび技法の実装例と対話できるようにするグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)を含む、または、このようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組み合わせを含む、コンピューティングシステムにおいて実装されてもよい。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば通信ネットワーク)によって相互接続されてもよい。通信ネットワークの例として、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、およびインターネットが挙げられる。
コンピューティングシステムは、クライアントおよびサーバを含んでもよい。クライアントおよびサーバは一般に互いに遠隔であり、典型的に通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作して互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
いくつかの実装例では、図5に示されるコンピューティングデバイスは、仮想現実とインターフェイス接続するセンサ(VRヘッドセット590)を含み得る。たとえば、図5に示されるコンピューティングデバイス550または他のコンピューティングデバイス上に含まれる1つ以上のセンサは、VRヘッドセット590への入力を提供でき、または一般に、VR空間への入力を提供できる。センサは、タッチスクリーン、加速度計、ジャイロスコープ、圧力センサ、生体認証センサ、温度センサ、湿度センサ、および周囲光センサを含み得るものの、それらに限定されない。コンピューティングデバイス550はこれらのセンサを使用して、VR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を判断可能であり、それは次に、VR空間への入力として使用され得る。たとえば、コンピューティングデバイス550は、コントローラ、レーザポインタ、キーボード、武器などの仮想オブジェクトとしてVR空間に組込まれてもよい。VR空間に組込まれた場合のコンピューティングデバイス/仮想オブジェクトのユーザによる位置付けは、ユーザが、VR空間において仮想オブジェクトをある態様で見るようにコンピューティングデバイスを位置付けることを可能にし得る。たとえば、仮想オブジェクトがレーザポインタを表わす場合、ユーザは、コンピューティングデバイスを、実際のレーザポインタであるかのように操作することができる。ユーザはコンピューティングデバイスをたとえば左右に、上下に、円形に動かして、レーザポインタを使用するのと同様の態様でデバイスを使用することができる。
いくつかの実装例では、コンピューティングデバイス550上に含まれる、またはコンピューティングデバイス550に接続される1つ以上の入力デバイスは、VR空間への入力として使用され得る。入力デバイスは、タッチスクリーン、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイクロホン、入力機能性を有するイヤホンまたは小型イヤホン、ゲーミングコントローラ、または他の接続可能な入力デバイスを含み得るものの、それらに限定されない。コンピューティングデバイスがVR空間に組込まれた場合にコンピューティングデバイス550上に含まれる入力デバイスとやりとりするユーザは、特定のアクションがVR空間で生じるようにすることができる。
いくつかの実装例では、コンピューティングデバイス550のタッチスクリーンは、VR空間においてタッチパッドとしてレンダリングされ得る。ユーザは、コンピューティングデバイス550のタッチスクリーンとやりとりすることができる。やりとりは、たとえばVRヘッドセット590において、VR空間におけるレンダリングされたタッチパッド上の動きとしてレンダリングされる。レンダリングされた動きは、VR空間においてオブジェクトを制御することができる。
いくつかの実装例では、コンピューティングデバイス550上に含まれる1つ以上の出力デバイスは、VR空間においてVRヘッドセット590のユーザに出力および/またはフィードバックを提供することができる。出力およびフィードバックは、視覚、触覚、または音声によるものであり得る。出力および/またはフィードバックは、振動、1つ以上のライトまたはストロボをオンオフすることもしくは点滅および/または明滅させること、アラームを鳴らすこと、チャイムを鳴らすこと、歌を演奏すること、および音声ファイルを演奏することを含み得るものの、それらに限定されない。出力デバイスは、振動モータ、振動コイル、圧電デバイス、静電デバイス、発光ダイオード(LED)、ストロボ、およびスピーカを含み得るものの、それらに限定されない。
いくつかの実装例では、コンピューティングデバイス550は、コンピュータが生成した3D環境において別のオブジェクトのように見えてもよい。ユーザによるコンピューティングデバイス550とのやりとり(たとえば、タッチスクリーンを回転させ、振動させること、タッチスクリーンに触れること、タッチスクリーンを横切って指をスワイプすること)は、VR空間におけるオブジェクトとのやりとりとして解釈され得る。VR空間におけるレーザポインタの例では、コンピューティングデバイス550は、コンピュータが生成した3D環境において仮想レーザポインタのように見える。ユーザがコンピューティングデバイス550を操作すると、ユーザはVR空間においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス550上またはVRヘッドセット590上で、VR環境におけるコンピューティングデバイス850とのやりとりからフィードバックを受信する。
いくつかの実装例では、コンピューティングデバイスに加えて1つ以上の入力デバイス(たとえばマウス、キーボード)が、コンピュータが生成した3D環境においてレンダリングされ得る。レンダリングされた入力デバイス(たとえば、レンダリングされたマウス、レンダリングされたキーボード)は、VR空間においてオブジェクトを制御するために、VR空間においてレンダリングされたとして使用され得る。
コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス550は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示されるコンポーネント、それらの接続および関係、ならびにそれらの機能は、単なる例示であるよう意図されており、本文書に記載のおよび/または請求項に記載の本発明の実装例を限定するよう意図されてはいない。
図6は、図3および図4に示されるようなヘッドマウントディスプレイの例示的な実装例を示す。図6において、HMD600を装着しているユーザは、携帯ハンドヘルド電子装置602を手に持っている。ハンドヘルド電子装置602は、たとえば、スマートフォン、コントローラ、ジョイスティック、または、HMD600によって生成される没入型仮想環境での対話のためにHMD600とペアリングされ得るかもしくはHMD600と通信し得るその他の携帯ハンドヘルド電子装置であってもよい。ハンドヘルド電子装置602は、たとえば、有線接続、またはたとえばWiFiもしくはブルートゥース接続などの無線接続を介して、HMD600に作動的に結合され得るかまたはHMD600とペアリングされ得る。ハンドヘルド電子装置602とHMD600とのこのペアリングまたは作動的な結合によって、ハンドヘルド電子装置602とHMD600との間の通信、およびハンドヘルド電子装置602とHMD600との間のデータ交換が提供され得る。これによって、ハンドヘルド電子装置602は、HMD600と通信して、HMD600によって生成される没入型仮想環境で対話するコントローラとして機能することができ得る。すなわち、たとえば、ハンドヘルド電子装置602によって放射されて、選択する仮想オブジェクトもしくは特徴に方向付けられるビームもしくは光線、および/またはハンドヘルド電子装置602のタッチ面上で受信する入力、および/またはハンドヘルド電子装置602の動きなどの、ハンドヘルド電子装置602の操作が、HMD600によって生成される没入型仮想環境における対応する選択、または動き、または他のタイプの対話に変換され得る。たとえば、HMD600は、ハンドヘルド電子装置602とともに、上述のような仮想環境を生成し得、ハンドヘルド電子装置602は、上述のような仮想環境における仮想の特徴に対するユーザのスケールまたはパースペクティブの変化をもたらすように操作され得る。
図7Aおよび図7Bは、たとえば図6のユーザが装着しているHMD600のような例示的なHMDの斜視図であり、図7Cは、たとえば図6に示されるハンドヘルド電子装置602のような例示的なハンドヘルド電子装置を示す。
ハンドヘルド電子装置702は、装置702の内部コンポーネントが収容される筐体703と、ユーザがアクセスできる、筐体703の外側のユーザインターフェイス704とを含み得る。ユーザインターフェイス704は、ユーザタッチ入力を受信するように構成されたタッチセンシティブ面706を含み得る。ユーザインターフェイス704は、たとえば、作動ボタン、ノブ、ジョイスティックなどの、ユーザによって操作される他のコンポーネントも含み得る。いくつかの実装例では、ユーザインターフェイス704の少なくとも一部はタッチスクリーンとして構成されてもよく、ユーザインターフェイス704のその一部は、ユーザインターフェイス項目をユーザに対して表示するように、かつタッチセンシティブ面706上でユーザからのタッチ入力を受信するように構成される。ハンドヘルド電子装置702は、たとえばユーザインターフェイス704において受信したユーザ入力に応答してたとえばビームまたは光線などの光を筐体703のポートを通って選択的に放射するように構成された光源708も含み得る。
HMD700は、フレーム720に結合された筐体710を含み得、さらに、たとえばヘッドフォンに搭載されたスピーカを含む音声出力デバイス730がフレーム720に結合されている。図7Bにおいて、筐体710の前部710aは、筐体710に収容されている部品の一部が見えるように、筐体710の基部710bから回転させられている。ディスプレイ740が、筐体710の前部710aの内部に面する側に装着されてもよい。レンズ750が、筐体710の内部において、前部710aが筐体710の基部710bに対して閉じられた位置にあるときにユーザの目とディスプレイ740との間になるように装着されてもよい。いくつかの実装例では、HMD700は、さまざまなセンサを含む検知システム760と、プロセッサ790およびHMD700の操作を容易にするさまざまな制御システム装置を含む制御システム770とを含み得る。
いくつかの実装例では、HMD700は、静止画および動画を撮影するカメラ780を含み得る。カメラ780が撮影した画像は、現実世界におけるユーザおよび/もしくはハンドヘルド電子装置702の物理的な位置、または仮想環境に対する物理環境の追跡を助けるために用いられてもよく、ならびに/またはユーザに対してパススルーモードでディスプレイ740に表示することで、ユーザが、HMD700を外すことなく、そうでなければHMD700の構成を変更して筐体710を動かしてユーザの視線から外すことなく、仮想環境を一時的に出て物理環境に戻ることができるようにしてもよい。
いくつかの実装例では、HMD700は、ユーザの目の注視を検出して追跡する注視追跡装置765を含み得る。注視追跡装置765は、たとえば瞳孔などのたとえばユーザの目の特定の部分などのユーザの目の画像を撮影して、ユーザの注視の方向および動きを検出して追跡する、たとえば1つまたは複数の画像センサ765Aを含み得る。いくつかの実装例では、HMD700は、検出された注視が、没入型仮想体験における対応する対話に変換されることになるユーザ入力として処理されるように構成され得る。
多数の実施形態が説明された。しかしながら、本明細書の精神および範囲から逸脱することなくさまざまな変更がなされ得ることが理解されるであろう。
加えて、図面に示される論理フローは、所望の結果を達成するために、示された特定の順序または順番を必要としない。加えて、説明されたフローに対して他のステップが提供されてもよく、またはステップが除去されてもよく、説明されたシステムに対して他のコンポーネントが追加されてもよく、または除去されてもよい。したがって、他の実施形態は以下の特許請求の範囲内にある。
VRコンピュータ120は、ネットワークインターフェイス122と、一組の処理ユニット124と、メモリ126と、信号受信機とを含む。ネットワークインターフェイス122は、たとえば、ネットワーク180から受信した電子および/または光信号を仮想環境コンピュータ120が使用する電子形態に変換するためのイーサネット(登録商標)アダプタ、トークンリングアダプタなどを含む。一組の処理ユニット124は、1つ以上の処理チップおよび/またはアセンブリを含む。メモリ126は、揮発性メモリ(たとえばRAM)、および1つ以上のROM、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリの両方を含む。一組の処理ユニット124およびメモリ126はともに制御回路し、当該制御回路は、本明細書に記載のようなさまざまな方法および機能を実行するように構成および配置される。
メモリ564は、情報をコンピューティングデバイス550内に格納する。メモリ564は、1つもしくは複数のコンピュータ読取可能な媒体、1つもしくは複数の揮発性メモリユニット、または、1つもしくは複数の不揮発性メモリユニットの1つ以上として実装されてもよい。拡張メモリ574も設けられ、拡張インターフェイス572を介してデバイス550に接続されてもよく、拡張インターフェイス572は、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含んでもよい。このような拡張メモリ574は、デバイス50に余分の格納スペースを提供してもよく、または、デバイス550のためのアプリケーションもしくは他の情報も格納してもよい。具体的には、拡張メモリ574は、上述のプロセスを実行または補足するための命令を含んでもよく、セキュアな情報も含んでもよい。このため、たとえば、拡張メモリ574はデバイス550のためのセキュリティモジュールとして設けられてもよく、デバイス550のセキュアな使用を許可する命令でプログラムされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を乗せるといったように、セキュアなアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
いくつかの実装例では、コンピューティングデバイス550は、コンピュータが生成した3D環境において別のオブジェクトのように見えてもよい。ユーザによるコンピューティングデバイス550とのやりとり(たとえば、タッチスクリーンを回転させ、振動させること、タッチスクリーンに触れること、タッチスクリーンを横切って指をスワイプすること)は、VR空間におけるオブジェクトとのやりとりとして解釈され得る。VR空間におけるレーザポインタの例では、コンピューティングデバイス550は、コンピュータが生成した3D環境において仮想レーザポインタのように見える。ユーザがコンピューティングデバイス550を操作すると、ユーザはVR空間においてレーザポインタの動きを見る。ユーザは、コンピューティングデバイス550上またはVRヘッドセット590上で、VR環境におけるコンピューティングデバイス50とのやりとりからフィードバックを受信する。

Claims (20)

  1. 方法であって、
    仮想現実(VR)コンピュータの処理回路が、仮想環境におけるオブジェクトを生成することを備え、前記オブジェクトは、表面を有し、かつ第1の頂点を含む第1のボーンおよび第2の頂点を含む第2のボーンを含み、前記第1のボーンは、前記第1のボーンの上の点同士の間の距離を保つ剛体変換に従って前記第1の頂点の動作を定義し、前記方法はさらに、
    前記第1のボーンに含まれる前記オブジェクトの前記表面の前記第1の頂点と、前記第2のボーンに含まれる前記オブジェクトの前記表面の前記第2の頂点とを動かす要求を受信することと、
    前記要求に応答して、第1のフィルタを前記第1のボーンに適用し、第2のフィルタを前記第2のボーンに適用することとを備え、前記第1のフィルタおよび前記第2のフィルタの各々は、前記第1のボーンおよび前記第2のボーンにそれぞれ適用されると、前記第1のボーンの前記第1の頂点の前記動作を第1の量だけ制限し、前記第2の頂点の動作を前記第1の量とは異なる第2の量だけ減衰させる、方法。
  2. 前記要求を受信することは、アンカー頂点を定義することを含み、前記アンカー頂点は前記第1のボーンに含まれており、
    前記動作は並進成分および回転成分を含み、
    前記第1のフィルタはアイデンティティフィルタであり、前記アイデンティティフィルタは、前記第1のボーンに適用されると、前記アンカー頂点が前記剛体変換に従って経路に沿って動くように、前記アンカー頂点の前記動作の前記並進成分を減衰させる距離はゼロであり、前記アンカー頂点の前記動作の前記回転成分を減衰させる角度はゼロである、請求項1に記載の方法。
  3. 前記オブジェクトは、前記アンカー頂点を含む第1の領域と、前記第2の頂点を含む第2の領域と、前記オブジェクトが変形する前記第1の領域と前記第2の領域との間の第3の領域とを含み、前記第2の頂点は前記アンカー頂点から遠隔であり、
    前記方法はさらに、前記第3の領域の内部の頂点に対して変形操作を実行して、前記第3の領域の内部に変形したオブジェクトを生成することを備える、請求項2に記載の方法。
  4. 前記第3の領域の内部の頂点に対して変形操作を実行することは、連続マッピング関数に従って前記第3の領域の内部の前記頂点の各々の位置をマッピングすることを含み、前記連続マッピング関数の、前記第1の領域と前記第3の領域との間の境界、および前記第2の領域と前記第3の領域との間の境界における傾斜はゼロである、請求項3に記載の方法。
  5. 前記仮想環境におけるオブジェクトを生成することは、前記第2のボーンを前記オブジェクトのバインドポーズにおける前記第1のボーンと同一であると定義することを含む、請求項2に記載の方法。
  6. 前記第2のフィルタを前記第2のボーンに適用することは、前記フィルタを、前記頂点のフィルタリングされていない動作に起因する前記第2のボーンの頂点の位置と、前記第2のボーンの以前のフィルタの適用に応答した動作に起因する前記頂点の位置との間の現在の角距離に比例するフィルタリング率を有する漸近フィルタと定義することを含む、請求項5に記載の方法。
  7. 複数の前記ボーンのうちの1つのボーンにアタッチされた各頂点の前記動作を定義する前記剛体変換は、座標変換のデュアルクォータニオン表現を含み、
    前記方法はさらに、前記第2のフィルタを前記第2のボーンに適用した後に前記第3の領域に対してスキニング操作を実行して、前記第3の領域における前記オブジェクトのボリュームを保存することを備える、請求項5に記載の方法。
  8. 前記仮想環境を前記VRコンピュータのユーザが見ることができるようにレンダリングするように構成されたディスプレイにおいて前記オブジェクトを表示することをさらに備える、請求項1に記載の方法。
  9. 非推移的な記憶媒体を備えるコンピュータプログラムプロダクトであって、前記コンピュータプログラムプロダクトは、仮想現実(VR)コンピュータの処理回路によって実行されると前記処理回路に方法を行なわせるコードを含み、前記方法は、
    仮想環境におけるオブジェクトを生成することを備え、前記オブジェクトは、表面を有し、かつ第1の頂点を含む第1のボーンおよび第2の頂点を含む第2のボーンを含み、前記第1のボーンは、前記第1のボーンの上の点同士の間の距離を保つ剛体変換に従って前記第1の頂点の動作を定義し、前記方法はさらに、
    前記第1のボーンに含まれる前記オブジェクトの前記表面の前記第1の頂点と、前記第2のボーンに含まれる前記オブジェクトの前記表面の前記第2の頂点とを動かす要求を受信することと、
    前記要求に応答して、第1のフィルタを前記第1のボーンに適用し、第2のフィルタを前記第2のボーンに適用することとを備え、前記第1のフィルタおよび前記第2のフィルタの各々は、前記第1のボーンおよび前記第2のボーンにそれぞれ適用されると、前記第1のボーンの前記第1の頂点の前記動作を第1の量だけ減衰させ、前記第2の頂点の動作を前記第1の量とは異なる第2の量だけ減衰させる、コンピュータプログラムプロダクト。
  10. 前記要求を受信することは、アンカー頂点を定義することを含み、前記アンカー頂点は前記第1のボーンに含まれており、
    前記動作は並進成分および回転成分を含み、
    前記第1のフィルタはアイデンティティフィルタであり、前記アイデンティティフィルタは、前記第1のボーンに適用されると、前記アンカー頂点が前記剛体変換に従って経路に沿って動くように、前記アンカー頂点の前記動作の前記並進成分を減衰させる距離はゼロであり、前記アンカー頂点の前記動作の前記回転成分を減衰させる角度はゼロである、請求項9に記載のコンピュータプログラムプロダクト。
  11. 前記オブジェクトは、前記アンカー頂点を含む第1の領域と、前記第2の頂点を含む第2の領域と、前記オブジェクトが変形する前記第1の領域と前記第2の領域との間の第3の領域とを含み、前記第2の頂点は前記アンカー頂点から遠隔であり、
    前記方法はさらに、前記第3の領域の内部の頂点に対して変形操作を実行して、前記第3の領域の内部に変形したオブジェクトを生成することを備える、請求項10に記載のコンピュータプログラムプロダクト。
  12. 前記第3の領域の内部の頂点に対して変形操作を実行することは、連続マッピング関数に従って前記第3の領域の内部の前記頂点の各々の位置をマッピングすることを含み、前記連続マッピング関数の、前記第1の領域と前記第3の領域との間の境界、および前記第2の領域と前記第3の領域との間の境界における傾斜はゼロである、請求項11に記載のコンピュータプログラムプロダクト。
  13. 前記仮想環境におけるオブジェクトを生成することは、前記第2のボーンを前記オブジェクトのバインドポーズにおける前記第1のボーンと同一であると定義することを含む、請求項10に記載のコンピュータプログラムプロダクト。
  14. 前記第2のフィルタを前記第2のボーンに適用することは、前記フィルタを、前記頂点のフィルタリングされていない動作に起因する前記第2のボーンの頂点の位置と、前記第2のボーンの以前のフィルタの適用に応答した動作に起因する前記頂点の位置との間の現在の角距離に比例するフィルタリング率を有する漸近フィルタと定義することを含む、請求項13に記載のコンピュータプログラムプロダクト。
  15. 複数の前記ボーンのうちの1つのボーンにアタッチされた各頂点の前記動作を定義する前記剛体変換は、座標変換のデュアルクォータニオン表現を含み、
    前記方法はさらに、前記第2のフィルタを前記第2のボーンに適用した後に前記第3の領域に対してスキニング操作を実行して、前記第3の領域における前記オブジェクトのボリュームを保存することを備える、請求項13に記載のコンピュータプログラムプロダクト。
  16. 前記方法はさらに、前記仮想環境を前記VRコンピュータのユーザが見ることができるようにレンダリングするように構成されたディスプレイにおいて前記オブジェクトを表示することを備える、請求項9に記載のコンピュータプログラムプロダクト。
  17. 仮想現実(VR)コンピュータであって、
    メモリと、
    前記メモリに結合される制御回路とを備え、前記制御回路は、
    仮想環境におけるオブジェクトを生成するように構成され、前記オブジェクトは、表面を有し、かつ第1の頂点を含む第1のボーンおよび第2の頂点を含む第2のボーンを含み、前記第1のボーンは、前記第1のボーンの上の点同士の間の距離を保つ剛体変換に従って前記第1の頂点の動作を定義し、前記制御回路はさらに、
    前記第1のボーンに含まれる前記オブジェクトの前記表面の前記第1の頂点と、前記第2のボーンに含まれる前記オブジェクトの前記表面の前記第2の頂点とを動かす要求を受信し、
    前記要求に応答して、第1のフィルタを前記第1のボーンに適用し、第2のフィルタを前記第2のボーンに適用するように構成され、前記第1のフィルタおよび前記第2のフィルタの各々は、前記第1のボーンおよび前記第2のボーンにそれぞれ適用されると、前記第1のボーンの前記第1の頂点の前記動作を第1の量だけ減衰させ、前記第2の頂点の動作を前記第1の量とは異なる第2の量だけ減衰させる、VRコンピュータ。
  18. 前記要求を受信するように構成された前記制御回路は、アンカー頂点を定義するようにさらに構成され、前記アンカー頂点は前記第1のボーンに含まれており、
    前記動作は並進成分および回転成分を含み、
    前記第1のフィルタはアイデンティティフィルタであり、前記アイデンティティフィルタは、前記第1のボーンに適用されると、前記アンカー頂点が前記剛体変換に従って経路に沿って動くように、前記アンカー頂点の前記動作の前記並進成分を減衰させる距離はゼロであり、前記アンカー頂点の前記動作の前記回転成分を減衰させる角度はゼロである、請求項17に記載のVRコンピュータ。
  19. 前記オブジェクトは、前記アンカー頂点を含む第1の領域と、前記第2の頂点を含む第2の領域と、前記オブジェクトが変形する前記第1の領域と前記第2の領域との間の第3の領域とを含み、前記第2の頂点は前記アンカー頂点から遠隔であり、
    前記制御回路はさらに、前記第3の領域の内部の頂点に対して変形操作を実行して、前記第3の領域の内部に変形したオブジェクトを生成するように構成される、請求項18に記載のVRコンピュータ。
  20. 前記第3の領域の内部の頂点に対して変形操作を実行するように構成された前記制御回路はさらに、連続マッピング関数に従って前記第3の領域の内部の前記頂点の各々の位置をマッピングするように構成され、前記連続マッピング関数の、前記第1の領域と前記第3の領域との間の境界、および前記第2の領域と前記第3の領域との間の境界における傾斜はゼロである、請求項18に記載のVRコンピュータ。
JP2019524892A 2017-03-20 2017-12-01 仮想現実における保持オブジェクトの安定化 Active JP6793255B2 (ja)

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
JP2020509439A true JP2020509439A (ja) 2020-03-26
JP6793255B2 JP6793255B2 (ja) 2020-12-02

Family

ID=63585691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019524892A Active JP6793255B2 (ja) 2017-03-20 2017-12-01 仮想現実における保持オブジェクトの安定化

Country Status (5)

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

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
JP2014524070A (ja) * 2011-06-06 2014-09-18 マイクロソフト コーポレーション 指認識および追跡システム
JP2016126500A (ja) * 2014-12-26 2016-07-11 Kddi株式会社 ウェアラブル端末装置およびプログラム
WO2016157951A1 (ja) * 2015-03-31 2016-10-06 ソニー株式会社 表示制御装置、表示制御方法および記録媒体

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 株式会社リコー モデリング方法および記録媒体
JP3864940B2 (ja) * 2003-08-21 2007-01-10 株式会社村田製作所 膜強度測定方法、膜を有する被測定物の良否判定方法
US8749556B2 (en) 2008-10-14 2014-06-10 Mixamo, Inc. Data compression for real-time streaming of deformable 3D models for 3D animation
EP2362302B1 (en) * 2010-02-26 2018-06-06 Alcatel Lucent Method for controlling motions of an object in a 3-dimensional virtual environment
US20120249416A1 (en) * 2011-03-29 2012-10-04 Giuliano Maciocci Modular mobile connected pico projectors for a local multi-user collaboration
US9214036B1 (en) * 2012-06-26 2015-12-15 Pixar Animation engine for blending computer animation data
WO2017027957A1 (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
JP2014524070A (ja) * 2011-06-06 2014-09-18 マイクロソフト コーポレーション 指認識および追跡システム
JP2016126500A (ja) * 2014-12-26 2016-07-11 Kddi株式会社 ウェアラブル端末装置およびプログラム
WO2016157951A1 (ja) * 2015-03-31 2016-10-06 ソニー株式会社 表示制御装置、表示制御方法および記録媒体

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102245245B1 (ko) 증강된 그리고/또는 가상의 현실 환경에서 6 자유도 제어기들을 이용한 가상 객체들의 조작
JP6929361B2 (ja) 仮想現実システムのための入力コントローラ安定化技術
KR102194164B1 (ko) 홀로그램 객체 피드백
CN108697935B (zh) 虚拟环境中的化身
EP3814876B1 (en) Placement and manipulation of objects in augmented reality environment
JP7008730B2 (ja) 画像に挿入される画像コンテンツについての影生成
CN109923509B (zh) 虚拟现实中的对象的协同操纵
US20170329503A1 (en) Editing animations using a virtual reality controller
US11494990B2 (en) Hybrid placement of objects in an augmented reality environment
JP6793255B2 (ja) 仮想現実における保持オブジェクトの安定化
US10311621B2 (en) Held object stabilization in virtual reality
US20230351710A1 (en) Avatar State Versioning for Multiple Subscriber Systems
WO2023212349A1 (en) Avatar state versioning for multiple devices
WO2024072595A1 (en) Translating interactions on a two-dimensional interface to an artificial reality experience

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190822

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201013

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201109

R150 Certificate of patent or registration of utility model

Ref document number: 6793255

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250