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

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

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

<>
  • 特許-真正ではない仮想オブジェクトの検出 図1
  • 特許-真正ではない仮想オブジェクトの検出 図2
  • 特許-真正ではない仮想オブジェクトの検出 図3
  • 特許-真正ではない仮想オブジェクトの検出 図4A
  • 特許-真正ではない仮想オブジェクトの検出 図4B
  • 特許-真正ではない仮想オブジェクトの検出 図5A
  • 特許-真正ではない仮想オブジェクトの検出 図5B
  • 特許-真正ではない仮想オブジェクトの検出 図6
  • 特許-真正ではない仮想オブジェクトの検出 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】真正ではない仮想オブジェクトの検出
(51)【国際特許分類】
   G06T 7/40 20170101AFI20240709BHJP
   G06T 15/04 20110101ALI20240709BHJP
   G06T 19/00 20110101ALI20240709BHJP
【FI】
G06T7/40
G06T15/04
G06T19/00 A
【請求項の数】 20
(21)【出願番号】P 2023537146
(86)(22)【出願日】2021-12-14
(65)【公表番号】
(43)【公表日】2023-12-28
(86)【国際出願番号】 US2021063394
(87)【国際公開番号】W WO2022132823
(87)【国際公開日】2022-06-23
【審査請求日】2023-08-10
(31)【優先権主張番号】17/127,714
(32)【優先日】2020-12-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520317055
【氏名又は名称】ロブロックス・コーポレーション
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】コートランド・アール・コールドウェル
(72)【発明者】
【氏名】ロビン・イー・メイズ
(72)【発明者】
【氏名】レベッカ・エル・ハーンドン
(72)【発明者】
【氏名】ハリハラン・ナタラジャン
【審査官】岡本 俊威
(56)【参考文献】
【文献】特許第6746024(JP,B1)
【文献】特開2009-048256(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00- 7/90
G06T 11/00-19/20
(57)【特許請求の範囲】
【請求項1】
仮想環境における真正ではないテクスチャを検出するためのコンピュータ実装方法であって、
3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンを受信するステップと、
1つまたは複数の結合された2Dポリゴンを取得するために、前記3D仮想オブジェクトのポーズまたは形状に基づいて、前記複数の2Dポリゴンからの2つ以上の2Dポリゴンの部分を結合するステップと、
前記結合された2Dポリゴンの各々についてそれぞれのハッシュ値を計算するステップと、
前記それぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかを決定するステップと、
前記一致があると決定された場合、前記テクスチャを真正ではないテクスチャとして分類するステップと、
一致がないと決定された場合、前記テクスチャを真正のテクスチャとして分類するステップと
を備える、コンピュータ実装方法。
【請求項2】
前記複数の2Dポリゴンを受信するステップが、あらかじめ定められた寸法のセットに準拠し、前記3D仮想オブジェクトのテクスチャを生成するためにあらかじめ定められたテンプレートに基づいて組合せ可能である2Dポリゴンのセットを含む複数の2Dポリゴンを受信するステップを備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記3D仮想オブジェクトが、仮想アバタに関連付けられる衣料品である、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記2つ以上の2Dポリゴンを結合するステップが、前記2つ以上の2Dポリゴンのオーバーレイ配置に基づいており、前記2つ以上の2Dポリゴンのうちの少なくとも1つは、しきい値透明度を満たす透明度を有する、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記一致があるかどうかを決定するステップが、前記それぞれのハッシュ値の各々と、前記真正のオブジェクトに関連付けられる前記参照2Dポリゴンの前記ハッシュ値との間の前記一致に関連付けられる一致スコアを計算するステップと、前記一致スコアがしきい値を満たす場合に前記一致があると決定するステップとを備える、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記2つ以上の2Dポリゴンの前記結合部分に関連付けられる重みを前記一致スコアに適用するステップをさらに備える、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記2つ以上の2Dポリゴンの一部を結合するステップが、2Dポリゴンの順序付きリストに基づく、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記3D仮想オブジェクトが配置される前記仮想環境における1つまたは複数のアニメーションに基づいて2Dポリゴンの前記順序付きリストを決定するステップをさらに含み、前記1つまたは複数のアニメーションが、前記仮想環境における前記3D仮想オブジェクトの動きに対応する、請求項7に記載のコンピュータ実装方法。
【請求項9】
2Dポリゴンの前記順序付きリストが、前記3D仮想オブジェクトの1つまたは複数の変形に基づく、請求項7に記載のコンピュータ実装方法。
【請求項10】
結合する前記ステップの前に、
前記3D仮想オブジェクトの前記テクスチャに関連付けられる前記複数の2次元(2D)ポリゴンのうちの少なくとも1つのハッシュ値が、前記真正のオブジェクトに関連付けられる前記参照2Dポリゴンの前記ハッシュ値と一致する場合、前記テクスチャを前記真正ではないテクスチャとして分類するステップをさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項11】
それぞれのハッシュ値を計算するステップが、知覚ハッシュ技法を使用して前記それぞれのハッシュ値を計算するステップを備え、類似したコンテンツを有するポリゴンのハッシュ値は、異なるコンテンツを有するポリゴンのハッシュ値よりも高い類似性を有する、請求項1に記載のコンピュータ実装方法。
【請求項12】
仮想環境において前記真正のテクスチャを含むユーザインターフェースを提供するステップをさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記3D仮想オブジェクトが、前記仮想環境において仮想アバタによって着用可能なオブジェクトである、請求項1に記載のコンピュータ実装方法。
【請求項14】
処理デバイスによる遂行に応答して、前記処理デバイスに、
3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンを受信することと、
1つまたは複数の結合された2Dポリゴンを取得するために、前記3D仮想オブジェクトのポーズまたは形状に基づいて、前記複数の2Dポリゴンからの2つ以上の2Dポリゴンの部分を結合することと、
前記結合されたポリゴンの各々についてそれぞれのハッシュ値を計算することと、
前記それぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかを決定することと、
前記一致があると決定された場合、前記テクスチャを真正ではないテクスチャとして分類することと、
一致がないと決定された場合、前記テクスチャを真正のテクスチャとして分類することと
を備える動作を実行させる命令を備える、非一時的コンピュータ可読媒体。
【請求項15】
前記2つ以上の2Dポリゴンの一部を結合することが、2Dポリゴンの順序付きリストに基づく、請求項14に記載の非一時的コンピュータ可読媒体。
【請求項16】
前記動作が、前記3D仮想オブジェクトが配置される仮想環境における1つまたは複数のアニメーションに基づいて2Dポリゴンの前記順序付きリストを決定することをさらに含み、前記1つまたは複数のアニメーションが、前記仮想環境における前記3D仮想オブジェクトの動きに対応する、請求項15に記載の非一時的コンピュータ可読媒体。
【請求項17】
命令を記憶したメモリと、
前記メモリに結合された処理デバイスであって、前記メモリにアクセスして前記命令を遂行するように構成された、処理デバイスと
を備え、前記命令が、前記処理デバイスに、
3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンを受信することと、
1つまたは複数の結合された2Dポリゴンを取得するために、前記3D仮想オブジェクトのポーズまたは形状に基づいて、前記複数の2Dポリゴンからの2つ以上の2Dポリゴンの部分を結合することと、
前記結合されたポリゴンの各々についてそれぞれのハッシュ値を計算することと、
前記それぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかを決定することと、
前記一致があると決定された場合、前記テクスチャを真正ではないテクスチャとして分類することと、
一致がないと決定された場合、前記テクスチャを真正のテクスチャとして分類することと
を含む動作を実行させる、システム。
【請求項18】
前記2つ以上の2Dポリゴンの一部を結合することが、2Dポリゴンの順序付きリストに基づく、請求項17に記載のシステム。
【請求項19】
2Dポリゴンの前記順序付きリストが、前記3D仮想オブジェクトの1つまたは複数の変形に基づく、請求項18に記載のシステム。
【請求項20】
それぞれのハッシュ値を計算することが、知覚ハッシュ技法を使用して前記それぞれのハッシュ値を計算することを備え、類似したコンテンツを有するポリゴンのハッシュ値は、異なるコンテンツを有するポリゴンのハッシュ値よりも高い類似性を有する、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連特許出願の相互参照
本出願は、2020年12月18日に出願された「DETECTION OF INAUTHENTIC VIRTUAL OBJECTS」という名称の米国特許出願第17/127,714号に対する優先権の利益を主張し、その内容全体が参照により本明細書に組み込まれる。
【0002】
実装形態は、一般に、コンピュータベースのゲームに関し、より詳細には、真正ではない仮想オブジェクトを検出するための方法、システム、およびコンピュータ可読媒体に関する。
【背景技術】
【0003】
いくつかのオンラインプラットフォーム(たとえば、ゲームプラットフォーム、メディア交換プラットフォームなど)では、ユーザが相互に接続し、相互に相互作用し(たとえば、ゲーム内で)、ゲームを作成し、インターネットを介して相互に情報を共有することができる。オンラインゲームプラットフォームのユーザは、マルチプレイヤゲーム環境または仮想環境(たとえば、3次元環境など)に参加したり、カスタムゲーム環境をデザインしたり、キャラクタおよびアバタをデザインしたり、アバタを装飾したり、他のユーザと仮想アイテム/オブジェクトを交換したり、オーディオまたはテキストメッセージングを使用して他のユーザと通信したりし得る。メタバース環境またはマルチバース環境などの環境では、参加するユーザが、自分の作成したオブジェクトを他のユーザと共有、販売、または交換することもできる。
【0004】
真正ではないオブジェクトがゲームプラットフォーム上に登場するのを防ぐために、本物の仮想オブジェクトと比較することによって、真正ではない仮想オブジェクトを検出するための計算効率の高い方法が必要になる場合がある。
【0005】
上記に照らして、いくつかの実装形態が考案された。
【発明の概要】
【課題を解決するための手段】
【0006】
1つまたは複数のコンピュータからなるシステムは、動作中にシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをシステムにインストールすることによって、特定の動作またはアクションを実行するように構成することができる。1つまたは複数のコンピュータプログラムは、データ処理装置によって遂行されると、装置にアクションを実行させる命令を含むことによって、特定の動作またはアクションを実行するように構成することができる。1つの一般的な態様は、仮想環境における真正ではないテクスチャを検出するためのコンピュータ実装方法を含む。コンピュータ実装方法はまた、3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンを受信するステップと、1つまたは複数の結合された2Dポリゴンを取得するために、3D仮想オブジェクトのポーズまたは形状に基づいて、複数の2Dポリゴンからの2つ以上の2Dポリゴンの部分を結合するステップと、結合された2Dポリゴンの各々についてそれぞれのハッシュ値を計算するステップと、それぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかを決定するステップと、一致があると決定された場合、テクスチャを真正ではないテクスチャとして分類するステップと、一致がないと決定された場合、テクスチャを真正のテクスチャとして分類するステップとを含む。この態様の他の実施形態は、それぞれが方法のアクションを実行するように構成された、1つまたは複数のコンピュータストレージデバイスに記録された、対応するコンピュータシステム、装置、およびコンピュータプログラムを含む。
【0007】
実装形態は、次の機能のうちの1つまたは複数を含み得る。複数の2Dポリゴンを受信するステップが、あらかじめ定められた寸法のセットに準拠し、3D仮想オブジェクトのテクスチャを生成するためにあらかじめ定められたテンプレートに基づいて組合せ可能である2Dポリゴンのセットを含む複数の2Dポリゴンを受信するステップを含み得る、コンピュータ実装方法。3D仮想オブジェクトは、仮想アバタに関連付けられる衣料品である。2つ以上の2Dポリゴンを結合するステップは、2つ以上の2Dポリゴンのオーバーレイ配置に基づいており、2つ以上の2Dポリゴンのうちの少なくとも1つは、しきい値透明度を満たす透明度を有する。一致があるかどうかを決定するステップは、それぞれのハッシュ値の各々と、真正のオブジェクトに関連付けられる参照2Dポリゴンのハッシュ値との間の一致に関連付けられる一致スコアを計算するステップと、一致スコアがしきい値を満たす場合に一致があると決定するステップとを含み得る。コンピュータ実装方法は、2つ以上の2Dポリゴンの結合部分に関連付けられる重みを一致スコアに適用するステップを含み得る。2つ以上の2Dポリゴンの一部を結合するステップは、2Dポリゴンの順序付きリストに基づく。1つまたは複数のアニメーションは、仮想環境における3D仮想オブジェクトの動きに対応する。2Dポリゴンの順序付きリストは、3D仮想オブジェクトの1つまたは複数の変形に基づく。コンピュータ実装方法は、結合するステップの前に、3D仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンのうちの少なくとも1つのハッシュ値が、真正のオブジェクトに関連付けられる参照2Dポリゴンのハッシュ値と一致する場合、テクスチャを真正ではないテクスチャとして分類するステップを含み得る。それぞれのハッシュ値を計算するステップは、知覚ハッシュ技法を使用してそれぞれのハッシュ値を計算するステップを含み得、類似したコンテンツを有するポリゴンのハッシュ値は、異なるコンテンツを有するポリゴンのハッシュ値よりも高い類似性を有する。コンピュータ実装方法は、仮想環境において真正のテクスチャを含むユーザインターフェースを提供するステップを含み得る。3D仮想オブジェクトは、仮想環境において仮想アバタによって着用可能なオブジェクトである。説明された技法の実装形態は、ハードウェア、方法またはプロセス、あるいはコンピュータがアクセス可能な媒体上のコンピュータソフトウェアを含み得る。
【0008】
1つの一般的な態様は、以下の命令を含み得る非一時的コンピュータ可読媒体を含む。非一時的コンピュータ可読媒体はまた、3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンを受信することと、1つまたは複数の結合された2Dポリゴンを取得するために、3D仮想オブジェクトのポーズまたは形状に基づいて、複数の2Dポリゴンからの2つ以上の2Dポリゴンの部分を結合することと、結合されたポリゴンの各々についてそれぞれのハッシュ値を計算することと、それぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかを決定することと、一致があると決定された場合、テクスチャを真正ではないテクスチャとして分類することと、一致がないと決定された場合、テクスチャを真正のテクスチャとして分類することとを含む。この態様の他の実施形態は、それぞれが方法のアクションを実行するように構成された、1つまたは複数のコンピュータストレージデバイスに記録された、対応するコンピュータシステム、装置、およびコンピュータプログラムを含む。
【0009】
実装形態は、次の機能のうちの1つまたは複数を含み得る。2つ以上の2Dポリゴンの一部を結合するステップは、2Dポリゴンの順序付きリストに基づく、非一時的コンピュータ可読媒体。動作は、3D仮想オブジェクトが配置される仮想環境における1つまたは複数のアニメーションに基づいて2Dポリゴンの順序付きリストを決定することをさらに含み得、1つまたは複数のアニメーションは、仮想環境における3D仮想オブジェクトの動きに対応する。説明された技法の実装形態は、ハードウェア、方法またはプロセス、あるいはコンピュータがアクセス可能な媒体上のコンピュータソフトウェアを含み得る。
【0010】
本システムはまた、命令を記憶したメモリと、メモリに結合された処理デバイスであって、メモリにアクセスして命令を遂行するように構成された処理デバイスとを含み、命令は、処理デバイスに、3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンを受信することと、1つまたは複数の結合された2Dポリゴンを取得するために、3D仮想オブジェクトのポーズまたは形状に基づいて、複数の2Dポリゴンからの2つ以上の2Dポリゴンの部分を結合することと、結合されたポリゴンの各々についてそれぞれのハッシュ値を計算することと、それぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかを決定することと、一致があると決定された場合、テクスチャを真正ではないテクスチャとして分類することと、一致がないと決定された場合、テクスチャを真正のテクスチャとして分類することとを含む動作を実行させる。この態様の他の実施形態は、それぞれが方法のアクションを実行するように構成された、1つまたは複数のコンピュータストレージデバイスに記録された、対応するコンピュータシステム、装置、およびコンピュータプログラムを含む。
【0011】
実装形態は、次の機能のうちの1つまたは複数を含み得る。2つ以上の2Dポリゴンの一部を結合するステップは、2Dポリゴンの順序付きリストに基づく、システム。2Dポリゴンの順序付きリストは、3D仮想オブジェクトの1つまたは複数の変形に基づく。それぞれのハッシュ値を計算するステップは、知覚ハッシュ技法を使用してそれぞれのハッシュ値を計算するステップを含み得、類似したコンテンツを有するポリゴンのハッシュ値は、異なるコンテンツを有するポリゴンのハッシュ値よりも高い類似性を有する。説明された技法の実装形態は、ハードウェア、方法またはプロセス、あるいはコンピュータがアクセス可能な媒体上のコンピュータソフトウェアを含み得る。
【図面の簡単な説明】
【0012】
図1】いくつかの実装形態による、真正ではない仮想オブジェクトの検出のための例示的なシステムアーキテクチャを示す図である。
図2】いくつかの実装形態による、仮想オブジェクトを作成/生成するために利用される例示的なテンプレートを示す図である。
図3】いくつかの実装形態による、テンプレートを使用して作成された例示的な3D仮想オブジェクトを示す図である。
図4A】いくつかの実装形態による、3D仮想オブジェクトのビューを示す図である。
図4B】いくつかの実装形態による、3D仮想オブジェクトのビューを示す図である。
図5A】いくつかの実装形態による、仮想アバタのビューを示す図である。
図5B】いくつかの実装形態による、仮想アバタのビューを示す図である。
図6】いくつかの実装形態による、真正ではない仮想オブジェクトを検出するための例示的な方法を示すフローチャートである。
図7】いくつかの実装形態による、例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0013】
以下の詳細な説明では、その一部を構成する添付の図面を参照する。図面において、文脈上別段の指示がない限り、通常、類似の記号は類似のコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲に記載されている例示的な実装形態は、限定することを意味するものではない。本明細書に提示される主題の趣旨または範囲から逸脱することなく、他の実装形態が利用されてよく、他の変更を行われてよい。本明細書に一般的に記載され、図面に示される本開示の態様は、多種多様な異なる構成において配置、置換、結合、分離、および設計することができ、これらはすべて本明細書で企図される。
【0014】
本明細書における「いくつかの実装形態(some implementations)」、「実装形態(an implementation)」、「例示的な実装形態(an example implementation)」などへの言及は、説明された実装形態が特定の機能、構造、または特徴を含み得るが、すべての実装形態が必ずしも特定の機能、構造、または特徴を含み得るとは限らないことを示す。さらに、そのような句は必ずしも同じ実装形態を指しているわけではない。さらに、特定の機能、構造、または特徴が実装形態に関連して説明される場合、そのような機能、構造、または特徴は、明示的に説明されるかどうかにかかわらず、他の実装形態に関連して影響を受ける可能性がある。
【0015】
オンラインゲームプラットフォーム(「ユーザ生成コンテンツプラットフォーム」、または「ユーザ生成コンテンツシステム」とも呼ばれる)は、ユーザが相互に相互作用するための様々な方法を提供する。たとえば、オンラインゲームプラットフォームのユーザは、共通の目標に向かって協力したり、様々な仮想ゲームアイテムを共有したり、相互に電子メッセージを送信したりすることができる。オンラインゲームプラットフォームのユーザは、仮想キャラクタとしてゲームに参加し、ゲーム固有の役割を演じることができる。たとえば、仮想キャラクタは、各キャラクタに特定の役割が割り当てられ、その役割に対応する衣類、鎧、武器、スキルなどのパラメータが関連付けられているチームまたはマルチプレイヤ環境の一部であってよい。別の例では、仮想キャラクタは、たとえば、単一のプレイヤがゲームの一部である場合、コンピュータで生成されたキャラクタによって結合され得る。
【0016】
オンラインゲームプラットフォームでは、プラットフォームのユーザ(開発者)が新しいゲームおよび/またはキャラクタを作成できる場合もある。たとえば、オンラインゲームプラットフォームのユーザは、新しいキャラクタ(アバタ)、新しいアニメーションパッケージを作成、設計、および/またはカスタマイズし、他のユーザが利用できるようにすることができる場合がある。
【0017】
場合によっては、オンラインゲームプラットフォームは、ユーザが新しいキャラクタ、仮想オブジェクト、アクセサリなどを作成できるようにするツールを提供してもよい。いくつかの実装形態では、ゲームプラットフォームは、ユーザが仮想オブジェクトを作成および/または配布するためのオプションを提供してもよい。
【0018】
いくつかの実装形態では、ユーザが特定のカテゴリのオブジェクトおよび/またはアクセサリの仮想オブジェクトを迅速に作成できるようにするために、テンプレート化されたツールがユーザに提供され得る。
【0019】
新しいキャラクタおよびアニメーションパッケージ(仮想オブジェクト)は、仮想通貨および/または現実の通貨でオンラインマーケットプレイスにおいて取引、交換、または売買される場合がある。仮想オブジェクトは、再販業者または購入者が仮想オブジェクトの偽造の性質を認識せずに、コピーおよび再配布される場合がある。場合によっては、仮想オブジェクトは著作権で保護された画像を含み得る。場合によっては、仮想オブジェクトは不快で不適切なコンテンツを含み得る。
【0020】
市場に氾濫する偽造された、および真正ではない仮想オブジェクトは検出が困難な場合があり、仮想オブジェクトの量と性質により、偽造された、および真正ではない仮想オブジェクトの検出への人間の介入が困難になる可能性がある。
【0021】
ゲームプラットフォームの所有者または管理者の目的は、真正ではない(偽造された)および/または不快なオブジェクトを軽減し、オリジナルコンテンツの作成者にインセンティブを提供することである。オンラインゲームプラットフォームのオペレータにとっての技術的な問題は、オンラインゲームプラットフォーム全体での真正ではない仮想オブジェクトの検出である。
【0022】
真正ではない仮想オブジェクトを早期に検出すると、真正ではない仮想オブジェクトの作成者が、真正ではない仮想オブジェクトを作成して普及させることが困難および/または高額になる可能性がある。真正ではない仮想オブジェクトのアップロードを防止するゲームプラットフォームは、真正ではないオブジェクトの作成者を効果的に阻止することができる。
【0023】
検出を回避するために、作成者は、オリジナルの仮想オブジェクトを操作して、操作されたオブジェクトを作成する場合がある。操作されたオブジェクトと本物のオブジェクトとの違いが認識できない場合でも、操作されたオブジェクトは、いくつかの真正ではない検出技法によってオリジナルとして分類され得る。
【0024】
部分画像は、ロゴまたは他の著作権のある財産を侵害する可能性があり、四角形などのテンプレートのポリゴンのエッジを横切るように構成されたり、アバタの特定のポーズで現れる仮想キャラクタの特定の変形において表示されるように構成されたりすることによって、従来の画像マッチング技法による検出を逃れることができる。偽造された(真正ではない)オブジェクトは、元の状態では容易に検出できないが、仮想環境における3D仮想オブジェクトの特定の変形、ポーズ、および/またはアニメーションシーケンスで表示されるように、3D仮想オブジェクトの一部に分散される可能性がある。場合によっては、元の状態では簡単に検出できないように、偽造された(真正ではない)オブジェクトが複数の3D仮想オブジェクトの一部に分散されている可能性があるが、たとえば仮想アバタにドレープ(draping)することによって、あるいは仮想環境において変形またはボーンリギングを受けるときに、複数の3D仮想オブジェクトが結合される場合、特定のポーズおよび/またはアニメーションシーケンスでは表示可能になる。
【0025】
本開示は、ゲームプラットフォームに知られている真正の(本物の)オブジェクトに類似している真正ではないオブジェクトを検出することによって、上記の欠点に対処する。真正ではない(偽造された)仮想オブジェクトとオリジナルの仮想オブジェクトとの類似性(知覚ハッシュマッチング)は、真正ではないオブジェクトの検出のために利用される。
【0026】
知覚ハッシュマッチングは、コンテンツの様々な機能から派生したマルチメディアファイル(画像ファイル、オーディオファイル、ビデオファイルなど)のフィンガープリントである知覚ハッシュ関数を利用する。基礎となる機能が類似している場合、2つのファイルの知覚ハッシュは互いに近くなる。知覚ハッシュ関数は、ファイルの変換(回転、スキュー、コントラスト調整、ファイルの様々な圧縮/形式の使用など)を考慮し、しかも、変換されたファイルがオリジナルのファイルと類似していることを検出するために堅牢であるように設計されている。
【0027】
本明細書では、ゲームプラットフォーム上の真正ではないオブジェクトを自動的に検出するための実装形態について説明する。さらに、実装形態は、多数の同等の仮想オブジェクトと比較した場合に、スケールにおいて線形よりも優れたパフォーマンスを提供するように設計され得る。
【0028】
図1は、本開示のいくつかの実装形態による、例示的なシステムアーキテクチャ100を示している。図1および他の図面は、同様の要素を識別するために同様の参照番号を使用している。「110」などの参照番号の後の文字は、テキストがその特定の参照番号を有する要素を具体的に参照していることを示す。「110」などの後続の文字のないテキスト中の参照番号は、その参照番号を有する図面中の要素のいずれかまたはすべてを指す(たとえば、テキスト中の「110」は、図面中の参照番号「110a」、「110b」、および/または「110n」を指す)。
【0029】
システムアーキテクチャ100(本明細書では「システム」とも呼ばれる)は、オンラインゲームサーバ102、データストア120、クライアントデバイス110a、110b、および110n(本明細書では一般に「クライアントデバイス110」と呼ばれる)、および開発者デバイス130aおよび130n(本明細書では一般に「開発者デバイス130」と呼ばれる)を含む。ゲームサーバ102、データストア120、クライアントデバイス110、および開発者デバイス130は、ネットワーク122を介して結合されている。いくつかの実装形態では、クライアントデバイス110および開発者デバイス130は、同じまたは同じタイプのデバイスを指す場合がある。
【0030】
オンラインゲームサーバ102は、とりわけ、ゲームエンジン104、1つまたは複数のゲーム106、およびグラフィックエンジン108を含むことができる。いくつかの実装形態では、グラフィックエンジン108は、オンラインゲームサーバ102がグラフィックおよびアニメーション機能を提供することを可能にするシステム、アプリケーション、またはモジュールであり得る。いくつかの実装形態では、グラフィックエンジン108は、図6に示されるフローチャートに関連して以下に説明される動作のうちの1つまたは複数を実行し得る。クライアントデバイス110は、ゲームアプリケーション112、および入力/出力(I/O)インターフェース114(たとえば、入力/出力デバイス)を含むことができる。入出力デバイスは、マイクロフォン、スピーカ、ヘッドホン、ディスプレイデバイス、マウス、キーボード、ゲームコントローラ、タッチスクリーン、仮想現実コンソールなどのうちの1つまたは複数を含むことができる。
【0031】
開発者デバイス130は、ゲームアプリケーション132、および入力/出力(I/O)インターフェース134(たとえば、入力/出力デバイス)を含むことができる。入出力デバイスは、マイクロフォン、スピーカ、ヘッドホン、ディスプレイデバイス、マウス、キーボード、ゲームコントローラ、タッチスクリーン、仮想現実コンソールなどのうちの1つまたは複数を含むことができる。
【0032】
システムアーキテクチャ100は、説明のために提供されている。異なる実装形態では、システムアーキテクチャ100は、図1に示されるものと同じまたは異なる方法で構成された同じ、より少ない、より多い、または異なる要素を含み得る。
【0033】
いくつかの実装形態では、ネットワーク122は、パブリックネットワーク(たとえば、インターネット)、プライベートネットワーク(たとえば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、ワイヤードネットワーク(たとえば、イーサネットネットワーク)、ワイヤレスネットワーク(たとえば、802.11ネットワーク、Wi-Fi(登録商標)ネットワーク、またはワイヤレスLAN(WLAN))、セルラーネットワーク(たとえば、5Gネットワーク、ロングタームエボリューション(LTE)ネットワークなど)、ルータ、ハブ、スイッチ、サーバコンピュータ、またはそれらの組合せを含み得る。
【0034】
いくつかの実装形態では、データストア120は、非一時的コンピュータ可読メモリ(たとえば、ランダムアクセスメモリ)、キャッシュ、ドライブ(たとえば、ハードドライブ)、フラッシュドライブ、データベースシステム、あるいはデータを記憶することができる別のタイプのコンポーネントまたはデバイスであり得る。データストア120はまた、複数のコンピューティングデバイス(たとえば、複数のサーバコンピュータ)にまたがることができる複数のストレージコンポーネント(たとえば、複数のドライブまたは複数のデータベース)を含み得る。いくつかの実装形態では、データストア120はクラウドベースのストレージを含み得る。
【0035】
いくつかの実装形態では、オンラインゲームサーバ102は、1つまたは複数のコンピューティングデバイス(たとえば、クラウドコンピューティングシステム、ラックマウントサーバ、サーバコンピュータ、物理サーバのクラスタなど)を有するサーバを含むことができる。いくつかの実装形態では、オンラインゲームサーバ102は、独立したシステムであってもよく、複数のサーバを含んでもよく、別のシステムまたはサーバの一部であってもよい。
【0036】
いくつかの実装形態では、オンラインゲームサーバ102は、1つまたは複数のコンピューティングデバイス(ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなど)、オンラインゲームサーバ102上で動作を実行し、ユーザにオンラインゲームサーバ102へのアクセスを提供するために使用され得るデータストア(たとえば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェアコンポーネント、および/またはハードウェアコンポーネントを含み得る。オンラインゲームサーバ102はまた、オンラインゲームサーバ102によって提供されるコンテンツへのアクセスをユーザに提供するために使用され得るウェブサイト(たとえば、ウェブページ)またはアプリケーションバックエンドソフトウェアを含み得る。たとえば、ユーザは、クライアントデバイス110上でゲームアプリケーション112を使用してオンラインゲームサーバ102にアクセスし得る。
【0037】
いくつかの実装形態では、ゲームプレイセッションデータは、オンラインゲームサーバ102、ゲームアプリケーション112、および/またはゲームアプリケーション132を介して生成され、データストア120に記憶される。ゲームプレイヤからの許可を得て、ゲームプレイセッションデータは、関連付けられるメタデータ、たとえば、ゲーム識別子、プレイヤに関連付けられるデバイスデータ、プレイヤの人口統計情報、ゲームプレイセッション識別子、チャットトランスクリプト、プレイヤごとのセッション開始時間、セッション終了時間、およびセッション継続時間、仮想ゲーム環境における参加者のアバタの相対位置、1人または複数のプレイヤによるゲーム内購入、ゲームプレイヤによって利用されるアクセサリなどを含み得る。
【0038】
いくつかの実装形態では、オンラインゲームサーバ102は、ユーザ間の接続を提供する一種のソーシャルネットワーク、またはユーザ(たとえば、エンドユーザまたは消費者)がオンラインゲームサーバ102上の他のユーザと通信することを可能にする一種のユーザ生成コンテンツシステムであり得、通信は、ボイスチャット(たとえば、同期および/または非同期音声通信)、ビデオチャット(たとえば、同期および/または非同期ビデオ通信)、またはテキストチャット(たとえば、1:1および/またはN:N同期および/または非同期テキストベースの通信)を含み得る。いくつか、またはすべてのユーザ通信の記録は、データストア120またはゲーム106内に記憶され得る。データストア120は、プレイヤ間で交換されるチャットトランスクリプト(テキスト、オーディオ、画像など)を記憶するために利用され得る。
【0039】
いくつかの実装形態では、チャットトランスクリプトは、ゲームアプリケーション112および/またはゲームアプリケーション132を介して生成されるか、またはデータストア120に記憶される。チャットトランスクリプトは、チャットコンテンツおよび関連付けられるメタデータ、たとえば、対応する送信者と受信者を有する各メッセージを含むチャットのテキストコンテンツ、メッセージの書式設定(たとえば、太字、斜体、派手(loud)など)、メッセージのタイムスタンプ、仮想ゲーム環境における参加者アバタの相対位置、ゲーム参加者によって利用されるアクセサリなどを含み得る。いくつかの実装形態では、チャットトランスクリプトは多言語コンテンツを含み得、ゲームの異なるゲームプレイセッションからの異なる言語でのメッセージがデータストア120に記憶され得る。
【0040】
いくつかの実装形態では、チャットトランスクリプトは、タイムスタンプに基づいて参加者間の会話の形式で記憶され得る。いくつかの実装形態では、チャットトランスクリプトはメッセージの発信者に基づいて記憶され得る。
【0041】
本開示のいくつかの実装形態では、「ユーザ」は、単一の個人として表され得る。しかしながら、本開示の他の実装形態は、ユーザのセットまたは自動化されたソースによって制御されるエンティティである「ユーザ」(たとえば、作成ユーザ)を包含する。たとえば、ユーザ生成コンテンツシステムにおいてコミュニティまたはグループとしてフェデレーションされた個々のユーザのセットは、「ユーザ」と見なされる場合がある。
【0042】
いくつかの実装形態では、オンラインゲームサーバ102は、仮想ゲームサーバであり得る。たとえば、ゲームサーバは、ネットワーク122を介してクライアントデバイス110を使用してゲームにアクセスし得る、またはそれと相互作用し得るユーザのコミュニティにシングルプレイヤまたはマルチプレイヤゲームを提供し得る。いくつかの実装形態では、ゲーム(本明細書では「ビデオゲーム」、「オンラインゲーム」、または「仮想ゲーム」とも呼ばれる)は、たとえば、2次元(2D)ゲーム、3次元(3D)ゲーム(たとえば、3Dユーザ生成ゲーム)、仮想現実(VR)ゲーム、または拡張現実(AR)ゲームであり得る。いくつかの実装形態では、ユーザは他のユーザとのゲームプレイに参加し得る。いくつかの実装形態では、ゲームは、ゲームの他のユーザとリアルタイムでプレイされ得る。
【0043】
いくつかの実装形態では、ゲームプレイは、ゲーム(たとえば、106)内でクライアントデバイス(たとえば、110)を使用する1人または複数のプレイヤの相互作用、またはクライアントデバイス110のディスプレイまたは他の出力デバイス(たとえば、114)における相互作用の提示を指す場合がある。
【0044】
いくつかの実装形態では、ゲーム106は、ゲームコンテンツ(たとえば、デジタルメディアアイテム)をエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して遂行またはロードすることができる電子ファイルを含むことができる。いくつかの実装形態では、ゲームアプリケーション112が遂行され、ゲーム106がゲームエンジン104に関連してレンダリングされ得る。いくつかの実装形態では、ゲーム106は、共通のルールのセットまたは共通の目標を有し得、ゲーム106の環境は、共通のルールのセットまたは共通の目標を共有する。いくつかの実装形態では、ゲームが異なれば、ルールまたは目標も互いに異なる場合がある。
【0045】
いくつかの実装形態では、ゲームは、複数の環境がリンクされ得る1つまたは複数の環境(本明細書では「ゲーム環境」または「仮想環境」とも呼ばれる)を有し得る。環境の例としては、3次元(3D)環境がある。ゲーム106の1つまたは複数の環境は、本明細書では、集合的に「世界」または「ゲーム世界」または「仮想世界」または「宇宙」と呼ばれ得る。世界の例は、ゲーム106の3D世界であり得る。たとえば、ユーザは、別のユーザによって作成された別の仮想環境にリンクされた仮想環境を構築し得る。仮想ゲームのキャラクタは、隣接する仮想環境に入るために仮想境界を越えることができる。
【0046】
3D環境または3D世界は、ゲームコンテンツを表す幾何学的データの3次元表現を使用するグラフィックスを使用する(または、少なくとも、幾何学的データの3D表現が使用されているかどうかに関係なく、ゲームコンテンツを3Dコンテンツとして表示する)ことに留意されたい。2D環境または2D世界は、ゲームコンテンツを表す幾何学的データの2次元表現を使用するグラフィックスを使用する。
【0047】
いくつかの実装形態では、オンラインゲームサーバ102は、1つまたは複数のゲーム106をホストすることができ、ユーザがクライアントデバイス110のゲームアプリケーション112を使用してゲーム106と相互作用することを可能にすることができる。オンラインゲームサーバ102のユーザは、ゲーム106をプレイ、作成、相互作用、または構築し、他のユーザと通信し、ならびに/またはゲーム106のオブジェクト(たとえば、本明細書では「アイテム」または「ゲームオブジェクト」または「仮想ゲームアイテム」とも呼ばれる)を作成および構築し得る。
【0048】
たとえば、ユーザ生成仮想アイテムを生成する際に、ユーザは、とりわけ、キャラクタ、キャラクタの装飾、相互作用型ゲームのための1つまたは複数の仮想環境を作成してもよく、ゲーム106において使用される構造を構築してもよい。いくつかの実装形態では、ユーザは、プラットフォーム内通貨(たとえば、仮想通貨)などのゲーム仮想ゲームオブジェクトを、オンラインゲームサーバ102の他のユーザと購入、販売、または交換することができる。いくつかの実装形態では、オンラインゲームサーバ102は、ゲームコンテンツをゲームアプリケーション(たとえば、112)に送信し得る。いくつかの実装形態では、ゲームコンテンツ(本明細書では「コンテンツ」とも呼ばれる)は、オンラインゲームサーバ102またはゲームアプリケーションに関連付けられる任意のデータまたはソフトウェア命令(たとえば、ゲームオブジェクト、ゲーム、ユーザ情報、ビデオ、画像、コマンド、メディアアイテムなど)を指す場合がある。いくつかの実装形態では、ゲームオブジェクト(たとえば、本明細書では「アイテム」または「オブジェクト」または「仮想オブジェクト」または「仮想ゲームアイテム」とも呼ばれる)は、オンラインゲームサーバ102のゲームアプリケーション106またはクライアントデバイス110のゲームアプリケーション112において使用、作成、共有、または他の方法で描写されるオブジェクトを指し得る。たとえば、ゲームオブジェクトは、パーツ、モデル、キャラクタ、アクセサリ、ツール、武器、衣類、建物、車両、通貨、植物相、動物相、前述のコンポーネント(たとえば、建物の窓)などを含み得る。
【0049】
ゲーム106をホストするオンラインゲームサーバ102は、例示の目的で提供されていることに留意されたい。いくつかの実装形態では、オンラインゲームサーバ102は、あるユーザから1人または複数の他のユーザへの通信メッセージを含むことができる1つまたは複数のメディアアイテムをホストし得る。ユーザの許可および明示的なユーザの同意があれば、オンラインゲームサーバ102は、ゲームプラットフォームを改善するためにチャットトランスクリプトデータを分析し得る。メディアアイテムは、これらに限定されないが、デジタルビデオ、デジタルムービー、デジタル写真、デジタル音楽、オーディオコンテンツ、メロディ、ウェブサイトのコンテンツ、ソーシャルメディアの更新、電子書籍、電子雑誌、デジタル新聞、デジタルオーディオ書籍、電子ジャーナル、ウェブブログ、リアルシンプルシンジケーション(RSS)フィード、電子コミックブック、ソフトウェアアプリケーションなどを含むことができる。いくつかの実装形態では、メディアアイテムは、デジタルメディアアイテムをエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して遂行またはロードできる電子ファイルであり得る。
【0050】
いくつかの実装形態では、ゲーム106は、特定のユーザまたは特定のユーザのグループ(たとえば、プライベートゲーム)に関連付けられ得るか、またはオンラインゲームサーバ102(たとえば、パブリックゲーム)にアクセスできるユーザに広く利用可能にされ得る。いくつかの実装形態では、オンラインゲームサーバ102が1つまたは複数のゲーム106を特定のユーザまたはユーザのグループに関連付ける場合、オンラインゲームサーバ102は、ユーザアカウント情報(たとえば、ユーザ名およびパスワードなどのユーザアカウント識別子)を使用して、特定のユーザをゲーム106に関連付けることができる。
【0051】
いくつかの実装形態では、オンラインゲームサーバ102またはクライアントデバイス110は、ゲームエンジン104またはゲームアプリケーション112を含み得る。いくつかの実装形態では、ゲームエンジン104は、ゲーム106の開発または遂行のために使用され得る。たとえば、ゲームエンジン104は、とりわけ、2D、3D、VR、またはARグラフィックスのためのレンダリングエンジン(「レンダラ」)、物理エンジン、衝突検出エンジン(および衝突応答)、サウンドエンジン、スクリプト機能、アニメーションエンジン、人工知能エンジン、ネットワーキング機能、ストリーミング機能、メモリ管理機能、スレッド機能、シーングラフ機能、またはシネマティクスのビデオサポートなどの機能を含み得る。ゲームエンジン104のコンポーネントは、ゲームの計算およびレンダリングを支援するコマンド(たとえば、レンダリングコマンド、衝突コマンド、物理コマンドなど)を生成し得る。いくつかの実装形態では、クライアントデバイス110のゲームアプリケーション112は、それぞれ、オンラインゲームサーバ102のゲームエンジン104、または両方の組合せと連携して、独立して動作し得る。
【0052】
いくつかの実装形態では、オンラインゲームサーバ102およびクライアントデバイス110の両方は、ゲームエンジン(それぞれ、104および112)を遂行し得る。ゲームエンジン104を使用するオンラインゲームサーバ102は、ゲームエンジン機能の一部またはすべてを実行(たとえば、物理コマンド、レンダリングコマンドなどを生成)してもよく、またはゲームエンジン機能の一部またはすべてをクライアントデバイス110のゲームエンジン104にオフロードしてもよい。いくつかの実装形態では、各ゲーム106は、オンラインゲームサーバ102上で実行されるゲームエンジン機能と、クライアントデバイス110上で実行されるゲームエンジン機能との間で異なる比率を有し得る。たとえば、オンラインゲームサーバ102のゲームエンジン104は、少なくとも2つのゲームオブジェクト間に衝突がある場合に物理コマンドを生成するために使用され得、一方、追加のゲームエンジン機能(たとえば、レンダリングコマンドの生成)は、クライアントデバイス110にオフロードされ得る。いくつかの実装形態では、オンラインゲームサーバ102およびクライアントデバイス110上で実行されるゲームエンジン機能の比率は、ゲームプレイ条件に基づいて(たとえば、動的に)変更され得る。たとえば、特定のゲーム106のゲームプレイに参加するユーザの数がしきい値数を超える場合、オンラインゲームサーバ102は、クライアントデバイス110によって以前に実行された1つまたは複数のゲームエンジン機能を実行し得る。
【0053】
たとえば、ユーザは、クライアントデバイス110上でゲーム106をプレイし得、制御命令(たとえば、右、左、上、下、ユーザ選択、またはキャラクタの位置および速度情報などのユーザ入力)をオンラインゲームサーバ102に送信し得る。クライアントデバイス110から制御命令を受信した後、オンラインゲームサーバ102は、制御命令に基づいて、ゲームプレイ命令(たとえば、レンダリングコマンド、衝突コマンドなどの、グループゲームプレイまたはコマンドに参加しているキャラクタの位置および速度情報)をクライアントデバイス110に送信し得る。たとえば、オンラインゲームサーバ102は、クライアントデバイス110のためのゲームプレイ命令を生成するために、制御命令に対して1つまたは複数の論理動作(たとえば、ゲームエンジン104を使用して)を実行し得る。他の例では、オンラインゲームサーバ102は、制御命令のうちの1つまたは複数を、あるクライアントデバイス110から、ゲーム106に参加している他のクライアントデバイス(たとえば、クライアントデバイス110aからクライアントデバイス110b)に渡し得る。クライアントデバイス110は、ゲームプレイ命令を使用して、クライアントデバイス110のディスプレイ上に提示するためにゲームプレイをレンダリングし得る。
【0054】
いくつかの実装形態では、制御命令は、ユーザのキャラクタのゲーム内アクションを示す命令を指す場合がある。たとえば、制御命令は、右、左、上、下、ユーザ選択、ジャイロスコープの位置および方向データ、力センサデータなどのゲーム内アクションを制御するためのユーザ入力を含み得る。制御命令は、キャラクタの位置および速度情報を含み得る。いくつかの実装形態では、制御命令は、オンラインゲームサーバ102に直接送信される。他の実装形態では、制御命令は、クライアントデバイス110から別のクライアントデバイスに(たとえば、クライアントデバイス110bからクライアントデバイス110nに)送信され得、他のクライアントデバイスは、ローカルゲームエンジン104を使用してゲームプレイ命令を生成する。制御命令は、音声通信メッセージまたはオーディオデバイス(たとえば、スピーカ、ヘッドホンなど)上の別のユーザからの他のサウンド、たとえば、本明細書で説明するオーディオ空間化技法を使用して生成される音声通信または他のサウンドを再生するための命令を含み得る。
【0055】
いくつかの実装形態では、ゲームプレイ命令は、クライアントデバイス110がマルチプレイヤゲームなどのゲームのゲームプレイをレンダリングすることを可能にする命令を指す場合がある。ゲームプレイ命令は、ユーザ入力(たとえば、制御命令)、キャラクタの位置および速度情報、またはコマンド(たとえば、物理コマンド、レンダリングコマンド、衝突コマンドなど)のうちの1つまたは複数を含み得る。
【0056】
いくつかの実装形態では、キャラクタ(または、一般にゲームオブジェクト)はコンポーネントから構築されており、その1つまたは複数がユーザによって選択され、ユーザの編集を支援するために自動的に結合され得る。
【0057】
いくつかの実装形態では、キャラクタは3Dモデルとして実装され、キャラクタを描画するために使用される表面表現(スキンまたはメッシュとしても知られる)と、相互接続されたボーンの階層セット(スケルトンまたはリグとしても知られる)を含む。リグは、キャラクタをアニメーション化し、キャラクタによるモーションおよびアクションをシミュレートするために利用され得る。3Dモデルはデータ構造として表されてよく、キャラクタの様々なプロパティ、たとえば寸法(高さ、幅、胴回りなど)、ボディタイプ、動きのスタイル、身体部分の数とタイプ、プロポーション(たとえば、肩と腰の比率)、頭のサイズなどを変更するために、データ構造の1つまたは複数のパラメータが修正され得る。
【0058】
1つまたは複数のキャラクタ(本明細書では「アバタ」または「モデル」とも呼ばれる)がユーザに関連付けられてもよく、ユーザはゲーム106とのユーザの対話を容易にするためにキャラクタを制御し得る。
【0059】
いくつかの実装形態では、キャラクタは、身体部分(たとえば、髪、腕、脚など)およびアクセサリ(たとえば、Tシャツ、メガネ、装飾的な画像、ツールなど)などのコンポーネントを含み得る。いくつかの実装形態では、カスタマイズ可能なキャラクタの身体部分は、とりわけ、頭のタイプ、身体部分のタイプ(腕、脚、胴体、および手)、顔のタイプ、髪のタイプ、および肌のタイプなどを含む。いくつかの実装形態では、カスタマイズ可能なアクセサリは、衣類(たとえば、シャツ、ズボン、帽子、靴、メガネなど)、武器、または他のツールを含む。
【0060】
いくつかの実装形態では、たとえばシャツ、パンツなどのいくつかの資産タイプの場合、オンラインゲームプラットフォームは、約20から約30ポリゴンの間の、ポリゴン数の少ないメッシュで表される簡略化された3D仮想オブジェクトモデルへのアクセスをユーザに提供し得る。
【0061】
いくつかの実装形態では、ユーザは、キャラクタのスケール(たとえば、高さ、幅、または奥行き)、またはキャラクタのコンポーネントのスケールを制御し得る。いくつかの実装形態では、ユーザはキャラクタのプロポーション(たとえば、がっしりしている、解剖学的など)を制御し得る。いくつかの実装形態では、キャラクタはキャラクタゲームオブジェクト(たとえば、身体部分など)を含まない場合があるが、ユーザはゲームとのユーザの対話を容易にするためにキャラクタを(キャラクタゲームオブジェクトなしで)制御し得る点に留意されたい(たとえば、レンダリングされたキャラクタゲームオブジェクトがないパズルゲームであるが、ユーザは依然として、ゲーム内アクションを制御するためにキャラクタを制御する)。
【0062】
いくつかの実装形態では、身体部分などのコンポーネントは、ブロック、円柱、球などの基本的な幾何学的形状、またはくさび、トーラス、チューブ、チャネルなどの他の基本的な形状である場合がある。いくつかの実装形態では、クリエータモジュールは、オンラインゲームサーバ102の他のユーザによる表示または使用のためにユーザのキャラクタを公開し得る。いくつかの実装形態では、キャラクタ、他のゲームオブジェクト、ゲーム106、またはゲーム環境の作成、修正、またはカスタマイズは、I/Oインターフェース(たとえば、開発者インターフェース)を使用して、スクリプトの有無にかかわらず(または、アプリケーションプログラミングインターフェース(API)の有無にかかわらず)、ユーザによって実行され得る。例示の目的で、キャラクタは人型の形態を有するものとして説明されている点に留意されたい。さらに、キャラクタは、乗り物、動物、無生物、または他の創造的な形態など、あらゆる形態をとり得る点に留意されたい。
【0063】
いくつかの実装形態では、オンラインゲームサーバ102は、ユーザによって作成されたキャラクタをデータストア120に記憶し得る。いくつかの実装形態では、オンラインゲームサーバ102は、ユーザに提示され得るキャラクタカタログおよびゲームカタログを維持する。いくつかの実装形態では、ゲームカタログは、オンラインゲームサーバ102に記憶されたゲームの画像を含む。さらに、ユーザは、選択されたゲームに参加するために、キャラクタカタログからキャラクタ(たとえば、ユーザまたは他のユーザによって作成されたキャラクタ)を選択し得る。キャラクタカタログは、オンラインゲームサーバ102に記憶されたキャラクタの画像を含む。いくつかの実装形態では、キャラクタカタログ内のキャラクタのうちの1つまたは複数は、ユーザによって作成またはカスタマイズされた可能性がある。いくつかの実装形態では、選択されたキャラクタは、キャラクタのコンポーネントのうちの1つまたは複数を定義するキャラクタ設定を有する場合がある。
【0064】
いくつかの実装形態では、ユーザのキャラクタは、コンポーネントの構成を含むことができ、コンポーネントの構成および外観、より一般的にはキャラクタの外観は、キャラクタ設定によって定義され得る。いくつかの実装形態では、ユーザのキャラクタのキャラクタ設定は、少なくとも部分的にユーザによって選択され得る。他の実装形態では、ユーザは、デフォルトのキャラクタ設定または他のユーザによって選択されたキャラクタ設定でキャラクタを選択し得る。たとえば、ユーザは、あらかじめ定義されたキャラクタ設定を有するキャラクタカタログからデフォルトのキャラクタを選択し得、ユーザは、キャラクタ設定の一部を変更する(たとえば、カスタマイズされたロゴのシャツを追加する)ことによってデフォルトのキャラクタをさらにカスタマイズし得る。キャラクタ設定は、オンラインゲームサーバ102によって特定のキャラクタに関連付けられ得る。
【0065】
いくつかの実装形態では、クライアントデバイス110はそれぞれ、パーソナルコンピュータ(PC)、モバイルデバイス(たとえば、ラップトップ、モバイル電話、スマートフォン、タブレットコンピュータ、またはネットブックコンピュータ)、ネットワーク接続されたテレビ、ゲームコンソールなどのようなコンピューティングデバイスを含み得る。いくつかの実装形態では、クライアントデバイス110は、「ユーザデバイス」と呼ばれることもある。いくつかの実装形態では、1つまたは複数のクライアントデバイス110は、任意の時点でオンラインゲームサーバ102に接続し得る。クライアントデバイス110の数は、例示として提供されていることに留意されたい。いくつかの実装形態では、任意の数のクライアントデバイス110が使用され得る。
【0066】
いくつかの実装形態では、各クライアントデバイス110は、それぞれ、ゲームアプリケーション112のインスタンスを含み得る。一実施形態では、ゲームアプリケーション112は、オンラインゲームサーバ102によってホストされる仮想ゲーム内の仮想キャラクタを制御するなど、ユーザがオンラインゲームサーバ102を使用およびそれと相互作用すること、またはゲーム106、画像、ビデオアイテム、ウェブページ、ドキュメントなどのコンテンツを閲覧またはアップロードすることを可能にし得る。一例では、ゲームアプリケーションは、ウェブサーバによって提供されコンテンツ(たとえば、仮想環境内の仮想キャラクタなど)にアクセス、検索、提示、またはナビゲートすることができるウェブアプリケーション(たとえば、ウェブブラウザと連動して動作するアプリケーション)であり得る。別の例では、ゲームアプリケーションは、クライアントデバイス110に対してローカルにインストールおよび遂行され、ユーザがオンラインゲームサーバ102と相互作用することを可能にするネイティブアプリケーション(たとえば、モバイルアプリケーション、アプリ、またはゲームプログラム)であり得る。ゲームアプリケーションは、コンテンツ(たとえば、ウェブページ、メディアビューア)をユーザにレンダリング、表示、または提示し得る。ある実装形態では、ゲームアプリケーションはまた、ウェブページに埋め込まれる埋め込まれたメディアプレイヤ(たとえば、フラッシュ(登録商標)プレイヤ)を含み得る。
【0067】
本開示の態様によれば、ゲームアプリケーションは、ユーザがコンテンツを構築、作成、編集、オンラインゲームサーバ102にアップロードするだけでなく、オンラインゲームサーバ102と相互作用する(たとえば、オンラインゲームサーバ102によってホストされるゲーム106をプレイする)ためのオンラインゲームサーバプリケーションであり得る。したがって、ゲームアプリケーションは、オンラインゲームサーバ102によってクライアントデバイス110に提供され得る。別の例では、ゲームアプリケーションは、サーバからダウンロードされるアプリケーションであり得る。
【0068】
いくつかの実装形態では、各開発者デバイス130は、それぞれ、ゲームアプリケーション132のインスタンスを含み得る。一実施形態では、ゲームアプリケーション132は、オンラインゲームサーバ102によってホストされる仮想ゲーム内の仮想キャラクタを制御するなど、開発者ユーザがオンラインゲームサーバ102を使用およびそれと相互作用すること、またはゲーム106、画像、ビデオアイテム、ウェブページ、ドキュメントなどのコンテンツを閲覧またはアップロードすることを可能にし得る。一例では、ゲームアプリケーションは、ウェブサーバによって提供されコンテンツ(たとえば、仮想環境内の仮想キャラクタなど)にアクセス、検索、提示、またはナビゲートすることができるウェブアプリケーション(たとえば、ウェブブラウザと連動して動作するアプリケーション)であり得る。別の例では、ゲームアプリケーションは、クライアントデバイス130に対してローカルにインストールおよび遂行され、ユーザがオンラインゲームサーバ102と相互作用することを可能にするネイティブアプリケーション(たとえば、モバイルアプリケーション、アプリ、またはゲームプログラム)であり得る。ゲームアプリケーションは、コンテンツ(たとえば、ウェブページ、メディアビューア)をユーザにレンダリング、表示、または提示し得る。ある実装形態では、ゲームアプリケーションはまた、ウェブページに埋め込まれる埋め込まれたメディアプレイヤ(たとえば、フラッシュ(登録商標)プレイヤ)を含み得る。
【0069】
本開示の態様によれば、ゲームアプリケーション132は、ユーザがコンテンツを構築、作成、編集、オンラインゲームサーバ102にアップロードするため、ならびにオンラインゲームサーバ102と相互作用する(たとえば、オンラインゲームサーバ102によってホストされるゲーム106を提供および/またはプレイする)ためのオンラインゲームサーバプリケーションであり得る。したがって、ゲームアプリケーションは、オンラインゲームサーバ102によってクライアントデバイス130に提供され得る。別の例では、ゲームアプリケーション132は、サーバからダウンロードされるアプリケーションであり得る。ゲームアプリケーション132は、オンラインゲームサーバ102と相互作用し、ゲーム開発者によって開発、ホスト、または提供される1つまたは複数のゲーム106のユーザ資格情報、ユーザ通貨などへのアクセスを取得するように構成され得る。
【0070】
いくつかの実装形態では、ユーザは、ゲームアプリケーションを介してオンラインゲームサーバ102にログインし得る。ユーザは、ユーザアカウント情報(たとえば、ユーザ名およびパスワード)を提供することによってユーザアカウントにアクセスし得、ユーザアカウントは、オンラインゲームサーバ102の1つまたは複数のゲーム106に参加するために利用可能な1つまたは複数のキャラクタに関連付けられる。いくつかの実装形態では、適切な資格情報があれば、ゲーム開発者は、他のユーザによって所有される、または関連付けられているプラットフォーム内通貨(たとえば、仮想通貨)、アバタ、特殊能力、アクセサリなどのゲーム仮想ゲームオブジェクトへのアクセスを取得し得る。
【0071】
一般に、オンラインゲームサーバ102によって実行されるものとして一実装形態で説明される機能はまた、適切な場合、他の実装形態では、クライアントデバイス110またはサーバによっても実行することができる。さらに、特定のコンポーネントに起因する機能は、一緒に動作する異なるコンポーネントまたは複数のコンポーネントによって実行することができる。オンラインゲームサーバ102はまた、適切なアプリケーションプログラミングインターフェース(API)を通じて他のシステムまたはデバイスに提供されるサービスとしてアクセスすることができ、したがって、ウェブサイトにおける使用に限定されない。
【0072】
図2は、いくつかの実装形態による、仮想オブジェクトを生成するために利用され得る例示的なテンプレート200、220および240を示している。例示的なテンプレートは、仮想環境において使用するためのアバタ(たとえば、ヒューマノイドキャラクタ)、アクセサリ(たとえば、衣服、履物、ヘッドギア)などの仮想オブジェクトを作成するためにユーザによって利用され得る。
【0073】
いくつかの実装形態では、例示的なテンプレートは、あらかじめ定められた寸法のセットに準拠し、3D仮想オブジェクトのテクスチャを生成するためにあらかじめ定められたテンプレートに基づいて組合せ可能である、2Dポリゴンのセットを指定し得る。
【0074】
いくつかの実装形態では、テンプレート200、220および240は、オンラインゲームサーバ102(たとえば、データストア120)、1つまたは複数のクライアントデバイス110、および/あるいは開発者デバイス130に記憶されたグラフィカルテンプレートであってもよい。いくつかの実装形態では、テンプレート200および220は、ゲームエンジン104によってクライアントデバイス110または開発者デバイス130のいずれかにレンダリングされ得る。
【0075】
いくつかの実装形態では、テンプレート200、220および240は、ユーザが異なる3D仮想オブジェクトを閲覧および/または設計できるようにするオンラインゲームプラットフォームのグラフィカルユーザインターフェースを介してユーザ、たとえば開発者に提供され得る。いくつかの実装形態では、テンプレートは、3D仮想オブジェクトに関連付けられる異なるビューおよび/または表面に対応する複数の2Dポリゴンを含む。
【0076】
ユーザ(開発者)は、テンプレートに基づいて、たとえば、フォトエディタツールを使用して、画像、アート作品、テキスト、他のデザイン要素などをテンプレートに追加することによって、3D仮想オブジェクトを編集および作成し得る。いくつかの実装形態では、ユーザは、ローカルユーザデバイス、たとえば、クライアントデバイス110または開発者デバイス130上の画像エディタにおいてテンプレートを開くことができ、画像エディタにおいてテンプレートの2Dポリゴンのいずれかに関連付けられるテクスチャを編集することによって、新しい3D仮想オブジェクトを作成する。
【0077】
いくつかの実装形態では、各テンプレートは、仮想環境における仮想アバタの特定の身体部分に対応し得る。たとえば、胴体部分はアバタの胴体に対応し得、左側部分は左腕/脚に対応し得、右側部分は右腕/脚に対応し得る。しかしながら、場合によっては、身体の1つの部分(たとえば、胴体)に対応する部分を別の身体部分(たとえば、頭)にドレープすることが許容される場合がある。そのような場合、ドレーピングは不完全になる可能性があり、たとえば、仮想アバタのレンダリング中にテンプレートの一部が無視される(たとえば、表示されない)可能性がある。
【0078】
図2に示されるように、テンプレート200は、3D仮想オブジェクト、たとえば仮想環境における仮想アバタのシャツやパンツなどのアクセサリを作成するために利用されるテンプレートである。いくつかの実装形態では、テンプレート200は、3D仮想オブジェクトの異なる部分を表す2Dポリゴンを含む。この例示的な例では、3D仮想オブジェクトの胴体部分、たとえば、仮想アバタに関連付けられるシャツを設計するために、テンプレート200が利用され得る。たとえば、テンプレート200は、Uによって示される上部(上端)部分202、Dによって示される下部(下端)部分204、Fによって示される前部分206、Rによって示される右側部分208、Lによって示される左側部分210、およびBによって示される後方(後部)部分212を含む。テンプレート200は、3D仮想オブジェクト、たとえばオンラインゲームプラットフォームによって提供される仮想環境において使用する衣類アクセサリを設計するためのガイドとして使用するために提供され得る。
【0079】
いくつかの実装形態では、テンプレート200は、テンプレート200内でのユーザ設計をガイドするために利用され得るグリッド線を含み得る。いくつかの実装形態では、テンプレート200は、テンプレート内の点および領域の正確な定義を可能にする基準座標を含み得る。
【0080】
テンプレート220および240は、3D仮想オブジェクト、たとえば、腕または脚の部分、たとえば仮想環境における仮想アバタのパンツまたはシャツを設計するために利用され得る。
【0081】
いくつかの実装形態では、3D仮想オブジェクトの右腕または右脚部分を作成するために、テンプレート220が利用され得る。テンプレート220は、Lによって示される左側部分222、Bによって示される後方(後部)部分224、Rによって示される右側部分226、Uによって示される上部分228、Fによって示される前部分232、およびDによって示される下部(下端)部分230を含む。
【0082】
いくつかの実装形態では、3D仮想オブジェクトの左腕または左脚部分を作成するために、テンプレート240が利用され得る。テンプレート240は、Lによって示される左側部分242、Bによって示される後方(後部)部分244、Rによって示される右側部分246、Uによって示される上部分248、Fによって示される前部分252、およびDによって示される下部(下端)部分250を含む。
【0083】
いくつかの実装形態では、1つまたは複数の追加の特徴がテンプレート200、220および240に含まれてもよい。たとえば、あらかじめ設計された画像または特徴が、ユーザがデザインの一部として利用できるテンプレートに含まれてもよい。
【0084】
いくつかの実装形態では、テンプレートがそのような3D仮想オブジェクトと一緒に仮想アバタ上にドレープされるとき、靴、帽子などの他の3D仮想オブジェクトと重なる領域を示すために、テンプレート上にマーキングが提供されてもよい。
【0085】
いくつかの実装形態では、テクスチャは、仮想3Dオブジェクトの外側の表面の色および/またはパターンを示し得る。テクスチャは、透明度(完全に透明から完全に不透明まで、様々な程度)、反射性(仮想光がテクスチャからどのように反射するか)、仮想環境における入射光に対する拡散度、仮想3Dオブジェクトに関連付けられるテクスチャおよびメッシュの材料特性(たとえば、3Dオブジェクトがドレープされている仮想アバタが異なる形状および/またはポーズを有する場合に、テクスチャがどのように伸びるか、折り畳まれるか、折り目が付くかなど)および屈折特性を含むことができる特性を有し得る。テクスチャの例は、草、水色のガラス板、氷、水、コンクリート、レンガ、カーペット、木などを含む。仮想環境では、現実の世界には存在しない他の合成テクスチャ、たとえば、しわが寄る氷、曲がるレンガなどが許可される場合がある。
【0086】
いくつかの実装形態では、2Dポリゴンのうちの1つまたは複数に対してサイズが指定され得る。たとえば、いくつかの実施形態では、胴体の前部206および後部のサイズは、128×128ピクセルであり得る。胴体の上端(上部)部分と胴体の下端(下部)部分のサイズは128×64ピクセルであり得る。いくつかの実装形態では、腕と脚の上端と下端のサイズは64×64ピクセルであり得る。いくつかの実装形態では、胴体および腕/脚の側面のサイズは64×128ピクセルであり得る。
【0087】
図3は、いくつかの実装形態による、テンプレートを使用して作成された例示的な3D仮想オブジェクトを示している。
【0088】
様々な実装形態では、アクセサリ、たとえば仮想アバタ用の衣料品として使用できる複合3D仮想オブジェクトを作成するために、テンプレートが利用され得る。
【0089】
いくつかの実装形態では、テンプレートは、ストレージデバイスおよび/またはメモリ(たとえば、データストア120、またはクライアントデバイス110、または開発者デバイス130上)に記憶され得る。テンプレートにより、ユーザは、3D仮想オブジェクトの特定の特徴を描写できるようになる。開発者デバイス130のユーザには、たとえばゲームアプリケーション132を使用して、アクセサリの設計を可能にするユーザインターフェースが提供され得る。
【0090】
図3は、いくつかの実装形態による、テンプレートを使用して作成された例示的な3D仮想オブジェクトを示している。
【0091】
いくつかの実装形態では、テンプレート内の2Dポリゴンは、折り畳まれるか、ならびに/あるいは仮想アバタ(キャラクタ)の胴体、腕、および/または脚の周りに巻き付けられる。3D仮想オブジェクトを生成するために、各2Dポリゴンに含まれるコンテンツ、たとえば画像などが利用される。3D仮想オブジェクトの対応する表面(側面)のテクスチャは、3D仮想オブジェクトの形状および/またはポーズに基づいて、特定の配置において複数の2Dポリゴンを結合することによって生成され、その形状および/またはポーズは、3D仮想オブジェクトが取り付けられる仮想アバタの形状および/またはポーズに基づいてもよい。
【0092】
いくつかの実装形態では、3D仮想オブジェクトの形状は、基礎となる仮想オブジェクトの形状に関連付けられ、キャラクタ(アバタ)の身体部分は、キャラクタの形状の定義を提供するメッシュによって接続され得る。
【0093】
この例示的な例は、仮想アバタ用のシャツ350、胴体部分のテンプレート300を使用して作成されたテクスチャ、右腕部分用のテンプレート330と左腕部分用のテンプレート340を示している。図3に示されるように、3D仮想オブジェクト、つまり仮想アバタ(キャラクタ)に関連付けられるシャツ350を生成するために、テンプレート300、330、および340における2Dポリゴンからのテクスチャデータは結合される。図4に示されるように、アバタによって着用されるシャツ上の対応する位置にマッピングされたデザインを含むシャツを生成するために、2Dポリゴンに含まれる4つのデザイン(画像)が利用される。
【0094】
具体的には、シャツ365の前部は、胴体テンプレート2Dポリゴン310からのデザイン315を含み、シャツの腕355および360は、右腕前部2Dポリゴン335および左腕前部2Dポリゴン345からの対応するデザインを含む。
【0095】
仮想3Dオブジェクトは、ゲームサーバ102によって(たとえば、グラフィックスエンジン108によって)レンダリングされる。いくつかの実装形態では、レンダリングは、仮想3Dオブジェクトの3Dモデルに基づく1つまたは複数の画像の生成をもたらす。いくつかの実装形態では、レンダリングは、テンプレートファイルにおいて指定された解像度とは異なる解像度で実行され得る。
【0096】
図3から分かるように、テンプレート300、330、および340は、シャツ350を着ているようにアバタをレンダリングするために、仮想アバタに取り付けられ(折り畳まれ、および/または巻き付けられ)る。さらに、たとえば、腕が折り畳まれたり回転したり、胴体が曲げられたり伸びたりするなど、アバタのポーズが変化すると、対応する変形がシャツ350に自動的に適用されることが理解されよう。たとえば、左腕が部分的に曲げられると、それに応じて左腕部分360の平行四辺形が圧縮され得る。別の例では、テンプレートの材料特性に基づいて、シャツのそのような効果をレンダリングするために、平行四辺形が「しわ(crease)」または「しわくちゃ(rumple)」になり得る。別の例では、アバタが胴体を上方に伸ばすと、シャツの前部365の円形315が楕円形に引き伸ばされ得る。
【0097】
さらに、仮想キャラクタの形状に応じて、対応する変形がシャツ350に自動的に適用される。たとえば、左腕と右腕の平行四辺形は、仮想キャラクタがやせているか筋肉質であるか、仮想キャラクタの腕の定義された形状などに基づいて、異なる角度を有し得る。
【0098】
図4Aは、いくつかの実装形態による、3D仮想オブジェクトのビューを示している。
【0099】
いくつかの実装形態では、仮想環境でのカメラビューにより、3D仮想オブジェクトの異なるビューが得られる場合がある。いくつかの実装形態では、レンダリングされた仮想3Dオブジェクトを閲覧するために、ユーザによって1つまたは複数のカメラビューが利用され得る。
【0100】
カメラビューは、カメラビューを生成し、3D仮想オブジェクトの異なるビューを可能にするために、3D世界内の異なる視点に配置できる仮想カメラによって提供されてもよい。仮想カメラの位置およびキャプチャ解像度も更新/変更することができる。たとえば、いくつかの実装形態では、カメラビューは、ズームインおよびズームアウトする機能、ならびに/または高解像度または低解像度で仮想オブジェクトの画像をキャプチャする機能を含み得る。
【0101】
いくつかの実装形態では、仮想アバタの動きは、仮想アバタに関連付けられるアニメーションルーチンによって可能になる。いくつかの実装形態では、仮想アバタに関連付けられる3D仮想オブジェクトは、仮想アバタに関連付けられるアニメーションに対応する変化(変形)を受ける。たとえば、仮想アバタが頭、胴体、腕、脚の動きによってダンスを行うようにアニメーション化されている場合、3D仮想オブジェクトも対応する変化を受ける可能性がある。
【0102】
いくつかの実装形態では、仮想アバタの動きは、対応する2Dまたは3Dオブジェクトの動きによってシミュレートされる。それに応じて、3D仮想オブジェクトに関連付けられる1つまたは複数の2Dポリゴンも移動および/または変形を受ける。
【0103】
仮想アバタおよび関連付けられる任意の3D仮想オブジェクトのモーション/動きは、3D仮想オブジェクト上に提供される(たとえば、ドレープされる)任意のテクスチャ(デザイン)の対応する動きを引き起こし得る。この動きにより、カメラビューにおいてキャプチャされ、ユーザによって閲覧される3D仮想オブジェクト上のテクスチャの位置も変化する可能性がある。
【0104】
場合によっては、ユーザは、単一のビューまたはサブビューには完全には表示されない、不適切なコンテンツおよび/または不快なコンテンツ(アダルトコンテンツ、著作権に違反するコンテンツ、ゲーム開発者および/またはゲームプラットフォームによって定められたポリシに違反するコンテンツなど)を含む場合があり、オブジェクトの様々な領域に分散されているが、アニメーション中またはオブジェクトを着用しているアバタが特定のポーズに入ったときなどに近接している。
【0105】
場合によっては、不適切なコンテンツが異なるオブジェクトまたは複数のオブジェクト(たとえば、パンツの一部とシャツの一部、2つのパンツの一部など)に広がる可能性がある。さらに、アバタは、たとえばパンツおよび/またはシャツなどの複数の3D仮想オブジェクトを着用するように構成することができ、その一部は完全または部分的に透明になるようにユーザによって定義され得、不適切なコンテンツまたは侵害コンテンツを含めるためにこれを使用することができる。たとえば、複数の部分的に透明な3D仮想オブジェクトは、個々の構成3D仮想オブジェクトが不適切なコンテンツを含まない場合でも、ビューが不適切なコンテンツのビューを含むように、ビュー(スロット)の同じ部分に構成されてもよい。
【0106】
部分画像は、ロゴまたは他の著作権のある財産を侵害する可能性があり、四角形などのテンプレートのポリゴンのエッジを横切るように構成されたり、アバタの特定のポーズで現れる仮想キャラクタの特定の変形において表示されるように構成されたりすることによって、従来の画像マッチング技法による検出を逃れることができる。
【0107】
いくつかの実装形態では、新しい3Dオブジェクトがゲームプラットフォームにアップロードされると、そのようなオブジェクトは、たとえば画像、パターンなどの真正のオブジェクトのデータベースに対して検証/チェックされる場合がある。テクスチャに関連付けられるすべての受信された2Dポリゴンは、たとえば、オンラインゲームプラットフォームによって記憶された参照画像、以前に認証されたテクスチャ、ロゴなど、オブジェクトのセットと比較され得る。定義された隣接関係に基づいて、2Dポリゴンが結合され、結合された隣接する2Dポリゴンの画像がキャプチャされ、記憶されている真正のオブジェクト(たとえば、参照画像)と比較される。
【0108】
この例示的な例では、真正の画像であることが確認された真正のオブジェクト(画像)410が表示されている。
【0109】
アップロードは、2Dポリゴンのセット、たとえば、図3を参照して説明したテンプレート300、330、および340の変形を提供することによって実行され得る。
【0110】
図4Aは、ゲーム環境において許可されていない真正のオブジェクト(画像)410を示している。たとえば、真正のオブジェクト410は、著作権で保護された画像、不適切であると識別された画像(たとえば、成人向けの画像)、または他の方法で許可されていないと識別された画像であってもよい。図4Aは、あらかじめ定義されたテンプレート、たとえば、提供された2Dポリゴンのセットからシャツを生成するためのテンプレートに基づいて、提供された2Dポリゴンを結合することに基づいて生成された仮想アバタに関連付けられる3D仮想オブジェクト420をさらに示している。図示されるように、デフォルトのカメラビューでは、立位ポーズ420の仮想アバタにおいて、違反は観察されない。このポーズでは、テクスチャ部分425および430が胴体およびシャツの右前部分に現れる。しかしながら、仮想アバタが腕を伸ばしているのが観察されるポーズ(440)では、それぞれの胴体と右前方の2Dポリゴンの近接により、テクスチャ部分445が真正のオブジェクト410と視覚的に類似するようなビューが作成されることが観察される。そのような視覚的な外観は、たとえ本質的に一時的なものであっても、許可されない可能性があるため、検出することが重要である。
【0111】
いくつかの実装形態では、真正の画像と、仮想環境におけるオブジェクトの1つまたは複数のビューとの間の類似性は、オブジェクトの未検証の2Dポリゴンのセットから生成されたテクスチャ(画像)と、以前に受信された真正の画像との比較に基づいて検出される。いくつかの実装形態では、比較は、様々なポーズおよび/または形状における未検証の2Dポリゴンのセットを結合することによって生成された画像のハッシュマッチングを利用する。
【0112】
いくつかの実装形態では、2Dポリゴンは、3D仮想オブジェクトおよび関連付けられる仮想キャラクタのポーズと動きのセット(たとえば、アニメーションからの)に基づいて結合される。たとえば、類似性を検出するために、3D仮想オブジェクトからの隣接する2Dポリゴンが結合されてよく、結合したポリゴンから生成したテクスチャが、以前に受信して認証したオブジェクト(画像)と比較されてよい。
【0113】
いくつかの実装形態では、類似したビューを検出するために、受信された2Dポリゴンの各々と結合された2Dポリゴンを真正のオブジェクトと比較するために、近似ハッシュマッチング(ファジーマッチング、100%完全未満の一致であっても一致と見なされる)が利用される。ハッシュ値は画像ごとに計算され、画像の指紋または透かしとして機能する。ハッシュ値は、固定長および/または構造の英数字値であってもよく、画像ファイルを入力として受け取り、対応するハッシュ値を計算するハッシュ関数によって生成されてもよい。
【0114】
いくつかの実装形態では、比較されているオブジェクトが同一ではないが、互いの距離がしきい値内にあるという点で類似していることを決定するために、近似ハッシュマッチング技法が利用され得、対応するハッシュ間の差異が類似性の尺度になる。いくつかの実装形態では、比較されるオブジェクト(たとえば、画像)が類似していそうかどうかを決定するハッシュ関数およびしきい値を利用する知覚ハッシュ技法が利用され得る。たとえば、比較されているオブジェクトが類似する特徴を有するかどうかを決定するために、知覚ハッシュ技法が利用され得る。さらに、この技法は、操作されたオブジェクト、たとえば画像のハッシュ値は、操作されたオブジェクトを生成するために修正された元のオブジェクトのハッシュ値に似ているため、たとえば、真正ではないオブジェクトを本物として偽装しようとする敵対的な操作に対して耐性がある。
【0115】
画像から関心のある特徴を抽出し、特徴に基づいてハッシュ値を計算するために、知覚ハッシュ関数が利用され得る。知覚ハッシュ関数は、オリジナルのオブジェクトと認証されるオブジェクトのハッシュ値(知覚ハッシュ関数を使用して計算される)が、オブジェクトが知覚的に類似している(たとえば、視覚的に類似している)場合は数学的に近く、オブジェクトが知覚的に類似していない場合は離れるように設計され得る。
【0116】
この例示的な例では、テクスチャ部分445と真正のオブジェクト410との検出された類似性に基づいて、比較に基づいて、ビュー420および440に対応する仮想3Dオブジェクトに関連付けられるテクスチャが、真正ではないことが決定される。
【0117】
図4Bは、いくつかの実装形態による、3D仮想オブジェクトのビューを示している。この例示的な例では、真正のオブジェクトであることが確認された真正の画像490が表示されている。
【0118】
この例示的な例は、2Dポリゴンのセットを介して提供されるテクスチャ情報に基づいて作成された例示的な3D仮想オブジェクト(シャツ)を示している。具体的には、シャツテンプレートに基づく前胴2Dポリゴン450および右腕右側2Dポリゴン460を含む2Dポリゴンのセットが、たとえば、オンラインゲームプラットフォーム上で3D仮想オブジェクトを定義するために2Dポリゴンのセットをアップロードするユーザによって提供される。
【0119】
図4Bは、仮想アバタおよび3D仮想オブジェクトの側面図を示している。図示されるように、仮想アバタを側面から見ると、特定のポーズ(胴体に現れる2Dポリゴン450の部分が、右腕に現れる別の2Dポリゴンの部分460と結合する)におけるポリゴン450および460からのテクスチャ設計特徴の組合せにより、真正の画像490に類似した画像480の外観が得られる。
【0120】
この例示的な例では、比較に基づいて、2Dポリゴン450および460を含む受信された仮想3Dオブジェクトに関連付けられるテクスチャは、真正のオブジェクト490との検出された類似性に基づいて真正ではないと決定される。
【0121】
図5Aは、いくつかの実装形態による、仮想アバタのビューを示している。この例示的な例では、真正のオブジェクトであることが確認された真正の画像(オブジェクト)510が表示されている。
【0122】
場合によっては、ユーザは、複数の3D仮想オブジェクトに真正ではないテクスチャを分散させることで、真正ではないテクスチャの検出を回避しようとする可能性がある。これにより、それぞれがそれぞれの3D仮想オブジェクトに関連付けられる2Dポリゴンのセットが検証されるときに、真正ではないテクスチャの検出が失われる可能性がある。しかしながら、異なる3D仮想オブジェクトの画像および/またはテクスチャは、真正ではない(たとえば、不適切および/または不快な)コンテンツを表示させるために、仮想環境において一緒に使用される際に結合し得る。
【0123】
一例として、ユーザは、第1の3D仮想オブジェクト、たとえば、2Dポリゴンの第1のセットによって定義されるテクスチャを有するシャツを作成し得る。ユーザは、2Dポリゴンの第2のセットによって定義されるテクスチャを備えた第2の3D仮想オブジェクト、たとえばパンツをさらに作成し得る。場合によっては、真正ではないコンテンツを作成/表示するために、第1の3D仮想オブジェクトと第2の3D仮想オブジェクトの隣接部分が結合し得る。
【0124】
たとえば、図5Aに示されるように、ユーザは、シャツの前胴部分に関連付けられるテクスチャを指定する2Dポリゴン520を含む2Dポリゴンのセットをアップロード(提供)し得る。2Dポリゴンの第2のセットは、ユーザによって提供され得、2Dポリゴン530を含み、これは、パンツのセットの前脚部分に関連付けられるテクスチャを指定する。
【0125】
個々の3D仮想オブジェクトの各々、シャツまたはパンツのセットは、真正ではないテクスチャを含まず、たとえば、真正として分類されている以前に受信されたオブジェクト(画像)一致せず、オンラインゲームプラットフォームによって個別に検証されると、真正のテクスチャとして分類される可能性がある。しかしながら、仮想アバタにおいて一緒に着用されると、3D仮想オブジェクトの隣接領域は、真正ではなく、真正のオブジェクト510と一致する画像のビューを作成することができる。
【0126】
異なる3D仮想オブジェクトによって生成された真正ではないテクスチャの検出は、3D仮想オブジェクトに関連付けられる受信された2Dポリゴンのセットを、オンラインゲームプラットフォームに記憶されている他の3D仮想オブジェクトおよび/または画像に関連付けられる2Dポリゴンのセットと合わせて評価することによって実行される。評価では、3D仮想オブジェクトがドレープされている仮想アバタの可能性のあるポーズとアニメーションの動きが考慮される。
【0127】
この例示的な例では、比較に基づいて、2Dポリゴン520および/または530を含む受信された仮想3Dオブジェクトのうちの1つまたは複数に関連付けられるテクスチャが、ビュー550と真正のオブジェクト510を表す結合された2Dポリゴン(ポリゴン520と530を結合されたもの)の検出された類似性に基づいて真正ではないと決定される。
【0128】
いくつかの実装形態では、両方の3D仮想オブジェクトには、たとえば人間による追加の精査および/または検証のためにフラグが付けられる場合がある。いくつかの実装形態では、テクスチャが著作権のある画像として確立されていない場合、真正性は、以前に受信された3D仮想オブジェクトに割り当てられる場合がある。
【0129】
いくつかの実装形態では、テクスチャが著作権のある画像(たとえば、著作権で保護された画像)として事前に確立されている場合、その真正性は著作権のある画像のライセンス所有者に割り当てられる。
【0130】
図5Bは、いくつかの実装形態による、仮想アバタのビューを示している。
【0131】
場合によっては、3D仮想オブジェクトを他のオブジェクトと組み合わせて使用することができる。たとえば、仮想アバタ(キャラクタ)のシャツなどの3D仮想オブジェクトは、仮想環境において仮想キャラクタのジャケットなどの別の3D仮想オブジェクトと組み合わせて利用され得る。別の例として、シャツと組み合わせてスカーフが利用され得る。3D仮想オブジェクトは、様々な透明度のいずれかを有するように指定され得る。
【0132】
たとえば、図5Bでは、2Dポリゴン560は、シャツのテクスチャに関連付けられる2Dポリゴンのセットに含まれており、2Dポリゴン570は、シャツの上に着用できるジャケットに関連付けられる2Dポリゴンのセットに含まれる前胴部分の2Dポリゴンである。この例では、ジャケットは透明であるように指定されており、仮想アバタによって着用されるとジャケットの下の表面が見えるようになる。
【0133】
図5Bに示されるように、2Dポリゴン560および570に関連付けられる個々の3D仮想オブジェクト、シャツまたはパンツセットのいずれも、真正ではないテクスチャを含まず、たとえば、真正として分類される以前に受信されたどの画像とも一致せず、オンラインゲームプラットフォームによって個別に検証されると、真正のテクスチャとして分類され得る。しかしながら、仮想アバタにおいて一緒に利用(着用)されると、オーバーレイ領域により、真正ではなく、真正のオブジェクト510と一致するテクスチャ(画像)を表示することができる。
【0134】
この例示的な例では、比較に基づいて、2Dポリゴン560および/または570を含む受信された仮想3Dオブジェクトのうちの1つまたは複数に関連付けられるテクスチャが、結合された2Dポリゴン(2Dポリゴン560および570を結合する)と真正のオブジェクト510との検出された類似性に基づいて、真正ではないことが決定される。
【0135】
図6は、いくつかの実装形態による、仮想オブジェクトに関連付けられる真正ではないテクスチャを検出する例示的な方法600を示すフローチャートである。いくつかの実装形態では、方法600は、たとえば、図1を参照して説明したゲームサーバ102上で実装することができる。いくつかの実装形態では、方法600の一部またはすべては、図1に示されるような1つまたは複数のクライアントデバイス110、1つまたは複数の開発者デバイス130、あるいは1つまたは複数のサーバデバイス102、ならびに/あるいは開発者デバイス、サーバデバイス、およびクライアントデバイスの組合せにおいて実装することができる。説明される例では、実装システムは、1つまたは複数のデジタルプロセッサあるいは処理回路(「プロセッサ」)、および1つまたは複数のストレージデバイス(たとえば、データストア120または他のストレージ)を含む。いくつかの実装形態では、1つまたは複数のサーバおよび/あるいはクライアントの異なるコンポーネントは、方法600の異なるブロックまたは他の部分を実行することができる。いくつかの例では、第1のデバイスは、方法600のブロックを実行するものとして説明される。いくつかの実装形態は、第1のデバイスに結果またはデータを送信することができる1つまたは複数の他のデバイス(たとえば、他のクライアントデバイスまたはサーバデバイス)によって実行される方法600の1つまたは複数のブロックを有することができる。
【0136】
処理は610において始まり、3次元(3D)仮想オブジェクトのテクスチャに関連付けられる複数の認証されていない2次元(2D)ポリゴンが受信される。仮想3Dオブジェクトのテクスチャに関連付けられる2Dポリゴンは、1人または複数のユーザによる仮想3D環境における利用のために、ゲーム106などの仮想3D環境において提供され得る。いくつかの実装形態では、仮想3Dオブジェクトのテクスチャは、3D仮想オブジェクトの形状および/またはポーズに基づいて、特定の配置において複数の2Dポリゴンを結合することによって生成される。
【0137】
いくつかの実装形態では、複数の認証されていない2Dポリゴンは、開発者デバイス130を使用する開発者によって、ゲームサーバ102へのアップロードを介して受信され得る。
【0138】
いくつかの実装形態では、3D仮想オブジェクトは、ゲーム環境またはソーシャルネットワーク環境などの仮想環境において仮想アバタによって着用することができる、仮想アバタに関連付けられるアクセサリまたは衣料品、たとえば、シャツ、パンツ、ジャケットなどであり得る。
【0139】
いくつかの実装形態では、複数の2Dポリゴンは、3D仮想オブジェクト用のあらかじめ定義されたテンプレートに適合する四角形のセットを含み得る。1つまたは複数のあらかじめ定義されたテンプレートが生成され、オンラインゲームプラットフォームによってユーザおよび/または開発者と共有され得る。あらかじめ定義されたテンプレートは、ポリゴンのセット、たとえば四角形を定義し得、その各々が仮想キャラクタの特定の部分、たとえば、胴体の前面、左腕の左側、右腕の右側、胴体の背面などにマッピングされる。いくつかの実装形態では、テクスチャに関連付けられる2Dポリゴンのサブセットのみが受信され、受信されなかった2Dポリゴンのセットの残りはデフォルト値に設定され得る。
【0140】
いくつかの実装形態では、3D仮想オブジェクトは、開発者から受け取ったゲーム資産のセットの一部として含まれ得る。いくつかの実装形態では、3D仮想オブジェクトは、オンラインゲームプラットフォームにアップロードされ、その後、1人または複数のユーザによって使用され、1人または複数のユーザと取引され、1人または複数のユーザに現実の通貨または仮想通貨などと引き換えに販売され得る、スタンドアロン型3D仮想オブジェクトであってもよい。
【0141】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトは、仮想3Dオブジェクトおよび/または2Dポリゴンのセットによって定義されるテクスチャの記述子として機能し得るユーザ提供ラベルを含み得る。たとえば、ラベルは、オブジェクトの名前、たとえば、「クールシャツ(cool shirt)」、「バットマンのコスチューム(Batman costume)」、「サンタクロースのパンツ(Santa Claus pants)」、「クールジャケット(cool jacket)」などを示し得る。ブロック610の後にブロック620が続く場合がある。
【0142】
ブロック620において、1つまたは複数の結合されたポリゴンを取得するために、複数の2Dポリゴンのうちの2つ以上の2Dポリゴンの部分が結合される。
【0143】
いくつかの実装形態では、2つ以上の2Dポリゴンの部分の組合せは、結合される2Dポリゴンの順序付きリストに基づいている。いくつかの実装形態では、複数の順序付きリストは、仮想キャラクタと互換性のあるポーズおよび/またはアニメーションの動きのスーパーセットに基づいて決定され得る。いくつかの実装形態では、順序付きリストは、ストレージデバイスおよび/またはメモリ、たとえばデータストア120上、あるいはローカルユーザまたは開発者のデバイス上に記憶され得る。たとえば、順序付きリストは、3D仮想オブジェクトの1つまたは複数のカメラビューにおいて互いに隣接および/または重なり合う可能性が高いすべての2Dポリゴンに基づいて生成され得る。
【0144】
いくつかの実装形態では、結合された2Dポリゴンのセットを生成するために、2Dポリゴンの各々が、2Dポリゴンのセットの残りの部分と順番に結合される。いくつかの実装形態では、この組合せは、2Dポリゴンのセットの各々を、2Dポリゴンのセットの残りの部分の複数の角度変換と組み合わせることに基づいている。角度の組合せは、3D仮想オブジェクトの対応する部分、たとえば腕、脚などの可能性が高く物理的に実現可能な変形に基づいて決定され得る。
【0145】
たとえば、3D仮想オブジェクトの胴体前部に関連付けられる2Dポリゴンは、仮想環境内の仮想キャラクタ(アバタ)の可能なポーズおよび/または動きに基づいて、左腕の実装可能な(および、表示可能な)すべての角度を考慮した左腕前部に関連付けられる2Dポリゴンと組み合わせることができる。
【0146】
いくつかの実装形態では、2つ以上の2Dポリゴンの一部または全部を結合するために利用される2Dポリゴンの順序付きリストは、仮想環境において一般に観察され利用されるあらかじめ定められたポーズのセットから選択される3D仮想オブジェクトの1つまたは複数のポーズに基づいている。
【0147】
いくつかの実装形態では、考えられるポーズまたは構成において別の2Dポリゴンに隣接して表示できない2Dポリゴンは、結合から除外され得る。たとえば、3D仮想オブジェクトに関連付けられる仮想アバタの可能なビューのいずれにおいても、それぞれの2Dポリゴンの任意の部分を同時に見ることは実現不可能である可能性があるため、胴体前部に関連付けられる2Dポリゴンを胴体後部(後方)に関連付けられる2Dポリゴンと組み合わせることはできない。
【0148】
いくつかの実装形態では、順序付きリストはまた、2Dポリゴンのそれぞれの組合せにおける2Dポリゴンの対応する各セットに関連付けられる重みを含み得る。重みは、組合せにおける2Dポリゴンが、仮想環境における3D仮想オブジェクトの様々なカメラビューにおいて隣接する、または、ほぼ隣接する相対的な可能性に基づいてもよい。2Dポリゴンの異なる組合せのパラメータ化された重み付けが利用されてよく、一部のビューは他のビューとは異なる重み付けがされる。たとえば、3D環境においてユーザ(視聴者)によってより一般的に閲覧される可能性のあるビューは、それほど一般的ではない可能性のあるビューよりも重み付けされる可能性がある。
【0149】
いくつかの実装形態では、順序付きリストは、隣接するポリゴンのマトリックス、およびアバタのデフォルトおよび一般的なポーズにおいて互いにしきい値距離以内(ほぼ隣接)に出現するポリゴンに基づき得る。
【0150】
いくつかの実装形態では、3D仮想オブジェクトのテクスチャに関連付けられる2Dポリゴンのセットに含まれる2Dポリゴンは、以前に受信され、オンラインゲームプラットフォーム上のストレージデバイスおよび/またはメモリに記憶されている他の3D仮想オブジェクトのテクスチャに関連付けられる2Dポリゴンの1つまたは複数のセットからの2Dポリゴンと結合され得る。
【0151】
たとえば、シャツに関連付けられる2Dポリゴンのセットに含まれる2Dポリゴンは、同じまたは異なるユーザによって以前に受け取られたパンツのテクスチャに関連付けられる2Dポリゴンのセットに含まれる2Dポリゴンと結合され得る。前述したように、組合せは、仮想環境内のカメラビューにおいて隣接する可能性が高い2Dポリゴンに基づいて決定される。たとえば、前胴体部分の2Dポリゴンは、図5Aに関して説明したように、パンツの右脚および/または左脚に関連付けられる2Dポリゴンの前部分と結合され得る。
【0152】
いくつかの実装形態では、3D仮想オブジェクトのテクスチャに関連付けられる2Dポリゴンのセットに含まれる2Dポリゴンは、1つまたは複数の3D仮想オブジェクトの透明性特性と、それぞれの3D仮想オブジェクトからの2Dポリゴンの部分が重なる可能性に基づいて、他の3D仮想オブジェクトのテクスチャに関連付けられる1つまたは複数の2Dポリゴンのセットからの2Dポリゴンと結合され得る。たとえば、仮想アバタは、重ね着を利用する、たとえば透明性特性を有するジャケットをシャツの上に着ることもある。そのような状況において真正ではないコンテンツを正確に検出するには、シャツの前胴部分に関連付けられる2Dポリゴンがジャケットの前胴部分と結合され得る。
【0153】
いくつかの実装形態では、オンラインゲームプラットフォーム上で利用される結合された3D仮想オブジェクト(たとえば、服装)の履歴は、3D仮想オブジェクトの組合せの可能性を決定するために使用され得、真正の3D仮想オブジェクトと比較される2Dポリゴンの組合せのセットを決定する際に利用され得る。
【0154】
いくつかの実装形態では、2Dポリゴンの可能性の高いオーバーレイ配置は、事前に決定、記憶され、2Dポリゴンを結合するために利用される。いくつかの実装形態では、オーバーレイ配置は、1つまたは複数の2Dポリゴンのうちの少なくとも1つが透明度しきい値を満たす透明度を有する場合に、1つまたは複数の3D仮想オブジェクトの2Dポリゴンを組み合わせるために利用される。
【0155】
いくつかの実装形態では、3D仮想オブジェクトのテクスチャに関連付けられる2Dポリゴンの組合せは、仮想アバタのアニメーション化された動きに基づいている。いくつかの実装形態では、アニメーションシーケンスの順序付きリストが利用されて、3D仮想オブジェクトが配置される仮想環境における1つまたは複数のアニメーションに基づいて決定され得、1つまたは複数のアニメーションは、仮想環境における3D仮想オブジェクトの動きに対応する。
【0156】
それぞれの2Dポリゴンの組合せは、変換、たとえば関連付けられる仮想アバタのアニメーションに対応する3D仮想オブジェクトの移動、回転、移動などに基づいている。アニメーションが、仮想アバタの特徴を定義するために使用される基礎となるメッシュを変形する格子変形によって実装される場合、テクスチャに関連付けられる2Dポリゴンもそれに応じて変形される。いくつかの実装形態では、変形は、他の2Dポリゴンと結合する前および/または結合した後に、1つまたは複数の2Dポリゴンに適用されるあらかじめ定められた関数によって定義され得る。
【0157】
いくつかの実装形態では、2Dポリゴンの組合せのセットを決定するために、同じ開発者に関連付けられるカスタム動作および/または3D仮想オブジェクトに関連付けられるゲームが利用され得る。
【0158】
いくつかの実装形態では、2つ以上の2Dポリゴンを結合された後、結合された2Dポリゴンは、真正ではないコンテンツの検証のための好ましい関心領域をさらに定義する、修正された結合された2Dポリゴンを生成するために、たとえば切り取られるなどして修正され得る。たとえば、結合された2Dポリゴンの部分は、結合された2Dポリゴンを生成するために結合された2Dポリゴンの重なりのエッジからのそれらの部分の距離に基づいて除外され得る。たとえば、修正された2Dポリゴンは、結合されたポリゴンの中心からしきい値距離以内に位置する結合された2Dポリゴンの領域のみを含む結合された2Dポリゴンから生成され得る。
【0159】
ブロック620の後にブロック630が続く場合がある。
【0160】
ブロック630において、それぞれのハッシュ値は、1つまたは複数の結合された2Dポリゴンの各々に対して計算される。
【0161】
いくつかの実装形態では、ハッシュ値は知覚ハッシュ関数を使用して計算される。画像ファイル、アニメーションなどのデジタルメディアコンテンツの知覚的類似性の決定を可能にするために、知覚ハッシュ関数が利用され得る。テクスチャから関心のある特徴を抽出し、その特徴に基づいてハッシュ値を計算するために、知覚ハッシュ関数が利用され得る。
【0162】
知覚ハッシュ関数は、オリジナルのオブジェクトおよび認証されるオブジェクトのハッシュ値(知覚ハッシュ関数を使用して計算される)が、オブジェクトが知覚的に類似している(たとえば、視覚的に類似している)場合は近く、オブジェクトが知覚的に異なる場合は遠くになるように設計され得る。
【0163】
ブロック630の後にブロック640が続く場合がある。
【0164】
ブロック640において、結合された2Dポリゴンのいずれかのハッシュ値が真正のオブジェクトのハッシュ値と一致するかどうかを決定するために、結合された2Dポリゴンのハッシュ値が真正のオブジェクトのハッシュ値と比較される。
【0165】
たとえば、2Dポリゴンのそれぞれのハッシュ値のうちの少なくとも1つのハッシュ値と、真正のオブジェクトに関連付けられる少なくとも1つの参照2Dポリゴンのハッシュ値との間に一致があるかどうかが決定され得る。
【0166】
いくつかの実装形態では、受信された仮想3Dオブジェクトの結合された2Dポリゴンの各々のハッシュ値が、オブジェクト、たとえばオンラインゲームプラットフォームによって記憶される画像、テクスチャなどの2Dポリゴンのハッシュ値と比較される。前に説明したように、いくつかの実装形態では、異なるビューのパラメータ化された重み付けが利用され得、いくつかのビューは他のビューとは異なる重み付けがされる。たとえば、3D環境内でユーザ(ビューア)によってより一般的に見られる可能性のあるビューは、あまり一般的ではない可能性のあるビューよりも重み付けされ得る。
【0167】
いくつかの実装形態では、それぞれのハッシュ値の各々と、真正のオブジェクトに関連付けられる参照2Dポリゴンのハッシュ値との間の一致に関連付けられる一致スコアが計算され得る。2つ以上の2Dポリゴンの結合された部分に関連付けられる1つまたは複数の重みが適用されてもよく、重みは、2Dポリゴンの結合によって表される仮想アバタの特定の構成の発生の可能性に基づく。一致スコアがあらかじめ定められたしきい値を満たす場合、一致があると決定され得る。
【0168】
いくつかの実装形態では、一致スコアは、結合された2Dポリゴンと参照2Dポリゴンとの一致の類似性に基づき得る。たとえば、特定の位置、たとえば左腕の外側に対応する2Dポリゴンと、やはり同じ位置に対応する参照2Dポリゴンとの間で類似性が検出された場合、より高い一致スコアが割り当てられる可能性がある。
【0169】
いくつかの実装形態では、結合された2Dポリゴンのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの2Dポリゴンの対応するハッシュ値との間の距離値が計算され得る。
【0170】
いくつかの実装形態では、仮想3Dオブジェクトに関連付けられる受信されたテクスチャが真正の仮想3Dオブジェクトのテクスチャに類似しているかどうかを決定するために、距離値があらかじめ定められた距離しきい値と比較される。いくつかの実装形態では、距離しきい値は、受信された仮想3Dオブジェクトのカテゴリタイプに基づく値に設定され得る。いくつかの実装形態では、距離しきい値は、以前に利用された距離しきい値、およびそれらの距離しきい値に基づいて真正または真正ではないとして以前に分類されたテクスチャに基づいて(たとえば、ゲームサーバ102によって)調整され得る。
【0171】
いくつかの実装形態では、あらかじめ定められた距離しきい値は構成可能な値であってもよい。いくつかの実装形態では、あらかじめ定められた距離しきい値は、受信された仮想3Dオブジェクトのカテゴリタイプに基づく値に設定され得る。
【0172】
たとえば、より頻繁に偽造されるか、ゲームプラットフォーム内でより敏感な特定のオブジェクトカテゴリは、偽造される頻度が低いカテゴリに属する受信された仮想3Dオブジェクトと比較した場合、類似度が低いほど、受信されたカテゴリの仮想3Dオブジェクトが真正ではないというフラグが立てられる可能性があるしきい値を利用し得る。たとえば、シャツおよびズボンは、簡単に、頻繁に、そして非常に迅速に偽造される仮想3Dオブジェクトの例である。コンテンツの作成とアップロードにかかる作業がより少ない仮想3Dオブジェクトは、コピーされる傾向がより高くなる。
【0173】
いくつかの実装形態では、受信されたオブジェクトの分類および/またはフラグ付けは、受信されたオブジェクトに類似していると決定された真正のオブジェクトのタイプまたはカテゴリに基づき得る。たとえば、ロゴおよび/または他の著作権で保護された素材との類似性は、たとえ単一のポーズによって受信されたオブジェクトのビューが真正のオブジェクトと一致する場合でも、完全に許容されない場合がある。別の例として、それぞれのハッシュ値の差によって決定されるほぼ重複したオブジェクトは、オブジェクトのビューの少なくともしきい値数(たとえば、パーセンテージ)が真正のオブジェクトと一致する場合、許容されない可能性がある。
【0174】
ブロック640において、結合された2Dポリゴンのハッシュ値が真正のオブジェクトのハッシュ値と一致すると判定された場合、ブロック640の後にブロック650が続く。
【0175】
ブロック650において、受信された仮想3Dオブジェクトは、真正ではないテクスチャとして分類される。いくつかの実装形態では、真正ではない(偽造品)と判定された3D仮想オブジェクトは、仮想プラットフォーム(オンラインゲームプラットフォーム)のリストから除外され得る。いくつかの実装形態では、3D仮想オブジェクトが真正ではない(偽造品)してフラグが立てられたことを示すメッセージが、アップローダおよび/または仮想環境の管理者に提供され得る。いくつかの実装形態では、真正ではないオブジェクトは、さらなるレビューのため(たとえば、ゲームプラットフォームに関連付けられる管理者による手動レビューのため)にフラグが立てられる場合がある。
【0176】
ブロック640において、結合された2Dポリゴンのハッシュ値が真正のオブジェクトのハッシュ値と一致しないと決定された場合、ブロック640の後にブロック660が続く。
【0177】
ブロック660において、受信された仮想3Dオブジェクトは真正のテクスチャとして分類される。いくつかの実装形態では、本物のオブジェクトとしての分類は、仮想3D仮想オブジェクトを分類するために、シグナルとして使用され、他のシグナル(たとえば、3D仮想オブジェクトの手動レビュー、3D仮想オブジェクトをアップロードする開発者に関連付けられる開発者の評価など)と組み合わせられる。
【0178】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトを本物の3D仮想オブジェクトとして分類した後、認証されていない仮想3Dオブジェクトの複数の2Dポリゴンは、ストレージデバイスおよび/またはメモリに(たとえば、データストア120に)に記憶され、その後受信される可能性のある他の仮想3Dオブジェクトを認証するために利用され得る。記憶された真正の3D仮想オブジェクトは、仮想環境において使用できるようにすることができる。仮想環境における真正のテクスチャおよび3D仮想オブジェクトを含むユーザインターフェースが提供され得る。さらに、仮想環境が、ユーザが本物のオブジェクトを購入すること(たとえば、仮想通貨の支払いによって)、またはサブスクリプションを介して本物のオブジェクトへのアクセスを取得することを可能にする場合、真正ではない3D仮想オブジェクト(ブロック660において分類された後の認証されていない3D仮想オブジェクト)は、ユーザにとって使用できるようになる。
【0179】
ブロック610~660は、上記とは異なる順序で実行(または、反復)することができ、および/あるいは1つまたは複数のステップを省略することができる。たとえば、ブロック620は、たとえば、選択されたシーケンスに基づいて結合された2Dポリゴンのサブセットを取得するために、複数回実行され得る。たとえば、カメラビューに現れる可能性がより高い結合された2Dポリゴンのセットが第1の段階において生成されて、ブロック630~660が実行されてよく、そのプロセスが、可能性がより低い結合された2Dポリゴンを用いて次の段階において繰り返され得る。
【0180】
いくつかの実装形態では、ゲームプラットフォーム上で受信された仮想3Dオブジェクトは、真正ではないオブジェクトを検出して、そのようなオブジェクトへのユーザのアクセスを軽減するために、あらかじめ定められた頻度(たとえば、毎日、隔日、毎時など)でスキャンされ得る。いくつかの実装形態では、コピーされる可能性が高い受信された仮想3Dオブジェクトは、コピーされる可能性が低い仮想3Dオブジェクトよりも高い頻度でスキャンされ得る。いくつかの実装形態では、方法600は、アップロードを介して新しいオブジェクトが受信されるたびに実行され得る。いくつかの実装形態では、方法600は、記憶されたオブジェクトが修正されたときに実行され得る。
【0181】
いくつかの実装形態では、しきい値距離を更新するために、プラットフォーム上で遭遇する真正ではないオブジェクトに関するユーザフィードバックが利用され得、方法600は、1つまたは複数の以前に認証された3D仮想オブジェクトに対して実行され得る。
【0182】
いくつかの実装形態では、1つまたは複数の検出パラメータ、たとえば、隣接するポリゴンのマトリックス、しきい値距離、順序付きリストなどが、真正ではない3D仮想オブジェクトの検出に基づいて更新(調整)され得る。
【0183】
いくつかの実装形態では、本物のオブジェクトとしての分類は、仮想3Dオブジェクトを分類するために、シグナルとして使用され、他のシグナル(たとえば、3D仮想オブジェクトの手動レビュー、3Dオブジェクトをアップロードする開発者に関連付けられる開発者の評価など)と組み合わせられてよい。
【0184】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトを本物のオブジェクトとして分類した後、受信された2Dポリゴンおよび結合された2Dポリゴンのハッシュ値は(たとえば、データストア120に)記憶され、その後受信される可能性のある他の仮想3Dオブジェクトを認証するために利用され得る。
【0185】
いくつかの実装形態では、ブロック620において1つまたは複数の結合されたポリゴンを取得する前に、受信された2Dポリゴンの各々についてハッシュ値が計算され得る。受信された認証されていない3D仮想オブジェクトのテクスチャは、3D仮想オブジェクトのテクスチャに関連付けられる複数の2次元(2D)ポリゴンのうちの少なくとも1つのハッシュ値が、真正のオブジェクトに関連付けられる参照2Dポリゴンのハッシュ値と一致する場合、真正ではないテクスチャとして分類され得る。
【0186】
図7は、本明細書で説明される1つまたは複数の機能を実装するために使用され得る例示的なコンピューティングデバイス700のブロック図である。一例では、コンピュータデバイス(たとえば、図1の102および/または110)を実装することと、本明細書に記載の適切な方法実装形態を実行することとを行うために、デバイス700が使用され得る。コンピューティングデバイス700は、任意の適切なコンピュータシステム、サーバ、または他の電子またはハードウェアデバイスであり得る。たとえば、コンピューティングデバイス700は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、または電子デバイス(ポータブルデバイス、モバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、携帯情報端末(PDA)、メディアプレイヤ、ゲームデバイス、ウェアラブルデバイスなど)であってよい。いくつかの実装形態では、デバイス700は、プロセッサ702、メモリ704、入力/出力(I/O)インターフェース706、およびオーディオ/ビデオ入力/出力デバイス714を含む。
【0187】
プロセッサ702は、プログラムコードを遂行し、デバイス700の基本的な動作を制御するための1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号、または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズム、あるいはコンポーネントを含む。プロセッサは、汎用中央処理装置(CPU)、複数の処理装置、機能を達成するための専用回路、または他のシステムを備えたシステムを含み得る。処理は特定の地理的な場所に限定される必要はなく、時間的な制限もない。たとえば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などにおいてその機能を実行し得る。処理の一部は、異なる時間に、異なる場所で、異なる(または、同じ)処理システムによって実行され得る。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【0188】
メモリ704は、通常、プロセッサ702によるアクセスのためにデバイス700において提供され、たとえば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去可能読取り専用メモリ(EEPROM)、フラッシュメモリなどであり得、プロセッサによって遂行するための命令を記憶するために適しており、プロセッサ702とは別に配置され、および/またはプロセッサ702と統合されている、任意の適切なプロセッサ可読ストレージ媒体であり得る。メモリ704は、オペレーティングシステム708、1つまたは複数のアプリケーション710、たとえば、オーディオ空間化アプリケーションおよびアプリケーションデータ712を含む、プロセッサ702によってサーバデバイス700上で動作するソフトウェアを記憶することができる。いくつかの実装形態では、アプリケーション710は、プロセッサ702が本明細書に記載の機能を実行する(または、その機能を制御する)ことを可能にする命令、たとえば、図6に関して説明される方法のいくつかまたはすべてを含むことができる。
【0189】
たとえば、アプリケーション710は、オーディオ空間化モジュール712を含むことができ、これは、本明細書で説明されるように、オンラインゲームサーバ(たとえば、102)内にオーディオ空間化を提供することができる。あるいは、メモリ704内のソフトウェアの要素を、任意の他の適切なストレージ場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ704(および/または他の接続されたストレージデバイス)は、本明細書で説明される機能において使用される命令およびデータを記憶することができる。メモリ704および他のタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「ストレージデバイス」と見なすことができる。
【0190】
I/Oインターフェース706は、サーバデバイス700を他のシステムおよびデバイスとインターフェースすることを可能にする機能を提供することができる。たとえば、ネットワーク通信デバイス、ストレージデバイス(たとえば、メモリおよび/またはデータストア120)、および入力/出力デバイスは、インターフェース706を介して通信することができる。いくつかの実装形態では、I/Oインターフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナなど)および/または出力デバイス(ディスプレイデバイス、スピーカデバイス、プリンタ、モータなど)を含むインターフェースデバイスに接続することができる。
【0191】
オーディオ/ビデオ入力/出力デバイス714は、ユーザ入力を受信するために使用することができるユーザ入力デバイス(たとえば、マウスなど)、ディスプレイデバイス(たとえば、画面、モニタなど)、および/またはグラフィカルおよび/またはビジュアル出力を提供するために使用できる、入力デバイスとディスプレイデバイスの組合せを含むことができる。
【0192】
説明を容易にするために、図7は、プロセッサ702、メモリ704、I/Oインターフェース706、およびオペレーティングシステム708およびゲームアプリケーション710のソフトウェアブロックのそれぞれについて1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサあるいは処理回路、オペレーティングシステム、メモリ、I/Oインターフェース、アプリケーション、および/またはソフトウェアエンジンを表す場合がある。他の実装形態では、デバイス700は、図示されるコンポーネントのすべてを有さない場合があり、および/または本明細書に示されるものの代わりに、またはそれに加えて、他のタイプの要素を含む他の要素を有する場合がある。オンラインゲームサーバ102は、本明細書のいくつかの実装形態において説明されるような動作を実行するものとして説明されるが、オンラインゲームサーバ102または同様のシステムの任意の適切なコンポーネントまたはコンポーネントの組合せ、あるいはそのようなシステムに関連付けられる任意の適切なプロセッサまたは複数のプロセッサは、説明された動作を実行し得る。
【0193】
ユーザデバイスはまた、本明細書に記載の機能を実装および/または使用することができる。例示的なユーザデバイスは、デバイス700と同様の何らかのコンポーネント、たとえば、プロセッサ702、メモリ704、およびI/Oインターフェース706を含むコンピュータデバイスであり得る。クライアントデバイスに適したオペレーティングシステム、ソフトウェア、およびアプリケーションは、メモリにおいて提供され、プロセッサによって使用することができる。クライアントデバイスのI/Oインターフェースは、ネットワーク通信デバイス、ならびに入力デバイスおよび出力デバイス、たとえば、サウンドをキャプチャするためのマイクロフォン、画像またはビデオをキャプチャするためのカメラ、ユーザ入力をキャプチャするためのマウス、ユーザのジェスチャーを認識するためのジェスチャーデバイス、ユーザ入力を検出するためのタッチスクリーン、サウンドを出力するためのオーディオスピーカデバイス、画像またはビデオを出力するためのディスプレイデバイス、あるいは他の出力デバイスに接続することができる。オーディオ/ビデオ入力/出力デバイス714内のディスプレイデバイスは、本明細書で説明されるように前処理および後処理の画像を表示するために、たとえば、デバイス700に接続され(または、含まれ)てよく、そのようなディスプレイデバイスは、任意の適切なディスプレイデバイス、たとえば、LCD、LED、またはプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、プロジェクタ、または他の視覚的ディスプレイデバイスを含むことができる。いくつかの実装形態は、たとえば、テキストを話す音声出力または合成などのオーディオ出力デバイスを提供することができる。
【0194】
本明細書に記載の1つまたは複数の方法(たとえば、方法600)は、コンピュータ上で遂行することができるコンピュータプログラム命令またはコードによって実装することができる。たとえば、コードは、1つまたは複数のデジタルプロセッサ(たとえば、マイクロプロセッサまたは他の処理回路)によって実装することができ、非一時的コンピュータ可読媒体(たとえば、ストレージ媒体)、たとえば、磁気、光学、電磁、あるいは半導体またはソリッドステートメモリを含む半導体ストレージ媒体、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、リジッドマグネティックディスク、光ディスク、ソリッドステートメモリドライブなどを含むコンピュータプログラム製品に記憶することができる。プログラム命令はまた、たとえば、サーバ(たとえば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SaaS)の形で、電子信号に含まれ、電子信号として提供され得る。あるいは、1つまたは複数の方法をハードウェア(論理ゲートなど)において実装することも、ハードウェアとソフトウェアの組合せにおいて実装することもできる。ハードウェアの例は、プログラマブルプロセッサ(たとえば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)などがある。1つまたは複数の方法は、システムで実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと組み合わせて実行されているアプリケーションまたはソフトウェアとして実行することができる。
【0195】
本明細書で説明する1つまたは複数の方法は、任意のタイプのコンピューティングデバイスにおいて実行できるスタンドアロンプログラム、ウェブブラウザにおいて実行されるプログラム、モバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、ジュエリ、ヘッドウェア、ゴーグル、グラスなど)、ラップトップコンピュータなど)において実行されるモバイルアプリケーション(「アプリ」)で実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、たとえば、モバイルコンピューティングデバイス(クライアントデバイスとして)は、ユーザ入力データをサーバデバイスに送信し、サーバから出力用(たとえば、表示用)の最終出力データを受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で分割することができる。
【0196】
説明は、特定の実装形態に関して説明されてきたが、これらの特定の実装形態は単なる例示であり、限定的ではない。例に示されている概念は、他の例および実装形態に適用され得る。
【0197】
本開示で説明される機能ブロック、動作、機能、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組合せに統合されてもよく、分割されてもよい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技法が使用され得る。異なるプログラミング技法、たとえば、手続き型またはオブジェクト指向が採用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサにおいて遂行され得る。ステップ、操作、または計算は特定の順序で提示される場合があるが、異なる特定の実装形態において順序が変更され得る。いくつかの実装形態では、本明細書においてシーケンシャルとして示されている複数のステップまたは動作が同時に実行されてもよい。
【符号の説明】
【0198】
100 システムアーキテクチャ
102 ゲームサーバ
102 オンラインゲームサーバ
104 ゲームエンジン
106 ゲーム
108 グラフィックエンジン
110 クライアントデバイス
110a、110b、110n クライアントデバイス
112 ゲームアプリケーション
114 入力/出力(I/O)インターフェース
120 データストア
122 ネットワーク
130 開発者デバイス
130a、130n 開発者デバイス
132 ゲームアプリケーション
134 I/Oインターフェース
200 テンプレート
202 上部(上端)部分
204 下部(下端)部分
206 前部分
208 右側部分
210 左側部分
212 後方(後部)部分
220 テンプレート
222 左側部分
224 後方(後部)部分
226 右側部分
228 上部分
230 下部(下端)部分
232 前部分
240 テンプレート
242 左側部分
244 後方(後部)部分
246 右側部分
248 上部分
250 下部(下端)部分
252 前部分
300 テンプレート
310 胴体テンプレート2Dポリゴン
315 デザイン
315 円形
330 テンプレート
335 右腕前部2Dポリゴン
340 テンプレート
345 左腕前部2Dポリゴン
350 シャツ
355 シャツの腕
360 シャツの腕
360 左腕部分
365 シャツ
365 シャツの前部
410 真正オブジェクト(画像)
420 3D仮想オブジェクト
420 立位ポーズ
420 ビュー
425 テクスチャ部分
430 テクスチャ部分
440 ポーズ
440 ビュー
445 テクスチャ部分
450 前胴2Dポリゴン
460 右腕右側2Dポリゴン
480 画像
490 真正の画像
510 真正の画像(オブジェクト)
520 2Dポリゴン
530 2Dポリゴン
560 2Dポリゴン
570 2Dポリゴン
600 方法
700 コンピューティングデバイス
700 サーバデバイス
702 プロセッサ
704 メモリ
706 入力/出力(I/O)インターフェース
708 オペレーティングシステム
710 アプリケーション
710 ゲームアプリケーション
712 オーディオ空間化アプリケーションおよびアプリケーションデータ
712 オーディオ空間化モジュール
714 オーディオ/ビデオ入力/出力デバイス
図1
図2
図3
図4A
図4B
図5A
図5B
図6
図7