(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-08
(45)【発行日】2024-11-18
(54)【発明の名称】3Dモデリングにおける没入型ジェスチャを用いた面の選択
(51)【国際特許分類】
G06T 7/70 20170101AFI20241111BHJP
G06F 3/01 20060101ALI20241111BHJP
G06F 3/04815 20220101ALI20241111BHJP
G06T 7/00 20170101ALI20241111BHJP
G06T 19/00 20110101ALI20241111BHJP
【FI】
G06T7/70 B
G06F3/01 570
G06F3/04815
G06T7/00 660Z
G06T19/00 A
【外国語出願】
(21)【出願番号】P 2020211248
(22)【出願日】2020-12-21
【審査請求日】2023-11-24
(32)【優先日】2019-12-30
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】フィボス ドガニス
【審査官】藤原 敬利
(56)【参考文献】
【文献】特開2018-084886(JP,A)
【文献】特開2016-099839(JP,A)
【文献】特開2018-200688(JP,A)
【文献】特開2018-116730(JP,A)
【文献】米国特許出願公開第2002/0056009(US,A1)
【文献】Bret Jackson et al.,Yea Big, Yea High: A 3D User Interface for Surface Selection by Progressive Refinement in Virtual Environments,2018 IEEE Conference on Virtual Reality and 3D User Interfaces (VR),IEEE,2018年03月22日,pp.320-326,https://ieeexplore.ieee.org/document/8447559
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/033- 3/039
G06F 3/048- 3/04895
G06F 30/00 - 30/398
G06F 111/00 -119/22
G06T 1/00
G06T 7/00 - 7/90
G06T 11/00 - 19/20
G06V 10/00 - 20/90
G06V 40/16 、 40/20
(57)【特許請求の範囲】
【請求項1】
CADシステムの3D没入環境における3Dオブジェクトの、それぞれが前記3D没入環境において配向されている複数の面から、面を選択するためのコンピュータによって実施される方法であって、
前記3D没入環境において前記3Dオブジェクトを表示すること(S10)と、
親指以外のすべての指の内転を含む手のジェスチャを検出すること(S20)と、
前記3D没入環境において、手のひらおよび/または手の甲で形成される配向平面を決定すること(S30)と、
前記配向平面と最も近い向きを有する前記3Dオブジェクトの面を識別すること(S40)と、を含む
ことを特徴とするコンピュータによって実施される方法。
【請求項2】
前記3Dオブジェクトの各面および前記配向平面は、法線をさらに有し、前記識別すること(S40)は、前記配向平面の法線と最も近い方向を有する前記3Dオブジェクトの面を識別することをさらに含む
ことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項3】
前記3Dオブジェクトの各面および前記配向平面は、前記3D没入環境における位置をさらに有し、前記識別すること(S40)は、
【数19】
を満たす関数fを最小化することをさらに有し、
ここで、
Faceは着目面であり、
【数20】
かつ
【数21】
かつ
【数22】
であり、
||FH||は、前記着目面Faceの位置と前記配向平面の位置Hとの、前記3D没入環境におけるユークリッド距離であり、
【数23】
は、前記着目面Faceの法線と前記配向平面の法線との前記3D没入環境における角度である
こと特徴とする請求項1または請求項2に記載のコンピュータによって実施される方法。
【請求項4】
前記関数fの項||FH||は、||FH’||によって置き換えられ、H’は
【数24】
によって計算され、
ここで、
H’は、仮想の手の配向平面の位置であり、
Eは、ユーザの視点の位置であり、
Hは、ユーザの手の配向平面の位置であり、
EHは、EからHへのベクトルであり、
Omaxは、Eから最も遠い前記3Dオブジェクトの面の位置であり、
Hmaxは、ユーザの身体の横断面におけるEから最も遠いユーザの手の中心の位置であり、
【数25】
であり、
||EOmax||は、EからOmaxへのベクトルのノルムであり、
||EHmax||は、EからHmaxへのベクトルのノルムである
ことを特徴とする請求項3に記載のコンピュータによって実施される方法。
【請求項5】
前記関数fの項||FH||または||FH’||は、面の位置と、頭部または利き目の中心または両目の間の点から3Dモデルの中心に投射される光線と前記3Dモデルとの少なくとも1つの交点との、前記3D没入環境におけるユークリッド距離をさらに含む
ことを特徴とする請求項3または請求項4に記載のコンピュータによって実施される方法。
【請求項6】
前記識別すること(S40)は、
前記配向平面と最も近い向きを有する前記3Dオブジェクトの面を決定すること(S400)と、
前記決定された面の1つまたは複数のn隣接面であって、前記決定された面と選択可能な面の部分集合を形成する1つまたは複数の隣接面を計算すること(S410)と、
前記選択可能な面の部分集合から、前記配向平面と最も近い向きを有する前記3Dオブジェクトの面を識別すること(S420)と、を含む
ことを特徴とする請求項1から請求項5のいずれか1項に記載のコンピュータによって実施される方法。
【請求項7】
選択可能な面の部分集合の面の第1のレンダリングを修正することをさらに含む
ことを特徴とする請求項6に記載のコンピュータによって実施される方法。
【請求項8】
前記識別された面の第2のレンダリングを修正することをさらに含む
ことを特徴とする請求項1から請求項7のいずれか1項に記載のコンピュータによって実施される方法。
【請求項9】
前記3Dオブジェクトの面は、三角形および/または四角形および/または位相面および/またはパラメトリック曲面および/またはプロシージャル曲面から選択された少なくとも1つである
ことを特徴とする請求項1から請求項8のいずれか1項に記載のコンピュータによって実施される方法。
【請求項10】
前記手のジェスチャを検出すること(S20)は、親指を除くすべての指の内転と、親指の外転とを含む
ことを特徴とする請求項1から請求項9のいずれか1項に記載のコンピュータによって実施される方法。
【請求項11】
前記3Dオブジェクトの前記識別された面を、前記手のジェスチャが親指の内転をさらに含むことを検出することによって選択することをさらに含む
ことを特徴とする請求項1から請求項10のいずれか1項に記載のコンピュータによって実施される方法。
【請求項12】
前記手のジェスチャが親指以外のすべての指の外転をさらに含むことを検出することと、
前記選択された面を選択解除することと、をさらに含む
ことを特徴とする請求項11に記載のコンピュータによって実施される方法。
【請求項13】
前記手のジェスチャを検出することは、
親指以外のすべての指の近位指節間関節および遠位指節間関節の伸展を検出すること、および/または
親指以外のすべての指の中手指節関節の伸展を検出すること、および/または
親指を除くすべての横に並んだ指が実質的に接触していることを検出すること、をさらに含む
ことを特徴とする請求項1から請求項12のいずれか1項に記載のコンピュータによって実施される方法。
【請求項14】
請求項1から請求項13のいずれか1項に記載の方法をコンピュータが実行できるようにする命令を含むコンピュータプログラム。
【請求項15】
ディスプレイと、メモリと通信可能に結合された処理回路を備えるシステムであって、前記メモリは、請求項14に記載のコンピュータプログラムを記憶していることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、3D没入環境において3Dオブジェクトの複数の面から面を選択する方法に関する。
【背景技術】
【0002】
オブジェクトの設計、エンジニアリングおよび製造のために、多くのシステムおよびプログラムが市場に提供されている。CADは、コンピュータ支援設計(Computer-Aided Design)の略語であり、例えば、オブジェクトを設計するためのソフトウェアソリューションに関する。CAEは、コンピュータ支援エンジニアリング(Computer-Aided Engineering)の略語であり、例えば、将来の製品の物理的挙動をシミュレートするためのソフトウェアソリューションに関する。CAMは、コンピュータ支援製造(Computer-Aided Manufacturing)の略語であり、例えば、製造プロセスおよび動作を定義するためのソフトウェアソリューションに関する。このようなコンピュータ支援設計システムでは、グラフィカル・ユーザ・インターフェースは、技術の効率に関して重要な役割を果たす。これらの技術は、製品ライフサイクル管理(Product Lifecycle Management:PLM)システムに組み込むことができる。PLMとは、企業が、拡張エンタープライズの概念全体にわたって、製品データを共有し、共通の工程を適用し、構想に始まり製品寿命の終わりに至る製品開発のための企業知識を活用するのを支援するビジネス戦略を指す。ダッソー・システムズが提供するPLMソリューション(製品名CATIA、ENOVIA、DELMIA)は、製品エンジニアリング知識をオーガナイズするエンジニアリング・ハブ、製品エンジニアリング知識を管理する製造ハブ、およびエンジニアリング・ハブと製造ハブの両方に対するエンタープライズ統合と接続を可能にするエンタープライズ・ハブを提供する。全体として、システムは、製品、工程、リソースを結ぶオープンなオブジェクトモデルを提供し、最適化された製品定義、製造準備、生産およびサービスを推進する、動的な知識ベースの製品作成および意思決定支援を可能にする。
【0003】
CADアプリケーションは、正確な3Dオブジェクトをインタラクティブに作成することを可能にする。3Dオブジェクトが対応する現実のオブジェクトを忠実に再現する場合、3Dオブジェクトは正確であると考えられる。1つの基準は、3Dオブジェクトのエンベロープと現実のオブジェクトのエンベロープとの差を最小化することである。したがって、CADアプリケーションで作成された3Dオブジェクトは、従来、3Dオブジェクトの粗い部分のための多くの小さな位相要素を含む。設計のために関心のある位相要素を選択するためのいくつかの手法が実施されている。従来、マウスベースの手法が使用される。
【0004】
ここで、小さな位相要素は、小さな可視表面を有する要素として定義され得る。マウスベースの手法では、小さな位相要素は、小さなクリック可能な表面を有する要素として定義され得る。言い換えれば、マウスベースの手法における小さな位相要素は、ユーザがマウス位置を定義するために非常に正確である必要があるため、選択することが困難である。位相要素は、また、重なり合うことが多く、かつ/あるいは部分的に、あるいは完全に閉塞され得る。したがって、位相要素が小さくなくても、マウスベースの手法を用いたそれらのクリック可能な表面は小さく、またはゼロにさえなり得る。
【0005】
3Dアプリケーションでは、よく知られている問題は、ユーザがどの要素を選択したいかに関する曖昧さである。CADアプリケーションでは、マウスベースの手法は、カーソルによって指し示される最小の要素を選択する傾向があるが、これは曖昧さを完全に解決するものではない。この曖昧さを低減するために、よく知られた解決策は、ユーザに、どのタイプの位相要素を選択したいかを指定させることである。この情報を使用して、要素は選択中にタイプによってフィルタリングされる。この解決策は時間が掛かり、例えば2Dパネルで利用可能な様々なフィルタを表示する必要がある。要素の選択中の別の問題は、1つの要素を選択するのに必要な必須クリック数を減らすことである。例えば、3Dオブジェクトにおける関心のある要素を選択するために、関心のあるゾーンを拡大することが必要となることが多い。3Dシーンの視点を変更することは、関心のある要素が閉塞されるときにも必要である。これらの2つのケースは、ユーザからのいくつかのアクションを必要とし、時間がかかる。
【0006】
近年、3D設計アプリケーションにおいて、手による対話操作が重要性を増している。実際に、没入型技術における最近の進歩は、仮想現実(VR)、拡張現実(AR)および複合現実(MR)において、完全な手の追跡を広く利用可能にしている。仮想現実は、ソフトウェアを用いて作成され、ユーザが信念を保留して、それを現実環境として受け入れるような方法でユーザに提示される人工環境として定義され得る3D没入環境である。仮想現実(VR)では、ユーザの現実の知覚は、完全に仮想情報に基づく。拡張現実(AR)および複合現実(MR)は、3D没入環境が、実際に現実である環境と、現実環境に追加された仮想オブジェクトのいくつかの層によって構成されるという意味で、仮想現実(VR)とは異なる。拡張現実(AR)および複合現実(MR)では、ユーザは、現実の知覚を向上させる追加のコンピュータ生成情報を提供される。一方、仮想現実(VR)では、周囲環境は完全に仮想的である。拡張現実と複合現実の違いは、ユーザが拡張現実(AR)における仮想オブジェクトと直接対話することができないことである。複合現実では、追加のコンピュータ生成情報が一緒に「複合」されて、現実的な環境が生成される。ユーザは、この環境をナビゲートし、現実オブジェクトと仮想オブジェクトの両方と対話することができる。
【0007】
例えば、拡張現実(AR)は、物理的テーブル上に仮想3Dボックスを表示する能力を有する。複合現実(MR)では、ユーザはボックスを持ち上げて開くことができる。
【0008】
仮想現実、拡張現実および複合現実の定義において、現実オブジェクトは、環境世界に物理的に存在するオブジェクトである。
【発明の概要】
【発明が解決しようとする課題】
【0009】
既存のCADアプリケーションのいずれも、没入環境において、手による自然な対話操作によって正確な3Dオブジェクトを作成させることができない。
【0010】
これに関連して、CADシステムの3D没入環境において、3Dオブジェクトの面などの位相要素を手のジェスチャを使用することによって選択するために改善された方法が依然として必要とされている。
【課題を解決するための手段】
【0011】
したがって、3D没入環境において、3Dオブジェクトの複数の面から面を選択する方法が提供される。各面は、3D没入環境において配向されている。本方法は、3D没入環境において、3Dオブジェクトを表示することを含む。本方法は、手のジェスチャを検出することをさらに含む。手のジェスチャは、親指以外の全ての指の内転を含む。本方法は、前記3D没入環境において手のひら、および/または手の甲で形成される配向平面を決定することをさらに含む。本方法は、前記配向平面と最も近い向きを有する前記3Dオブジェクトの前記面を識別することをさらに含む。
【0012】
そのような方法は、手による対話操作を使用して、没入環境における正確な3Dオブジェクトを作成するための改善された方法を構成する。
【0013】
本方法は、以下のうちの1つまたは複数を含むことができる。
【0014】
前記3Dオブジェクトの各面および前記配向平面は、法線をさらに有し、前記識別すること(S40)は、前記配向平面の前記法線と最も近い方向を有する前記3Dオブジェクトの面を識別することをさらに含む。
【0015】
前記3Dオブジェクトの各面および前記配向平面は、前記3D没入環境における位置をさらに有し、前記識別すること(S40)は、
【数1】
を満たす関数fを最小化することをさらに有し、
であり、
ここで、
Faceは着目面であり、
【数2】
かつ
【数3】
かつ
【数4】
であり、
||FH||は、前記面Faceの位置と前記手の前記配向平面の位置Hとの、前記3D没入環境におけるユークリッド距離であり、
【数5】
は、前記面Faceの法線と前記手の配向平面の法線との前記3D没入環境における角度である。
【0016】
前記関数fの項||FH||は、||FH’||によって置き換えられ、H’は
【数6】
によって計算され、
ここで、
H’は、仮想の手の配向平面の位置であり、
Eは、ユーザの視点の位置であり、
Hは、ユーザの手の配向平面の位置であり、
EHは、EからHへのベクトルであり、
Omaxは、Eから最も遠い前記3Dオブジェクトの面の位置であり、
Hmaxは、前記ユーザの身体の横断面におけるEから最も遠い前記ユーザの手の中心の位置であり、
【数7】
であり、
||EOmax||は、EからOmaxへのベクトルのノルムであり、
||EHmax||は、EからHmaxへのベクトルのノルムである。
【0017】
前記関数fの項||FH||または||FH’||は、面の位置と、頭部または利き目の中心または両目の中間の点から3Dモデルの中心に投射される光線と前記3Dモデルとの少なくとも1つの交点との、前記3D没入環境におけるユークリッド距離をさらに含む。
【0018】
前記識別すること(S40)は、
前記配向平面と最も近い向きを有する前記3Dオブジェクトの前記面を決定すること(S400)と、
前記決定された面の1つまたは複数のn隣接面であって、前記決定された面と選択可能な面の部分集合を形成する1つまたは複数の隣接面を計算すること(S410)と、
前記選択可能な面の部分集合から、前記配向平面と最も近い向きを有する前記3Dオブジェクトの前記面を識別すること(S420)と、を含む。
【0019】
選択可能な面の部分集合の面の第1のレンダリングを修正すること。
【0020】
前記識別された面の第2のレンダリングを修正すること。
【0021】
前記3Dオブジェクトの面は、三角形および/または四角形および/または位相面および/またはパラメトリック曲面(parametoric surface)および/またはプロシージャル曲面(procedual suraface)であってもよい。
【0022】
前記手のジェスチャを検出すること(S20)は、親指を除くすべての指の内転と、親指の外転とを含む。
【0023】
前記手のジェスチャが親指の内転をさらに含むことを検出することによって、前記3Dオブジェクトの前記識別された面を選択すること。
【0024】
前記手のジェスチャが、親指以外のすべての指の外転と、前記選択された面の選択解除とをさらに含むことを検出すること。
【0025】
前記手のジェスチャを検出することは、
親指以外のすべての指の近位指節間関節および遠位指節間関節の伸展を検出すること、および/または
親指以外のすべての指の中手指節関節の伸展を検出すること、および/または
前記手のジェスチャを検出することは、親指を除くすべての横に並んだ指が実質的に接触していることを検出することをさらに含むこと、をさらに含む。
【0026】
本方法を実行するための命令を含むコンピュータプログラムがさらに提供される。
【0027】
ディスプレイと、メモリと通信可能に結合された処理回路とを備えるシステムがさらに提供され、前記メモリは前記コンピュータメモリを記憶している。
【0028】
本発明の実施形態を、非限定的な例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【0029】
【
図2】本方法のステップS40のフローチャートの一例を示す。
【
図4】デフォルト姿勢における右手の骨格の後前方図の例を示す。
【
図5】デフォルト姿勢における右手の仮想骨格の後前方図における指の外転及び内転の方向の例を示す。
【
図6】デフォルト姿勢における右手の仮想骨格の側面図における指の屈曲、伸展および過伸展の方向の例を示す。
【
図7】デフォルト姿勢における右手の仮想骨格の後前方図の例を示す。
【
図8】デフォルト姿勢における右手の仮想骨格の側面図の一例を示す。
【
図9】検出された姿勢における右手の仮想骨格の後前方図の例を示す。
【
図10】検出された姿勢における右手の仮想骨格の側面図の一例を示す。
【発明を実施するための形態】
【0030】
図1のフローチャートを参照すると、3D没入環境において、3Dオブジェクトの複数の面の中から面を選択するための、コンピュータによって実施される方法が提案される。各面は、3D没入環境において配向されている。本方法は、3D没入環境において3Dオブジェクトを表示すること(S10)を含む。本方法は、手のジェスチャを検出すること(S20)をさらに含む。手のジェスチャは、親指以外のすべての指の内転を含む。本方法は、3D没入環境において手のひら、および/または手の甲で形成される配向平面を決定すること(S30)をさらに含む。本方法は、配向平面と最も近い向きを有する3Dオブジェクトの面を識別すること(S40)をさらに含む。
【0031】
これは、手による対話操作を使用して、CADシステムの3D没入環境において3Dオブジェクトの面の中から面を選択するための改善された方法を構成する。特に、本方法は、ユーザがどの要素を選択したいかに関する曖昧さの問題を解決する。上述したように、CADアプリケーションでは、3Dオブジェクトは多くの小さな要素を含む。要素を選択することは、要素のサイズまたはユーザの視点からの要素の可視表面のサイズのために、マウスベースの手法では困難であり得る。実際に、サイズが小さい場合、マウスベースの手法では、ユーザは、マウスを非常に正確に動かす、かつ/あるいは拡大する、かつ/あるいは3Dシーンの視点を変更する必要がある。ここで提示される方法は、この欠点を解決する。実際に、本方法は、ユーザがどの要素を選択したいかを決定するために、手のジェスチャ中に、手の甲および/または手のひらの平面の向きを使用している。本方法は、また、ユーザがどの要素を選択したいかを決定するために、ユーザの手のジェスチャ中に、手の甲および/または手のひらの平面の向きを、手の位置と組み合わせることができる。位置および向きの組み合わせを使用することによって、3Dオブジェクトのすべての要素が区別され、したがって、本方法を用いてユーザによって選択され得る。
【0032】
本方法は、コンピュータによって実施される。これは、本方法のステップ(または実質的にすべてのステップ)が、少なくとも1つのコンピュータ、または任意のシステムによって同様に実行されることを意味する。したがって、本方法のステップは、場合によっては完全に自動的に、または半自動的に、コンピュータによって実行される。例において、本方法のうちの少なくともいくつかのトリガリングは、ユーザとコンピュータとの対話を通して実行され得る。必要とされるユーザとコンピュータとの対話のレベルは、予見される自動化のレベルに依存し、ユーザの希望を実現する必要性とバランスを取ることができる。例において、このレベルは、ユーザ定義および/または事前定義され得る。
【0033】
例えば、検出すること(S20)および決定すること(S30)は、ユーザの行動に部分的に依存する。検出すること(S20)は、親指以外のすべての指の内転を伴うユーザの手のジェスチャを含むユーザの行動の結果として実行される。決定すること(S30)は、配向平面がユーザの手のひらおよび/または手の甲で形成されるユーザの手のジェスチャを含むユーザの行動の結果として実行される。
【0034】
方法のコンピュータによる実施の典型的な例は、この目的のために適合されたシステムを用いて本方法を実行することである。システムは、メモリに結合されたプロセッサおよびグラフィカルユーザインタフェース(GUI)を含むことができ、メモリは、本方法を実行するための命令を含むコンピュータプログラムを記録している。メモリはまた、データベースを記憶してもよい。メモリは、場合によってはいくつかの物理的に別個の部分(例えば、1つはプログラム用、場合によっては、1つはデータベース用)を備える、そのような記憶に適合された任意のハードウェアである。
【0035】
図3はシステムの例を示し、当該システムはクライアントコンピュータシステム、例えばユーザのワークステーションである。
【0036】
この例のクライアントコンピュータは、内部通信バス1000に接続された中央処理装置(CPU)1010と、同じくバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータには、バスに接続されたビデオランダムアクセスメモリ1100に関連付けられたグラフィック処理ユニット(GPU)1110がさらに設けられる。ビデオRAM1100は、当技術分野ではフレームバッファとしても知られている。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラム命令およびデータを有形に具現化するのに適した大容量メモリデバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよびリムーバルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMディスク1040を含む、すべての形態の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完されてもよく、またはそれに組み込まれてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御デバイス、キーボードなどの触覚デバイス1090を含んでもよい。カーソル制御デバイスは、ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置決めすることを可能にするためにクライアントコンピュータで使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御デバイスは、システムに制御信号を入力するための多数の信号発生装置を含む。典型的には、カーソル制御デバイスはマウスであってもよく、マウスのボタンは信号を生成するために使用される。代替的にまたは追加的に、クライアントコンピュータシステムは、感知パッドおよび/または感知スクリーンを備えてもよい。
【0037】
コンピュータプログラムは、コンピュータによって実行可能な命令を含むことができ、命令は、上記のシステムに本方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路で、またはコンピュータハードウェア、ファームウェア、ソフトウェアで、またはそれらの組み合わせで実施されてもよい。プログラムは、装置として、例えば、プログラマブルプロセッサによる実行のために機械可読記憶デバイスにおいて有形に具現化される製品として実施され得る。方法ステップは、入力データに対して動作し、出力を生成することによって本方法の機能を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行され得る。したがって、プロセッサは、プログラム可能であり、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように結合され得る。アプリケーションプログラムは、高水準手続型プログラミング言語またはオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリ言語または機械語で実施することができる。いずれの場合も、言語は、コンパイルされた言語または解釈された言語とすることができる。プログラムは、完全インストールプログラムまたは更新プログラムであってもよい。システム上でのプログラムの適用は、いずれの場合も、本方法を実行するための命令をもたらす。
【0038】
本方法は、3Dオブジェクトを操作する。以下では、3Dオブジェクトへのいかなる言及も、デジタル的にモデル化された3Dオブジェクトを指し、物理的な3Dオブジェクトを指さない。デジタル的にモデル化された3Dオブジェクトは、例えば(機械的な)部品または部品のアセンブリ(または、等価的に部品のアセンブリであり、部品のアセンブリは本方法の観点から部品自体として見ることができ、または本方法はアセンブリの各部品に独立して適用することができる)、またはより一般的には任意の剛体アセンブリ(例えば可動機構)など、例えばCADソフトウェアソリューションまたはCADシステムを用いた仮想設計の完了後に現実世界で製造される製品の幾何学的形状を表すことができる。CADソフトウェアソリューションは、航空宇宙、建築、消費財、ハイテク装置、産業機器、輸送、海洋、および/または沖合のオイル/ガス生産または輸送を含む、様々な無制限の産業分野における設計を可能にする。したがって、本明細書の3Dモデル化オブジェクトは、地上車両(例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモータ機器、トラックおよびバス、列車を含む)の一部、航空機(例えば、機体機器、航空宇宙機器、推進機器、防衛製品、航空機器、宇宙機器を含む)の一部、海軍車両(例えば、海軍機器、商船、沖合設備、ヨットおよび作業船、海洋設備を含む)の一部、一般機械部品(例えば、工業製造機械、大型移動機械または機器、設置機器、工業機器製品、加工金属製品、タイヤ製造製品を含む)、電気機械または電子部品(例えば、消費者電子機器、セキュリティおよび/または制御および/または計装用製品、コンピューティングおよび通信機器、半導体、医療機器および機器を含む)、消費財(例えば、家具、家庭および庭用製品、レジャー用品、ファッション製品、ハード商品小売業者の製品、ソフト商品小売業者の製品を含む)、包装(例えば、食品および飲料ならびにタバコ、美容およびパーソナルケア、家庭用製品包装を含む)などの任意の機械部品であり得る工業製品を表し得る。
【0039】
3Dオブジェクトは、少なくとも以下の3つのタイプの位相実体、すなわち、面、エッジ、および頂点から構成される。定義では、面とは表面の境界付けされた部分のことである。エッジとは曲線の境界付けされた部分のことである。頂点とは、3D空間内の点のことである。これらは、以下のように互いに関連している。曲線の境界付けされた部分は、曲線上にある2つの点(頂点)によって定義される。表面の境界付けされた部分は、その境界によって定義され、この境界は表面上にある一組のエッジである。面の境界のエッジは、頂点を共有することによって接続される。面は、エッジを共有することによって接続される。2つの面は、エッジを共有する場合、隣接する。同様に、2つのエッジは、頂点を共有する場合、隣接する。面のすべてのエッジは、同じ平面上にあってもなくてもよい。面の法線は、その面の2つのエッジのベクトルクロス積を取ることによって計算することができる。面のすべてのエッジが同じ平面上にあるわけではない場合、クロス積を計算するために選択されたエッジに応じて、様々な法線を計算することができることに留意されたい。法線は編集されてもよい。例えば、すべてのエッジが同一平面上にない面の場合、法線を編集することが多い。法線は、面の方向を与える。言い換えれば、法線は、面の表側および裏側を決定する。従来、3Dオブジェクトの場合、その面の法線は、3Dオブジェクトの外側に向けられる。本発明の方法は、3Dオブジェクトの内側に向けられた3Dオブジェクトの面の法線を用いて実行される可能性があることを理解した上で、簡単のために、以下ではそのように考えることとする。面の向きは、面の方向から差し引かれてもよい。当該面の向きは、その法線に平行な線によって実現される。面のこの線の向きも編集することができる。面は、位置も有する。面の位置は、その重心によって与えられる。面の位置も編集することができる。
【0040】
以下では、すべての向き、方向および位置が3D没入環境の基準フレームにおいて計算されると仮定する。
【0041】
3Dオブジェクトはまた、エッジまたは線を用いて、場合によっては面または表面を用いて定義されてもよい。線、エッジ、または表面は、様々な方法、例えば非一様有理Bスプライン(NURBS)で表すことができる。これらのエッジ、線、および/または表面は、3Dオブジェクトのジオメトリを生成することができる入力として使用することができ、3Dオブジェクトの表現を生成することができる。本明細書で説明する方法は、非一様有理Bスプライン(NURBS)線、エッジ、および表面に基づいて3Dオブジェクト上で使用され得る。より一般的には、表面は、パラメトリック曲面および/またはプロシージャル曲面であってもよい。パラメトリック曲面は、2つのパラメータ
【数8】
を有するパラメトリック方程式によって定義されるユークリッド空間
【数9】
内の曲面である。プロシージャル曲面は、プロシージャとして定義される曲面である。細分割曲面は、プロシージャル曲面と考えることができる。細分割曲面は、より粗い区分的線形ポリゴンメッシュの仕様を介して滑らかな曲面を表す方法である。
【0042】
ここで
図1を参照すると、本方法は、3D没入環境において少なくとも1つの3Dオブジェクトを表示する(S10)。3D没入環境に2つ以上の3Dオブジェクトが表示されている場合、関心のある3Dオブジェクトとして、識別される3Dオブジェクトが1つある。以下、関心のある3Dオブジェクトを3Dオブジェクトと呼ぶ。
【0043】
上で定義したように、3D没入環境は、仮想現実、拡張現実、または複合現実において使用することができる。3D没入環境は、基準フレームを有する。したがって、この3D没入環境におけるすべてのオブジェクト、およびすべてのそれらの位相的要素は、この基準フレームに対して相対的に配置され得る。次いで、本方法は、3D没入環境のいずれかの3Dオブジェクトの面を選択するために、仮想現実、拡張現実、および複合現実において使用され得る。本方法はまた、少なくとも1つの3Dオブジェクトの位置特定を可能にする基準フレームを有する環境を含む任意の他の現実において使用され得る。
【0044】
次に、手のジェスチャが検出される(S20)。手のジェスチャは、親指以外の全ての指の内転を含む。
【0045】
3D没入環境とのユーザの対話は、ユーザの身体の一部の位置および向きを追跡することによって、またはユーザの身体のいくつかの部分のそれぞれの位置および向きを追跡することによって、またはさらには、ユーザの身体全体の位置および向きを追跡することによって行うことができる。
【0046】
例において、ユーザの身体の一部は、ユーザの手である。
【0047】
手の追跡は、直接的かつ自然な対話操作を提供し、没入体験を改善する。実際、ユーザは、特定の仮想現実、複合現実、または拡張現実ハンドコントローラを使用する必要がない。従来、3D没入環境において、3Dオブジェクトと対話するために、方法は、仮想3D線で3Dオブジェクトをポイントした後に、特定のコントローラのボタンをクリックすることを含む。
【0048】
手の追跡は、手の特定の姿勢またはジェスチャの検出を可能にする。例えば、特定の姿勢についての手の追跡は、ビデオレコーダまたは手袋を用いて行うことができ、特定のジェスチャについての手の追跡は、加速度計を用いて行うことができる。本方法は、ユーザの右手または左手を使用することができる。姿勢は、身体の一部を使用するポーズであり、ここでのジェスチャは、一部がその姿勢を修正することを可能にする動きとして定義され得る。言い換えれば、第2の姿勢は、第1の姿勢から開始されたジェスチャの結果として見られ得る。したがって、ジェスチャを検出することは、第2の姿勢を検出し、この第2の姿勢を第1の姿勢と比較することによって行われ得る。検出された第2の姿勢が第1の姿勢と同じである場合、ジェスチャは発生していない。検出された姿勢が第1の姿勢と異なる場合、ジェスチャは、第2の姿勢と第1の姿勢との差として定義され得る。より一般的には、ジェスチャは、ユーザの身体の一部、例えばユーザの手の位置、および/または向きの変化によってトリガされる姿勢の変化として定義され得る。例えば、本方法では、手のジェスチャを検出することは、デフォルト姿勢からの現在の姿勢の差を計算することからなることができる。本例では、デフォルト姿勢は第1の姿勢に対応し、現在の姿勢は第2の姿勢に対応する。差は、ユーザの手の位置および/または向きの変化によって推測され得る。特定の姿勢についての手の追跡が、高いフレームレート、例えば少なくとも10フレーム/秒で姿勢を撮像するデバイスを用いて実行され、したがって、第1の姿勢から中間の第2の姿勢を有する第1の姿勢への動きを含む動きを検出しないリスクが非常に低いことは注目に値する。デフォルト姿勢は、親指以外のすべての指の内転の検出を可能にする任意の姿勢であり得る。右手のデフォルト姿勢の一例を、
図7および
図8に示す。このデフォルト姿勢は、右手を休ませるための一般的な姿勢の一例である。すなわち、デフォルト姿勢は、すべての筋肉が弛緩した右手のための姿勢の一例である。デフォルト姿勢は、本方法の任意のステップで使用される、特定の姿勢として検出されない任意の姿勢として定義することもできる。以下、説明の便宜上、すべてのジェスチャを、
図7および
図8に示すデフォルト姿勢の差分として定義する。
【0049】
ジェスチャの検出は、様々な方法で行うことができる。一例では、ジェスチャは、身体の様々な部分の相対的な位置および/または向きの数学的な比較によって検出することができ、形態学的変動を考慮にいれるために、ある程度の許容差がある。なお、システムがユーザの形態に合わせて調整するために、キャリブレーション段階が必要とされ得ることに留意されたい。別の例では、ジェスチャはまた、異なる可能なジェスチャを区別するためにニューラルネットワークをトレーニングすることによって、機械学習技術を使用して検出され得る。
【0050】
例において、手のジェスチャの運動学的パラメータは、例えば
図5に示されるように、仮想骨格150を通して提供されてもよい。仮想骨格は、1つまたは複数の関節、および1つまたは複数の骨を含む。この仮想骨格は、実際の骨格を複製する必要はない。言い換えれば、仮想骨格の関節および骨と、実際の骨格の関節および骨とが対応していない場合がある。例えば、手の仮想骨格は、手の実際の骨格よりも少ないか、または多い関節を有し得る。また、仮に仮想骨格の各関節が実際の骨格の関節に対応していたとしても、その位置や向きが異なる場合がある。仮想骨格の関節の直線速度、角速度、位置および向きを用いることで、実際の骨格のジェスチャや姿勢を検出することができる。簡単にするため、後に、仮想骨格が手の実際の骨格を複製すると考える。
【0051】
本発明の方法は、説明した様々な姿勢を検出するために使用される検出方法とは無関係であることを留意されたい。したがって、仮想的な骨格に基づいて、または仮想的な骨格に基づかずに、姿勢の変化(例えば、ユーザの身体の一部の位置および/または向きの変化)を検出することができる任意の技術が使用され得る。
【0052】
手の実際の骨格の一例を
図4に示す。手は、慣例的に、親指、人差し指、中指、薬指、および小指と呼ばれる5本の指を含む。親指は、中手指節関節10と指節間関節60とから構成される。人差し指は、中手指節関節20、近位指節間関節70および遠位指節間関節110から構成される。中指は、中手指節関節30、近位指節間関節80および遠位指節間関節120から構成される。薬指は、中手指節関節40、近位指節間関節90および遠位指節間関節130から構成される。小指は、中手指節関節50、近位指節間関節100および遠位指節間関節140から構成される。手の残りの部分は、3つの領域に分割することができる。第1の領域は手のひらであり、これは手の前部の中央領域である。第2の領域は手の甲であり、これは手の後部の、手のひらに対応する領域である。第3の領域は、手のひらの近位部分に位置する手のかかとである。
【0053】
内転は、身体の正中線に向かう身体部分のジェスチャである。
図5の例に示すように、親指以外の指については、内転は、各指を線190に向かって移動させるジェスチャである。
図5に示される例として、この線190は、手の重心および手の長手方向軸によって画定され得る。親指以外のすべての指の内転240は、それぞれ人差し指、中指、薬指、および小指の中手指節関節20、30、40、50の内転である。このジェスチャは、掌骨間筋を含む筋肉の収縮の結果である。親指の内転240は、親指を手のひらの平面内に移動させることによって、親指を線190から離れるように移動させる。親指の内転240は、中手指節関節10の内転である。親指の内転は、母指内転筋を含む筋肉の収縮の結果である。
【0054】
図6の例に示されるように、屈曲260は、人差し指、中指、薬指、および小指を線190から移動させ、それらを手のひらに向かって移動させるジェスチャである。伸展270は、人差し指、中指、薬指および小指を線190に向かって移動させ、それらを手のひらから離れるように移動させるジェスチャである。過伸展280は、人差し指、中指、薬指および小指を線190から離して動かし、それらを手の甲に向かって動かすジェスチャである。これらの3つのジェスチャは、それぞれ人差し指、中指、薬指および小指の中手指節関節20、30、40、50、近位指節間関節70、80、90、100および遠位指節間関節110、120、130、140を含む。伸展は、指伸筋ならびに手の背側および手のひら側の骨間筋および虫様筋を含む筋肉の収縮の結果である。親指の内転は、親指を手のひらに近づけるジェスチャである。親指の内転は、主に内転筋によって生じる。親指の内転はまた、親指を手のひらおよび人差し指の側面に向かって移動させ得る。親指の外転は、手のひらから親指を離すジェスチャである。親指を外転させることにより、親指を手のひらおよび人差し指の側面から離すこともできる。親指の内転は、母子外転筋によって部分的に生じる。親指の内転および外転は、親指の中手指節関節10を含む。親指の屈曲は、親指を線190に向かって移動させる。親指の屈曲は、主に短母趾屈筋によって生じる。親指の伸展は、親指を線190から遠ざける。親指の伸展は、主に長指伸筋によって生じる。親指の内転、外転、屈曲および伸展は、親指の中手指節関節10を含む。
【0055】
再び
図1を参照すると、親指以外のすべての指の内転を含む手のジェスチャを検出した(S20)後、本方法は、手のひらおよび/または手の甲で形成される配向平面を決定すること(S30)を含む。配向平面を決定すること(S30)は、手のひらおよび/または手の甲の向きを評価することに基づく。手のひらおよび/または手の甲は、親指以外のすべての指が内転されるとき、平坦な表面としてみなされ得る。したがって、親指以外のすべての指を内転させたときの手の甲を、平面とみなすことができる。平面の任意の点の法線を使用することによって、または平面の3つの点の位置を使用することによって、親指以外のすべての指が内転されるときの手のひらおよび/または手の甲の向きを近似するために、クロス積を用いて平面の法線を計算する。
【0056】
次に、
図18について説明する。
図18は、仮想骨格150の手首関節160の向きを用いて決定すること(S30)の例を示す。実際、仮想骨格150の手首関節160は、手のひらおよび/または手の甲を表す配向平面の点であり、したがって、手首関節160の向きは、配向平面の向きである。
【0057】
図19は、手首関節160の位置と、人差し指の中手指節関節170の位置と、小指の中手指節関節180の位置とに基づいて決定すること(S30)の別の例を示す。3つの位置は三角形を形成する。三角形の法線は、その三角形の2つの辺のベクトルクロス積を取ることによって計算することができる。法線は、クロス積を計算するために選択された辺に応じて、手のひらおよび/または手の甲の方向を与える。法線は、これらの辺がクロス積を計算するために使用される順序にも依存する。三角形の向きは、三角形のすべての角がある平面に垂直な線によって具体化されてもよい。三角形の向きも編集することができ、したがって平面に対して垂直ではない。
【0058】
決定すること(S30)は、仮想骨格なしで行われてもよい。一例として、決定すること(S30)は、ビデオレコーダから決定する(S30)ようにトレーニングされたニューラルネットワークに基づいてもよい。
【0059】
ユーザがシステムに向きを提供することを可能にするために手のひらおよび/または手の甲を使用することは、本方法をより信頼できるものにする。実際、これらの領域の相対的な平面は、手のジェスチャによってわずかに決定される。さらに、これらの領域は、手の最大表面であり、これは、手の向きの決定の信頼性を高める。手のひらおよび/または手の甲の位置は、例えば、手首関節160、または手首関節160、人差し指の中手指節関節170の位置、および小指の中手指節関節180の位置によって形成される三角形の重心に位置し得る。
【0060】
次いで、本方法は、配向平面と最も近い向きを有する3Dオブジェクトの面を識別すること(S40)をさらに含む。3Dオブジェクトの各面は平面を画定し、配向平面と最も近い向きは、配向平面と、面によって形成された平面の各々(または少なくとも、その一部)との間の比較によって決定されることを理解されたい。次に、最も近い向きの決定の例を説明する。
【0061】
一例として、各面の向きは、線によって具体化され得る。各面について、その向きを表す線と、手のひらおよび/または手の甲によって形成される平面の向きを表す線との間の角度が計算される。最小値角度を有する面は、配向平面と最も近い向きを有する3Dオブジェクトの面である。ここで、すべての角度が[0;2PI]の間で定義されると考える。
【0062】
本開示の例では、識別すること(S40)は、3Dオブジェクトの各面を考慮することによって、反復的に行われ得る。配向平面と最も近い向きを有する3Dオブジェクトの面を決定するときに、3Dオブジェクトの面の部分集合のみが使用され得ることを理解されたい。例えば、(例えば、ユークリッド距離による)ユーザの手に最も近い面のみが使用されてもよい。
【0063】
3Dオブジェクトの面の中から面を選択するために向きを使用することは、関心のある面の選択を加速する。3Dオブジェクトの面の中から面を選択するために向きを使用することはまた、ユーザがどの面を選択したいかの曖昧さを低減する。実際、正確な3Dオブジェクトは、デジタルでモデル化された3Dオブジェクトであり、物理的な3Dオブジェクトを非常に高い精度で複製する。例えば、正確な3Dモデルは、一般に、粗い表面を複製するための多くの小さな面と、平坦な表面を複製するための大きい面とを有する。この場合、正確な3Dオブジェクトの隣接面は、有意な配向差を有する。したがって、3Dオブジェクトの面の中から面を選択するために向きを使用することによって、本方法は、3Dオブジェクトが多くの小さな面を有する場合、すなわち正確な3Dオブジェクトの場合に、特に有用である。
【0064】
例において、識別すること(S40)は、最も近い方向を有する3Dオブジェクトの面を、当該面の法線ベクトルと、配向平面の法線ベクトルとの間で識別することを含むことができる。例えば、識別すること(S40)は、3Dオブジェクトの各面または面の部分集合を考慮することによって反復的に実行され得る。考慮される各面について、その法線ベクトルと、配向平面の法線ベクトルとの間の角度が計算される。最小値角度を有する面は、配向平面と最も近い方向を有する3Dオブジェクトの面である。ここで、すべての角度が[0;2PI]の間で定義されると考える。
【0065】
識別すること(S40)の最中に、向きの代わりに方向を使用することによって、ユーザがどの面を選択したいかの曖昧さがさらに低減される。実際、2つの面が反対の方向を有し、これらの面の一方が配向平面の法線に平行な法線を有する場合、識別すること(S40)の間に向きの代わりに方向を使用することによって、ユーザが選択したい曖昧さが除去される。
図15に示されるように、3Dオブジェクトの面の中から面を選択するために方向を使用することは、ユーザの視点からオブジェクトの背後に位置する面220を選択するために、特に有用である。一例として、ここでは、手の甲の配向平面の方向が、識別すること(S40)の間に使用される。したがって、右手の手のひらを頭に向かって回転させることによって、本方法は、ユーザの視点からオブジェクトの後ろに位置する面を選択することを可能にする。
図14は、ユーザ視点からの3Dオブジェクトを示す。
図14に示されるように、3Dオブジェクトの複数の面から面を選択するために方向を使用することはまた、ユーザの観点から小さい可視表面を有する面220を選択するために、特に有用である。
【0066】
例において、識別すること(S40)では、複数の面から以下の式(1)で計算されるfで表される関数を最小化する面を識別することを含むことができる。
【数10】
ここで、
Faceは関心のある面であり、
【数11】
かつ
【数12】
かつ
【数13】
であり、
||FH||は、3D没入環境における、面Faceの位置と手の配向平面の位置Hとの間のユークリッド距離であり、
【数14】
は、面Faceの法線と手の配向平面の法線との間の3D没入環境における角度である。
【0067】
関数fは、2つの項の加重和である。実際、第1項||FH||に係数w
1が乗算され、第2項
【数15】
に係数w
2が乗算される。
【0068】
第1の重み付けされた項||FH||は、面Faceの位置と、手のひらおよび/または手の甲の配向平面の位置Hとの間の、3D没入環境におけるユークリッド距離である。例えば、面Faceの位置は、面の重心に位置してもよい。手のひらおよび/または手の甲の配向平面の位置は、一例として、仮想骨格の手首関節160の位置にされ得る。
【0069】
第2の重み付けされた項
【数16】
は、面Faceの法線ベクトルと、手のひらおよび/または手の甲の配向平面の法線ベクトルとの間の角度である。第2の重み付けされた項はまた、それらの方向を使用する代わりに、面Faceの向きと、手のひらおよび/または手の甲の配向平面の向きとに基づき得る。
【0070】
各重みw1およびw2は、ゼロ以上であり得る。2つの重みの合計は、厳密にゼロより大きい。重みのうちの1つがゼロに等しい場合、それは、2つの項のうちの1つだけが関数において考慮されることを意味する。一例として、w1は0.1~0.5に設定されてもよく、w2は0.5~0.9に設定されてもよい。
【0071】
重みw1およびw2は、事前に計算され得る。例えば、それらは、3Dオブジェクトの面の数およびサイズに基づいて、あらかじめ計算されてもよい。重みw1およびw2は、例えば、3Dオブジェクトを含む3D没入環境のロード時に、あらかじめ計算されてもよい。3Dオブジェクトが多くの小さい面を有する場合、第2の項の重みは、第1の項の重みよりも大きくなり得る。重みはまた、使用されるデバイスに依存し得る。例えば、いくつかのデバイスは、手の位置に対して限られた精度を与えるが、向きに対してはより良好な精度を与えることができる。重みは、本方法の間に変化してもよい。例えば、重みは、ユーザの視野内に位置する3Dオブジェクトの表面のうちの3Dオブジェクトの面の数およびサイズに応じて変化し得る。視野は、所与の時間における視察可能な環境の範囲として定義され得る。したがって、視野が、本方法中に変化する可能性があるので、重みw1およびw2も変化する可能性がある。
【0072】
一例では、識別すること(S40)は、3Dオブジェクトの各面を考慮することによって、反復的に行われ得る。別の例では、識別すること(S40)は、3Dオブジェクトの部分集合の各面を考慮することによって、反復的に行われ得る。各面について、関数fの結果が計算される。最小値を有する面は、関数fを最小化する3Dオブジェクトの面である。
【0073】
例において、関数fの項|FH|は、項||FH’||によって置き換えられ得る。H’は、式(2)を使用して計算される。
【数17】
ここで、
H’は、仮想の手の中心の計算された位置であり、
Eは、ユーザの視点の位置であり、
Hは、ユーザの手の中心の位置であり、
EHは、EからHへのベクトルであり、
Omaxは、Eから最も遠い3Dオブジェクトの面の位置であり、
Hmaxは、ユーザの身体の横断面におけるEから最も遠いユーザの手の中心の位置であり、
【数18】
であり、
||EOmax||は、EからOmaxへのベクトルのノルムであり、
||EHmax||は、EからHmaxへのベクトルのノルムである。
【0074】
H’は、仮想の手の配向平面の計算された位置である。仮想の手は、3D没入環境において、ユーザの視点Eからユーザの手よりも少なくとも遠くに仮想的に位置する手として定義することができる。仮想の手を使用することは、項||FH’||がユーザの視点からの面の距離に関して常に適切であることを保証するために有用である。仮想の手は、ユーザの手よりも、ユーザの視点Eから近くなくてもよい。ユーザの視点Eは、例えば、ユーザの頭の中心、ユーザの利き目、またはユーザの両目の中間に位置してもよい。Omaxは、ユーザの視点Eから最も遠い3Dオブジェクトの面の位置である。一例として、ユーザの視点Eから最も遠い3Dオブジェクトの面として考慮される面は、本方法の開始時に、例えば、検出すること(S20)の開始時に決定されてもよい。一例として、ユーザの視点Eから最も遠い3Dオブジェクトの面として考慮される面も、本方法の全体にわたって更新され得る。考慮される面をユーザの視点Eから最も遠い3Dオブジェクトの面として更新することは、ユーザの視点Eおよび/または3Dオブジェクトが、本方法の間に移動する場合に、特に有用である。言い換えれば、一例として、Omaxは、検出すること(S20)の間に決定されてもよく、本方法の間に更新されてもよい。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と考える。
【0075】
仮想の手を使用することは、(より一般的には、3D環境における)3Dオブジェクトとのユーザの対話を改善する。
図20および
図21の例は、仮想の手の使用による人間工学の改善を示す。
【0076】
図20の例では、仮想の手を使用することにより、ユーザは、自分の腕を完全に伸ばす必要なく、3Dオブジェクトの任意の面を選択することができる。腕を伸ばしたままにしておくことは、ユーザにとって疲れることもあり、したがって、仮想の手を使用することは、この問題を解決する。
【0077】
図21の例では、仮想の手を使用することにより、ユーザは、ユーザの視点Eを動かすことなく、3Dオブジェクトの任意の面を選択することができる。実際に、一例として、最も遠い3Dオブジェクトの面とユーザの視点Eとの距離が、ユーザの身体の横断面におけるEから最も遠いユーザの手の中心の位置の距離よりも大きいとき、3Dオブジェクトのいくつかの面は、仮想の手を使用せずに選択可能でないことがある。この場合、仮想の手は、ユーザの手よりもユーザの視点Eから遠い位置にある。仮想の手を使用しない場合、項||FH||は、ユーザの視点Eから最も遠い3Dオブジェクトの面の選択にペナルティを課すことになる。したがって、本方法は、この項によってバイアスされる。仮想の手は、3D没入環境においてユーザの手の位置を仮想的に移動させることによってこの問題を解決し、仮想H’が常に少なくとも3Dオブジェクトの最も遠い面まであり、両方の位置がユーザの視点Eから考慮されることを確実にする。
【0078】
一例では、仮想の手を使用することは、仮想の手から送信された光線投射と組み合わされ得る。この組み合わせは、例えば、ユーザの手がユーザの頭部に非常に近い場合に起動され得る。光線の方向は、配向平面に直交するか、または仮想の手の手のひら/甲の中心から3Dオブジェクトの中心に向かってもよい。この組み合わせは、例えば、現実の障害物によって囲まれ得る3Dオブジェクトの任意の面を選択するために、複合現実または拡張現実において非常に有用であり得る。
【0079】
例において、(それぞれ、式(1)または式(2)で計算される)関数fの項||FH||または||FH’||は、面の位置と3Dモデルとユーザの視点Eから投射される光線との少なくとも1つの交点との間の3D没入環境におけるユークリッド距離をさらに含むことができる。光線は、例えば、頭部もしくは利き目の中心、または両目の間の点から3Dモデルの中心に投射され得る。投射の方向は、例えば、ユーザの視線またはユーザの頭部の方向によって定義され得る。投射の方向は、例えば、ユーザの視点Eの位置から3Dモデルの中心の位置まで計算されてもよい。3Dモデルの中心は、例えば、3Dモデルの境界ボックスの中心として定義され得る。一例として、ユーザの視点Eの位置から3Dモデルの中心の位置まで、投射の方向が算出される。
【0080】
面の位置と、ユーザの視点Eから投射される光線と3Dモデルとの少なくとも1つの交点との間の3D没入環境におけるユークリッド距離に基づく項を、項||FH||または||FH’||に追加することにより、本方法がユーザの視点Eの位置に敏感になることが可能になる。言い換えれば、これは、ユーザの視点Eと、3Dモデルと光線との少なくとも1つの交点との間の線に位置合わせされた面の選択を促進することを可能にする。これは、3Dモデルが視野の外側で部分的にレンダリングされる場合に、特に有用である。この場合、本方法は、視野外の面の選択にペナルティを課す。
【0081】
ユーザの頭部の位置および/または向きを検索するために、姿勢の変化または動きを検出することができる任意の技術によって頭部の追跡を行うことができる。一例として、仮想現実、複合現実、または拡張現実において、そのような情報を提供するヘッドセットまたは眼鏡がある。ユーザの視線の方向および/または向きを検索するために、目の追跡技術が使用され得る。
【0082】
例において、
図2の例を参照すると、識別すること(S40)は、配向平面と最も近い向きを有する3Dオブジェクトの面を決定すること(S400)をさらに含むことができる。識別すること(S40)は、決定された面の1つまたは複数のn隣接面を計算すること(S410)をさらに含むことができ、当該1つまたは複数の隣接面および決定された面は、選択可能な面の部分集合230を形成する。決定された面のn隣接面は、決定された面のn-1隣接面とエッジを共有し、n-2隣接面とエッジを共有しない面である。したがって、決定された面の1隣接面は、決定された面とエッジを共有する面であり、決定された面の2隣接面は、決定された面の1隣接面とエッジを共有し、決定された面とエッジを共有しない面である。識別すること(S40)は、選択可能な面の部分集合230から配向平面と最も近い向きを有する3Dオブジェクトの面を識別すること(S420)をさらに含む。nは、3Dオブジェクトの面のサイズに基づいて、あらかじめ決定され得る。nはまた、部分集合230を形成する面のサイズ、または部分集合230を形成する面のユーザの視点Eからの可視表面のサイズ、および/またはユーザの視点と決定された面との間の距離に基づいて更新され得る。nはまた、デバイス仕様に基づいて、またはユーザ選好に基づいて、あらかじめ決定され得る。
【0083】
決定すること(S400およびS420)は、また、最も近い方向を有する3Dオブジェクトの面を決定することによって、または、式(1)もしくは式(2)の関数fを最小化する面を決定することによって実行され得る。決定すること(S400およびS420)との間のすべての組み合わせが使用されてもよい。例えば、決定すること(S400)は、最も近い方向を有する3Dオブジェクトの面を決定することによって行われ得、決定すること(S420)は、関数fを最小化する面を決定することによって行われ得る。
【0084】
別の例では、決定すること(S400)および決定すること(S420)は、関数fを最小化する面を決定することによって行われ得る。この場合、決定すること(S400)の間、重みw1はw2より4倍大きくてもよく、決定すること(S420)の間、重みw1はw2より4倍小さくてもよい。
【0085】
例において、本方法は、選択可能な面の部分集合230の面の第1のレンダリングを修正することをさらに含むことができる。選択可能な面の部分集合230は、ステップS410の間に計算される。上述したように、部分集合230は、例えば、決定すること(S40)の間に、決定された面に基づいて計算される。部分集合230のサイズは、計算すること(S410)で使用されるnの値に依存する。一例では、nの値は、ユーザの視点からの可視表面が、ユーザがそれを容易に識別するのに常に十分大きいことを保証するように計算され得る。部分集合230のレンダリングを修正することは、どの面がステップS420の間に選択可能であると考えられるかをユーザが識別するのを助ける。したがって、ユーザは、関心のある面がこの部分集合230の中にないことを容易に識別し、したがって、ステップS410の間に部分集合230を変更するためのユーザの手の位置および/または向きを修正することになる。
【0086】
図11に例として示されるように、3Dオブジェクトの面のレンダリングは、検出すること(S20)が行われないときは、本方法によって修正されない。
【0087】
一例では、ユーザは、選択可能な面の部分集合230を識別した後、選択可能な面の部分集合230を変更するために手の位置を修正することができ、かつ/あるいは、選択可能な面の同じ部分集合230のうちの識別された面210を変更するために、手の向きを修正することができる。
図16および
図17の例に示すように、選択可能な面の部分集合230は、手の位置および/または向きが修正されたときに更新される。
【0088】
レンダリングの修正は、様々な方法で行うことができる。レンダリングの修正は、計算すること(S410)および/または識別すること(S420)の間に行われてもよい。一例として、レンダリングの修正は、選択可能な面を強調表示することによって実行され得る。別の例として、レンダリングの修正は、選択可能な面に特定のテクスチャを適用することによって実行され得る。レンダリングは、選択可能な面のエッジに対してのみ修正されてもよい。例えば、エッジは強調表示されてもよいし、太くされてもよい。別の例では、レンダリングの修正はまた、3Dオブジェクトからの選択可能な面の拡大および切断を含んでもよい。レンダリングの修正は、識別された面に関するグラフィカルユーザ情報の自動スナップなど、ユーザへの任意の別のフィードバックによって完了することができる。レンダリングの修正は、ユーザの表現を変更することによって、ユーザの手の上に現れてもよい。例えば、手の色を変えることができ、または線を指の上に重ねることができる。
【0089】
例において、本方法は、識別された面210の第2のレンダリングを修正することをさらに含んでもよい。識別された面210は、例えば、ステップS40の間に識別された面であってもよい。したがって、識別された面210のレンダリングの修正が開始し、ユーザが関心のある面を選択するのを助ける。
【0090】
識別された面210は、例えば、ステップS420の間に識別された面であってもよい。識別された面210は、例えば、ステップS400の間に決定された面であってもよい。これらの場合、例えば、第2および第3のレンダリングは、選択可能な面の部分集合230の第1のレンダリングとは異なる。第2のレンダリングは、第3のレンダリングと異なってもよい。第1のレンダリングおよび/または第2のレンダリングおよび/または第3のレンダリングは、3D環境における3Dオブジェクトとのユーザ対話を改善する。実際、ユーザは、選択可能な面の部分集合230を変更するために手の位置を変更する必要があるかどうかをステップS420の間に容易に把握することができ、かつ/あるいは、選択可能な面の同じ部分集合230のうちの識別された面210を変更するために手の向きを修正することができる。所望の面を選択するために必要とされるユーザ対話は、より少ない。
【0091】
図11および
図12は、ステップS20の間に、親指以外のすべての指の内転を含む手のジェスチャが検出された場合にのみ、3Dオブジェクト200のレンダリングが修正される例を示す。
【0092】
一例として、第1のレンダリングと第2のレンダリングは異なり、したがって、ユーザは選択可能な面の部分集合230および識別された面210を容易に識別することができる。一例を、
図16および
図17に示す。
【0093】
レンダリングの修正は、様々な方法で実行することができる。一例では、レンダリングは、選択可能な面を強調表示することによって実行され得る。別の例では、レンダリングは、選択可能な面に特定のテクスチャを適用することによって実行され得る。レンダリングは、選択可能な面のエッジに対してのみ修正されてもよく、例えば、エッジは強調表示されてもよく、または太くされてもよい。別の例では、レンダリングの修正はまた、3Dオブジェクトからの選択可能な面の拡大および切断を含んでもよい。レンダリングの修正は、識別された面に関するグラフィカルユーザ情報の自動スナップなど、ユーザへの任意の別のフィードバックによって完了することができる。レンダリングの修正はまた、ユーザの手の表現を変更することによって、ユーザの手の上に現れてもよく、例えば、手の色が変化してもよく、または線が指の上に重ねられてもよい。
【0094】
連続的なユーザフィードバックを提供することと、過剰なポッピングを回避することとの間に良好なバランスが見出され得る。連続的なユーザフィードバックを提供することは、ユーザの入力に応答する方法を有するものとして定義され得る。言い換えれば、例えば、ユーザが入力を提供するとすぐに、本方法は、識別すること(S40)の結果および/または決定すること(S400)の結果および/または計算すること(S410)の結果および/または識別すること(S420)の結果を、目に見える遅延なしに更新すべきである。ユーザの入力に応答する方法を有することによって、本方法が、過剰なポッピングを提供するリスクがある。このポッピングという用語は、ユーザインタフェースが、様々な状態間で迅速かつ連続的に切り替わる傾向を定義する。本方法においては、それは、例えば、識別された面とみなされる2つ以上の面の間の迅速かつ俊敏な切替えであってもよい。
【0095】
一例として、修正されたレンダリングを有する識別された面は、同じ次元のより良い候補が確実に識別されるまで保持され得る。言い換えれば、識別すること(S40)は、関数fを最小化することを含むことができ、現在の識別された面から別の面への切り替えは、別の面の関数fの値が現在の識別された面の関数fの値よりも小さくなってすぐには行われない。過剰なポッピングを回避するために、現在の識別された面の関数fの結果を別の面と比較するために、識別すること(S40)の間にペナルティ閾値またはペナルティ係数が使用され得る。言い換えれば、修正されたレンダリングを用いて識別された面は、同じ次元のより良い候補が、追加されたペナルティ閾値を用いて、かつ/あるいは、候補の関数fの結果にペナルティ係数を乗じて、関数fを最小化するまで保持され得る。代替的に、ユーザが特定の時間量にわたって動いていないことを検出した後にのみ、現在の識別された面から別の面に切り替えることによって、過剰なポッピングを回避でき得る。
【0096】
連続的なユーザフィードバックは、例えば、3Dオブジェクト200のレンダリングの修正によって、かつ/あるいは3Dオブジェクト200の近くかつ/あるいはユーザの手の近くに仮想表現を追加することによって、かつ/あるいはデバイスからの触覚フィードバックによって行われ得る。
【0097】
例において、本方法における3Dオブジェクトの面は、三角形および/または四角形および/または位相面および/またはパラメトリック曲面および/またはプロシージャル曲面であってもよい。位相面は、隣接する三角形のグループまたは隣接する四角形のグループであり、より大きな「論理的」連続面を形成する一方で、特に位相面が大きい場合、各プリミティブ間の多種多様な異なる向きを依然として潜在的に表示する。CADプログラムでは、位相面は、ほとんどの場合、位相エッジによって境界付けられる。隣接する三角形および/または隣接する四角形によって、グループの各三角形または四角形は、当該グループの三角形または四角形の1つの隣接する三角形または四角形であることが理解されるべきである。例えば、車を表すCADオブジェクトは、100未満の位相面にグループ化され得る数千の三角形から構成され得る。例えば、1つの位相面は、自動車の座席の上面を表すことができる。
【0098】
すべてのタイプの面に対して、方向は、その法線ベクトルによって実現され、向きは、この法線ベクトルに平行な線によって実現される。位相面については、法線ベクトルを編集することができる。実際に、位相面は、様々な向きに配向された三角形または四角形から構成され得、したがって、このタイプの位相面に対して意味のある法線ベクトルを計算することは困難であり得る。本方法のステップの間に法線ベクトルを表示することは、例えば、3Dモデルの設計プロセスの間に、3D環境におけるユーザ対話を改善することに寄与し得る。実際、ユーザは、位相面の向きおよび位置が何であるかを識別するために、グラフィカルに支援される。
【0099】
例において、手のジェスチャを検出すること(S20)は、親指以外のすべての指の内転と、親指の外転とを含む。
図5に示すように、外転250は、身体の正中線から離れる身体部分のジェスチャである。すべての指について、外転は、指を線190から離れるように移動させる。右手についてステップS20で検出される姿勢の一例を
図9および
図10に示す。
【0100】
親指の外転は、短母指外転筋を含む筋肉の収縮の結果である。
【0101】
親指以外のすべての指の内転および親指の外転を検出することは、2つの理由で有利である。第1に、親指以外のすべての指の内転および親指の外転は、検出姿勢とデフォルト姿勢との間の混同のリスクを低減する。第2に、
図10に示されるように、親指以外のすべての指の内転および親指の外転は、手のひらおよび/または手の甲によって形成される配向平面を平らにする傾向があり、したがって、決定すること(S30)はより信頼できる。
【0102】
例において、本方法は、手のジェスチャが親指の内転をさらに含むことを検出することによって、3Dオブジェクトの識別された面210を選択することをさらに含む。手のジェスチャが親指の内転をさらに含むことを検出することによる選択の例が、
図12および
図13に示される。言い換えれば、3Dオブジェクトの識別された面210は、手のジェスチャが親指の内転を含むとき、面の現在の選択に追加される。したがって、
図13から
図15に示すように、識別された面210は、選択された面220とみなされる。一例として、これらの図は、第3のレンダリングが選択された面に適用されることを示す。この検出は、ステップS40またはステップS400またはステップS420の間に行われてもよい。したがって、ユーザは、本方法を反復的に使用して、複数の関心のある面を選択することができる。
【0103】
例において、本方法は、手のジェスチャが親指以外のすべての指の外転をさらに含むことを検出することと、選択された面を選択解除することとをさらに含むことができる。検出は、本方法の任意のステップの間に行うことができる。したがって、一例として、ユーザは、最後に選択された面を選択解除することができる。別の例として、ユーザは、面の現在の選択全体を選択解除することができる。
【0104】
例においては、手のジェスチャを検出することは、
親指以外のすべての指の近位指節間関節および遠位指節間関節の伸展を検出すること、および/または
親指以外のすべての指の中手指節関節の伸展を検出すること、および/または
親指を除くすべての横に並んだ指が実質的に接触していることを検出することを、さらに含む。
【0105】
これらの3つの検出の任意の組み合わせが可能である。これらの検出は、ステップS20および/またはステップS40において行われてもよい。これらの検出は、S400および/またはS420において行われてもよい。
【0106】
親指以外のすべての指の近位および遠位指節間関節の伸展は、これらの指の背側および手のひら側の骨間筋ならびにこれらの指の虫様筋を含む筋肉の収縮の結果である。
【0107】
親指以外のすべての指の中手指節関節の伸展は、指伸筋を含む筋肉の収縮の結果である。
【0108】
親指以外のすべての指の並んだ接触は、これらの指の外転の結果である。接触は、実質的に検出される必要があり得る。実際、並んだ指の接触の、より堅牢な検出を有するために、検出は、実質的な接触のみを考慮する必要がある。言い換えれば、指の形状および一貫性のために、検出することは、2つの並んだ指の1つまたは複数の小さい表面が接触している場合であっても、2つの並んだ指が接触していない可能性があると考えることができる。これらのジェスチャのうちの1つまたは複数を検出することは、検出姿勢とデフォルト姿勢との間の混同のリスクを低減する。これらの3つのジェスチャが実行される場合、親指以外のすべての指は、手のひらおよび/または手の甲の配向平面と一致し、決定することを(S30)を改善する。