IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ダッソー システムズの特許一覧

特許75850273Dモデリングにおける没入型ジェスチャを用いたエッジの選択
<>
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図1
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図2
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図3
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図4
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図5
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図6
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図7
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図8
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図9
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図10
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図11
  • 特許-3Dモデリングにおける没入型ジェスチャを用いたエッジの選択 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-08
(45)【発行日】2024-11-18
(54)【発明の名称】3Dモデリングにおける没入型ジェスチャを用いたエッジの選択
(51)【国際特許分類】
   G06T 7/20 20170101AFI20241111BHJP
   G06F 3/01 20060101ALI20241111BHJP
   G06F 3/04815 20220101ALI20241111BHJP
   G06T 7/70 20170101ALI20241111BHJP
   G06T 19/00 20110101ALI20241111BHJP
【FI】
G06T7/20 300A
G06F3/01 570
G06F3/04815
G06T7/70 Z
G06T19/00 A
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2020211250
(22)【出願日】2020-12-21
(65)【公開番号】P2021131848
(43)【公開日】2021-09-09
【審査請求日】2023-11-24
(31)【優先権主張番号】19306791.5
(32)【優先日】2019-12-30
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】フィボス ドガニス
【審査官】藤原 敬利
(56)【参考文献】
【文献】米国特許出願公開第2019/0146599(US,A1)
【文献】米国特許出願公開第2010/0234094(US,A1)
【文献】特開2019-192242(JP,A)
【文献】国際公開第2014/128788(WO,A1)
(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オブジェクトの各エッジおよび前記配向線は、方向をさらに有し、前記識別することは、前記配向線の方向と最も近い方向を有する前記3Dオブジェクトのエッジを識別することをさらに含む
ことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項3】
前記識別することの前に、前記3D没入環境において前記手の手のひらまたは手の甲で形成され、法線を含む配向平面を決定することをさらに含み、
前記3Dオブジェクトの各エッジおよび前記配向線は、前記3D没入環境において位置をさらに有し、前記識別すること(S40)は、
【数19】

を満たす関数fを最小化することをさらに有し、
ここで、
Edgeは着目エッジであり、
【数20】

かつ
【数21】

かつ
【数22】

であり、
||FH||は、前記着目エッジEdgeの位置と前記手の配向平面の位置Hとの、前記3D没入環境におけるユークリッド距離であり、
【数23】

は、前記着目エッジEdgeの方向と前記手における折り曲げた指で形成された前記配向線の方向との前記3D没入環境における角度である
こと特徴とする請求項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||は、エッジの位置と、頭部または利き目の中心または両目の中間の点から3Dモデルの中心に投射される光線と前記3Dモデルとの少なくとも1つの交点との、前記3D没入環境におけるユークリッド距離をさらに含む
ことを特徴とする請求項4に記載のコンピュータによって実施される方法。
【請求項6】
前記識別することは、
前記配向線と最も近い向きを有する前記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】
したがって、CADシステムの3D没入環境において、3Dオブジェクトの複数のエッジからエッジを選択する、コンピュータによって実施される方法が提供される。各エッジは、3D没入環境において配向されている。本方法は
前記3Dオブジェクトを前記3D没入環境で表示することと、
親指以外の折り曲げたすべての指を含む手のジェスチャを検出することと、
前記3D没入環境において前記手における折り曲げた指で形成された配向線を決定することと、
前記配向線と最も近い向きを有する前記3Dオブジェクトのエッジを識別することと、を含む。
【0012】
本方法は、以下のうちの1つまたは複数を含むことができる。
【0013】
前記3Dオブジェクトの各エッジおよび前記配向線は方向をさらに有し、前記識別することは、前記配向線の方向と最も近い方向を有する3Dオブジェクトのエッジを識別することと、
前記識別することの前に、前記3D没入環境において、前記手の手のひらおよび手の甲で形成され、法線を含む配向平面を決定することであって、前記3Dオブジェクトの各エッジおよび前記配向線は前記3D没入環境において位置をさらに有し、前記識別することは、
【数1】

を満たす関数fを最小化することを有し
ここで、
Edgeは着目エッジであり、
【数2】

かつ
【数3】

かつ
【数4】

であり、
||FH||は、前記エッジEdgeの位置と前記手の配向平面の位置Hとの、前記3D没入環境におけるユークリッド距離であり、
【数5】

は、前記エッジEdgeの方向と前記手の前記折り曲げた指で形成される配向平面の方向との前記3D没入環境における角度である。
【0014】
前記関数fの項||FH||は、||FH’||によって置き換えられ、H’は
【数6】

によって計算され、
ここで、
H’は、仮想の手の配向平面の位置であり、
Eは、ユーザの視点の位置であり、
Hは、ユーザの手の配向平面の位置であり、
EHは、EからHへのベクトルであり、
Omaxは、Eから最も遠い前記3Dオブジェクトのエッジの位置であり、
Hmaxは、ユーザの身体の横断面におけるEから最も遠いユーザの手の中心の位置であり、
【数7】

であり、
||EOmax||は、EからOmaxへのベクトルのノルムであり、
||EHmax||は、EからHmaxへのベクトルのノルムである。
【0015】
前記関数fの項||FH||または||FH’||は、エッジの位置と、頭部または利き目の中心または両目の中間の点から3Dモデルの中心に投射される光線と前記3Dモデルとの少なくとも1つの交点との、前記3D没入環境におけるユークリッド距離をさらに含む。
【0016】
前記識別することは、
前記配向線と最も近い向きを有する前記3Dオブジェクトのエッジを決定することと、
前記決定されたエッジの1つまたは複数のn隣接エッジであって、前記決定されたエッジと選択可能なエッジの部分集合を形成する1つまたは複数の隣接エッジを計算すること(S410)と、
前記選択可能なエッジの部分集合から、前記配向線と最も近い向きを有する前記3Dオブジェクトのエッジを識別することと、を含む。
【0017】
選択可能なエッジの部分集合のエッジの第1のレンダリングを修正すること。
【0018】
前記識別されたエッジの第2のレンダリングを修正すること。
【0019】
前記3Dオブジェクトのエッジは、三角形および/または四角形および/または位相面および/またはパラメトリック曲面(parametoric surface)および/またはプロシージャル曲面(procedual suraface)から選択される少なくとも1つの一部である。
【0020】
前記手のジェスチャを検出することは、親指以外のすべての指の折り曲げと、親指の外転と含む。
【0021】
前記手のジェスチャが親指の内転をさらに含むことを検出することによって、前記3Dオブジェクトの前記識別されたエッジを選択すること。
【0022】
前記手のジェスチャが、親指以外のすべての指を拡げることと、前記選択されたエッジの選択解除とをさらに含むことを検出すること。
【0023】
前記手のジェスチャを検出することは、人差し指、中指、薬指、および小指の末節骨が、前記手のひらと実質的に接触していることを検出することをさらに含む。
【0024】
本方法を実施するための命令を含むコンピュータプログラムがさらに提供される。
【0025】
ディスプレイと、メモリと通信可能に結合された処理回路とを備えるシステムがさらに提供され、前記メモリは前記コンピュータプログラムを記憶している。
【0026】
前記コンピュータプログラムを記憶するコンピュータ可読媒体がさらに提供される。
【0027】
本発明の実施形態を、非限定的な例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【0028】
図1】本方法のフローチャートの一例を示す。
図2】本方法のステップS40のフローチャートの一例を示す。
図3】システムの一例を示す。
図4】デフォルト姿勢における右手の骨格の後前方図の例を示す。
図5】検出されたジェスチャの一例を示す。
図6】デフォルトジェスチャの一例を示す。
図7】エッジの識別の一例を示す。
図8】エッジの識別の別の例を示す。
図9】手のひらまたは手の甲によって形成された配向平面の決定の例を示す。
図10】手のひらまたは手の甲によって形成された配向平面の決定の例を示す。
図11】仮想の手の例を示す。
図12】仮想の手の例を示す。
【発明を実施するための形態】
【0029】
図1のフローチャートを参照すると、CADシステムの3D没入環境において、3Dオブジェクトの複数のエッジからエッジを選択するための、コンピュータによって実施される方法が提案されている。各エッジは、3D没入環境において配向される。本方法は、3D没入環境において3Dオブジェクトを表示することを含む。本方法は、手のジェスチャを検出することをさらに含む。手のジェスチャは、親指以外のすべての指を折り曲げることを含む。本方法は、3D没入環境において手における折り曲げた指で形成された配向線を決定することをさらに含む。本方法は、配向線と最も近い向きを有する3Dオブジェクトのエッジを識別することをさらに含む。
【0030】
これは、手による対話操作を使用して、CADシステムの3D没入環境において3Dオブジェクトの複数のエッジからエッジを選択するための改善された方法を構成する。特に、本方法は、ユーザがどの要素を選択したいかに関する曖昧さの問題を解決する。上述したように、CADアプリケーションでは、3Dオブジェクトは多くの小さな要素を含む。要素を選択することは、要素のサイズまたはユーザの視点からの要素の可視表面のサイズのために、マウスベースの手法では困難であり得る。実際に、サイズが小さい場合、マウスベースの手法では、ユーザは、マウスを非常に正確に動かす、かつ/あるいは拡大する、かつ/あるいは3Dシーンの視点を変更する必要がある。ここで提示される方法は、この欠点を解決する。実際に、本方法は、ユーザがどの要素を選択したいかを決定するために、手のジェスチャの最中に、手における折り曲げた指で形成された線(仮想線)の向きを使用している。本方法は、また、ユーザがどの要素を選択したいかを決定するために、ユーザの手のジェスチャの最中に、手における折り曲げた指で形成された線の向きを、手の位置と組み合わせることができる。位置および向きの組み合わせを使用することによって、3Dオブジェクトのすべての要素が区別され、したがって、本方法を用いてユーザによって選択され得る。
【0031】
本方法は、コンピュータによって実施される。これは、本方法のステップ(または実質的にすべてのステップ)が、少なくとも1つのコンピュータ、または任意のシステムによって同様に実施されることを意味する。したがって、本方法のステップは、場合によっては完全に自動的に、または半自動的に、コンピュータによって実施される。一例においては、本方法のうちの少なくともいくつかのトリガリングは、ユーザとコンピュータとの対話を通して実施され得る。必要とされるユーザとコンピュータとの対話のレベルは、予見される自動化のレベルに依存し、ユーザの希望を実現する必要性とバランスを取ることができる。一例においては、このレベルは、ユーザ定義および/または事前定義され得る。
【0032】
例えば、検出すること(S20)および決定すること(S30)は、ユーザの行動に部分的に依存する。検出すること(S20)は、親指以外のすべての指を折り曲げることを伴うユーザの手のジェスチャを含むユーザの行動の結果として実施される。決定すること(S30)は、配向線がユーザの手における折り曲げた指(親指を除く)を伴って形成されるユーザの手のジェスチャを含むユーザの行動の結果として実施される。
【0033】
方法のコンピュータによる実施の典型的な例は、この目的のために適合されたシステムを用いて本方法を実施することである。システムは、メモリに結合されたプロセッサおよびグラフィカルユーザインタフェース(GUI)を含むことができ、メモリは、本方法を実施するための命令を含むコンピュータプログラムを記録している。メモリはまた、データベースを記憶してもよい。メモリは、場合によってはいくつかの物理的に別個の部分(例えば、1つはプログラム用、場合によっては、1つはデータベース用)を備える、そのような記憶に適合された任意のハードウェアである。
【0034】
図3はシステムの例を示し、当該システムはクライアントコンピュータシステム、例えばユーザのワークステーションである。
【0035】
この例のクライアントコンピュータは、内部通信バス1000に接続された中央処理装置(CPU)1010と、同じくバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータには、バスに接続されたビデオランダムアクセスメモリ1100に関連付けられたグラフィック処理ユニット(GPU)1110がさらに設けられる。ビデオRAM1100は、当技術分野ではフレームバッファとしても知られている。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラム命令およびデータを有形に具現化するのに適した大容量メモリデバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよびリムーバルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMディスク1040を含む、すべての形態の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完されてもよく、またはそれに組み込まれてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、カーソル制御デバイス、キーボードなどの触覚デバイス1090を含んでもよい。カーソル制御デバイスは、ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置決めすることを可能にするためにクライアントコンピュータで使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御デバイスは、システムに制御信号を入力するための多数の信号発生装置を含む。典型的には、カーソル制御デバイスはマウスであってもよく、マウスのボタンは信号を生成するために使用される。代替的にまたは追加的に、クライアントコンピュータシステムは、感知パッドおよび/または感知スクリーンを備えてもよい。
【0036】
コンピュータプログラムは、コンピュータによって実施可能な命令を含むことができ、命令は、上記のシステムに本方法を実施させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、例えば、デジタル電子回路で、またはコンピュータハードウェア、ファームウェア、ソフトウェアで、またはそれらの組み合わせで実施されてもよい。プログラムは、装置として、例えば、プログラマブルプロセッサによる実施のために機械可読記憶デバイスにおいて有形に具現化される製品として実装され得る。方法ステップは、入力データに対して動作し、出力を生成することによって本方法の機能を実施するための命令のプログラムを実施するプログラマブルプロセッサによって実施され得る。したがって、プロセッサは、プログラム可能であり、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように結合され得る。アプリケーションプログラムは、高水準手続型プログラミング言語またはオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリ言語または機械語で実施することができる。いずれの場合も、言語は、コンパイルされた言語または解釈された言語とすることができる。プログラムは、完全インストールプログラムまたは更新プログラムであってもよい。システム上でのプログラムの適用は、いずれの場合も、本方法を実施するための命令をもたらす。
【0037】
本方法は、3Dオブジェクトを操作する。以下では、3Dオブジェクトへのいかなる言及も、デジタル的にモデル化された3Dオブジェクトを指し、物理的な3Dオブジェクトを指さない。デジタル的にモデル化された3Dオブジェクトは、例えば(機械的な)部品または部品のアセンブリ(または、等価的に部品のアセンブリであり、部品のアセンブリは本方法の観点から部品自体として見ることができ、または本方法はアセンブリの各部品に独立して適用することができる)、またはより一般的には任意の剛体アセンブリ(例えば可動機構)など、例えばCADソフトウェアソリューションまたはCADシステムを用いた仮想設計の完了後に現実世界で製造される製品の幾何学的形状を表すことができる。CADソフトウェアソリューションは、航空宇宙、建築、消費財、ハイテク装置、産業機器、輸送、海洋、および/または沖合のオイル/ガス生産または輸送を含む、様々な無制限の産業分野における設計を可能にする。したがって、本明細書の3Dモデル化オブジェクトは、地上車両(例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモータ機器、トラックおよびバス、列車を含む)の一部、航空機(例えば、機体機器、航空宇宙機器、推進機器、防衛製品、航空機器、宇宙機器を含む)の一部、海軍車両(例えば、海軍機器、商船、沖合設備、ヨットおよび作業船、海洋設備を含む)の一部、一般機械部品(例えば、工業製造機械、大型移動機械または機器、設置機器、工業機器製品、加工金属製品、タイヤ製造製品を含む)、電気機械または電子部品(例えば、消費者電子機器、セキュリティおよび/または制御および/または計装用製品、コンピューティングおよび通信機器、半導体、医療機器および機器を含む)、消費財(例えば、家具、家庭および庭用製品、レジャー用品、ファッション製品、ハード商品小売業者の製品、ソフト商品小売業者の製品を含む)、包装(例えば、食品および飲料ならびにタバコ、美容およびパーソナルケア、家庭用製品包装を含む)などの任意の機械部品であり得る工業製品を表し得る。
【0038】
3Dオブジェクトは、以下の3つのタイプの位相実体、すなわち、面、エッジ、および頂点の少なくとも1つから構成され得る。定義では、面とは表面の境界付けされた部分のことである。エッジとは曲線の境界付けされた部分のことである。頂点とは、3D空間内の点のことである。これらは、以下のように互いに関連している。曲線の境界付けされた部分は、曲線上にある2つの点(頂点)によって定義される。表面の境界付けされた部分は、その境界によって定義され、この境界は表面上にある一組のエッジである。面の境界のエッジは、頂点を共有することによって接続される。面は、エッジを共有することによって接続される。2つの面は、エッジを共有する場合、隣接する。同様に、2つのエッジは、頂点を共有する場合、隣接する。面のすべてのエッジは、同じ平面上にあってもなくてもよい。面の法線は、その面の2つのエッジのベクトルクロス積を取ることによって計算することができる。面のすべてのエッジが同じ平面上にあるわけではない場合、クロス積を計算するために選択されたエッジに応じて、様々な法線を計算することができることに留意されたい。法線は編集されてもよい。法線は、平面の方向を与える。平面の向きは、平面の方向から差し引かれてもよい。当該平面の向きは、その法線に平行な線によって実現される。面のこの線の向きも編集することができる。平面は、位置も有する。面の位置は、その重心によって与えられる。面の位置も編集することができる。3Dモデルのエッジは、配向される。エッジの向きは、それが属する面の向きから推定することができる。例えば、境界表現(B-Repとも呼ばれる)の場合、B-Repの面の法線と、当該面に属するエッジとの整合性は、エッジの向き(例えば、時計回り規則、反時計回り規則)の決定のために使用され得る。実際、エッジは、三角形および/または四角形を含むメッシュの2つの面に属する。エッジの方向は、任意に決定されてもよく、例えば、ユーザによって編集されてもよい。前述のように、平面の法線は、面の2つのエッジのベクトルクロス積から計算することができ、したがって、エッジは配向される。
【0039】
以下では、すべての向き、方向、および位置が3D没入環境の基準フレームにおいて計算されると仮定する。
【0040】
3Dオブジェクトは、エッジまたは線を使用して、場合によっては(すなわち、任意選択で)面または表面を用いて定義することもできる。例えば、3Dオブジェクトは、モックアップのレーザスキャンされた点群から計算されてもよい。そのような点群は、典型的には切り離された頂点から作られるが、デジタル化されたモックアップの
形状を表す相互接続されたエッジを含むこともできる。
【0041】
3Dオブジェクトは、ワイヤフレーム3Dオブジェクトであってもよい。ワイヤフレームは点群から取得されてもよく、またはユーザによって設計されてもよい。
【0042】
線、エッジ、または表面は、様々な方法、例えば非一様有理Bスプライン(NURBS)で表すことができる。これらのエッジ、線、および/または表面は、3Dオブジェクトのジオメトリを生成することができる入力として使用することができ、3Dオブジェクトの表現を生成することができる。本明細書で説明する方法は、非一様有理Bスプライン(NURBS)線、エッジ、および表面に基づいて3Dオブジェクト上で使用され得る。より一般的には、表面は、パラメトリック曲面(parametoric surface)および/またはプロシージャル曲面(procedual suraface)であってもよい。パラメトリック曲面は、2つのパラメータ
【数8】

を有するパラメトリック方程式によって定義されるユークリッド空間
【数9】

内の曲面である。プロシージャル曲面は、プロシージャとして定義される曲面である。細分割曲面は、プロシージャル曲面と考えることができる。細分割曲面は、より粗い区分的線形ポリゴンメッシュの仕様を介して滑らかな曲面を表す方法である。
【0043】
ここで図1を参照すると、本方法は、3D没入環境において少なくとも1つの3Dオブジェクトを表示する(S10)。3D没入環境に2つ以上の3Dオブジェクトが表示されている場合、関心のある3Dオブジェクトとして、識別される3Dオブジェクトが1つある。以下、関心のある3Dオブジェクトを3Dオブジェクトと呼ぶ。
【0044】
上で定義したように、3D没入環境は、仮想現実、拡張現実、または複合現実において使用することができる。3D没入環境は、基準フレームを有する。したがって、この3D没入環境におけるすべてのオブジェクト、およびすべてのそれらの位相的要素は、この基準フレームに対して相対的に配置され得る。次いで、本方法は、3D没入環境のいずれかの3Dオブジェクトの面を選択するために、仮想現実、拡張現実、および複合現実において使用され得る。本方法はまた、少なくとも1つの3Dオブジェクトの位置特定を可能にする基準フレームを有する環境を含む任意の他の現実において使用され得る。
【0045】
次に、手のジェスチャが検出される(S20)。手のジェスチャは、親指以外のすべての指を折り曲げることを含む。
【0046】
3D没入環境とのユーザの対話は、ユーザの身体の一部の位置および向きを追跡することによって、またはユーザの身体のいくつかの部分のそれぞれの位置および向きを追跡することによって、またはさらには、ユーザの身体全体の位置および向きを追跡することによって行うことができる。
【0047】
一例においては、ユーザの身体の一部は、ユーザの手である。
【0048】
手の追跡は、直接的かつ自然な対話操作を提供し、没入体験を改善する。実際、ユーザは、特定の仮想現実、複合現実、または拡張現実ハンドコントローラを使用する必要がない。従来、3D没入環境において、3Dオブジェクトと対話するために、方法は、仮想3D線で3Dオブジェクトをポイントした後に、特定のコントローラのボタンをクリックすることを含む。
【0049】
手の追跡は、手の特定の姿勢またはジェスチャの検出を可能にする。例えば、特定の姿勢についての手の追跡は、ビデオレコーダまたは手袋を用いて行うことができ、特定のジェスチャについての手の追跡は、加速度計を用いて行うことができる。本方法は、ユーザの右手または左手を使用することができる。姿勢は、身体の一部を使用するポーズであり、ここでのジェスチャは、一部がその姿勢を修正することを可能にする動きとして定義され得る。言い換えれば、第2の姿勢は、第1の姿勢から開始されたジェスチャの結果として見られ得る。したがって、ジェスチャを検出することは、第2の姿勢を検出し、この第2の姿勢を第1の姿勢と比較することによって行われ得る。検出された第2の姿勢が第1の姿勢と同じである場合、ジェスチャは発生していない。検出された姿勢が第1の姿勢と異なる場合、ジェスチャは、第2の姿勢と第1の姿勢との差として定義され得る。より一般的には、ジェスチャは、ユーザの身体の一部、例えばユーザの手の位置、および/または向きの変化によってトリガされる姿勢の変化として定義され得る。例えば、本方法では、手のジェスチャを検出することは、デフォルト姿勢からの現在の姿勢の差を計算することからなることができる。本例では、デフォルト姿勢は第1の姿勢に対応し、現在の姿勢は第2の姿勢に対応する。差は、ユーザの手の位置および/または向きの変化によって推測され得る。特定の姿勢についての手の追跡が、高いフレームレート、例えば少なくとも10フレーム/秒で姿勢を撮像するデバイスを用いて実施され、したがって、第1の姿勢から中間の第2の姿勢を有する第1の姿勢への動きを含む動きを検出しないリスクが実際に低いことは注目に値する。デフォルト姿勢は、親指以外のすべての指を折り曲げたことの検出を可能にする任意の姿勢であり得る。右手のデフォルト姿勢の一例を、図6に示す。このデフォルト姿勢は、右手を休ませるための一般的な姿勢の一例である。すなわち、デフォルト姿勢は、すべての筋肉が弛緩した右手のための姿勢の一例である。デフォルト姿勢は、本方法の任意のステップで使用される、特定の姿勢として検出されない任意の姿勢として定義することもできる。以下、説明の便宜上、すべてのジェスチャを、図6に示すデフォルト姿勢の差分として定義する。
【0050】
ジェスチャの検出は、様々な方法で行うことができる。一例では、ジェスチャは、身体の様々な部分の相対的な位置および/または向きの数学的な比較によって検出することができ、形態学的変動を考慮にいれるために、ある程度の許容差がある。なお、システムがユーザの形態に合わせて調整するために、キャリブレーション段階が必要とされ得ることに留意されたい。別の例では、ジェスチャはまた、異なる可能なジェスチャを区別するためにニューラルネットワークをトレーニングすることによって、機械学習技術を使用して検出され得る。
【0051】
一例においては、手のジェスチャの運動学的パラメータは、例えば図6に示されるように、仮想骨格を通して提供されてもよい。仮想骨格は、1つまたは複数の関節、および1つまたは複数の骨を含む。この仮想骨格は、実際の骨格を複製する必要はない。言い換えれば、仮想骨格の関節および骨と、実際の骨格の関節および骨とが対応していない場合がある。例えば、手の仮想骨格は、手の実際の骨格よりも少ないか、または多い関節を有し得る。また、仮に仮想骨格の各関節が実際の骨格の関節に対応していたとしても、その位置や向きが異なる場合がある。仮想骨格の関節の直線速度、角速度、位置および向きを用いることで、実際の骨格のジェスチャや姿勢を検出することができる。簡単にするため、後に、仮想骨格が手の実際の骨格を複製すると考える。
【0052】
本発明の方法は、説明した様々な姿勢を検出するために使用される検出方法とは無関係であることを留意されたい。したがって、仮想的な骨格に基づいて、または仮想的な骨格に基づかずに、姿勢の変化(例えば、ユーザの身体の一部の位置および/または向きの変化)を検出することができる任意の技術が使用され得る。
【0053】
手の実際の骨格の一例を図4に示す。手は、慣例的に、親指、人差し指、中指、薬指、および小指と呼ばれる5本の指を含む。親指は、中手指節関節10と指節間関節60とから構成される。人差し指は、中手指節関節20、近位指節間関節70および遠位指節間関節110から構成される。中指は、中手指節関節30、近位指節間関節80および遠位指節間関節120から構成される。薬指は、中手指節関節40、近位指節間関節90および遠位指節間関節130から構成される。小指は、中手指節関節50、近位指節間関節100および遠位指節間関節140から構成される。手の残りの部分は、3つの領域に分割することができる。第1の領域は手のひらであり、これは手の前部の中央領域である。第2の領域は手の甲であり、これは手の後部の手のひらに対応する領域である。第3の領域は、手のひらの近位部分に位置する手のかかとである。
【0054】
すべての指を折り曲げることは、手の指を丸めるジェスチャである。図5の例に示すように、親指以外の指については、折り曲げることは、各指を線190に向かって移動させるジェスチャである。図5に示される例として、この線190は、手のひらの中心によって画定され得る。親指以外のすべての指を折り曲げることは、それぞれ人差し指、中指、薬指、および小指の中手指節関節20、30、40、50、それぞれ人差し指、中指、薬指および小指の近位指節間関節70、80、90、100および遠位指節間関節110、120,130、140を折り曲げることである。このジェスチャは、指の筋肉の収縮の結果であり、それは、深指屈筋および浅指屈筋として知られる筋肉を含み得る。このジェスチャにより、人差し指、中指、薬指および小指の指先が手のひらに接触、近接する。
【0055】
親指の内転は、親指を手のひらに近づけるジェスチャである。親指の内転は、主に内転筋によって生じる。親指の内転はまた、親指を手のひらおよび人差し指の側面に向かって移動させ得る。親指の外転は、手のひらから親指を離すジェスチャである。親指を外転させることにより、親指を手のひらおよび人差し指の側面から離すこともできる。親指の内転は、母子外転筋によって部分的に生じる。親指の内転および外転は、親指の中手指節関節10を含む。親指の屈曲は、親指を線190に向かって移動させる。親指の屈曲は、主に短母趾屈筋によって生じる。親指の伸展は、親指を線190から遠ざける。親指の伸展は、主に長指伸筋によって生じる。親指の内転、外転、屈曲および伸展は、親指の中手指節関節10を含む。
【0056】
再び図1を参照すると、親指以外のすべての指を折り曲げた手のジェスチャを検出した(S20)後、本方法は、3D没入環境において、手における折り曲げた指で形成された配向線を決定すること(S30)を含む。手における折り曲げた指で形成された配向線を決定すること(S30)は、親指を除く手の基節骨の向きを評価することに基づくことができる。指の基節骨は、親指以外のすべての指を折り曲げたときに線を形成すると考えられ得る。したがって、親指以外のすべての指が折り曲げられている場合には、手の基節骨を線とみなすことができる。親指以外の折り曲げた指で形成される線の向きを近似するために、各基節骨上で1つの点を決定することができ、各点を通過する直線位置を、例えばこれらの点の平均位置を使用することによって計算することができる。代替的に、手における折り曲げた指で形成された配向線を決定すること(S30)は、折り曲げた指(親指を除く)および手のひらによって形成された空洞を通過する仮想線を評価することに基づくことができる。この空洞は、ほぼ円筒の形状を有する。仮想線は、折り曲げた指(親指を除く)によって形成されるこの円筒を中心に計算することによって得られてもよい。代替的に、手における折り曲げた指で形成される決定すること(S30)は、指を折り曲げた位置にあるときに、それぞれ人差し指、中指、薬指および小指の中手指節関節20、30、40、50を通過する線を決定することに基づくことができる。図4は、中手指節関節20、30、40、50の整列200を示す。中手指節関節は自然に整列され、したがって、手の他の関節と比較して、これらの関節からの線の計算を容易にする。
【0057】
上記の説明では、基節骨の向きが利用される。実際、これらの指節骨は自由度が低く、したがって、個人間の変動性が低い。言い換えれば、基節骨の検出は堅牢である。末節骨は、基節骨の代わりに、または基節骨と組み合わせて使用されてもよいことを理解されたい。
【0058】
決定すること(S30)は、仮想骨格を使用することによって
行われ得る。決定すること(S30)は、仮想骨格なしで行われてもよい。一例として、決定すること(S30)は、ビデオレコーダから決定する(S30)ようにトレーニングされたニューラルネットワークに基づき得る。
【0059】
ユーザが配向線をシステムに提供することを可能にするために、手における折り曲げた指を使用することは、本方法をより信頼できるものにする。実際、指先の相対的な位置合わせは、手のジェスチャを実施する人にわずかに依存する。さらに、配向線を決定するために異なる方法を使用することが可能であり、したがって、システムが最良の結果を提供するものを選択することを可能にするか、またはこれらの異なる方法のうちの2つ以上から線を計算することによって選択することを可能にする。
【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]の間で定義されると考える。識別(S40)の最中に、向きの代わりに方向を使用することによって、ユーザがどのエッジを選択することを望むかの曖昧さが、より一層低減される。実際、2つの共線エッジが反対方向を有する場合、識別(S40)の最中に、向きの代わりに方向を使用することにより、ユーザが選択したい曖昧さが除去される。
【0065】
図7は、選択中にエッジの方向が介入するエッジの選択を示す。エッジ200および220は、六角形面300に属する。それらは同じ向き(平行である)が、反対の方向を有する。この例では、2つのエッジ200および220は、線190の向きと同一の(または非常に近い)向きを有する。手のジェスチャ(S20)から導出された(S30)線190は、エッジ200に最も近い方向を有し、エッジ200が識別される。
【0066】
ここで図8を参照すると、線の向きおよび方向によるエッジの選択(S30)が示されている。3Dオブジェクトは図7と同じであるが、右手の手のひらを頭の方にむけることによって、本方法は、ユーザが同じ面302に属するユーザの視点からユーザの後ろに位置するエッジ202を選択することを可能にする。エッジ202が線190の方向と最も近い方向を有するので、エッジ222ではなくエッジ202が選択される。
【0067】
興味深いことに、3Dオブジェクトの複数のエッジからエッジを選択するために方向を使用することはまた、ユーザの観点から小さな可視表面を有するエッジを選択するために、特に有用である。ユーザは、その小さな可視性にも関わらず、所望のエッジを選択するために、右手の手のひらを3Dオブジェクトに向かって回転させるだけでよい。
【0068】
一例においては、識別すること(S40)は、fで表される関数を最小化するエッジを複数のエッジから識別することを含んでもよい。この関数については、後述する。関数を使用する前に(すなわち、識別すること(S40)を実施する前に)、3D没入環境において手のひらまたは手の甲で形成される平面が決定される。この平面は、法線によって配向され得る。平面を決定することは、手のひらおよび/または手の甲の向きを評価することに基づく。手のひらおよび/または手の甲は、親指以外のすべての指が内転されるか折り曲げたとき、平坦な表面としてみなされ得る。したがって、親指以外のすべての指を内転させるか、または折り曲げたときの手の甲を、平面とみなすことができる。平面の任意の点の法線を使用することによって、または平面の3つの点の位置を使用することによって、親指以外のすべての指が内転されるときの手のひらおよび/または手の甲の向きを近似するために、クロス積を用いて平面の法線を計算する。さらに関数を使用する前に、折り曲げた指で形成された配向線は、方向および位置を有する。3Dオブジェクトの各エッジおよび配向線は、3D没入環境において位置をさらに有し、それらの位置は、当技術分野で知られているように計算される。
【0069】
次に、図9について説明する。図9は、仮想骨格150の手首関節160の向きを用いて配向平面を決定することの例を示す。実際、仮想骨格150の手首関節160は、手のひらおよび/または手の甲を表す配向平面の点であり、したがって、手首関節160の向きは、配向平面の向きである。
【0070】
図10は、手首関節160の位置と、人差し指の中手指節関節170の位置と、小指の中手指節関節180の位置とに基づいて判定すること(S30)の別の例を示す。3つの位置は三角形を形成する。三角形の法線は、その三角形の2つの辺のベクトルクロス積をとることによって計算することができる。法線は、クロス積を計算するために選択された辺に応じて、手のひらおよび/または手の甲の方向を与える。法線は、これらの辺がクロス積を計算するために使用される順序にも依存する。三角形の向きは、三角形のすべての角がある平面に垂直な線によって具体化されてもよい。三角形の向きも編集することができ、したがって平面に対して垂直ではない。
【0071】
ここで、fで表される関数を説明する。この関数は、次式(1)で計算される。
【数10】

ここで、
Edgeは関心のあるエッジであり、
【数11】

かつ
【数12】

かつ
【数13】

であり、
||FH||は、3D没入環境における、エッジEdgeの位置と手の配向平面の位置Hとのユークリッド距離であり、
【数14】

は、エッジEdgeの方向と手における折り曲げた指で形成される配向線との3D没入環境における角度である。
【0072】
関数fは、2つの項の加重和である。実際、第1項||FH||に係数wが乗算され、第2項
【数15】

に係数wが乗算される。
【0073】
第1の重み付けされた項||FH||は、エッジEdgeの位置と、手のひらおよび/または手の甲の配向平面の位置Hとの、3D没入環境におけるユークリッド距離である。例えば、エッジEdgeの位置は、エッジの重心に位置してもよい。手のひらおよび/または手の甲の配向平面の位置は、一例として、仮想骨格の手首関節160の位置にされ得る。
【0074】
第2の重み付けされた項
【数16】

は、エッジEdgeの方向と、手における折り曲げた指で形成された配向線の方向との角度である。第2の重み付けされた項はまた、それらの方向を使用する代わりに、エッジEdgeの向きと、手における折り曲げた指で形成された配向線の向きとに基づき得る。
【0075】
各重みwおよびwは、ゼロ以上であり得る。2つの重みの合計は、厳密にゼロより大きい。重みのうちの1つがゼロに等しい場合、それは、2つの項のうちの1つだけが関数において考慮されることを意味する。一例として、wは0.1~0.5に設定されてもよく、wは0.5~0.9に設定されてもよい。
【0076】
重みwおよびwは、事前に計算され得る。例えば、それらは、3Dオブジェクトのエッジの数およびサイズに基づいて、あらかじめ計算されてもよい。重みwおよびwは、例えば、3Dオブジェクトを含む3D没入環境のロード時に、あらかじめ計算されてもよい。3Dオブジェクトが多くの小さいエッジを有する場合、第2の項の重みは、第1の項の重みよりも大きくなり得る。重みはまた、使用されるデバイスに依存し得る。例えば、いくつかのデバイスは、手の位置に対して限られた精度を与えるが、向きに対してはより良好な精度を与えることができる。重みは、本方法の間に変化してもよい。例えば、重みは、ユーザの視野内に位置する3Dオブジェクトの表面のうちの3Dオブジェクトのエッジの数およびサイズに応じて変化し得る。視野は、所与の時間における視察可能な環境の範囲として定義され得る。したがって、視野が、本方法中に変化する可能性があるので、重みwおよびwも変化する可能性がある。
【0077】
一例では、識別すること(S40)は、3Dオブジェクトの各エッジを考慮することによって、反復的に行われ得る。別の例では、識別すること(S40)は、3Dオブジェクトの部分集合の各エッジを考慮することによって、反復的に行われ得る。各エッジについて、関数fの結果が計算される。最小値を有する面は、関数fを最小化する3Dオブジェクトの面である。
【0078】
一例においては、関数fの項|FH|は、項||FH’||によって置き換えられ得る。H’は、式(2)を使用して計算される。
【数17】

ここで、
H’は、仮想の手の中心の計算された位置であり、
Eは、ユーザの視点の位置であり、
Hは、ユーザの手の中心の位置であり、
EHは、EからHへのベクトルであり、
Omaxは、Eから最も遠い3Dオブジェクトのエッジの位置であり、
Hmaxは、ユーザの身体の横断面におけるEから最も遠いユーザの手の中心の位置であり、
【数18】

であり、
||EOmax||は、EからOmaxへのベクトルのノルムであり、
||EHmax||は、EからHmaxへのベクトルのノルムである。
【0079】
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と考える。
【0080】
仮想の手を使用することは、(より一般的には、3D環境における)3Dオブジェクトとのユーザの対話を改善する。図11および図12の例は、仮想の手の使用による人間工学の改善を示す。
【0081】
図11の例では、仮想の手を使用することにより、ユーザは、自分の腕を完全に伸ばす必要なく、3Dオブジェクトの任意のエッジを選択することができる。腕を伸ばしたままにしておくことは、ユーザにとって疲れることもあり、したがって、仮想を使用することは、この問題を解決する。
【0082】
図12の例では、仮想の手を使用することにより、ユーザは、ユーザの視点Eを動かすことなく、3Dオブジェクトの任意のエッジを選択することができる。実際に、一例として、最も遠い3Dオブジェクトのエッジとユーザの視点Eとの距離が、ユーザの身体の横断面におけるEから最も遠いユーザの手の中心の位置の距離よりも大きいとき、3Dオブジェクトのいくつかのエッジは、仮想の手を使用せずに選択可能でないことがある。この場合、仮想の手は、ユーザの手よりもユーザの視点Eから遠い位置にある。仮想の手を使用しない場合、項||FH||は、ユーザの視点Eから最も遠い3Dオブジェクトのエッジの選択にペナルティを課すことになる。したがって、本方法は、この項によってバイアスされる。仮想の手は、3D没入環境においてユーザの手の位置を仮想的に移動させることによってこの問題を解決し、仮想H’が常に少なくとも3Dオブジェクトの最も遠いエッジまであり、両方の位置がユーザの視点Eから考慮されることを確実にする。
【0083】
一例では、仮想の手を使用することは、仮想の手から送信された光線投射と組み合わされ得る。この組み合わせは、例えば、ユーザの手がユーザの頭部に非常に近い場合に起動され得る。光線の方向は、配向平面に直交するか、または仮想の手の手のひら/甲の中心から3Dオブジェクトの中心に向かってもよい。この組み合わせは、例えば、現実の障害物によって囲まれ得る3Dオブジェクトの任意のエッジを選択するために、複合現実または拡張現実において非常に有用であり得る。
【0084】
一例においては、(それぞれ、式(1)または式(2)で計算される)関数fの項||FH||または項||FH’||は、エッジの位置と3Dモデルとユーザの視点Eから投射される光線との少なくとも1つの交点との3D没入環境におけるユークリッド距離をさらに含むことができる。光線は、例えば、頭部もしくは利き目の中心、または両目の間の点から3Dモデルの中心に投射され得る。投射の方向は、例えば、ユーザの視線またはユーザの頭部の方向によって定義され得る。投射の方向は、例えば、ユーザの視点Eの位置から3Dモデルの中心の位置まで計算されてもよい。3Dモデルの中心は、例えば、3Dモデルの境界ボックスの中心として定義され得る。一例として、ユーザの視点Eの位置から3Dモデルの中心の位置まで、投射の方向が算出される。
【0085】
エッジの位置と、ユーザの視点Eから投射される光線と3Dモデルとの少なくとも1つの交点との3D没入環境におけるユークリッド距離に基づく項を、項||FH||または||FH’||に追加することにより、本方法がユーザの視点Eの位置に敏感になることが可能になる。言い換えれば、これは、ユーザの視点Eと、3Dモデルと光線との少なくとも1つの交点との線に位置合わせされたエッジの選択を促進することを可能にする。これは、3Dモデルが視野の外側で部分的にレンダリングされる場合に、特に有用である。この場合、本方法は、視野外のエッジの選択にペナルティを課す。
【0086】
ユーザの頭部の位置および/または向きを検索するために、姿勢の変化または動きを検出することができる任意の技術によって頭部の追跡を行うことができる。一例として、仮想現実、複合現実、または拡張現実において、そのような情報を提供するヘッドセットまたは眼鏡がある。ユーザの視線の方向および/または向きを検索するために、目の追跡技術が使用され得る。
【0087】
一例においては、図2の例を参照すると、識別すること(S40)は、配向線と最も近い向きを有する3Dオブジェクトのエッジを決定すること(S400)をさらに含むことができる。識別すること(S40)は、決定されたエッジの1つまたは複数のn隣接を計算すること(S410)をさらに含むことができ、当該1つまたは複数の隣接エッジおよび決定されたエッジは、選択可能なエッジの部分集合を形成する。決定されたエッジのn隣接エッジは、決定されたエッジのn-1隣接エッジと頂点を共有し、n-2隣接エッジと頂点を共有しないエッジである。したがって、決定されたエッジの1隣接エッジは、決定されたエッジと頂点を共有するエッジであり、決定されたエッジの2隣接エッジは、決定されたエッジの1隣接エッジと頂点を共有し、決定されたエッジと頂点を共有しないエッジである。識別すること(S40)は、選択可能なエッジの部分集合から配向線と最も近い向きを有する3Dオブジェクトのエッジを識別すること(S420)をさらに含む。nは、3Dオブジェクトのエッジのサイズに基づいて、あらかじめ決定され得る。nはまた、部分集合を形成するエッジのサイズ、または部分集合を形成するエッジのユーザの視点Eからの可視表面のサイズ、および/またはユーザの視点と決定されたエッジとの距離に基づいて更新され得る。nはまた、デバイス仕様に基づいて、またはユーザ選好に基づいて、あらかじめ決定され得る。
【0088】
決定すること(S400およびS420)はまた、最も近い方向を有する3Dオブジェクトのエッジを決定することによって、または、式(1)もしくは式(2)の関数fを最小化するエッジを決定することによって実施され得る。決定する(S400およびS420)最中のすべての組み合わせが使用されてもよい。例えば、決定すること(S400)は、最も近い方向を有する3Dオブジェクトのエッジを決定することによって行われ得、決定すること(S420)は、関数fを最小化するエッジを決定することにより行われ得る。
【0089】
別の例では、決定すること(S400)および決定すること(S420)は、関数fを最小化するエッジを決定することによって行われ得る。この場合、決定すること(S400)の間、重みwはwより4倍大きくてもよく、決定すること(S420)の間、重みwはwより4倍小さくてもよい。
【0090】
一例においては、本方法は、選択可能なエッジの部分集合のエッジの第1のレンダリングを修正することをさらに含むことができる。選択可能なエッジの部分集合は、ステップS410の間に計算される。上述したように、部分集合は、例えば、決定すること(S40)の間に、決定されたエッジに基づいて計算される。部分集合のサイズは、計算すること(S410)で使用されるnの値に依存する。一例では、nの値は、ユーザの視点からの可視表面が、ユーザがそれを容易に識別するのに常に十分大きいことを保証するように計算され得る。部分集合のレンダリングを修正することは、どのエッジがステップS420の間に選択可能であると考えられるかをユーザが識別するのを助ける。したがって、ユーザは、関心のあるエッジがこの部分集合の中にないことを容易に識別し、したがって、ステップS410の間に部分集合を変更するためのユーザの手の位置および/または向きを修正することになる。
【0091】
3Dオブジェクトのエッジのレンダリングは、検出すること(S20)が行われないときは、本方法によって修正されない。
【0092】
一例では、ユーザは、選択可能なエッジの部分集合を識別した後、選択可能なエッジの部分集合を変更するために手の位置を修正することができ、かつ/あるいは、選択可能なエッジの同じ部分集合の中で識別されたエッジを変更するために、手の向きを修正することができる。
【0093】
レンダリングの修正は、様々な方法で行うことができる。レンダリングの修正は、計算すること(S410)および/または識別すること(S420)の間に行われてもよい。一例として、レンダリングの修正は、選択可能なエッジを強調表示することによって実施され得る。別の例として、レンダリングの修正は、選択可能なエッジに特定のテクスチャを適用することによって実施され得る。別の例では、レンダリングの修正はまた、3Dオブジェクトからの選択可能なエッジの拡大および切断を含んでもよい。レンダリングの修正は、識別されたエッジに関するグラフィカルユーザ情報の自動スナップなど、ユーザへの任意の別のフィードバックによって完了することができる。レンダリングの修正は、ユーザの表現を変更することによって、ユーザの手の上に現れてもよい。例えば、手の色を変えることができ、または線を指の上に重ねることができる。
【0094】
一例においては、本方法は、識別されたエッジの第2のレンダリングを修正することをさらに含んでもよい。識別されたエッジは、例えば、ステップS40の間に識別されたエッジであってもよい。したがって、識別されたエッジのレンダリングの修正が開始し、ユーザが関心のあるエッジを選択するのを助ける。
【0095】
識別されたエッジは、例えば、ステップS420の間に識別されたエッジであってもよい。識別されたエッジは、例えば、ステップS400の間に決定されたエッジであってもよい。これらの場合、例えば、第2および第3のレンダリングは、選択可能なエッジの部分集合の第1のレンダリングとは異なる。第2のレンダリングは、第3のレンダリングと異なってもよい。第1のレンダリングおよび/または第2のレンダリングおよび/または第3のレンダリングは、3D環境における3Dオブジェクトとのユーザ対話を改善する。実際、ユーザは、選択可能なエッジの部分集合を変更するために手の位置を変更する必要があるかどうかをステップS420の間に容易に把握することができ、かつ/あるいは、選択可能なエッジの同じ部分集合の中で、識別されたエッジを変更するために手の向きを修正することができる。所望のエッジを選択するために必要とされるユーザ対話は、より少ない。
【0096】
連続的なユーザフィードバックを提供することと、過剰なポッピングを回避することとに良好なバランスが見出され得る。連続的なユーザフィードバックを提供することは、ユーザの入力に応答する方法を有するものとして定義され得る。言い換えれば、例えば、ユーザが入力を提供するとすぐに、本方法は、識別すること(S40)の結果および/または決定すること(S400)の結果および/または計算すること(S410)の結果および/または識別すること(S420)の結果を、目に見える遅延なしに更新すべきである。ユーザの入力に応答する方法を有することによって、本方法が、過剰なポッピングを提供するリスクがある。このポッピングという用語は、ユーザインタフェースが、様々な状態間で迅速かつ連続的に切り替わる傾向を定義する。本方法においては、それは、例えば、識別された面とみなされる2つ以上の面の間の迅速かつ俊敏な切替えであってもよい。
【0097】
一例として、修正されたレンダリングを有する識別されたエッジは、同じ次元のより良い候補が確実に識別されるまで保持され得る。言い換えれば、識別すること(S40)は、関数fを最小化することを含むことができ、現在の識別されたエッジから別のエッジへの切り替えは、別のエッジの関数fの値が現在の識別されたエッジの関数fの値よりも小さくなってすぐには行われない。過剰なポッピングを回避するために、現在の識別されたエッジの関数fの結果を別のエッジと比較するために、識別すること(S40)の間にペナルティ閾値またはペナルティ係数が使用され得る。言い換えれば、修正されたレンダリングを用いて識別されたエッジは、同じ次元のより良い候補が、追加されたペナルティ閾値を用いて、かつ/あるいは、候補の関数fの結果にペナルティ係数を乗じて、関数fを最小化するまで保持され得る。代替的に、ユーザが特定の時間量にわたって動いていないことを検出した後にのみ、現在の識別されたエッジから別のエッジに切り替えることによって、過剰なポッピングを回避でき得る。
【0098】
連続的なユーザフィードバックは、例えば、3Dオブジェクト200のレンダリングの修正によって、かつ/あるいは3Dオブジェクト200の近くかつ/あるいはユーザの手の近くに仮想表現を追加することによって、かつ/あるいはデバイスからの触覚フィードバックによって行われ得る。
【0099】
一例においては、本方法における3Dオブジェクトのエッジは、三角形および/または四角形および/または位相面の一部を形成するエッジであってよい。位相面は、隣接する三角形のグループまたは隣接する四角形のグループであり、より大きな「論理的」連続面を形成する一方で、特に位相面が大きい場合、各プリミティブ間の多種多様な向きを依然として潜在的に表示する。CADプログラムでは、位相面は、ほとんどの場合、位相エッジによって境界付けられる。隣接する三角形および/または隣接する四角形によって、グループの各三角形または四角形は、当該グループの三角形または四角形の1つの隣接する三角形または四角形であることが理解されるべきである。例えば、車を表すCADオブジェクトは、100未満の位相面にグループ化され得る数千の三角形から構成され得る。例えば、1つの位相面は、自動車の座席の上面を表すことができる。
【0100】
一例においては、手のジェスチャを検出すること(S20)は、親指以外のすべての指を折り曲げることと、親指の外転とを含む。図5に示すように、ユーザが親指の外転を行っている間に、人差し指、中指、薬指および小指が折り曲げられる。親指の外転は、短母指外転筋を含む筋肉の収縮の結果である。
【0101】
親指以外のすべての指が折り曲げられることおよび親指の外転を検出することは、2つの理由で有利である。第1に、このジェスチャは、ユーザによって実施されることが非常に容易であり、したがって、ジェスチャの人間工学を改善する。加えて、このジェスチャは検出された姿勢とデフォルト姿勢との混同のリスクを低減し、したがって、検出すること(S20)は、より信頼性がある。
【0102】
一例においては、本方法は、手のジェスチャが親指の内転をさらに含むことを検出することによって、3Dオブジェクトの識別されたエッジを選択することをさらに含む。言い換えれば、3Dオブジェクトの識別されたエッジは、手のジェスチャが親指の内転を含むとき、エッジの現在の選択に追加される。したがって、識別されたエッジは、選択されたエッジとみなされる。この選択は、ステップS40またはステップS400またはステップS420の間に行われてもよい。したがって、ユーザは、本方法を反復的に使用して、複数の関心のあるエッジを選択することができる。
【0103】
一例においては、本方法は、手のジェスチャが親指以外のすべての指を拡げることをさらに含むことを検出することと、選択されたエッジを選択解除することとをさらに含むことができる。検出は、本方法の任意のステップの間に行うことができる。したがって、一例として、ユーザは、最後に選択されたエッジを選択解除することができる。別の例として、ユーザは、エッジの現在の選択全体を選択解除することができる。
【0104】
一例においては、手のジェスチャを検出することは、末節骨が手のひらと実質的に接触していることを検出することをさらに含んでもよい。末節骨と手のひらとの接触は、検出すること(S20)の堅牢性を改善する。末節骨が手のひらと実質的に接触していることを検出することは、検出された姿勢とデフォルト姿勢との混同のリスクを低減する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12