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

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

▶ ロブロックス・コーポレーションの特許一覧

特表2024-537259実用的3Dアセットのための推論されたスケルトン構造
<>
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図1
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図2
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図3
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図4
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図5
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図6
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図7
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図8
  • 特表-実用的3Dアセットのための推論されたスケルトン構造 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-10
(54)【発明の名称】実用的3Dアセットのための推論されたスケルトン構造
(51)【国際特許分類】
   G06T 13/40 20110101AFI20241003BHJP
   G06T 17/20 20060101ALI20241003BHJP
【FI】
G06T13/40
G06T17/20 500
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024521295
(86)(22)【出願日】2022-10-13
(85)【翻訳文提出日】2024-04-09
(86)【国際出願番号】 US2022046528
(87)【国際公開番号】W WO2023064441
(87)【国際公開日】2023-04-20
(31)【優先権主張番号】63/255,489
(32)【優先日】2021-10-14
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/404,871
(32)【優先日】2022-09-08
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520317055
【氏名又は名称】ロブロックス・コーポレーション
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】セルゲイ・マケエフ
(72)【発明者】
【氏名】エイドリアン・ポール・ロングランド
(72)【発明者】
【氏名】ジョヴァンニ・アントニオ・クティーニ
(72)【発明者】
【氏名】サティーシュ・スブラマニアン
(72)【発明者】
【氏名】デイヴィッド・ビー・バシュッキ
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050BA08
5B050BA09
5B050BA12
5B050CA07
5B050DA04
5B050EA07
5B050EA12
5B050FA05
5B050FA10
(57)【要約】
いくつかの実施形態は、実用的3Dアセットを作成するために、スケルトン構造を推論するための方法、システム、およびコンピュータ可読媒体に関する。ユーザは、異なる親モデルからの異なる部分を使用して、アバターを作成してもよい。作成時に、ジョイントの配置を決定し、全体的なスケルトン構造を推論するために、アバターのためのデータモデルが検査される。その後、異なるスキニング技法が、ジョイントの配置および動きに基づいて、アニメーション中にアバタースキンを変形させるために使用されてもよい。
【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
3次元(3D)アバターのためのアバターデータモデルを受信するステップであって、前記アバターデータモデルが、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含み、前記第1の親モデルおよび前記第2の親モデルが、異なる3Dモデルである、ステップと、
前記アバターデータモデルのためのグラフ表現を作成するステップであって、前記グラフ表現が、前記アバターデータモデルのための選択されたルート点において開始し、前記アバターデータモデルの末端部分まで及ぶ、ステップと、
前記グラフ表現をトラバースして複数のジョイントロケーションを決定するステップであって、前記複数のジョイントロケーションの各々が、ジョイントが配置されることになるそれぞれのロケーションを表し、前記ジョイントロケーションが、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定される、ステップと、
すべてのジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶように、かつスケルトン部分が、前記第1のジョイントおよび前記第2のジョイントのうちの一方または両方の運動によって回転するように、前記複数のジョイントロケーションの間でスケルトン構造を推論するステップと、
前記複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、および前記アバターデータモデルを組み合わせて実用的3Dアセットを作成するステップと
を含む、コンピュータ実施方法。
【請求項2】
仮想体験の仮想環境内で、前記実用的3Dアセットをアニメーション化するステップ
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記実用的3Dアセットをアニメーション化するステップが、
前記実用的3Dアセットのアニメーション中に、スキン変形のために前記推論されたスケルトン構造を利用するステップ
を含む、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記グラフ表現が、前記アバターデータモデルの個々の身体部分を表す複数のノードを含む、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記グラフ表現が、複数のエッジをさらに含み、前記複数のエッジのうちの各エッジが、少なくとも2つのノードの間に及び、前記複数のエッジのうちの各エッジが、ジョイントロケーションを表す、請求項4に記載のコンピュータ実施方法。
【請求項6】
前記複数のジョイントロケーションにおいて組み合わせられる各ジョイントが、アニメーション化されたジョイントまたは固定されたジョイントのいずれかを含む、請求項1に記載のコンピュータ実施方法。
【請求項7】
少なくとも前記推論されたスケルトン構造に基づいて、前記実用的3Dアセットをスキニングするステップ
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
前記グラフ表現をトラバースするステップが、
深さ優先探索または幅優先探索のうちの1つまたは複数を行うステップ
を含む、請求項1に記載のコンピュータ実施方法。
【請求項9】
前記グラフ表現が、前記アバターデータモデルの個々の身体部分のスケールに基づいてエッジに割り当てられた重みを有する重み付きグラフを含む、請求項1に記載のコンピュータ実施方法。
【請求項10】
前記第1の親モデルまたは前記第2の親モデルのうちの1つまたは複数が、仮想体験プラットフォームのユーザ生成コンテンツである、請求項1に記載のコンピュータ実施方法。
【請求項11】
システムであって、
命令を記憶したメモリと、
前記メモリに結合され、前記メモリにアクセスするように動作可能な処理デバイスと
を備え、前記命令が、前記処理デバイスによって実行されると、前記処理デバイスに、
3次元(3D)アバターのためのアバターデータモデルを受信することであって、前記アバターデータモデルが、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含み、前記第1の親モデルおよび前記第2の親モデルが、異なる3Dモデルである、ことと、
前記アバターデータモデルのためのグラフ表現を作成することであって、前記グラフ表現が、前記アバターデータモデルのための選択されたルート点において開始し、前記アバターデータモデルの末端部分まで及ぶ、ことと、
前記グラフ表現をトラバースして複数のジョイントロケーションを決定することであって、前記複数のジョイントロケーションの各々が、ジョイントが配置されることになるそれぞれのロケーションを表し、前記ジョイントロケーションが、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定される、ことと、
すべてのジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶように、かつスケルトン部分が、前記第1のジョイントおよび前記第2のジョイントのうちの一方または両方の運動によって回転するように、前記複数のジョイントロケーションの間でスケルトン構造を推論することと、
前記複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、および前記アバターデータモデルを組み合わせて実用的3Dアセットを作成することと
を含む動作を実行させる、システム。
【請求項12】
前記動作が、
仮想体験の仮想環境内で、前記実用的3Dアセットをアニメーション化すること
をさらに含む、請求項11に記載のシステム。
【請求項13】
前記実用的3Dアセットをアニメーション化することが、
前記実用的3Dアセットのアニメーション中に、スキン変形のために前記推論されたスケルトン構造を利用すること
を含む、請求項12に記載のシステム。
【請求項14】
前記グラフ表現が、前記アバターデータモデルの個々の身体部分を表す複数のノードを含む、請求項11に記載のシステム。
【請求項15】
前記グラフ表現が、複数のエッジをさらに含み、前記複数のエッジのうちの各エッジが、少なくとも2つのノードの間に及び、前記複数のエッジのうちの各エッジが、ジョイントロケーションを表す、請求項14に記載のシステム。
【請求項16】
前記複数のジョイントロケーションにおいて組み合わせられる各ジョイントが、アニメーション化されたジョイントまたは固定されたジョイントのいずれかを含む、請求項11に記載のシステム。
【請求項17】
前記動作が、
少なくとも前記推論されたスケルトン構造に基づいて、前記実用的3Dアセットをスキニングすること
をさらに含む、請求項11に記載のシステム。
【請求項18】
前記グラフ表現をトラバースすることが、
深さ優先探索または幅優先探索のうちの1つまたは複数を行うこと
を含む、請求項11に記載のシステム。
【請求項19】
前記グラフ表現が、前記アバターデータモデルの個々の身体部分のスケールに基づいてエッジに割り当てられた重みを有する重み付きグラフを含む、請求項11に記載のシステム。
【請求項20】
命令を記憶した非一時的コンピュータ可読媒体であって、前記命令が、処理デバイスによる実行に応答して、前記処理デバイスに、
3次元(3D)アバターのためのアバターデータモデルを受信することであって、前記アバターデータモデルが、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含み、前記第1の親モデルおよび前記第2の親モデルが、異なる3Dモデルである、ことと、
前記アバターデータモデルのためのグラフ表現を作成することであって、前記グラフ表現が、前記アバターデータモデルのための選択されたルート点において開始し、前記アバターデータモデルの末端部分まで及ぶ、ことと、
前記グラフ表現をトラバースして複数のジョイントロケーションを決定することであって、前記複数のジョイントロケーションの各々が、ジョイントが配置されることになるそれぞれのロケーションを表し、前記ジョイントロケーションが、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定される、ことと、
すべてのジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶように、かつスケルトン部分が、前記第1のジョイントおよび前記第2のジョイントのうちの一方または両方の運動によって回転するように、前記複数のジョイントロケーションの間でスケルトン構造を推論することと、
前記複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、および前記アバターデータモデルを組み合わせて実用的3Dアセットを作成することと
を含む動作を実行させる、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、その両方の全体が参照により本明細書に組み込まれる、2021年10月14日に出願された米国仮特許出願第63/255,489号、および2022年9月8日に出願された米国仮特許出願第63/404,871号の、米国特許法第119条(e)項に基づく優先権を主張する国際出願である。
【0002】
実施形態は、一般にオンライン仮想体験プラットフォームに関し、より詳細には、実用的3Dアセットのための推論されたスケルトン構造を作成するための方法、システム、およびコンピュータ可読媒体に関する。
【背景技術】
【0003】
仮想体験プラットフォームおよびオンラインゲーミングプラットフォームなどのオンラインプラットフォームは、ユーザおよび開発者による使用のためのアバターおよびアバター編集スイートを含むことができる。
【0004】
本明細書で提供される背景技術の説明は、本開示のコンテキストを提示するためのものである。この背景技術セクションにおいて説明される範囲内での、今回指名された発明者の作業、ならびに場合によっては出願時に従来技術として適格でない場合がある説明の態様は、本開示に対する従来技術として明確にも暗示的にも認められない。
【発明の概要】
【課題を解決するための手段】
【0005】
本開示の態様は、実用的3Dアセットのための推論されたスケルトン構造を作成するための方法、システム、およびコンピュータ可読媒体を対象とする。
【0006】
一態様では、コンピュータ実施方法が説明される。コンピュータ実施方法は、3次元(3D)アバターのためのアバターデータモデルを受信するステップであって、アバターデータモデルが、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含み、第1の親モデルおよび第2の親モデルが、異なる3Dモデルである、ステップと、アバターデータモデルのためのグラフ表現を作成するステップであって、グラフ表現が、アバターデータモデルのための選択されたルート点において開始し、アバターデータモデルの末端部分まで及ぶ、ステップと、グラフ表現をトラバースして複数のジョイントロケーションを決定するステップであって、ジョイントロケーションが、ジョイントが配置されることになるそれぞれのロケーションを各々表し、ジョイントロケーションが、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定される、ステップと、すべてのジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶように、かつスケルトン部分が、第1のジョイントおよび第2のジョイントのうちの一方または両方の運動によって回転するように、複数のジョイントロケーションの間でスケルトン構造を推論するステップと、複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、およびアバターデータモデルを組み合わせて実用的3Dアセットを作成するステップとを含んでもよい。
【0007】
コンピュータ実施方法の様々な実施形態について説明する。
【0008】
いくつかの実施形態では、コンピュータ実施方法は、仮想体験の仮想環境内で、実用的3Dアセットをアニメーション化するステップをさらに含む。
【0009】
いくつかの実施形態では、実用的3Dアセットをアニメーション化するステップが、実用的3Dアセットのアニメーション中に、スキン変形のために推論されたスケルトン構造を利用するステップを含む。
【0010】
いくつかの実施形態では、グラフ表現が、アバターデータモデルの個々の身体部分を表す複数のノードを含む。
【0011】
いくつかの実施形態では、グラフ表現が、複数のエッジをさらに含み、複数のエッジのうちの各エッジが、少なくとも2つのノードの間に及び、複数のエッジのうちの各エッジが、ジョイントロケーションを表す。
【0012】
いくつかの実施形態では、複数のジョイントロケーションにおいて組み合わせられる各ジョイントが、アニメーション化されたジョイントまたは固定されたジョイントのいずれかを含む。
【0013】
いくつかの実施形態では、コンピュータ実施方法は、少なくとも推論されたスケルトン構造に基づいて、実用的3Dアセットをスキニングするステップをさらに含む。
【0014】
いくつかの実施形態では、グラフ表現をトラバースするステップが、深さ優先探索または幅優先探索のうちの1つまたは複数を含む。
【0015】
いくつかの実施形態では、グラフ表現が、アバターデータモデルの個々の身体部分のスケールに基づいてエッジに割り当てられた重みを有する重み付きグラフを含む。
【0016】
いくつかの実施形態では、第1の親モデルまたは第2の親モデルのうちの1つまたは複数が、仮想体験プラットフォームのユーザ生成コンテンツである。
【0017】
別の態様では、システムが説明される。システムは、命令を記憶したメモリと、メモリに結合され、メモリにアクセスするように動作可能な処理デバイスとを含んでもよく、命令が、処理デバイスによって実行されると、処理デバイスに、3次元(3D)アバターのためのアバターデータモデルを受信することであって、アバターデータモデルが、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含み、第1の親モデルおよび第2の親モデルが、異なる3Dモデルである、ことと、アバターデータモデルのためのグラフ表現を作成することであって、グラフ表現が、アバターデータモデルのための選択されたルート点において開始し、アバターデータモデルの末端部分まで及ぶ、ことと、グラフ表現をトラバースして複数のジョイントロケーションを決定することであって、ジョイントロケーションが、ジョイントが配置されることになるそれぞれのロケーションを各々表し、ジョイントロケーションが、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定される、ことと、すべてのジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶように、かつスケルトン部分が、第1のジョイントおよび第2のジョイントのうちの一方または両方の運動によって回転するように、複数のジョイントロケーションの間でスケルトン構造を推論することと、複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、およびアバターデータモデルを組み合わせて実用的3Dアセットを作成することとを含む動作を実行させる。
【0018】
システムの様々な実施形態について説明する。
【0019】
いくつかの実施形態では、動作が、仮想体験の仮想環境内で、実用的3Dアセットをアニメーション化することをさらに含む。
【0020】
いくつかの実施形態では、実用的3Dアセットをアニメーション化することが、実用的3Dアセットのアニメーション中に、スキン変形のために推論されたスケルトン構造を利用することを含む。
【0021】
いくつかの実施形態では、グラフ表現が、アバターデータモデルの個々の身体部分を表す複数のノードを含む。
【0022】
いくつかの実施形態では、グラフ表現が、複数のエッジをさらに含み、複数のエッジのうちの各エッジが、少なくとも2つのノードの間に及び、複数のエッジのうちの各エッジが、ジョイントロケーションを表す。
【0023】
いくつかの実施形態では、複数のジョイントロケーションにおいて組み合わせられる各ジョイントが、アニメーション化されたジョイントまたは固定されたジョイントのいずれかを含む。
【0024】
いくつかの実施形態では、動作が、少なくとも推論されたスケルトン構造に基づいて、実用的3Dアセットをスキニングすることをさらに含む。
【0025】
いくつかの実施形態では、グラフ表現をトラバースすることが、深さ優先探索または幅優先探索のうちの1つまたは複数を含む。
【0026】
いくつかの実施形態では、グラフ表現が、アバターデータモデルの個々の身体部分のスケールに基づいてエッジに割り当てられた重みを有する重み付きグラフを含む。
【0027】
別の態様では、非一時的コンピュータ可読媒体が説明される。非一時的コンピュータ可読媒体は、命令を記憶してもよく、命令が、処理デバイスによる実行に応答して、処理デバイスに、3次元(3D)アバターのためのアバターデータモデルを受信することであって、アバターデータモデルが、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含み、第1の親モデルおよび第2の親モデルが、異なる3Dモデルである、ことと、アバターデータモデルのためのグラフ表現を作成することであって、グラフ表現が、アバターデータモデルのための選択されたルート点において開始し、アバターデータモデルの末端部分まで及ぶ、ことと、グラフ表現をトラバースして複数のジョイントロケーションを決定することであって、ジョイントロケーションが、ジョイントが配置されることになるそれぞれのロケーションを各々表し、ジョイントロケーションが、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定される、ことと、すべてのジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶように、かつスケルトン部分が、第1のジョイントおよび第2のジョイントのうちの一方または両方の運動によって回転するように、複数のジョイントロケーションの間でスケルトン構造を推論することと、複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、およびアバターデータモデルを組み合わせて実用的3Dアセットを作成することとを含む動作を実行させる。
【0028】
非一時的コンピュータ可読媒体の様々な実施形態について説明する。
【0029】
また別の態様によれば、システム、方法、および非一時的コンピュータ可読媒体の部分、特徴、および実施詳細が組み合わせられて、追加の態様が形成されてもよく、追加の態様は、個々の構成要素または特徴のうちのいくつかまたは部分を省略および/または修正し、追加の構成要素もしくは特徴、および/または他の変更形態を含む、いくつかの態様を含み、すべてのそのような変更形態が本開示の範囲内である。
【図面の簡単な説明】
【0030】
図1】いくつかの実施形態による、例示的なネットワーク環境の図である。
図2】いくつかの実施形態による、入力アバターデータモデルから実用的3Dアセットへの例示的な進行を示す図である。
図3】いくつかの実施形態による、入力アバターデータモデルから実用的3Dアセットを生成するための例示的な方法のフローチャートである。
図4】いくつかの実施形態による、基本アバターデータモデルの例示的な可視化の概略図である。
図5】いくつかの実施形態による、例示的なカスタマイズされたアバターデータモデルの概略図である。
図6】いくつかの実施形態による、アバターデータモデルの例示的なグラフ表現の図である。
図7】いくつかの実施形態による、入力されたカスタマイズされたアバターデータモデルに基づく、例示的な推論されたスケルトン構造の概略図である。
図8】いくつかの実施形態による、入力されたカスタマイズされたアバターデータモデルから実用的3Dアセットを生成するための方法のフローチャートである。
図9】いくつかの実施形態による、例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0031】
以下の詳細な説明では、本出願の一部を形成する添付の図面が参照される。図面では、同様の記号は、コンテキストが別段に規定しない限り、典型的には同様の構成要素を識別する。詳細な説明、図面、および特許請求の範囲において説明する例示的な実施形態は、限定であるものではない。本明細書で提示される主題の趣旨または範囲から逸脱することなく、他の実施形態が利用されてもよく、他の変更が行われてもよい。本明細書で一般に説明され、図に示されるような本開示の態様は、多種多様な異なる構成において配置、置換、結合、分離、および設計されることが可能であり、そのすべてが本明細書で企図される。
【0032】
本明細書における「いくつかの実施形態」、「一実施形態」、「例示的な実施形態」などへの言及は、説明する実施形態が、特定の特徴、構造、または特性を含んでもよいが、あらゆる実施形態が、その特定の特徴、構造、または特性を必ずしも含まなくてもよいことを示す。その上、そのような句は、必ずしも同じ実施形態を指しているとは限らない。さらに、特定の特徴、構造、または特性が一実施形態に関連して説明されるとき、そのような特徴、構造、または特性は、明示的に説明されるか否かにかかわらず、他の実施形態に関連して実施されてもよい。
【0033】
様々な実施形態について、3D仮想体験または環境内で使用される3Dアバターのコンテキストにおいて本明細書で説明する。本明細書で説明する技法のいくつかの実施形態は、仮想現実(VR)会議、3Dセッション(たとえば、3Dアバターを伴うオンライン講義または他のタイプの提示)、仮想コンサート、拡張現実(AR)セッションなどの様々なタイプの3D環境に、または1つもしくは複数の3Dアバターによって3D環境内で表される1人もしくは複数のユーザを含んでもよい、他のタイプの3D環境内で適用されてもよい。
【0034】
いくつかの態様では、3Dアセットを操作し、新しい実用的アセットを作成するためのシステムおよび方法が提供される。たとえば、実用的3Dアセットは、低い計算負荷とともにアニメーション化しやすいこと、任意のタイプのクライアントデバイス上の仮想環境内の視覚的提示に好適であること、複数の異なる形式のアニメーションに好適であること、異なるスキニング方法に好適であること、異なるスキニング変形に好適であること、かつ/または様々なクライアントデバイス上のアニメーションに好適であること、のうちの1つまたは複数である、3Dアセットである。オンライン仮想体験プラットフォームなどのオンラインプラットフォームは、一般に、仮想体験内で使用されることになる仮想アイテム、仮想アバター、および他の実用的3Dアセットを作成、編集、記憶、および場合によっては操作するための能力を提供する。
【0035】
たとえば、仮想体験プラットフォームは、ユーザ生成コンテンツまたは開発者生成コンテンツ(本明細書で「UGC」と各々呼ばれる)を含んでもよい。UGCは、たとえば、ユーザがアバターおよび他のアイテムを作成するために、様々な仮想要素を検索し、それらと対話することを可能にすることによって、仮想体験プラットフォームを通して記憶および実装されてもよい。ユーザは、新しいモデルおよびアバターを作成するために、様々な仮想アバターおよび3Dモデルからの様々な仮想要素を選択し、並べ替えてもよい。アバター身体作成者は、任意の所望の/カスタマイズされた形状およびサイズのジオメトリを有する身体を作成し、仮想体験プラットフォームによってホストされる身体ライブラリにおいて、身体を公開することができる。
【0036】
仮想体験または他の3Dセッション中のランタイムにおいて、ユーザは、(頭、胴、手足などの様々な部分を含む)特定の身体を選択するために、および身体(またはその部分)を並べ替えるために、身体ライブラリにアクセスする。本明細書で説明する実施形態によれば、仮想体験プラットフォームは、身体(またはその部分)の全体的なモデルを入力として取り、適切な運動(たとえば、ジョイントの動き、回転など)を可能にするスケルトン構造を推論してもよい。このようにして、ユーザ体験を損なうことなしに、新しいアバター身体を作成するために、多数の異なるアバター身体部分が並べ替えられてもよい。
【0037】
たとえば、ユーザ生成コンテンツは、第1のデータモデルおよび第2のデータモデルを含んでもよい。ユーザは、第1のデータモデルおよび第2のデータモデルからの1つまたは複数の身体部分を混合する(第1および第2のデータモデルからの、ならびに場合によっては追加のデータモデルからの、異なる身体部分を取る)ことによって、新しいアバターデータモデルを作成してもよい。したがって、アバターのための様々なデータモデルが、異なるタイプ、スケール、サイズ、および構造の身体部分を有する場合があるので、新しいアバターデータモデルは、新しいアバターデータモデルを使用する実用的3Dアニメーションのために適切に整合している、ジョイント、継ぎ目、接続点、接続部、および/または他の部分を有していない場合があるということになる。
【0038】
たとえば、新しいアバターデータモデルは、ユーザ体験を損なうアニメーション中の不適切なスキニング変形を引き起こす、不整合な継ぎ目を有する場合がある。別の例では、新しいアバターデータモデルは、ユーザ体験を損なうスキニング変形を、スケルトン構造が不適切に特徴づけることを引き起こす、不整合なアニメーション化されたジョイントを有する場合がある。別の例では、新しいアバターデータモデルは、魅力的な体験のために好ましいアニメーションにおける運動を実現するには、多過ぎるかまたは少な過ぎる、アニメーション化されたジョイントを有する場合がある。その上、新しいアバターデータモデルは、魅力的なユーザ体験およびスムーズなアニメーションを損なう、他の不整合な、不適切な、または他の要素を有する場合がある。異なる例では、上記の欠陥のうちの2つ以上が、新しいアバターデータモデルにおいて存在する場合がある。
【0039】
いくつかの実施形態によれば、新しいアバターデータモデルは、異なる身体部分を決定するために分析されてもよく、分析に基づいて、異なる身体部分を表すために、グラフ表現が作成されてもよい。グラフ表現は、異なる、混合された身体部分および/または要素とより厳密に一致する、新しいジョイントロケーションを正確に決定するために、探索アルゴリズムを用いてトラバースされてもよい。(親身体部分モデルに応じて)アニメーション化されたジョイントまたは固定されたジョイントが、決定されたジョイントロケーションにおいて配置されてもよい。スケルトン構造は、各ジョイントが少なくとも1つの接続されたスケルトン部材を備えるように、ジョイント間に存在するように推論されてもよい。アニメーションが魅力的で滑らかであってもよいように、正しい数のジョイントおよび適切に整合された要素を含む、実用的3Dアセットを作成するために、新しいジョイントおよび推論されたスケルトン構造が、新しいアバターデータモデルと組み合わせられてもよい。
【0040】
このようにして、実施形態は、ユーザが3Dアバターモデルにおいて新しいジョイントおよびスケルトン構造を手動で整合させるように試みることに関連する、計算リソースを低減する利益を提供する。実施形態はまた、ユーザが難解なコンピュータアニメーション依存ではなく、独自のアバターの作成に集中してもよいように、3Dモデル作成プロセスの大部分を自動化する技術的利益も提供する。実施形態はまた、ユーザ体験の向上、新しいアバターモデルのより大幅なクロスプラットフォーム互換性、複数の仮想体験にわたる新しいアバターモデルのより大幅な互換性、経験の浅いユーザが3Dモデリングを始める際の障壁を引き下げること、ユーザエンゲージメントメトリクスの改善という技術的利益、および他の技術的利益も提供する。
【0041】
図1:システムアーキテクチャ
【0042】
図1は、本開示のいくつかの実施形態による、例示的なネットワーク環境100を示す。図1および他の図は、同様の要素を識別するために、同様の参照番号を使用する。「110a」などの参照番号の後の文字は、テキストが、その特定の参照番号を有する要素を詳細に指すことを示す。「110」など、後続の文字なしのテキストにおける参照番号は、その参照番号をもっている、図における要素のいずれかまたはすべてを指す(たとえば、テキストにおける「110」は、図における参照番号「110a」、「110b」、および/または「110n」を指す)。
【0043】
ネットワーク環境100(本明細書で「プラットフォーム」とも呼ばれる)は、ネットワーク122を介してすべてが結合される、オンライン仮想体験サーバ102と、データストア108と、クライアントデバイス110a~n(クライアントデバイス110と呼ばれる)とを含む。
【0044】
オンライン仮想体験サーバ102は、特に、仮想体験エンジン104と、1つまたは複数の仮想体験105と、モデリングコンポーネント130とを含むことができる。オンライン仮想体験サーバ102は、いくつかの実施形態では、1つまたは複数のクライアントデバイス110に仮想体験105を提供することと、モデリングコンポーネント130を介して、推論されたスケルトン構造の自動生成を提供することとを行うように構成されてもよい。
【0045】
データストア108は、オンライン仮想体験サーバ102に結合されるように示されるが、いくつかの実施形態では、オンライン仮想体験サーバ102の一部として提供されることが可能である。データストアは、いくつかの実施形態では、広告データ、ユーザデータ、エンゲージメントデータ、および/またはモデリングコンポーネント130に関連する他のコンテキストデータを記憶するように構成されてもよい。すべてのデータは、特定のユーザ許可とともに、および適用可能な規制に従って記憶される。
【0046】
クライアントデバイス110(たとえば、110a、110b、110n)は、オンライン仮想体験サーバ102と対話するために、および、たとえば、コンピュータモニタ、テレビ、タブレット/ラップトップ画面、または他のディスプレイ(たとえば、仮想現実ゴーグルなどのウェアラブルディスプレイ、または他のウェアラブルデバイス)(図示せず)を通して、グラフィカルユーザインターフェース(GUI)を見るために、仮想体験アプリケーション112(たとえば、112a、112b、112n)と、I/Oインターフェース114(たとえば、114a、114b、114n)とを含むことができる。いくつかの実施形態では、クライアントデバイス110は、本明細書で説明するような、カスタマイズされたアバターデータモデルおよび実用的3Dアセットを含んでもよい、仮想体験を実行および表示するように構成されてもよい。
【0047】
ネットワーク環境100は、例示のために提供される。いくつかの実施形態では、ネットワーク環境100は、図1に示されたものと同じまたは異なる方法で構成された、同じ、より少ない、より多い、または異なる要素を含んでもよい。
【0048】
いくつかの実施形態では、ネットワーク122は、公衆ネットワーク(たとえば、インターネット)、プライベートネットワーク(たとえば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、ワイヤードネットワーク(たとえば、イーサネットネットワーク)、ワイヤレスネットワーク(たとえば、802.11ネットワーク、Wi-Fi(登録商標)ネットワーク、またはワイヤレスLAN(WLAN))、セルラーネットワーク(たとえば、ロングタームエボリューション(LTE)ネットワーク)、ルータ、ハブ、スイッチ、サーバコンピュータ、またはそれらの組合せを含んでもよい。
【0049】
いくつかの実施形態では、データストア108は、非一時的コンピュータ可読メモリ(たとえば、ランダムアクセスメモリ)、キャッシュ、ドライブ(たとえば、ハードドライブ)、フラッシュドライブ、データベースシステム、またはデータを記憶することが可能な別のタイプの構成要素もしくはデバイスであってもよい。データストア108はまた、複数のコンピューティングデバイス(たとえば、複数のサーバコンピュータ)に広がってもよい、複数の記憶構成要素(たとえば、複数のドライブまたは複数のデータベース)を含んでもよい。
【0050】
いくつかの実施形態では、オンライン仮想体験サーバ102は、1つまたは複数のコンピューティングデバイスを有するサーバ(たとえば、クラウドコンピューティングシステム、ラックマウントサーバ、サーバコンピュータ、物理サーバのクラスタ、仮想サーバなど)を含むことができる。いくつかの実施形態では、サーバは、オンライン仮想体験サーバ102中に含まれてもよく、独立したシステムであるか、または別のシステムもしくはプラットフォームの一部であってもよい。いくつかの実施形態では、オンライン仮想体験サーバ102は、単一のサーバ、または複数のサーバ、ロードバランサ、ネットワークデバイス、および他の構成要素の任意の組合せであってもよい。オンライン仮想体験サーバ102はまた、物理サーバ上で実装されてもよいが、いくつかの実施形態では、仮想化技術を利用してもよい。オンライン仮想体験サーバ102の他の変形形態も、適用可能であってもよい。
【0051】
いくつかの実施形態では、オンライン仮想体験サーバ102は、オンライン仮想体験サーバ102上で動作を実行するために、およびオンライン仮想体験サーバ102へのアクセスをユーザに(たとえば、クライアントデバイス110を介して)提供するために使用されてもよい、1つまたは複数のコンピューティングデバイス(ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなど)、データストア(たとえば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェアコンポーネント、および/またはハードウェアコンポーネントを含んでもよい。
【0052】
オンライン仮想体験サーバ102はまた、オンライン仮想体験サーバ102によって提供されたコンテンツへのアクセスをユーザに提供するために使用されてもよい、ウェブサイト(たとえば、1つまたは複数のウェブページ)またはアプリケーションバックエンドソフトウェアを含んでもよい。たとえば、ユーザ(または開発者)は、それぞれ、クライアントデバイス110上で仮想体験アプリケーション112を使用して、オンライン仮想体験サーバ102にアクセスしてもよい。
【0053】
いくつかの実施形態では、オンライン仮想体験サーバ102は、デジタルアセットおよびデジタル仮想体験生成提供を含んでもよい。たとえば、プラットフォームは、設計、修正、個人のための独自の調整、および他の修正機能を可能にする、管理者インターフェースを提供してもよい。いくつかの実施形態では、仮想体験は、たとえば、2次元(2D)ゲーム、3次元(3D)ゲーム、仮想現実(VR)ゲーム、または拡張現実(AR)ゲームであってもよい。いくつかの実施形態では、仮想体験作成者および/または開発者は、仮想体験を検索することと、仮想体験の部分を組み合わせることと、特定のアクティビティのための仮想体験(たとえば、グループ仮想体験)を調整することと、仮想体験サーバ102を通して提供される他の特徴とを行ってもよい。
【0054】
いくつかの実施形態では、オンライン仮想体験プラットフォーム102またはクライアントデバイス110は、仮想体験エンジン104または仮想体験アプリケーション112を含んでもよい。いくつかの実施形態では、仮想体験エンジン104は、仮想体験105の開発または実行のために使用されてもよい。たとえば、仮想体験エンジン104は、特徴の中でも、2D、3D、VR、もしくはARグラフィックスのためのレンダリングエンジン(「レンダラ」)、物理エンジン、衝突検出エンジン(および衝突反応)、サウンドエンジン、スクリプト記述機能、ハプティクスエンジン、人工知能エンジン、ネットワーキング機能、ストリーミング機能、メモリ管理機能、スレッディング機能、シーングラフ機能、またはシネマティックスのためのビデオサポートを含んでもよい。仮想体験エンジン104の構成要素は、仮想体験の計算およびレンダリングを助けるコマンド(たとえば、レンダリングコマンド、衝突コマンド、物理コマンドなど)を生成してもよい。
【0055】
仮想体験エンジン104を使用するオンライン仮想体験サーバ102は、仮想体験エンジン機能の一部もしくは全部を実行する(たとえば、物理コマンド、レンダリングコマンドなどを生成する)か、または仮想体験エンジン機能の一部もしくは全部をクライアントデバイス110の仮想体験エンジン104(図示せず)にオフロードしてもよい。いくつかの実施形態では、各仮想体験105は、オンライン仮想体験サーバ102上で実行される仮想体験エンジン機能と、クライアントデバイス110上で実行される仮想体験エンジン機能との間の異なる比率を有してもよい。
【0056】
いくつかの実施形態では、仮想体験命令は、クライアントデバイス110が仮想体験のゲームプレイ、グラフィックス、および他の特徴をレンダリングすることを可能にする命令を指す場合がある。命令は、ユーザ入力(たとえば、物理的オブジェクト位置決め)、キャラクタ位置および速度情報、またはコマンド(たとえば、物理コマンド、レンダリングコマンド、衝突コマンドなど)のうちの1つまたは複数を含んでもよい。
【0057】
いくつかの実施形態では、クライアントデバイス110は、パーソナルコンピュータ(PC)、モバイルデバイス(たとえば、ラップトップ、モバイルフォン、スマートフォン、タブレットコンピュータ、またはネットブックコンピュータ)、ネットワーク接続テレビ、ゲーミングコンソールなどのコンピューティングデバイスを各々含んでもよい。いくつかの実施形態では、クライアントデバイス110は、「ユーザデバイス」と呼ばれる場合もある。いくつかの実施形態では、1つまたは複数のクライアントデバイス110が、任意の所与の瞬間において、オンライン仮想体験サーバ102に接続してもよい。クライアントデバイス110の数は、限定ではなく、例示として提供されることに留意されてもよい。いくつかの実施形態では、任意の数のクライアントデバイス110が使用されてもよい。
【0058】
いくつかの実施形態では、クライアントデバイス110のうちの1つまたは複数は、仮想体験アプリケーション112のインスタンスを含んでもよい。仮想体験アプリケーション112は、クライアントデバイス110における対話のためにレンダリングされてもよい。オンラインプラットフォーム100の仮想体験または別のGUI内のユーザ対話中に、ユーザは、異なるライブラリからの、異なる親モデルからの、および/または他のユーザ生成コンテンツからの、異なる身体部分を含む、アバターを作成してもよい。モデリングコンポーネント130は、新たに作成されたアバターを表すデータモデルを入力として取り、すべての個々の部分情報を読み取り、仮想体験内のアニメーションを可能にする内部スケルトン構造を有する実用的3Dアセットを作成するために使用されてもよい、スケルトン構造を推論してもよい。
【0059】
いくつかの実施形態では、推論されたスケルトン構造は、ジョイント間につるされた仮想ボーンを指す。ジョイントは、仮想ボーンがジョイント上で回転し、動き、または場合によっては枢動するように、仮想ボーンの運動を特徴づける。
【0060】
いくつかの実施形態では、ジョイントは、固定されたジョイントとアニメーション化されたジョイントの両方を含んでもよい。他の形態のジョイントが適用可能であってもよい。いくつかの実施形態は、単一の軸上で枢動するジョイント、1つもしくは複数の軸上で枢動するジョイント、2つ以上の軸上で枢動するジョイント、複数の軸上で枢動するジョイント、単一の運動面内のみで枢動するジョイント、1つもしくは複数の運動面内で枢動するジョイント、2つ以上の運動面内で枢動するジョイント、および/またはすべての面において固定されたままであるが、単一の回転軸に沿って回転するジョイントを含む。
【0061】
いくつかの実施形態では、ジョイントは、動的であり、物理的にシミュレートされることも可能である。たとえば、ジョイントは、ボールソケット、ヒンジ、および/またはロッドに基づいてシミュレートされた、シミュレートされたジョイントであることが可能である。これらおよび他のシミュレートされたジョイントは、暗黙的に組み合わせられたスキニングされたキャラクタモデルが、完全にまたは部分的に物理的にシミュレートされることを可能にし、そこで、身体部分は、物理シミュレーションに反応して、独立して動くことができる(たとえば、キャラクタは、単一の剛体または複数の剛体であることが可能である)。追加として、いくつかの実施形態では、プラットフォーム100およびモデリングコンポーネント130は、完全な身体または身体の部分が変形可能な軟体としてシミュレートされることを暗黙的にサポートする。たとえば、スキニングノードをもつスケルトン構造がある限り、共有されたノードは、シミュレータによって使用された物理的ジョイントに基づいて推論された、単一の組み合わせられたスキニングされたエンティティへと一緒に、別個の部分においてリンクされるか、または、ユーザによって明示的に指定された複数のスケルトンノードを一緒に組み合わせる明示的なスケルトングラフリンクを用いて、より直接的および明示的にリンクされることも可能である。
【0062】
推論されたスケルトン構造は、各ジョイントがそれに接続された少なくとも1つのスケルトン構造および/またはその部分(たとえば、個々の仮想ボーン)を含むように、ジョイントと統合されてもよい。いくつかの実施形態では、ジョイントは、それに接続された1つまたは複数の仮想ボーンを含んでもよい。いくつかの実施形態では、ジョイントは、それに接続された2つ以上の仮想ボーンを含んでもよい。いくつかの実施形態では、ジョイントは、別のジョイント、および少なくとも1つの仮想ボーンに接続されてもよい。いくつかの実施形態では、ジョイントは、1つまたは複数のジョイント、および少なくとも1つの仮想ボーンに接続されてもよい。
【0063】
実用的3Dアセットを生成するために、推論されたスケルトン構造(たとえば、すべての仮想ボーン)およびジョイントが、アバターデータモデルと組み合わせられてもよい。組み合わせることは、モデリングコンポーネント130または別のソフトウェアコンポーネントによって実現されてもよい。組み合わせることは、いくつかの実施形態では、(たとえば、VEアプリケーション112、またはモデリングコンポーネント130のローカルインスタンスを通して)、クライアントデバイス110において実行されてもよい。
【0064】
プラットフォーム100を通して生成された実用的3Dアセットは、分散記憶デバイス、ハードウェア記憶デバイス、論理記憶デバイスなどを含む、任意の好適な記憶デバイスにおいて記憶されてもよく、いくつかの実施形態では、クライアントデバイス110に伝送されてもよい。データストア108は、プラットフォーム100の使用によって生成された異なる実用的3Dアセットを記憶し、インデックス付けしてもよいので、クライアントデバイス110が、実用的3Dアセットを容易に検索および獲得してもよいようになる。獲得された実用的3Dアセットが操作されて、新しいおよび独自のアバターがさらに作成されてもよく、本明細書で説明する方法を通して後で処理されて、アニメーション、ゲームプレイにおいて使用するために、またはプラットフォーム100もしくは他のプラットフォームにおける他の使用のために、新しい、独自の3Dアセットが作成されてもよい。
【0065】
図2:3Dアセットの例示的な生成
図2は、いくつかの実施形態による、入力アバターデータモデルから実用的3Dアセットへの例示的な進行を示す。図示のように、カスタマイズされたアバターデータモデル210は、モデルの外部を定義する、身体ケージまたはメッシュ212を含んでもよい。
【0066】
カスタマイズされたアバターデータモデルは、2つ以上の異なる親モデルから、オンライン仮想体験プラットフォーム100のユーザによって作成されてもよい。たとえば、ユーザは、異なるモデルから腕、脚、頭、胴などを選定し、それらを合わせて、カスタマイズされたアバターデータモデル210に到達してもよい。
【0067】
オンライン仮想体験プラットフォーム100は、カスタマイズされたアバターデータモデル210を受信し、動作の第1のシーケンス202を実行して、推論されたスケルトン構造220を生成してもよい。推論されたスケルトン構造220は、複数のジョイント222(サブセットのみが図2において標示されている)と、複数の仮想ボーン224(サブセットのみが図2において標示されている)とを含んでもよい。いくつかの実施形態では、モデリングコンポーネント130が、動作の第1のシーケンス202を実行する。動作の第1のシーケンス202はまた、オンライン仮想体験プラットフォーム100のモデリングコンポーネント130および/または他のソフトウェアコンポーネントのいくつかの異なるインスタンスの間で分散されてもよい。
【0068】
オンライン仮想体験プラットフォームは、動作の第2のシーケンス204を実行して、複数のジョイント222、複数の仮想ボーン224、およびカスタマイズされたアバターデータモデル210を組み合わせて、実用的3Dアセット230を取得してもよい。
【0069】
実用的3Dアセット230は、それによってモデリングコンポーネント130(または別のソフトウェアコンポーネント)が、定義されたスケルトン構造に基づいて、アニメーションシーケンスのためのスキニング変形を実行してもよい、定義されたスケルトン構造を有する3Dアセットであってもよい。たとえば、カットアウェイ232は、実用的3Dアセット230において配置されるような、下にあるスケルトン構造およびジョイントを見るための、身体ケージまたはメッシュ212の下のビューを可能にする。
【0070】
以下で、実用的3Dアセットを生成するための方法のより詳細な説明が、図3を参照しながら提示される。
【0071】
図3:推論されたスケルトン構造を用いて、3Dアセットを生成するための例示的な方法
図3は、いくつかの実施形態による、入力アバターデータモデルから実用的3Dアセットを生成するための例示的な方法300のフローチャートである。
【0072】
いくつかの実施形態では、方法300は、たとえば、図1を参照しながら説明したサーバ102上で実施されることが可能である。いくつかの実施形態では、方法300の一部または全部は、図1に示されているような1つもしくは複数のクライアントデバイス110上で、1つもしくは複数の開発者デバイス(図示せず)上で、または1つもしくは複数のサーバデバイス102上で、ならびに/あるいは開発者デバイス、サーバデバイス、およびクライアントデバイスの組合せ上で実施されることが可能である。説明する例では、実施するシステムは、1つまたは複数のデジタルプロセッサまたは処理回路(「プロセッサ」)と、1つまたは複数の記憶デバイス(たとえば、データストア108または他のストレージ)とを含む。いくつかの実施形態では、1つまたは複数のサーバおよび/またはクライアントの異なる構成要素は、方法300の異なるブロックまたは他の部分を実行することができる。いくつかの例では、第1のデバイスは、方法300のブロックを実行するものとして説明される。いくつかの実施形態は、方法300の1つまたは複数のブロックを、第1のデバイスに結果またはデータを送信することができる1つまたは複数の他のデバイス(たとえば、他のクライアントデバイスまたはサーバデバイス)によって、実行させることができる。
【0073】
いくつかの実施形態では、方法300、または方法の部分は、システムによって自動的に開始されることが可能である。いくつかの実施形態では、実施するシステムは、第1のデバイスである。たとえば、方法(またはその部分)は、定期的に実行されるか、あるいは1つまたは複数の特定のイベントまたは状態、たとえば、ユーザ要求時に、アバター寸法における変更時に、アバター身体ピースにおける変更時に、特定のアバターモデルもしくはユーザについての方法300の最後の実行から、あらかじめ決定された時間期間が満了したこと、および/または方法によって読み取られる設定において指定されることが可能である、1つもしくは複数の他の状態が生じることに基づいて、実行されることが可能である。
【0074】
方法300は、ブロック302において開始してもよい。ブロック302において、身体メッシュが、たとえば、ニュートラルバインドポーズにおいて構築される。ニュートラルバインドポーズは、アバターのベース(またはレスト)ポーズである。たとえば、アバターのスケルトンが、スキニング後に動かされるとき、スケルトンのアクションは、スキンを変形させる。スキンへの変形を引き起こさないポーズは、ニュートラルバインドポーズである。したがって、いくつかの実施形態では、身体メッシュは、後の動作を単純化することができる、ニュートラルバインドポーズにおいて最初に構築される。
【0075】
いくつかの実施形態では、身体メッシュは、代替であるが、低減された、または最小の変形を伴う、ニュートラルレストポーズにおいて構築されてもよい。これらおよび他の実施形態では、ニュートラルポーズは、アバターのスキニングされたバージョンがこのポーズにおいて最小の変形を有する可能性に基づいて選定されてもよい。たとえば、図4は、代替ニュートラルポーズを示すが、図5は、ニュートラルバインドポーズを示す。ブロック302の後にブロック304が続いてもよい。
【0076】
ブロック304において、スケルトン化された(skeletized)メッシュを取得するために、ジョイントが配置されてもよく、スケルトンが、ジョイントの配置に基づいて推論されてもよい。たとえば、ジョイントは、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部のうちの1つまたは複数に基づいて配置されてもよい。
【0077】
異なる身体部分の交差部は、第1の身体部分(上腕部など)と第2の身体部分(下腕部など)との間の交差部を含んでもよく、ジョイントが、この交差部において、またはその近位に配置される。
【0078】
異なる身体部分の記述は、第1の身体部分(上脚部など)および第2の身体部分(下脚部など)のテキストまたはコンピュータによりコーディングされた記述を含んでもよく、ジョイントが、記述に基づいて、第1の身体部分と第2の身体部分との間に配置される。たとえば、記述はまた、ジョイントの配置が適切である場合、各身体部分の遠位端を含んでもよい。
【0079】
異なる身体部分の間の接続部は、ジョイントに置き換えられてもよい接続部のハードコーディングされた記述を含んでもよい。
【0080】
スケルトン化された構造は、ジョイントロケーションに基づいて推論されてもよい。たとえば、ジョイントが上腕部と下腕部との間に配置される場合があるとき、このジョイントから他の身体部分上まで及ぶ仮想ボーンの推論が行われてもよい。推論は、確立された身体構造に基づくインテリジェント推論である。たとえば、確立された構造をもつ基本的身体は、約15個の部分を有する人型であってもよい。たとえば、図4は、基本的身体およびこれらの例示的な15個の身体部分を示す。ブロック304の後にブロック306が続いてもよい。
【0081】
ブロック306において、3Dモデルまたは実用的3Dアセットを取得するために、ジョイントおよびそれに関連付けられた仮想ボーンを有する、スケルトン化された身体メッシュがスキニングされてもよい。スキニングは、任意の適切なスキニング方法を含んでもよい。たとえば、スキニング方法は、限定はしないが、線形ブレンドスキニング、逆線形ブレンドスキニング(inverse linear blend skinning)、スケルトン部分空間変形(skeleton-subspace deformation)、または他の方法を含んでもよい。
【0082】
いくつかの実施形態では、重みマップが、個々の配置されたジョイントについて作成されてもよい。重みマップは、下にあるスケルトン構造に基づいて、各頂点がどのくらい動くことになるかを制御してもよい。
【0083】
いくつかの実施形態では、スキニングは、CPUスキニングまたはグラフィックス処理ユニット(GPU)スキニングプロセスに基づいて実行されてもよい。たとえば、CPUスキニングは、スキニング変換のために、典型的な利用可能なハードウェアプロセッサに依拠してもよい。たとえば、GPUスキニングは、スキニング変換のために、典型的な利用可能なGPUに依拠してもよい。ブロック306の後にブロック308が続いてもよい。
【0084】
ブロック308において、3Dモデルまたは実用的3Dアセットが、アニメーション化されてもよく、たとえば、3Dモデルが、アニメーション化されたアバターをレンダリングするために利用されてもよい。たとえば、アニメーションは、いくつかの実施形態では、仮想体験プラットフォーム100上でホストされた仮想体験内の仮想環境内でレンダリングされてもよい。アニメーションは、スキニング変形が、たとえば、不整合なスケルトンと比較して、滑らかで魅力的であり、アーティファクトが低減されるように、推論されたスケルトン構造によって特徴づけられてもよい。
【0085】
以下で、基本アバターデータモデルおよび身体部分について、図4を参照しながら説明する。
【0086】
図4:基本アバターデータモデル
図4は、いくつかの実施形態による、基本アバターデータモデルの例示的な可視化の概略図である。例示的な可視化は、身体ケージ400およびいくつかの標示された身体部分を備える。
【0087】
より詳細には、図4に示された15個の身体部分は、(人型マネキンのための)頭部、胴部、臀部、右足部、左足部、左下脚部、右下脚部、左上脚部、右上脚部、左手部、右手部、左下腕部、右下腕部、左上腕部、および右上腕部である。任意の身体形状における部分の数は、示された15個の身体部分よりも多いかまたは少なくてもよい。たとえば、「片腕の」アバターキャラクタは、手、下腕、および上腕の除外のために、(15個とは対照的に)12個の身体部分を有する場合がある。さらに、他の身体形状は、身体ジオメトリ、所望の解像度、処理能力、アバターキャラクタのタイプ(たとえば、動物、エイリアン、モンスターなど)などのファクタに応じて、より少数またはより多数の身体部分を伴う場合がある。
【0088】
図4における15個のグループ/部分の各々は、アバター身体のその部分を定義する特徴点を含む。特徴点のそのようなグループは、次に、推論のために、対応する下にあるスケルトン構造にマッピングされることが可能である。たとえば、左/右下腕部および左/右上腕部を定義する、身体ケージ400における特徴点は、肘に関連付けられたジョイントの位置決めを特徴づけるために使用されてもよい。同様に、左/右上脚部および左/右下脚部は、膝に関連付けられたジョイントの位置決めを特徴づけるために使用されてもよい。
【0089】
その上、複数のグループ(図4に示されているものなど)へのこの分離は、3Dモデルを正確にスキニングおよびアニメーション化するために使用されることが可能である、スケルトン構造の推論を可能にする。
【0090】
以下で、2つ以上の異なる親モデルに基づく、カスタマイズされたアバターデータモデルについて、図5を参照しながら説明する。
【0091】
図5:カスタマイズされたアバターデータモデル
図5は、いくつかの実施形態による、カスタマイズされたアバターデータモデルの例示的な可視化の概略図である。例示的な可視化は、第1の親モデルからの頭502、首506、胴および脚504、ならびに第2の親モデルからの腕508、510、手509、511をもつ、身体ケージ500を備える。
【0092】
示された腕508、510の各々は、頭、首、胴、および脚とは異なる親モデルからのものであるので、モデルにおける既存のスケルトン構造は、適切なスキニングを可能にしない。したがって、そのようなミスマッチした部分に基づくいかなるスキニング変形も、ユーザにとって異質または不自然に見える場合がある。しかしながら、本明細書で説明する技法に基づいて、異なる身体部分のグラフ表現を最初に生成することによって、新しいスケルトン構造が推論されてもよい。図6は、例示的なグラフ表現の図を示す。
【0093】
図6:カスタマイズされたアバターデータモデルの例示的なグラフ表現
図6は、いくつかの実施形態による、アバターデータモデルの例示的なグラフ表現600の図である。図示のように、グラフ600は、対応する身体部分に従って標示される複数のノードを含む。いくつかの実施形態では、各グラフ表現は、身体部分の数に等しい数のノードを有するようになる。この例では、15個の身体部分が、カスタマイズされたモデル500から分析される。
【0094】
各身体部分は、別の身体部分まで及ぶ少なくとも1つの関連付けられたエッジを有してもよい。グラフ表現600におけるエッジは、602、604、606、608、610、612、614、616、618、620、622、624、626、および628と標示されている。この例では、各エッジは、特定のジョイントの配置に対応する。したがって、各エッジ602~628は、それに関連付けられたジョイントを有してもよい。同様に、2つ以上のエッジを含む各ノードは、その間で推論された1つまたは複数の仮想ボーンを有してもよい。このようにして、ジョイントは、エッジ602~628において配置されてもよく、仮想ボーンは、非遠位ノードにほぼ合わせるように配置されてもよい。その上、仮想ボーンは、カスタマイズされたアバターデータモデル、および関連付けられた身体部分に基づいて、スケールされてもよい。たとえば、図7は、カスタマイズされたデータモデル500に基づく、例示的な推論されたスケルトン構造を示す。
【0095】
図7:例示的な推論されたスケルトン構造
図7は、いくつかの実施形態による、入力されたカスタマイズされたアバターデータモデルに基づく、例示的な推論されたスケルトン構造の概略図である。推論されたスケルトン構造700は、アバターデータモデル500の末端部分に関連付けられた1つまたは複数の遠位ジョイント702と、アバターデータモデル500の非末端部分に関連付けられた1つまたは複数の内部ジョイント704とを含んでもよい。
【0096】
さらに示されているように、細長い首ボーン706は、この例では、入力モデル500(明快のために、隣接する図に示されている)の細長い首部分506と一致するように推論されてもよい。さらに、細長い下腕ボーン708および710は、この例では、第2の親モデルからの細長い下腕508、510と一致するように推論されてもよい。
【0097】
したがって、アバターデータモデル500は、異なる親モデルからの異なる身体部分を使用して作成されるが、推論されたスケルトン構造700は、アニメーション中に正確なスキニングおよびスキニング変形とともにスムーズなアニメーションを達成するための、適切なスケルトン構造であってもよい。
【0098】
以下で、入力されたカスタマイズされたアバターデータモデルから実用的3Dアセットを生成するための例示的な方法の詳細な説明が、図8を参照しながら提示される。
【0099】
図8:カスタマイズされた入力モデルから実用的3Dアセットを生成するための方法
図8は、いくつかの実施形態による、入力されたカスタマイズされたアバターデータモデルから実用的3Dアセットを生成するための例示的な方法800のフローチャートである。
【0100】
いくつかの実施形態では、方法800は、たとえば、図1を参照しながら説明したサーバ102上で実施されることが可能である。いくつかの実施形態では、方法800の一部または全部は、図1に示されているような1つもしくは複数のクライアントデバイス110上で、1つもしくは複数の開発者デバイス(図示せず)上で、または1つもしくは複数のサーバデバイス102上で、ならびに/あるいは開発者デバイス、サーバデバイス、およびクライアントデバイスの組合せ上で実施されることが可能である。説明する例では、実施するシステムは、1つまたは複数のデジタルプロセッサまたは処理回路(「プロセッサ」)と、1つまたは複数の記憶デバイス(たとえば、データストア108または他のストレージ)とを含む。いくつかの実施形態では、1つまたは複数のサーバおよび/またはクライアントの異なる構成要素は、方法800の異なるブロックまたは他の部分を実行することができる。いくつかの例では、第1のデバイスは、方法800のブロックを実行するものとして説明される。いくつかの実施形態は、方法800の1つまたは複数のブロックを、第1のデバイスに結果またはデータを送信することができる1つまたは複数の他のデバイス(たとえば、他のクライアントデバイスまたはサーバデバイス)によって、実行させることができる。
【0101】
いくつかの実施形態では、方法800、または方法の部分は、システムによって自動的に開始されることが可能である。いくつかの実施形態では、実施するシステムは、第1のデバイスである。たとえば、方法(またはその部分)は、定期的に実行されるか、あるいは1つまたは複数の特定のイベントまたは状態、たとえば、ユーザ要求時に、アバター寸法における変更時に、アバター身体ピースにおける変更時に、特定のアバターモデルもしくはユーザについての方法800の最後の実行から、あらかじめ決定された時間期間が満了したこと、および/または方法によって読み取られる設定において指定されることが可能である、1つもしくは複数の他の状態が生じることに基づいて、実行されることが可能である。
【0102】
方法800は、ブロック802において開始してもよい。ブロック802において、3次元(3D)アバターのためのアバターデータモデルが受信されてもよい。アバターデータモデルは、少なくとも、第1の親モデルからの第1の身体部分と、第2の親モデルからの第2の身体部分とを含んでもよい。
【0103】
この例では、第1の親モデルおよび第2の親モデルは、異なる3Dモデルである。いくつかの実施形態では、第1の親モデルおよび第2の親モデルは、異なるスケール(たとえば、より長い腕またはより長い首であるが、同じモデルからのもの)を有する、同じ3Dモデルであってもよいことに留意されたい。いくつかの実施形態では、アバターデータモデルは、いくつかの異なる3Dモデルからの部分を有してもよい。
【0104】
異なるモデルの数の上限は、実施形態に基づいて選定または選択されてもよい。たとえば、人型の外観を有するアバターを使用している場合、15個の異なる親モデルという上限が選択されてもよい。異なる外観(たとえば、エイリアン、ロボット、動物など)のアバターは、身体部分の数の異なる上限を有してもよい。ブロック802の後にブロック804が続いてもよい。
【0105】
ブロック804において、グラフ表現が、アバターデータモデルについて作成されてもよい。たとえば、グラフ表現は、アバターデータモデルのための選択されたルート点(たとえば、頭部、左足部、右手部など)において開始してもよく、アバターデータモデルの末端部分(たとえば、左/右足部、左/右手部、頭部など)まで及ぶ。
【0106】
いくつかの実施形態では、グラフ表現は、アバターデータモデルの個々の身体部分のスケールに基づいてエッジに割り当てられた重みを有する重み付きグラフである。この例では、個々の身体部分のスケールは、下にあるスケルトン構造の推論を特徴づけることを助ける場合がある。ブロック804の後にブロック806が続いてもよい。
【0107】
ブロック806において、グラフ表現が、複数のジョイントロケーションを決定するためにトラバースされてもよい。いくつかの実施形態では、グラフ表現をトラバースすることは、深さ優先探索または幅優先探索のうちの1つまたは複数を含む。他の探索またはツリートラバーサル方法も適用可能であってもよい。
【0108】
いくつかの実施形態では、ジョイントロケーションは、ジョイントが配置されることになるロケーションを表す。追加として、ジョイントロケーションは、異なる身体部分の交差部、異なる身体部分の記述、または異なる身体部分の間の接続部に基づいて決定されてもよい。ブロック806の後にブロック808が続いてもよい。
【0109】
ブロック808において、スケルトン構造が、複数のジョイントロケーションの間で推論されてもよい。推論は、異なるジョイントについて、スケルトン部分が、第1のジョイントと第2のジョイントとの間に及ぶような、ならびにスケルトン部分が、第1のジョイントおよび第2のジョイントのうちの一方または両方の運動によって回転するようなものであってもよい。いくつかの実施形態では、スケルトン部分は、少なくとも2つのジョイントの間に及ぶ仮想ボーンである。ブロック808の後にブロック810が続いてもよい。
【0110】
ブロック810において、複数のジョイントロケーションの各々におけるジョイント、推論されたスケルトン構造、およびアバターデータモデルが、実用的3Dアセットを作成するために組み合わせられる。たとえば、モデル全体がアニメーションにおいて使用されてもよいように、推論されたスケルトン構造およびジョイントのデータ表現が、アバターデータモデルと組み合わせられてもよい。ブロック810の後にブロック812が続いてもよい。
【0111】
ブロック812において、実用的3Dアセットが仮想環境内でレンダリングされてもよい。実用的3Dアセットは、仮想環境内でアニメーション化されてもよく、たとえば、アバターが動いてもよく(たとえば、歩行、走行、ジャンプなど)、アバター身体の部分が動いてもよい(たとえば、手を振ること、キック、腕上げ、首の回転など)。追加として、実用的3Dアセットは、いくつかの実施形態では、複数のユーザによる使用のために、オンラインプラットフォーム100において記憶されてもよい。
【0112】
上記で説明したように、実施形態は、実用的3Dアセットを作成するために、スケルトン構造を推論するための方法、システム、およびコンピュータ可読媒体に関する。ユーザは、異なる親モデルからの異なる部分を使用して、アバターを作成してもよい。作成時に、ジョイントの配置を決定し、全体的なスケルトン構造を推論するために、アバターのためのデータモデルが検査される。その後、異なるスキニング技法が、ジョイントの配置および動きに基づいて、アニメーション中にアバタースキンを変形させるために使用されてもよい。実用的3Dアセットは、複数のユーザによってアクセス可能なオンライン仮想体験プラットフォームを通して記憶、提示、およびレンダリングされてもよい。
【0113】
図9:コンピューティングデバイス
以下で、図1に示された異なるデバイスおよび/または構成要素を実装するために使用されてもよい、様々なコンピューティングデバイスのより詳細な説明が、図9を参照しながら提供される。
【0114】
図9は、いくつかの実施形態による、本明細書で説明する1つまたは複数の特徴を実装するために使用されてもよい、例示的なコンピューティングデバイス900のブロック図である。一例では、デバイス900は、コンピュータデバイス(たとえば、図1の102、110)を実装し、本明細書で説明する適切な動作を実行するために使用されてもよい。コンピューティングデバイス900は、任意の好適なコンピュータシステム、サーバ、または他の電子もしくはハードウェアデバイスであることが可能である。たとえば、コンピューティングデバイス900は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、または電子デバイス(ポータブルデバイス、モバイルデバイス、セルフォン、スマートフォン、タブレットコンピュータ、テレビ、TVセットトップボックス、携帯情報端末(PDA)、メディアプレーヤ、ゲームデバイス、ウェアラブルデバイスなど)であることが可能である。いくつかの実施形態では、デバイス900は、プロセッサ902と、メモリ904と、入力/出力(I/O)インターフェース906と、オーディオ/ビデオ入力/出力デバイス914(たとえば、ディスプレイ画面、タッチスクリーン、ディスプレイゴーグルまたは眼鏡、オーディオスピーカー、ヘッドフォン、マイクロフォンなど)とを含む。
【0115】
プロセッサ902は、プログラムコードを実行し、デバイス900の基本動作を制御するための、1つまたは複数のプロセッサおよび/または処理回路であることが可能である。「プロセッサ」は、データ、信号、または他の情報を処理する、任意の好適なハードウェアおよび/またはソフトウェアシステム、機構、または構成要素を含む。プロセッサは、汎用中央処理ユニット(CPU)を有するシステム、複数の処理ユニット、機能を達成するための専用回路、または他のシステムを含んでもよい。処理は、特定の地理的ロケーションに、または時間的限定を有するように限定される必要はない。たとえば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などにおいて、その機能を実行してもよい。処理の部分は、異なる(または同じ)処理システムによって、異なる時間において、かつ異なるロケーションにおいて実行されてもよい。コンピュータは、メモリと通信している任意のプロセッサであってもよい。
【0116】
メモリ904は、典型的には、プロセッサ902によるアクセスのためにデバイス900において提供され、プロセッサによる実行のための命令を記憶するために好適であり、プロセッサ902とは別個に位置する、かつ/またはプロセッサ902とともに統合される、任意の好適なプロセッサ可読記憶媒体、たとえば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去可能読取り専用メモリ(EEPROM)、フラッシュメモリなどであってもよい。メモリ904は、オペレーティングシステム908、ソフトウェアアプリケーション910、および関連付けられたデータ912を含む、プロセッサ902によってサーバデバイス900上で動作しているソフトウェアを記憶することができる。いくつかの実施形態では、アプリケーション910は、本明細書で説明する機能をプロセッサ902が実行することを可能にする、命令を含むことができる。ソフトウェアアプリケーション910は、構成要素をモデリングするために、および実用的3Dアセットのための3Dスケルトン構造を推論するために必要とされる機能の一部または全部を含んでもよい。いくつかの実施形態では、ソフトウェアアプリケーション910の1つまたは複数の部分は、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、機械学習プロセッサなど、専用ハードウェアにおいて実装されてもよい。いくつかの実施形態では、ソフトウェアアプリケーション910の1つまたは複数の部分は、中央処理ユニット(CPU)またはグラフィックス処理ユニット(GPU)など、汎用プロセッサにおいて実装されてもよい。様々な実施形態では、専用および/または汎用処理ハードウェアの好適な組合せが、ソフトウェアアプリケーション910を実装するために使用されてもよい。
【0117】
たとえば、メモリ904に記憶されたソフトウェアアプリケーション910は、ユーザデータを取り出すための命令、推論されたスケルトン構造を有するアバターを表示/提示するための命令、ならびに/またはモデリングコンポーネント130、VEエンジン104、および/もしくはVEアプリケーション112など、他の機能もしくはソフトウェアを含むことができる。メモリ904におけるソフトウェアのいずれかは、代替的に、任意の他の好適な記憶ロケーションまたはコンピュータ可読媒体上に記憶されることが可能である。加えて、メモリ904(および/または他の接続された記憶デバイス)は、本明細書で説明する特徴において使用される命令およびデータを記憶することができる。メモリ904および任意の他のタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「記憶デバイス」と見なされることが可能である。
【0118】
I/Oインターフェース906は、サーバデバイス900を他のシステムおよびデバイスとインターフェースすることを可能にするための機能を提供することができる。たとえば、ネットワーク通信デバイス、記憶デバイス(たとえば、メモリおよび/またはデータストア106)、および入力/出力デバイスは、インターフェース906を介して通信することができる。いくつかの実施形態では、I/Oインターフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナなど)、および/または出力デバイス(ディスプレイデバイス、スピーカーデバイス、プリンタ、モニタなど)を含む、インターフェースデバイスに接続することができる。
【0119】
説明しやすいように、図9は、プロセッサ902、メモリ904、I/Oインターフェース906、ソフトウェアブロック908および910、ならびにデータベース912の各々について、1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサもしくは処理回路、オペレーティングシステム、メモリ、I/Oインターフェース、アプリケーション、および/またはソフトウェアモジュールを表す場合がある。他の実施形態では、デバイス900は、示されている構成要素のすべてを有するとは限らない場合があり、かつ/または本明細書で示されたものの代わりに、またはそれに加えて、他のタイプの要素を含む、他の要素を有する場合がある。オンラインサーバ102について、本明細書のいくつかの実施形態で説明したような動作を実行するものとして説明したが、オンラインサーバ102もしくは同様のシステムの任意の好適な構成要素もしくは構成要素の組合せ、またはそのようなシステムに関連付けられた任意の好適な1つもしくは複数のプロセッサが、説明した動作を実行してもよい。
【0120】
ユーザデバイスもまた、本明細書で説明する特徴を実施すること、および/またはそれとともに使用されることが可能である。例示的なユーザデバイスは、デバイス900と同様のいくつかの構成要素、たとえば、プロセッサ902、メモリ904、およびI/Oインターフェース906を含む、コンピュータデバイスであることが可能である。クライアントデバイスに好適なオペレーティングシステム、ソフトウェア、およびアプリケーションは、メモリにおいて提供され、プロセッサによって使用されることが可能である。クライアントデバイスのためのI/Oインターフェースは、ネットワーク通信デバイスに、ならびに入力および出力デバイス、たとえば、サウンドをキャプチャするためのマイクロフォン、画像もしくはビデオをキャプチャするためのカメラ、サウンドを出力するためのオーディオスピーカーデバイス、画像もしくはビデオを出力するためのディスプレイデバイス、または他の出力デバイスに接続されることが可能である。オーディオ/ビデオ入力/出力デバイス914内のディスプレイデバイスは、たとえば、本明細書で説明するような画像前処理および後処理を表示するために、デバイス900に接続される(またはその中に含まれる)ことが可能であり、そこで、そのようなディスプレイデバイスは、任意の好適なディスプレイデバイス、たとえば、LCD、LED、もしくはプラズマディスプレイ画面、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイ画面、プロジェクタ、または他の視覚ディスプレイデバイスを含むことができる。いくつかの実施形態は、オーディオ出力デバイス、たとえば、テキストを話す音声出力または合成を提供することができる。
【0121】
本明細書で説明する方法、ブロック、および/または動作は、適切な場合、図示もしくは説明したものとは異なる順序で実行されることが可能であり、かつ/または(部分的にまたは完全に)他のブロックもしくは動作とともに同時に実行されることが可能である。いくつかのブロックまたは動作は、データのある部分に対して実行され、後で再び、たとえば、データの別の部分に対して実行されることが可能である。説明するブロックおよび動作のすべてが、様々な実施形態において実行される必要があるとは限らない。いくつかの実施形態では、ブロックおよび動作は、方法において複数回、異なる順序で、および/または異なる時間において実行されることが可能である。
【0122】
いくつかの実施形態では、方法の一部または全部は、1つまたは複数のクライアントデバイスなどのシステム上で実施されることが可能である。いくつかの実施形態では、本明細書で説明する1つまたは複数の方法は、たとえば、サーバシステム上で、および/またはサーバシステムとクライアントシステムの両方の上で実施されることが可能である。いくつかの実施形態では、1つまたは複数のサーバおよび/またはクライアントの異なる構成要素は、方法の異なるブロック、動作、または他の部分を実行することができる。
【0123】
本明細書で説明する1つまたは複数の方法(たとえば、方法300および/または800)は、コンピュータ上で実行されることが可能である、コンピュータプログラム命令またはコードによって実装されることが可能である。たとえば、コードは、1つまたは複数のデジタルプロセッサ(たとえば、マイクロプロセッサまたは他の処理回路)によって実装されることが可能であり、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、剛性磁気ディスク、光ディスク、ソリッドステートメモリドライブなどを含む、非一時的コンピュータ可読媒体(たとえば、記憶媒体)、たとえば、磁気、光、電磁、または半導体記憶媒体を含む、コンピュータプログラム製品上に記憶されることが可能である。プログラム命令はまた、たとえば、サーバ(たとえば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されたサービスとしてのソフトウェア(SaaS)の形態の、電子信号中に含まれること、および電子信号として提供されることも可能である。代替的に、1つまたは複数の方法は、ハードウェア(論理ゲートなど)において、またはハードウェアおよびソフトウェアの組合せにおいて実装されることが可能である。例示的なハードウェアは、プログラマブルプロセッサ(たとえば、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブル論理デバイス)、汎用プロセッサ、グラフィックスプロセッサ、特定用途向け集積回路(ASIC)などであることが可能である。1つまたは複数の方法は、システム上で実行しているアプリケーションの一部もしくはその構成要素として、または他のアプリケーションおよびオペレーティングシステムとともに実行しているアプリケーションもしくはソフトウェアとして実行されることが可能である。
【0124】
本明細書で説明する1つまたは複数の方法は、任意のタイプのコンピューティングデバイス上で実行されることが可能であるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティングデバイス(たとえば、セルフォン、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、宝飾品類、ヘッドウェア、ゴーグル、眼鏡など)、ラップトップコンピュータなど)上で実行されるモバイルアプリケーション(「アプリ」)において実行されることが可能である。一例では、クライアント/サーバアーキテクチャが使用されることが可能であり、たとえば、モバイルコンピューティングデバイスは(クライアントデバイスとして)、サーバデバイスにユーザ入力データを送信し、出力のための(たとえば、表示のための)ライブフィードバックデータをサーバから受信する。別の例では、計算は、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で分割されることが可能である。
【0125】
本明細書で説明するいくつかの実施形態が、ユーザデータ(たとえば、ユーザ層、ユーザ挙動データ、ユーザコンテキストデータ、広告のためのユーザ設定など)を取得または使用する場合がある状況では、ユーザには、そのような情報が収集、記憶、または使用されるか否か、およびどのように収集、記憶、または使用されるかを制御するためのオプションが提供される。すなわち、本明細書で説明する実施形態は、明示的なユーザ認可の受信時に、適用可能な規制に従って、ユーザ情報を収集、記憶、および/または使用する。
【0126】
ユーザには、プログラムまたは特徴がその特定のユーザ、またはプログラムもしくは特徴に関連する他のユーザについてのユーザ情報を収集するか否かに対する制御が与えられる。情報が収集されることになる各ユーザには、情報が収集されるか否かについて、および情報のどの部分が収集されることになるかについての許可または認可を与えるために、そのユーザに関連する情報収集に対する制御を、ユーザが行使することを可能にするために、(たとえば、ユーザインターフェースを介して)オプションが提示される。加えて、いくつかのデータは、個人を特定可能な情報が除去されるように、記憶または使用される前に1つまたは複数の方法で修正されてもよい。一例として、ユーザの識別情報は、個人を特定可能な情報を決定することができないように(たとえば、仮名、数値などを使用した置換によって)修正されてもよい。別の例では、ユーザの地理的ロケーションが、より大きい地域(たとえば、市、郵便番号、州、国など)に一般化されてもよい。
【0127】
この説明については、その特定の実施形態に関して説明したが、これらの特定の実施形態は、例示的なものにすぎず、限定的ではない。例において示された概念は、他の例および実施形態に適用されてもよい。
【0128】
本開示で説明した機能ブロック、動作、特徴、方法、デバイス、およびシステムは、当業者に知られるようになるように、システム、デバイス、および機能ブロックの異なる組合せに統合または分割されてもよいことに留意されたい。任意の好適なプログラミング言語およびプログラミング技法が、特定の実施形態のルーチンを実装するために使用されてもよい。異なるプログラミング技法、たとえば、手続き型またはオブジェクト指向が採用されてもよい。ルーチンは、単一の処理デバイスまたは複数のプロセッサ上で実行してもよい。ステップ、動作、または計算は、特定の順序において提示される場合があるが、順序は、異なる特定の実施形態において変更されてもよい。いくつかの実施形態では、本明細書で連続したものとして示された複数のステップまたは動作は、同時に実行されてもよい。
【符号の説明】
【0129】
100 ネットワーク環境、オンライン仮想体験プラットフォーム
102 オンライン仮想体験サーバ
104 仮想体験(VE)エンジン
105 仮想体験
108 データストア
110、110a、110b、110n クライアントデバイス
112 仮想体験(VE)アプリケーション
112a、112b、112n 仮想体験アプリケーション
114、114a、114b、114n 入力/出力(I/O)インターフェース
122 ネットワーク
130 モデリングコンポーネント
202 動作の第1のシーケンス
204 動作の第2のシーケンス
210 カスタマイズされたアバターデータモデル
212 身体ケージまたはメッシュ
220、700 推論されたスケルトン構造
222 ジョイント
224 仮想ボーン
230 実用的3Dアセット
232 カットアウェイ
400 身体ケージ
500 身体ケージ、カスタマイズされたデータモデル、アバターデータモデル、入力モデル
502 頭部
504 胴および脚
506 首、細長い首部分
508、510 腕、細長い下腕
509、511 手
600 グラフ表現
602、604、606、608、610、612、614、616、618、620、622、624、626、628 エッジ
702 遠位ジョイント
704 内部ジョイント
706 細長い首ボーン
708、710 細長い下腕ボーン
900 例示的なコンピューティングデバイス、デバイス
902 プロセッサ
904 メモリ
906 入力/出力(I/O)インターフェース
910 ソフトウェアアプリケーション
914 オーディオ/ビデオ入力/出力デバイス
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】