(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-10
(45)【発行日】2023-10-18
(54)【発明の名称】偽造された仮想オブジェクトの検出
(51)【国際特許分類】
G06F 21/64 20130101AFI20231011BHJP
G06T 19/00 20110101ALI20231011BHJP
G06T 7/00 20170101ALI20231011BHJP
A63F 13/73 20140101ALI20231011BHJP
【FI】
G06F21/64
G06T19/00 A
G06T7/00 300F
A63F13/73
(21)【出願番号】P 2022529889
(86)(22)【出願日】2019-12-20
(86)【国際出願番号】 US2019067929
(87)【国際公開番号】W WO2021112888
(87)【国際公開日】2021-06-10
【審査請求日】2022-07-22
(32)【優先日】2019-12-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520317055
【氏名又は名称】ロブロックス・コーポレーション
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ロビン・イー・メイズ
(72)【発明者】
【氏名】コートランド・アール・コールドウェル
(72)【発明者】
【氏名】レベッカ・エル・ハーンドン
(72)【発明者】
【氏名】ハリハラン・ナタラジャン
【審査官】中里 裕正
(56)【参考文献】
【文献】米国特許出願公開第2013/0034337(US,A1)
【文献】LEE, S.-H. and KWON, K.-R.,Robust 3D mesh model hashing based on feature object,Digital Signal Processing,Elsevier Inc.,2012年05月07日,No.22,pp.744-759
【文献】LIANG, Y., HE, F. and LI, H.,An asymmetric and optimized encryption method to protect the confidentiality of 3D mesh model,Advanced Engineering Informatics,Elsevier Inc.,2019年07月13日,No.42 100963,pp.1-13
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/64
G06T 19/00
G06T 7/00
A63F 13/73
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
偽造された仮想3次元(3D)オブジェクトを検出するためのコンピュータ実装方法であって、
認証されていない仮想3Dオブジェクトを受信するステップと、
前記認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定するステップであって、前記複数の2Dビューのうちの各ビューが、それぞれの視点からキャプチャされる、ステップと、
前記複数の2Dビューの各2Dビューのハッシュ値を計算するステップと、
前記認証されていない仮想3Dオブジェクトの複数の2Dビューのうちの少なくとも2つの2Dビューのそれぞれのハッシュ値が、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値と一致するかどうかを決定するステップと、
前記それぞれのハッシュ値が一致すると決定された場合、前記認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類するステップと
を備える、コンピュータ実装方法。
【請求項2】
前記認証されていない仮想3Dオブジェクトの前記複数の2Dビューを決定するステップが、あらかじめ定められた照明条件下で前記複数の2Dビューを決定するステップを備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記ハッシュ値が知覚ハッシュ関数を使用して計算される、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記それぞれのハッシュ値が一致するかどうかを決定する前記ステップが、
前記複数の2Dビューのうちの少なくとも2つの2Dビューの前記それぞれのハッシュ値と、前記真正の仮想3Dオブジェクトの対応する2Dビューの前記ハッシュ値との間の距離値を計算するステップと、
前記距離値の少なくともしきい値数がしきい値距離値を満たすという決定に基づいて、前記それぞれのハッシュ値が一致することを決定するステップと
を備える、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記認証されていない仮想3Dオブジェクトを受信するステップが、前記認証されていない仮想3Dオブジェクトの3Dメッシュを受信するステップを備える、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記3Dメッシュがテクスチャ情報を備える、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記認証されていない仮想3Dオブジェクトのカテゴリに基づいて、前記少なくとも2つの2Dビューが選択される、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記視点が、前記仮想3Dオブジェクトのユーザに見える部分に基づいて決定されることをさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記仮想3Dオブジェクトが仮想アバタによって着用され、前記ユーザに見える部分が前記仮想アバタのポーズによって異なる、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記認証されていない仮想3Dオブジェクトを前記偽造された3Dオブジェクトとして分類するステップの後、仮想プラットフォームのリストから前記偽造された3Dオブジェクトを除外するステップをさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記決定を複数回実行するステップをさらに備え、前記決定が、異なる真正の仮想3Dオブジェクトを使用して前記複数回の各々において実行される、請求項1に記載のコンピュータ実装方法。
【請求項12】
前記それぞれのハッシュ値が一致しないと決定された場合、前記認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類するステップをさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記認証されていない仮想3Dオブジェクトを前記本物の3Dオブジェクトとして分類するステップの後、前記認証されていない仮想3Dオブジェクトの前記複数の2Dビューを記憶するステップをさらに備える、請求項12に記載のコンピュータ実装方法。
【請求項14】
偽造された仮想3次元(3D)オブジェクトを検出するためのコンピュータ実装方法であって、
認証されていない仮想3Dオブジェクトを受信するステップと、
前記認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定するステップであって、前記複数の2Dビューのうちの各ビューが、それぞれの視点からキャプチャされる、ステップと、
前記複数の2Dビューの各2Dビューのハッシュ値を計算するステップと、
複数の距離値を決定するステップであって、各距離値が、前記複数の2Dビューのうちの2Dビューのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値との間の距離を示す、ステップと、
前記複数の距離値に基づいて総距離値を決定するステップと、
前記総距離値があらかじめ定められたしきい値距離値を満たしている場合、前記認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類するステップと
を備える、コンピュータ実装方法。
【請求項15】
前記認証されていない仮想3Dオブジェクトのオブジェクトタイプと前記真正の仮想3Dオブジェクトの前記オブジェクトタイプが同じである、請求項14に記載のコンピュータ実装方法。
【請求項16】
前記複数の2Dビューが、前記認証されていない仮想3Dオブジェクトの前記オブジェクトタイプに少なくとも部分的に基づいて選択される、請求項15に記載のコンピュータ実装方法。
【請求項17】
前記認証されていない仮想3Dオブジェクトの前記複数の2Dビューを決定するステップが、あらかじめ定められた照明条件下で前記複数の2Dビューを決定するステップを備える、請求項14に記載のコンピュータ実装方法。
【請求項18】
前記決定を複数回実行するステップをさらに備え、前記決定が、異なる真正の仮想3Dオブジェクトを使用して前記複数回の各々において実行される、請求項14に記載のコンピュータ実装方法。
【請求項19】
前記総距離値があらかじめ定められたしきい値距離値を満たさない場合、前記認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類するステップをさらに備える、請求項14に記載のコンピュータ実装方法。
【請求項20】
処理デバイスによる遂行に応答して、前記処理デバイスに、
認証されていない仮想3Dオブジェクトを受信することと、
前記認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定することであって、前記複数の2Dビューのうちの各ビューが、それぞれの視点からキャプチャされる、決定することと、
前記複数の2Dビューの各2Dビューのハッシュ値を計算することと、
複数の距離値を決定することであって、各距離値が、前記複数の2Dビューのうちの2Dビューのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値との間の距離を示す、決定することと、
前記複数の距離値に基づいて総距離値を決定することと、
前記総距離値があらかじめ定められたしきい値距離値を満たしている場合、前記認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類することと
を備える動作を実行させる命令を備える、非一時的コンピュータ可読媒体。
【請求項21】
前記認証されていない仮想3Dオブジェクトの前記複数の2Dビューを決定することが、あらかじめ定められた照明条件下で前記複数の2Dビューを決定することを備える、請求項20に記載の非一時的コンピュータ可読媒体。
【請求項22】
前記ハッシュ値が知覚ハッシュ関数を使用して計算される、請求項20に記載の非一時的コンピュータ可読媒体。
【請求項23】
前記複数のビューが、前記認証されていない仮想3Dオブジェクトのオブジェクトタイプに少なくとも部分的に基づいて選択される、請求項20に記載の非一時的コンピュータ可読媒体。
【請求項24】
前記動作が、前記総距離値が前記あらかじめ定められたしきい値距離値を満たさない場合、前記認証されていない仮想3Dオブジェクトを、本物の3Dオブジェクトとして分類することをさらに含む、請求項20に記載の非一時的コンピュータ可読媒体。
【請求項25】
命令が記憶されたメモリと、
前記メモリに結合された処理デバイスであって、前記メモリにアクセスして前記命令を遂行するように構成された、処理デバイスとを備え、前記命令が、前記処理デバイスに、
認証されていない仮想3Dオブジェクトを受信することと、
前記認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定することであって、前記複数の2Dビューのうちの各2Dビューが、それぞれの視点からキャプチャされる、決定することと、
前記複数の2Dビューの各2Dビューのハッシュ値を計算することと、
前記認証されていない仮想3Dオブジェクトの前記複数の2Dビューのうちの少なくとも2つの2Dビューの前記それぞれのハッシュ値が、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値と一致するかどうかを決定することと、
前記それぞれのハッシュ値が一致すると決定された場合、前記認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類することと
を含む動作を実行させる、システム。
【請求項26】
前記ハッシュ値が知覚ハッシュ関数を使用して計算される、請求項25に記載のシステム。
【請求項27】
前記複数のビューが、前記認証されていない仮想3Dオブジェクトのオブジェクトタイプに少なくとも部分的に基づいて選択される、請求項25に記載のシステム。
【請求項28】
前記動作が、前記決定を複数回実行することをさらに備え、前記決定が、異なる真正の仮想3Dオブジェクトを使用して前記複数回の各々において実行される、請求項25に記載のシステム。
【請求項29】
前記動作が、前記それぞれのハッシュ値が一致しないと決定された場合、前記認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類することをさらに備える、請求項25に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、一般に、コンピュータベースのゲームに関し、より詳細には、偽造された仮想オブジェクトを検出するための方法、システム、およびコンピュータ可読媒体に関する。
【背景技術】
【0002】
いくつかのオンラインプラットフォーム(たとえば、ゲームプラットフォーム、メディア交換プラットフォームなど)では、ユーザが相互に接続し、相互に相互作用し(たとえば、ゲーム内で)、ゲームを作成し、インターネットを介して相互に情報を共有することができる。オンラインゲームプラットフォームのユーザは、マルチプレイヤゲーム環境または仮想環境(たとえば、3次元環境など)に参加したり、カスタムゲーム環境をデザインしたり、キャラクタおよびアバタをデザインしたり、アバタを装飾したり、他のユーザと仮想アイテム/オブジェクトを交換したり、オーディオまたはテキストメッセージングを使用して他のユーザと通信したりし得る。メタバース環境またはマルチバース環境などの環境では、参加するユーザが、自分の作成したオブジェクトを他のユーザと共有、販売、または交換することもできる。
【0003】
偽造されたオブジェクトがゲームプラットフォームに登場するのを防ぐために、本物の仮想オブジェクトと比較することによって、偽造された仮想オブジェクトを検出するための方法が必要になる場合がある。
【0004】
上記に照らして、いくつかの実装形態が考案された。
【発明の概要】
【課題を解決するための手段】
【0005】
一態様によれば、偽造された仮想3次元(3D)オブジェクトを検出するために、コンピュータ実装方法が提供される。本方法は、認証されていない仮想3Dオブジェクトを受信するステップと、認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定するステップと、複数の2Dビューの各2Dビューのハッシュ値を計算するステップと、複数の2Dビューのうちの少なくとも2つのそれぞれのハッシュ値が、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値と一致するかどうかを決定するステップと、それぞれのハッシュ値が一致すると決定された場合、認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類するステップとを含む。
【0006】
いくつかの実装形態では、複数の2Dビューは、少なくとも2つの2Dビューを含み、複数の2Dビューのうちの各ビューは、それぞれの視点からキャプチャされる。
【0007】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトの複数の2Dビューを決定するステップは、あらかじめ定められた照明条件下で複数の2Dビューを決定するステップを含む。いくつかの実装形態では、ハッシュ値は知覚ハッシュ関数を使用して計算される。
【0008】
いくつかの実装形態では、それぞれのハッシュ値が一致するかどうかを決定するステップは、複数の2Dビューのうちの少なくとも2つの2Dビューのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値との間の距離値を計算するステップと、距離値の少なくともしきい値数がしきい値距離値を満たすという決定に基づいて、それぞれのハッシュ値が一致することを決定するステップとを含む。
【0009】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトを受信するステップは、認証されていない仮想3Dオブジェクトの3Dメッシュを受信するステップを含む。いくつかの実装形態では、3Dメッシュはテクスチャ情報を含む。
【0010】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトのカテゴリに基づいて、少なくとも2つの2Dビューが選択される。いくつかの実装形態では、視点は、仮想3Dオブジェクトのユーザに見える部分に基づいて決定される。いくつかの実装形態では、仮想3Dオブジェクトは仮想アバタによって着用され、ユーザに見える部分は仮想アバタのポーズによって異なる。
【0011】
いくつかの実装形態では、本方法は、認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類するステップの後、仮想プラットフォームのリストから偽造された3Dオブジェクトを除外するステップをさらに含む。いくつかの実装形態では、本方法は、決定を複数回実行するステップをさらに含む。いくつかの実装形態では、決定は、異なる真正の仮想3Dオブジェクトを使用して複数回の各々において実行される。
【0012】
いくつかの実装形態では、本方法は、それぞれのハッシュ値が一致しないと決定された場合、認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類するステップをさらに含む。いくつかの実装形態では、本方法は、認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類するステップの後、認証されていない仮想3Dオブジェクトの複数の2Dビューを記憶するステップをさらに含む。
【0013】
別の態様によれば、偽造された仮想3次元(3D)オブジェクトを検出するために、コンピュータ実装方法が提供される。本方法は、認証されていない仮想3Dオブジェクトを受信するステップと、認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定するステップと、複数の2Dビューの各2Dビューのハッシュ値を計算するステップと、複数の距離値を決定するステップと、複数の距離値に基づいて総距離値を決定するステップと、総距離値があらかじめ定められたしきい値距離値を満たしている場合、認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類するステップとを含む。
【0014】
いくつかの実装形態では、各距離値は、複数の2Dビューのうちの2Dビューのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値との間の距離を示す。
【0015】
いくつかの実装形態では、複数の2Dビューのうちの各ビューは、それぞれの視点からキャプチャされる。
【0016】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトのオブジェクトタイプと真正の仮想3Dオブジェクトのオブジェクトタイプは同じである。
【0017】
いくつかの実装形態では、複数の2Dビューは、認証されていない仮想3Dオブジェクトのオブジェクトタイプに少なくとも部分的に基づいて選択される。
【0018】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトの複数の2Dビューを決定するステップは、あらかじめ定められた照明条件下で複数の2Dビューを決定するステップを含む。
【0019】
いくつかの実装形態では、本方法は、決定を複数回実行するステップをさらに含み、決定は、異なる真正の仮想3Dオブジェクトを使用して複数回の各々において実行される。
【0020】
いくつかの実装形態では、本方法は、総距離値があらかじめ定められたしきい値距離値を満たさない場合、認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類するステップをさらに含む。
【0021】
別の態様によれば、非一時的コンピュータ可読媒体は、処理デバイスによる遂行に応答して、処理デバイスに、認証されていない仮想3Dオブジェクトを受信することと、認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定することと、複数の2Dビューの各2Dビューのハッシュ値を計算することと、複数の距離値を決定することと、複数の距離値に基づいて総距離値を決定することと、総距離値があらかじめ定められたしきい値距離値を満たしている場合、認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類することとを含む動作を実行させる命令を有する。
【0022】
いくつかの実装形態では、各距離値は、複数の2Dビューのうちの2Dビューのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値との間の距離を示す。いくつかの実装形態では、複数の2Dビューのうちの各2Dビューは、それぞれの視点からキャプチャされる。
【0023】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトの複数の2Dビューを決定することは、あらかじめ定められた照明条件下で複数の2Dビューを決定することを含む。いくつかの実装形態では、ハッシュ値は知覚ハッシュ関数を使用して計算される。
【0024】
いくつかの実装形態では、複数のビューは、認証されていない仮想3Dオブジェクトのオブジェクトタイプに少なくとも部分的に基づいて選択される。
【0025】
いくつかの実装形態では、本動作は、総距離値があらかじめ定められたしきい値距離値を満たさない場合、認証されていない仮想3Dオブジェクトを、本物の3Dオブジェクトとして分類することをさらに含む。
【0026】
さらに別の態様によれば、システムは、命令が記憶されたメモリと、メモリに結合された処理デバイスであって、メモリにアクセスして命令を遂行するように構成された、処理デバイスとを含む。いくつかの実装形態では、命令は、処理デバイスに、認証されていない仮想3Dオブジェクトを受信することと、認証されていない仮想3Dオブジェクトの複数の2次元(2D)ビューを決定することと、複数の2Dビューの各2Dビューのハッシュ値を計算することと、認証されていない仮想3Dオブジェクトの複数の2Dビューのうちの少なくとも2つの2Dビューのそれぞれのハッシュ値が、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値と一致するかどうかを決定することと、それぞれのハッシュ値が一致すると決定された場合、認証されていない仮想3Dオブジェクトを偽造された3Dオブジェクトとして分類することとを含む動作を実行させる。
【0027】
いくつかの実装形態では、複数の2Dビューのうちの各2Dビューは、それぞれの視点からキャプチャされる。
【0028】
いくつかの実装形態では、ハッシュ値は知覚ハッシュ関数を使用して計算される。いくつかの実装形態では、複数のビューは、認証されていない仮想3Dオブジェクトのオブジェクトタイプに少なくとも部分的に基づいて選択される。
【0029】
いくつかの実装形態では、本動作は、決定を複数回実行することをさらに含む。いくつかの実装形態では、決定は、異なる真正の仮想3Dオブジェクトを使用して複数回の各々において実行される。
【0030】
いくつかの実装形態では、本動作は、それぞれのハッシュ値が一致しないと決定された場合、認証されていない仮想3Dオブジェクトを本物の3Dオブジェクトとして分類することをさらに含む。
【図面の簡単な説明】
【0031】
【
図1】いくつかの実装形態による、偽造された仮想オブジェクトの検出のための例示的なシステムアーキテクチャを示す図である。
【
図2】いくつかの実装形態による、異なる視点からの仮想3Dオブジェクトの2Dビューの例示的なキャプチャを示す図である。
【
図3】いくつかの実装形態による、一致する仮想3次元(3D)オブジェクトと一致しない3Dオブジェクトを比較した、受信された仮想3次元(3D)オブジェクトの例示的な2次元(2D)ビューを示す図である。
【
図4】いくつかの実装形態による、偽造された仮想オブジェクトを検出するための例示的な方法を示すフローチャートである。
【
図5】いくつかの実装形態による、例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0032】
以下の詳細な説明では、その一部を構成する添付の図面を参照する。図面において、文脈上別段の指示がない限り、通常、類似の記号は類似のコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲に記載されている例示的な実施形態は、限定することを意味するものではない。本明細書に提示される主題の趣旨または範囲から逸脱することなく、他の実施形態が利用されてよく、他の変更を行われてよい。本明細書に一般的に記載され、図面に示される本開示の態様は、多種多様な異なる構成において配置、置換、結合、分離、および設計することができ、これらはすべて本明細書で企図される。
【0033】
本明細書における「いくつかの実施形態(some embodiments)」、「実施形態(an embodiment)」、「例示的な実施形態(an example embodiment)」などへの言及は、説明された実施形態が特定の機能、構造、または特徴を含み得るが、すべての実施形態が必ずしも特定の機能、構造、または特徴を含み得るとは限らないことを示す。さらに、そのような句は必ずしも同じ実施形態を指しているわけではない。さらに、特定の機能、構造、または特徴が実施形態に関連して説明される場合、そのような機能、構造、または特徴は、明示的に説明されるかどうかにかかわらず、他の実施形態に関連して影響を受ける可能性がある。
【0034】
オンラインゲームプラットフォーム(「ユーザ生成コンテンツプラットフォーム」、または「ユーザ生成コンテンツシステム」とも呼ばれる)は、ユーザが相互に相互作用するための様々な方法を提供する。たとえば、オンラインゲームプラットフォームのユーザは、共通の目標に向かって協力したり、様々な仮想ゲームアイテムを共有したり、相互に電子メッセージを送信したりすることができる。オンラインゲームプラットフォームのユーザは、仮想キャラクタとしてゲームに参加し、ゲーム固有の役割を演じることができる。たとえば、仮想キャラクタは、各キャラクタに特定の役割が割り当てられ、その役割に対応する衣類、鎧、武器、スキルなどのパラメータが関連付けられているチームまたはマルチプレイヤ環境の一部であってよい。別の例では、仮想キャラクタは、たとえば、単一のプレイヤがゲームの一部である場合、コンピュータで生成されたキャラクタであり得る1つまたは複数のノンプレイヤキャラクタ(NPC)によって結合され得る。
【0035】
オンラインゲームプラットフォームでは、プラットフォームのユーザ(開発者)が新しいゲームおよびキャラクタを作成できる場合もある。たとえば、オンラインゲームプラットフォームのユーザは、新しいキャラクタ(アバタ)、新しいアニメーションパッケージを作成、設計、および/またはカスタマイズし、他のユーザが利用できるようにすることができる場合がある。
【0036】
新しいキャラクタおよびアニメーションパッケージ(仮想オブジェクト)は、仮想通貨および/または現実の通貨でオンラインマーケットプレイスにおいて取引、交換、または売買される場合がある。仮想オブジェクトは、再販業者または購入者が仮想オブジェクトの偽造の性質を認識せずに、コピーおよび再配布される場合がある。
【0037】
市場に氾濫する偽造された仮想オブジェクトは検出が困難な場合があり、仮想オブジェクトの量と性質により、偽造された仮想オブジェクトの検出への人間の介入が困難になる可能性がある。
【0038】
ゲームプラットフォームの所有者または管理者の目的は、偽造されたオブジェクトを軽減し、オリジナルコンテンツの作成者にインセンティブを提供することである。ゲームプラットフォームのオペレータにとっての技術的な問題は、ゲームプラットフォーム全体での偽造された仮想オブジェクトの検出である。
【0039】
偽造された仮想オブジェクトを早期に検出すると、偽造された仮想オブジェクトの作成者が、偽造された仮想オブジェクトを作成して普及させることが困難および/または高額になる可能性がある。偽造された仮想オブジェクトのアップロードを防止するゲームプラットフォームは、偽造されたオブジェクトの作成者を効果的に阻止することができる。
【0040】
検出を回避するために、作成者は、オリジナルの仮想オブジェクトを操作して、操作されたオブジェクトを作成する場合がある。操作されたオブジェクトと本物のオブジェクトとの違いが認識できない場合でも、操作されたオブジェクトは、いくつかの偽造検出技法によってオリジナルとして分類され得る。
【0041】
本開示は、ゲームプラットフォームに知られている本物のオブジェクトに類似している偽造されたオブジェクトを検出することによって、上記の欠点に対処する。偽造された仮想オブジェクトとオリジナルの仮想オブジェクトとの類似性(知覚ハッシュマッチング)は、偽造されたオブジェクトの検出のために利用される。
【0042】
知覚ハッシュマッチングは、コンテンツの様々な機能から派生したマルチメディアファイル(画像ファイル、オーディオファイル、ビデオファイルなど)のフィンガープリントである知覚ハッシュ関数を利用する。基礎となる機能が類似している場合、2つのファイルの知覚ハッシュは互いに近くなる。知覚ハッシュ関数は、ファイルの変換(回転、スキュー、コントラスト調整、ファイルの様々な圧縮/形式の使用など)を考慮し、しかも、変換されたファイルがオリジナルのファイルと類似していることを検出するために堅牢であるように設計されている。
【0043】
図1は、本開示のいくつかの実装形態による、例示的なシステムアーキテクチャ100を示している。
図1および他の図面は、同様の要素を識別するために同様の参照番号を使用している。「110」などの参照番号の後の文字は、テキストがその特定の参照番号を有する要素を具体的に参照していることを示す。「110」などの後続の文字のないテキスト中の参照番号は、その参照番号を有する図面中の要素のいずれかまたはすべてを指す(たとえば、テキスト中の「110」は、図面中の参照番号「110a」、「110b」、および/または「110n」を指す)。
【0044】
システムアーキテクチャ100(本明細書では「システム」とも呼ばれる)は、オンラインゲームサーバ102、データストア120、クライアントデバイス110a、110b、および110n(本明細書では一般に「クライアントデバイス110」と呼ばれる)、および開発者デバイス130aおよび130n(本明細書では一般に「開発者デバイス130」と呼ばれる)を含む。ゲームサーバ102、データストア120、クライアントデバイス110、および開発者デバイス130は、ネットワーク122を介して結合されている。いくつかの実装形態では、クライアントデバイス110および開発者デバイス130は、同じまたは同じタイプのデバイスを指す場合がある。
【0045】
オンラインゲームサーバ102は、とりわけ、ゲームエンジン104、1つまたは複数のゲーム106、およびグラフィックエンジン108を含むことができる。クライアントデバイス110は、ゲームアプリケーション112、および入力/出力(I/O)インターフェース114(たとえば、入力/出力デバイス)を含むことができる。入出力デバイスは、マイクロフォン、スピーカ、ヘッドホン、ディスプレイデバイス、マウス、キーボード、ゲームコントローラ、タッチスクリーン、仮想現実コンソールなどのうちの1つまたは複数を含むことができる。
【0046】
開発者デバイス130は、ゲームアプリケーション132、および入力/出力(I/O)インターフェース134(たとえば、入力/出力デバイス)を含むことができる。入出力デバイスは、マイクロフォン、スピーカ、ヘッドホン、ディスプレイデバイス、マウス、キーボード、ゲームコントローラ、タッチスクリーン、仮想現実コンソールなどのうちの1つまたは複数を含むことができる。
【0047】
システムアーキテクチャ100は、説明のために提供されている。異なる実装形態では、システムアーキテクチャ100は、
図1に示されるものと同じまたは異なる方法で構成された同じ、より少ない、より多い、または異なる要素を含み得る。
【0048】
いくつかの実装形態では、ネットワーク122は、パブリックネットワーク(たとえば、インターネット)、プライベートネットワーク(たとえば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、ワイヤードネットワーク(たとえば、イーサネットネットワーク)、ワイヤレスネットワーク(たとえば、802.11ネットワーク、Wi-Fi(登録商標)ネットワーク、またはワイヤレスLAN(WLAN))、セルラーネットワーク(たとえば、5Gネットワーク、ロングタームエボリューション(LTE)ネットワークなど)、ルータ、ハブ、スイッチ、サーバコンピュータ、またはそれらの組合せを含み得る。
【0049】
いくつかの実装形態では、データストア120は、非一時的コンピュータ可読メモリ(たとえば、ランダムアクセスメモリ)、キャッシュ、ドライブ(たとえば、ハードドライブ)、フラッシュドライブ、データベースシステム、あるいはデータを記憶することができる別のタイプのコンポーネントまたはデバイスであり得る。データストア120はまた、複数のコンピューティングデバイス(たとえば、複数のサーバコンピュータ)にまたがることができる複数のストレージコンポーネント(たとえば、複数のドライブまたは複数のデータベース)を含み得る。
【0050】
いくつかの実装形態では、オンラインゲームサーバ102は、1つまたは複数のコンピューティングデバイス(たとえば、クラウドコンピューティングシステム、ラックマウントサーバ、サーバコンピュータ、物理サーバのクラスタなど)を有するサーバを含むことができる。いくつかの実装形態では、オンラインゲームサーバ102は、独立したシステムであってもよく、複数のサーバを含んでもよく、別のシステムまたはサーバの一部であってもよい。
【0051】
いくつかの実装形態では、オンラインゲームサーバ102は、1つまたは複数のコンピューティングデバイス(ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなど)、オンラインゲームサーバ102上で動作を実行し、ユーザにオンラインゲームサーバ102へのアクセスを提供するために使用され得るデータストア(たとえば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェアコンポーネント、および/またはハードウェアコンポーネントを含み得る。オンラインゲームサーバ102はまた、オンラインゲームサーバ102によって提供されるコンテンツへのアクセスをユーザに提供するために使用され得るウェブサイト(たとえば、ウェブページ)またはアプリケーションバックエンドソフトウェアを含み得る。たとえば、ユーザは、クライアントデバイス110上でゲームアプリケーション112を使用してオンラインゲームサーバ102にアクセスし得る。
【0052】
いくつかの実装形態では、オンラインゲームサーバ102は、ユーザ間の接続を提供する一種のソーシャルネットワーク、またはユーザ(たとえば、エンドユーザまたは消費者)がオンラインゲームサーバ102上の他のユーザと通信することを可能にする一種のユーザ生成コンテンツシステムであり得、通信は、ボイスチャット(たとえば、同期および/または非同期音声通信)、ビデオチャット(たとえば、同期および/または非同期ビデオ通信)、またはテキストチャット(たとえば、同期および/または非同期テキストベースの通信)を含み得る。本開示のいくつかの実装形態では、「ユーザ」は、単一の個人として表され得る。しかしながら、本開示の他の実装形態は、ユーザのセットまたは自動化されたソースによって制御されるエンティティである「ユーザ」(たとえば、作成ユーザ)を包含する。たとえば、ユーザ生成コンテンツシステムにおいてコミュニティまたはグループとしてフェデレーションされた個々のユーザのセットは、「ユーザ」と見なされる場合がある。
【0053】
いくつかの実装形態では、オンラインゲームサーバ102は、仮想ゲームサーバであり得る。たとえば、ゲームサーバは、ネットワーク122を介してクライアントデバイス110を使用してゲームにアクセスし得る、またはそれと相互作用し得るユーザのコミュニティにシングルプレイヤまたはマルチプレイヤゲームを提供し得る。いくつかの実装形態では、ゲーム(本明細書では「ビデオゲーム」、「オンラインゲーム」、または「仮想ゲーム」とも呼ばれる)は、たとえば、2次元(2D)ゲーム、3次元(3D)ゲーム(たとえば、3Dユーザ生成ゲーム)、仮想現実(VR)ゲーム、または拡張現実(AR)ゲームであり得る。いくつかの実装形態では、ユーザは他のユーザとのゲームプレイに参加し得る。いくつかの実装形態では、ゲームは、ゲームの他のユーザとリアルタイムでプレイされ得る。
【0054】
いくつかの実装形態では、ゲームプレイは、ゲーム(たとえば、106)内でクライアントデバイス(たとえば、110)を使用する1人または複数のプレイヤの相互作用、またはクライアントデバイス110のディスプレイまたは他の出力デバイス(たとえば、114)における相互作用の提示を指す場合がある。
【0055】
いくつかの実装形態では、ゲーム106は、ゲームコンテンツ(たとえば、デジタルメディアアイテム)をエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して遂行またはロードすることができる電子ファイルを含むことができる。いくつかの実装形態では、ゲームアプリケーション112が遂行され、ゲーム106がゲームエンジン104に関連してレンダリングされ得る。いくつかの実装形態では、ゲーム106は、共通のルールのセットまたは共通の目標を有し得、ゲーム106の環境は、共通のルールのセットまたは共通の目標を共有する。いくつかの実装形態では、ゲームが異なれば、ルールまたは目標も互いに異なる場合がある。
【0056】
いくつかの実装形態では、ゲームは、複数の環境がリンクされ得る1つまたは複数の環境(本明細書では「ゲーム環境」または「仮想環境」とも呼ばれる)を有し得る。環境の例としては、3次元(3D)環境がある。ゲームアプリケーション112または132の1つまたは複数の環境は、本明細書では、集合的に「世界」または「ゲーム世界」または「仮想世界」または「宇宙」と呼ばれ得る。世界の例は、ゲーム106の3D世界であり得る。たとえば、ユーザは、別のユーザによって作成された別の仮想環境にリンクされた仮想環境を構築し得る。仮想ゲームのキャラクタは、隣接する仮想環境に入るために仮想境界を越えることができる。
【0057】
3D環境または3D世界は、ゲームコンテンツを表す幾何学的データの3次元表現を使用するグラフィックスを使用する(または、少なくとも、幾何学的データの3D表現が使用されているかどうかに関係なく、ゲームコンテンツを3Dコンテンツとして表示する)ことに留意されたい。2D環境または2D世界は、ゲームコンテンツを表す幾何学的データの2次元表現を使用するグラフィックスを使用する。
【0058】
いくつかの実装形態では、オンラインゲームサーバ102は、1つまたは複数のゲーム106をホストすることができ、ユーザがクライアントデバイス110のゲームアプリケーション112を使用してゲーム106と相互作用することを可能にすることができる。オンラインゲームサーバ102のユーザは、ゲーム106をプレイ、作成、相互作用、または構築し、他のユーザと通信し、ならびに/またはゲーム106のオブジェクト(たとえば、本明細書では「アイテム」または「ゲームオブジェクト」または「仮想ゲームアイテム」とも呼ばれる)を作成および構築し得る。たとえば、ユーザ生成仮想アイテムを生成する際に、ユーザは、とりわけ、キャラクタ、キャラクタの装飾、相互作用型ゲームのための1つまたは複数の仮想環境を作成してもよく、ゲーム106において使用される構造を構築してもよい。いくつかの実装形態では、ユーザは、プラットフォーム内通貨(たとえば、仮想通貨)などのゲーム仮想ゲームオブジェクトを、オンラインゲームサーバ102の他のユーザと購入、販売、または交換することができる。いくつかの実装形態では、オンラインゲームサーバ102は、ゲームコンテンツをゲームアプリケーション(たとえば、112)に送信し得る。いくつかの実装形態では、ゲームコンテンツ(本明細書では「コンテンツ」とも呼ばれる)は、オンラインゲームサーバ102またはゲームアプリケーションに関連付けられる任意のデータまたはソフトウェア命令(たとえば、ゲームオブジェクト、ゲーム、ユーザ情報、ビデオ、画像、コマンド、メディアアイテムなど)を指す場合がある。いくつかの実装形態では、ゲームオブジェクト(たとえば、本明細書では「アイテム」または「オブジェクト」または「仮想オブジェクト」または「仮想ゲームアイテム」とも呼ばれる)は、オンラインゲームサーバ102のゲームエンジン104またはグラフィックエンジン108、あるいはクライアントデバイス110のゲームアプリケーション112において使用、作成、共有、または他の方法で描写されるオブジェクトを指し得る。たとえば、ゲームオブジェクトは、パーツ、モデル、キャラクタ、アクセサリ、ツール、武器、衣類、建物、車両、通貨、植物相、動物相、前述のコンポーネント(たとえば、建物の窓)などを含み得る。
【0059】
ゲーム106をホストするオンラインゲームサーバ102は、限定ではなく、例示の目的で提供されていることに留意されたい。いくつかの実装形態では、オンラインゲームサーバ102は、あるユーザから1人または複数の他のユーザへの通信メッセージを含むことができる1つまたは複数のメディアアイテムをホストし得る。メディアアイテムは、これらに限定されないが、デジタルビデオ、デジタルムービー、デジタル写真、デジタル音楽、オーディオコンテンツ、メロディ、ウェブサイトのコンテンツ、ソーシャルメディアの更新、電子書籍、電子雑誌、デジタル新聞、デジタルオーディオ書籍、電子ジャーナル、ウェブブログ、リアルシンプルシンジケーション(RSS)フィード、電子コミックブック、ソフトウェアアプリケーションなどを含むことができる。いくつかの実装形態では、メディアアイテムは、デジタルメディアアイテムをエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して遂行またはロードできる電子ファイルであり得る。
【0060】
いくつかの実装形態では、ゲーム106は、特定のユーザまたは特定のユーザのグループ(たとえば、プライベートゲーム)に関連付けられ得るか、またはオンラインゲームサーバ102(たとえば、パブリックゲーム)にアクセスできるユーザに広く利用可能にされ得る。いくつかの実装形態では、オンラインゲームサーバ102が1つまたは複数のゲーム106を特定のユーザまたはユーザのグループに関連付ける場合、オンラインゲームサーバ102は、ユーザアカウント情報(たとえば、ユーザ名およびパスワードなどのユーザアカウント識別子)を使用して、特定のユーザをゲーム102に関連付けることができる。
【0061】
いくつかの実装形態では、オンラインゲームサーバ102またはクライアントデバイス110は、ゲームエンジン104またはゲームアプリケーション112を含み得る。いくつかの実装形態では、ゲームエンジン104は、ゲーム106の開発または遂行のために使用され得る。たとえば、ゲームエンジン104は、とりわけ、2D、3D、VR、またはARグラフィックスのためのレンダリングエンジン(「レンダラ」)、物理エンジン、衝突検出エンジン(および衝突応答)、サウンドエンジン、スクリプト機能、アニメーションエンジン、人工知能エンジン、ネットワーキング機能、ストリーミング機能、メモリ管理機能、スレッド機能、シーングラフ機能、またはシネマティクスのビデオサポートなどの機能を含み得る。ゲームエンジン104のコンポーネントは、ゲームの計算およびレンダリングを支援するコマンド(たとえば、レンダリングコマンド、衝突コマンド、物理コマンドなど)を生成し得る。いくつかの実装形態では、クライアントデバイス110のゲームアプリケーション112は、それぞれ、オンラインゲームサーバ102のゲームエンジン104、または両方の組合せと連携して、独立して動作し得る。
【0062】
いくつかの実装形態では、オンラインゲームサーバ102およびクライアントデバイス110の両方は、ゲームエンジン(それぞれ、104および112)を遂行し得る。ゲームエンジン104を使用するオンラインゲームサーバ102は、ゲームエンジン機能の一部またはすべてを実行(たとえば、物理コマンド、レンダリングコマンドなどを生成)してもよく、またはゲームエンジン機能の一部またはすべてをクライアントデバイス110のゲームエンジン104にオフロードしてもよい。いくつかの実装形態では、各ゲーム106は、オンラインゲームサーバ102上で実行されるゲームエンジン機能と、クライアントデバイス110上で実行されるゲームエンジン機能との間で異なる比率を有し得る。たとえば、オンラインゲームサーバ102のゲームエンジン104は、少なくとも2つのゲームオブジェクト間に衝突がある場合に物理コマンドを生成するために使用され得、一方、追加のゲームエンジン機能(たとえば、レンダリングコマンドの生成)は、クライアントデバイス110にオフロードされ得る。いくつかの実装形態では、オンラインゲームサーバ102およびクライアントデバイス110上で実行されるゲームエンジン機能の比率は、ゲームプレイ条件に基づいて(たとえば、動的に)変更され得る。たとえば、特定のゲーム106のゲームプレイに参加するユーザの数がしきい値数を超える場合、オンラインゲームサーバ102は、クライアントデバイス110によって以前に実行された1つまたは複数のゲームエンジン機能を実行し得る。
【0063】
たとえば、ユーザは、クライアントデバイス110上でゲーム106をプレイし得、制御命令(たとえば、右、左、上、下、ユーザ選択、またはキャラクタの位置および速度情報などのユーザ入力)をオンラインゲームサーバ102に送信し得る。クライアントデバイス110から制御命令を受信した後、オンラインゲームサーバ102は、制御命令に基づいて、ゲームプレイ命令(たとえば、レンダリングコマンド、衝突コマンドなどの、グループゲームプレイまたはコマンドに参加しているキャラクタの位置および速度情報)をクライアントデバイス110に送信し得る。たとえば、オンラインゲームサーバ102は、クライアントデバイス110のためのゲームプレイ命令を生成するために、制御命令に対して1つまたは複数の論理動作(たとえば、ゲームエンジン104を使用して)を実行し得る。他の例では、オンラインゲームサーバ102は、制御命令のうちの1つまたは複数を、あるクライアントデバイス110から、ゲーム106に参加している他のクライアントデバイス(たとえば、クライアントデバイス110aからクライアントデバイス110b)に渡し得る。クライアントデバイス110は、ゲームプレイ命令を使用して、クライアントデバイス110のディスプレイ上に提示するためにゲームプレイをレンダリングし得る。
【0064】
いくつかの実装形態では、制御命令は、ユーザのキャラクタのゲーム内アクションを示す命令を指す場合がある。たとえば、制御命令は、右、左、上、下、ユーザ選択、ジャイロスコープの位置および方向データ、力センサデータなどのゲーム内アクションを制御するためのユーザ入力を含み得る。制御命令は、キャラクタの位置および速度情報を含み得る。いくつかの実装形態では、制御命令は、オンラインゲームサーバ102に直接送信される。他の実装形態では、制御命令は、クライアントデバイス110から別のクライアントデバイスに(たとえば、クライアントデバイス110bからクライアントデバイス110nに)送信され得、他のクライアントデバイスは、ゲームエンジン104を使用してゲームプレイ命令を生成する。制御命令は、音声通信メッセージまたはオーディオデバイス(たとえば、スピーカ、ヘッドホンなど)上の別のユーザからの他のサウンド、たとえば、本明細書で説明するオーディオ空間化技法を使用して生成される音声通信または他のサウンドを再生するための命令を含み得る。
【0065】
いくつかの実装形態では、ゲームプレイ命令は、クライアントデバイス110がマルチプレイヤゲームなどのゲームのゲームプレイをレンダリングすることを可能にする命令を指す場合がある。ゲームプレイ命令は、ユーザ入力(たとえば、制御命令)、キャラクタの位置および速度情報、またはコマンド(たとえば、物理コマンド、レンダリングコマンド、衝突コマンドなど)のうちの1つまたは複数を含み得る。
【0066】
いくつかの実装形態では、オンラインゲームサーバ102は、ユーザによって作成されたキャラクタをデータストア120に記憶し得る。いくつかの実装形態では、オンラインゲームサーバ102は、ユーザに提示され得るキャラクタカタログおよびゲームカタログを維持する。いくつかの実装形態では、ゲームカタログは、オンラインゲームサーバ102に記憶されたゲームの画像を含む。さらに、ユーザは、選択されたゲームに参加するために、キャラクタカタログからキャラクタ(たとえば、ユーザまたは他のユーザによって作成されたキャラクタ)を選択し得る。キャラクタカタログは、オンラインゲームサーバ102に記憶されたキャラクタの画像を含む。いくつかの実装形態では、キャラクタカタログ内のキャラクタのうちの1つまたは複数は、ユーザによって作成またはカスタマイズされた可能性がある。いくつかの実装形態では、選択されたキャラクタは、キャラクタのコンポーネントのうちの1つまたは複数を定義するキャラクタ設定を有する場合がある。
【0067】
いくつかの実装形態では、ユーザのキャラクタは、コンポーネントの構成を含むことができ、コンポーネントの構成および外観、より一般的にはキャラクタの外観は、キャラクタ設定によって定義され得る。いくつかの実装形態では、ユーザのキャラクタのキャラクタ設定は、少なくとも部分的にユーザによって選択され得る。他の実装形態では、ユーザは、デフォルトのキャラクタ設定または他のユーザによって選択されたキャラクタ設定でキャラクタを選択し得る。たとえば、ユーザは、あらかじめ定義されたキャラクタ設定を有するキャラクタカタログからデフォルトのキャラクタを選択し得、ユーザは、キャラクタ設定の一部を変更する(たとえば、カスタマイズされたロゴのシャツを追加する)ことによってデフォルトのキャラクタをさらにカスタマイズし得る。キャラクタ設定は、オンラインゲームサーバ102によって特定のキャラクタに関連付けられ得る。
【0068】
いくつかの実装形態では、クライアントデバイス110はそれぞれ、パーソナルコンピュータ(PC)、モバイルデバイス(たとえば、ラップトップ、モバイル電話、スマートフォン、タブレットコンピュータ、またはネットブックコンピュータ)、ネットワーク接続されたテレビ、ゲームコンソールなどのようなコンピューティングデバイスを含み得る。いくつかの実装形態では、クライアントデバイス110は、「ユーザデバイス」と呼ばれることもある。いくつかの実装形態では、1つまたは複数のクライアントデバイス110は、任意の時点でオンラインゲームサーバ102に接続し得る。クライアントデバイス110の数は、例示として提供されていることに留意されたい。いくつかの実装形態では、任意の数のクライアントデバイス110が使用され得る。
【0069】
いくつかの実装形態では、各クライアントデバイス110は、それぞれ、ゲームアプリケーション112のインスタンスを含み得る。一実施形態では、ゲームアプリケーション112は、オンラインゲームサーバ102によってホストされる仮想ゲーム内の仮想キャラクタを制御するなど、ユーザがオンラインゲームサーバ102を使用およびそれと相互作用すること、またはゲーム106、画像、ビデオアイテム、ウェブページ、ドキュメントなどのコンテンツを閲覧またはアップロードすることを可能にし得る。一例では、ゲームアプリケーションは、ウェブサーバによって提供されコンテンツ(たとえば、仮想環境内の仮想キャラクタなど)にアクセス、検索、提示、またはナビゲートすることができるウェブアプリケーション(たとえば、ウェブブラウザと連動して動作するアプリケーション)であり得る。別の例では、ゲームアプリケーションは、クライアントデバイス110に対してローカルにインストールおよび遂行され、ユーザがオンラインゲームサーバ102と相互作用することを可能にするネイティブアプリケーション(たとえば、モバイルアプリケーション、アプリ、またはゲームプログラム)であり得る。ゲームアプリケーションは、コンテンツ(たとえば、ウェブページ、メディアビューア)をユーザにレンダリング、表示、または提示し得る。ある実装形態では、ゲームアプリケーションはまた、ウェブページに埋め込まれる埋め込まれたメディアプレイヤ(たとえば、フラッシュ(登録商標)プレイヤ)を含み得る。
【0070】
本開示の態様によれば、ゲームアプリケーションは、ユーザがコンテンツを構築、作成、編集、オンラインゲームサーバ102にアップロードするだけでなく、オンラインゲームサーバ102と相互作用する(たとえば、オンラインゲームサーバ102によってホストされるゲーム106をプレイする)ためのオンラインゲームサーバプリケーションであり得る。したがって、ゲームアプリケーションは、オンラインゲームサーバ102によってクライアントデバイス110に提供され得る。別の例では、ゲームアプリケーションは、サーバからダウンロードされるアプリケーションであり得る。
【0071】
いくつかの実装形態では、各開発者デバイス130は、それぞれ、ゲームアプリケーション132のインスタンスを含み得る。一実施形態では、ゲームアプリケーション132は、オンラインゲームサーバ102によってホストされる仮想ゲーム内の仮想キャラクタを制御するなど、開発者ユーザがオンラインゲームサーバ102を使用およびそれと相互作用すること、またはゲーム106、画像、ビデオアイテム、ウェブページ、ドキュメントなどのコンテンツを閲覧またはアップロードすることを可能にし得る。一例では、ゲームアプリケーションは、ウェブサーバによって提供されコンテンツ(たとえば、仮想環境内の仮想キャラクタなど)にアクセス、検索、提示、またはナビゲートすることができるウェブアプリケーション(たとえば、ウェブブラウザと連動して動作するアプリケーション)であり得る。別の例では、ゲームアプリケーションは、開発者デバイス130に対してローカルにインストールおよび遂行され、ユーザがオンラインゲームサーバ102と相互作用することを可能にするネイティブアプリケーション(たとえば、モバイルアプリケーション、アプリ、またはゲームプログラム)であり得る。ゲームアプリケーションは、コンテンツ(たとえば、ウェブページ、メディアビューア)をユーザにレンダリング、表示、または提示し得る。ある実装形態では、ゲームアプリケーションはまた、ウェブページに埋め込まれる埋め込まれたメディアプレイヤ(たとえば、フラッシュ(登録商標)プレイヤ)を含み得る。
【0072】
本開示の態様によれば、ゲームアプリケーション132は、ユーザがコンテンツを構築、作成、編集、オンラインゲームサーバ102にアップロードするため、ならびにオンラインゲームサーバ102と相互作用する(たとえば、オンラインゲームサーバ102によってホストされるゲーム106を提供および/またはプレイする)ためのオンラインゲームサーバプリケーションであり得る。したがって、ゲームアプリケーションは、オンラインゲームサーバ102によってクライアントデバイス110に提供され得る。別の例では、ゲームアプリケーション132は、サーバからダウンロードされるアプリケーションであり得る。ゲームアプリケーション132は、オンラインゲームサーバ102と相互作用し、ゲーム開発者によって開発、ホスト、または提供される1つまたは複数のゲーム106のユーザ資格情報、ユーザ通貨などへのアクセスを取得するように構成され得る。
【0073】
いくつかの実装形態では、ユーザは、ゲームアプリケーションを介してオンラインゲームサーバ102にログインし得る。ユーザは、ユーザアカウント情報(たとえば、ユーザ名およびパスワード)を提供することによってユーザアカウントにアクセスし得、ユーザアカウントは、オンラインゲームサーバ102の1つまたは複数のゲーム106に参加するために利用可能な1つまたは複数のキャラクタに関連付けられる。いくつかの実装形態では、適切な資格情報があれば、ゲーム開発者は、他のユーザによって所有される、または関連付けられているプラットフォーム内通貨(たとえば、仮想通貨)、アバタ、特殊能力、アクセサリなどのゲーム仮想ゲームオブジェクトへのアクセスを取得し得る。
【0074】
一般に、オンラインゲームサーバ102によって実行されるものとして一実装形態で説明される機能はまた、適切な場合、他の実装形態では、クライアントデバイス110またはサーバによっても実行することができる。さらに、特定のコンポーネントに起因する機能は、一緒に動作する異なるコンポーネントまたは複数のコンポーネントによって実行することができる。オンラインゲームサーバ102はまた、適切なアプリケーションプログラミングインターフェース(API)を通じて他のシステムまたはデバイスに提供されるサービスとしてアクセスすることができ、したがって、ウェブサイトにおける使用に限定されない。
【0075】
いくつかの実装形態では、オンラインゲームサーバ102は、グラフィックエンジン108を含み得る。いくつかの実装形態では、グラフィックエンジン108は、オンラインゲームサーバ102がグラフィックおよびアニメーション機能を提供することを可能にするシステム、アプリケーション、またはモジュールであり得る。いくつかの実装形態では、グラフィックエンジン108は、
図4に示されるフローチャートに関連して以下に説明される動作のうちの1つまたは複数を実行し得る。
【0076】
図2は、いくつかの実装形態による、異なる視点からの仮想3Dオブジェクトの2Dビューのキャプチャを示している。
【0077】
図2は、例示的な仮想3Dオブジェクト210を示している。仮想3Dオブジェクト210は、3次元におけるオブジェクトの表面の数学的表現であるモデルファイルとして受信され得る。
【0078】
仮想3Dオブジェクトは、ゲームサーバ102によって内部的に(たとえば、グラフィックエンジン108によって)レンダリングされる。いくつかの実装形態では、レンダリングにより、受信された3Dモデルに基づいて1つまたは複数の画像が生成される。いくつかの実装形態では、内部レンダリングは、モデルファイルにおいて指定された解像度とは異なる解像度で実行され得る。
【0079】
いくつかの実装形態では、1つまたは複数のカメラビュー220が、レンダリングされた仮想3Dオブジェクト210の2D画像をキャプチャするために利用される。
【0080】
本明細書に示され、説明されるカメラビューは、カメラビューを生成し、異なるビューを生成するために、3D世界における異なる視点に配置され得る「仮想カメラ」によって提供され得る。仮想カメラの位置およびキャプチャ解像度も更新/変更することができる。たとえば、いくつかの実装形態では、カメラビューは、ズームインおよびズームアウトする機能、ならびに/またはより高いまたはより低い解像度で画像をキャプチャする機能を含み得る。
【0081】
たとえば、カメラビュー220a、220b、220c、および220nは、仮想3Dオブジェクト210の画像をキャプチャするために3D世界に配置され得るカメラビューの例示的な例である。
【0082】
いくつかの実装形態では、オブジェクトに視覚効果を作成するために、仮想照明230が使用され得る。この例示的な例では、仮想3Dオブジェクトを上から照らすために仮想照明230aが利用され得、仮想3Dオブジェクトを下から照らすために仮想照明230bが利用され得る。
【0083】
仮想照明230は、指向性ライト、スポットライト、エリアライト、ボリュームライト、アンビエントライトなどを含み得る。仮想照明230の位置およびタイプは、オブジェクトを見る方向に基づいて構成され得る。たとえば、仮想照明230は、カメラがオブジェクトの影をキャプチャできるようにするために、仮想照明から生じる光ベクトルが見る方向に平行にならないように配置され得る。シーンにおける照明が視錐台(viewing frustum)の法線ベクトルに従っている場合、カメラは、光ベクトルと法線錐台が平行でない場合に存在する影をキャプチャしない可能性がある。
【0084】
いくつかの実装形態では、仮想照明230は、より良い特徴抽出を可能にするために、特徴と領域との間に強いエッジを作成するように構成され得る。画像に強いエッジが存在する場合、特徴抽出がより効果的になる可能性がある。
【0085】
いくつかの実装形態では、仮想ゲームにおいて通常露出される凹状の特徴を含むオブジェクトは、凹状内にある可能性のある関連する特徴を抽出するために、より複雑な照明配置を利用する場合がある。
【0086】
図3は、受信された仮想3次元(3D)オブジェクト(310a~d)を、一致しない仮想3次元(3D)オブジェクト(320a~d)および一致する3Dオブジェクト(330a~d)と比較した、例示的なビューを示す図である。この例示的な例では、310aは受信された仮想オブジェクトの3Dビューであり、310bは受信された仮想オブジェクトの上面であり、310cは受信された仮想オブジェクトの底面ビューであり、310dは受信された仮想オブジェクトの側面ビューである。一致しない仮想オブジェクトの対応するビューは320a~dであり、一致する仮想オブジェクトのビューは330a~dである。
【0087】
受信された仮想3Dオブジェクトおよび他のオブジェクトの2Dビューは、オブジェクトの3Dモデルをレンダリングし、仮想カメラを使用して異なる視点から2Dビューを取得することによって生成することができる。カテゴリタイプ(オブジェクトタイプ)は、オブジェクトのユーザ提供ラベルから、または3Dモデルに基づいて識別された仮想3Dオブジェクトの特徴に基づいてオブジェクトに対して決定され得る。オブジェクトが仮想環境の一部としてレンダリングされたときに、オブジェクトのユーザが認識できるビューが比較のために取得されるように、異なる視点が選択され得る。たとえば、内側部分と外側部分があるオブジェクトの場合、使用中に内側部分が見えない場合がある。たとえば、仮想アバタによって着用されているシャツまたは帽子の内側は使用中に見られない可能性があるため、偽造品を特定するために、対応するビューを他のオブジェクトとの比較から除外することができる。別の例では、オブジェクトがジャケットである場合、内側と外側の両方のビューが比較のために使用され得、上面および/または底面のビューは除外され得る。いくつかの実装形態では、比較のために使用される様々なビューを決定するために、オブジェクトのカテゴリタイプ、たとえば、履物、ヘッドウェア、シャツ、アクセサリなどが利用され得る。たとえば、各カテゴリタイプは、偽造されたオブジェクトを識別するための比較のために使用される、関連付けられたビューのあらかじめ定義されたリストを有し得る。
【0088】
いくつかの実装形態では、異なる視点が最初にキャプチャされ、キャプチャされた2Dビューのサブセットが、3Dオブジェクトのカテゴリタイプに基づいて比較のために選択され得る。いくつかの実装形態では、カテゴリタイプが最初に決定され得、そのカテゴリタイプ用に選択された2D画像が比較のためにキャプチャされ得る。
【0089】
いくつかの実装形態では、受信された仮想3Dオブジェクトのキャプチャされた2Dビューは、真正の仮想3Dオブジェクトの対応する2Dビューと比較される。いくつかの実装形態では、真正の仮想3Dオブジェクトの対応する2Dビューは、たとえば、データストア120に記憶され得る。
【0090】
いくつかの実装形態では、真正の仮想3Dオブジェクトの対応する2Dビューは、たとえば、ゲームサーバ102によって、比較時にレンダリングされる。
【0091】
いくつかの実装形態では、受信された仮想3Dオブジェクトの2Dビューと真正の仮想3Dオブジェクトの2Dビューを比較するために、2D画像のハッシュマッチングを利用する。いくつかの実装形態では、受信された仮想3Dオブジェクトの2Dビューを真正の仮想3Dオブジェクトの2Dビューと比較し、類似する2Dビューを検出するために、近似ハッシュマッチング(ファジーマッチング)が利用される。
【0092】
ハッシュ値は2D画像ごとに計算され、画像の指紋または透かしとして機能する。ハッシュ値は、固定長および構造の英数字値であり、入力レコード(たとえば、2D画像ファイル)を受け取り、対応するハッシュ値を生成するハッシュ関数によって生成され得る。
【0093】
いくつかの実装形態では、比較される画像が同一ではないが、互いのしきい値距離内にあるという点で類似していると決定するために、近似ハッシュマッチング技法が利用され得、画像ハッシュ間の距離はそれらの類似性の尺度である。いくつかの実装形態では、比較される2D画像が類似していそうかどうかを決定するハッシュ関数およびしきい値を利用する知覚ハッシュ技法が利用され得る。たとえば、比較されている2D画像が類似する特徴を有するかどうかを決定するために、知覚ハッシュ技法が利用され得る。さらに、これらの技法は、たとえば、偽造されたオブジェクトを本物としてつかませようとする敵対的な操作に耐性がある。
【0094】
画像から関心のある特徴を抽出し、特徴に基づいてハッシュ値を計算するために、知覚ハッシュ関数が利用され得る。知覚ハッシュ関数は、オリジナルのオブジェクトと認証されるオブジェクトのハッシュ値(知覚ハッシュ関数を使用して計算される)が、オブジェクトが知覚的に類似している(たとえば、視覚的に類似している)場合は数学的に近く、オブジェクトが知覚的に類似していない場合は離れるように設計され得る。
【0095】
この例示的な例では、比較に基づいて、仮想3Dオブジェクト310は、真正の仮想3Dオブジェクト320のレプリカではない(すなわち、本物のオブジェクトである)と決定され、その仮想3Dオブジェクトは、真正の仮想3Dオブジェクト330の偽造品であると決定される。図面に見られるように、オブジェクト320は、帽子であるが、帽子310とは異なる外形および寸法を有する。さらに、帽子310は、底面ビュー310cにおいて真正の帽子330には存在しない追加のコンテンツ(ハートサイン350)を有するが、帽子330と類似している。この場合、仮想環境における仮想オブジェクトの使用中、たとえば帽子が仮想アバタによって着用されている場合、帽子の底面ビューは見えないため、そのような一致しないビューは、オブジェクトが偽造品であるかどうかを決定する際に、より重みが少なくなる可能性がある。しかしながら、場合によっては、単一の不一致が、オブジェクトが本物のオブジェクトであることを示している場合もあることが理解され得る。たとえば、トレッキングポールなどのアクセサリの場合、オブジェクトはほぼ類似であり得、たとえばハンドルなどの小さな部分が異なっている。そのような場合、特定のビューに高い重みが付けられる場合がある。
【0096】
いくつかの実装形態では、異なるビューのパラメータ化された重み付けが利用されてよく、いくつかのビューは他のビューとは異なる重み付けがされる。たとえば、
図3において説明した例では、底面ビュー310c、320c、および330cは、アバタによって着用された場合、特定のビュー(すなわち、帽子の内部)は人間のユーザには見えない可能性があるため、他のビューよりも重みが少なくなる(または、まったくなくなる)可能性がある。これにより、偽造者がハッシュベースのマッチングを回避する目的で3Dオブジェクトに変更を加えたが、3Dモデルへの変更がユーザの観点からはそれほど重要ではないビューにおいて行われた場合、偽造されたオブジェクトの検出が可能になる。
【0097】
いくつかの実装形態では、あらかじめ定められた重みが、仮想3Dオブジェクトのタイプごとに指定され得る。いくつかの実装形態では、オリジナルのオブジェクトのハッシュ値が事前に計算されて記憶され得る。いくつかの実装形態では、オリジナルのオブジェクトのビューが記憶され得る。
【0098】
図4は、いくつかの実装形態による、偽造された仮想オブジェクトを検出するための例示的な方法を示すフローチャートである。いくつかの実装形態では、方法400は、たとえば、
図1を参照して説明したゲームサーバ102上で実装することができる。
【0099】
処理はブロック405において始まり、そこで認証されていない仮想3Dオブジェクトが受信される。仮想3Dオブジェクトは、1人または複数のユーザによる仮想3D環境における利用のために、ゲーム106などの仮想3D環境において提供され得る。たとえば、認証されていない仮想3Dオブジェクトは、開発者デバイス130を使用する開発者によって、ゲームサーバ102へのアップロードを介して受信され得る。
【0100】
いくつかの実装形態では、仮想3Dオブジェクトは、3Dメッシュを含み得る。3Dメッシュは、認証されていない仮想3Dオブジェクトの3次元構造を定義し得る。いくつかの実装形態では、3Dメッシュはまた、認証されていない仮想3Dオブジェクトの1つまたは複数の表面を定義し得る。いくつかの実装形態では、認証されていない仮想3Dオブジェクトは、仮想アバタ、たとえば、ヒューマノイドキャラクタ、動物キャラクタ、ロボットキャラクタなどの仮想キャラクタであり得る。
【0101】
いくつかの実装形態では、メッシュはFBXファイル形式で受信(インポート)され得る。メッシュファイルは、仮想3Dオブジェクトを備えるポリゴンに関する寸法データと、仮想3Dオブジェクトを備える様々なポリゴンにテクスチャの一部をアタッチする方法を説明するUVマップデータを提供するデータを含む。
【0102】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトは、オブジェクトの1つまたは複数の動き、たとえば、ヒューマノイドキャラクタの腕の動き、猫のキャラクタの尻尾の動きなどを定義するアニメーションを含み得る。いくつかの実装形態では、認証されていない仮想3Dオブジェクトは、仮想アバタによって着用される、または仮想アバタを参照して描写されるアクセサリ、たとえば帽子、武器、衣服などに対応し得る。
【0103】
認証されていない仮想3Dオブジェクトがアクセサリである実装形態では、仮想ゲームにおけるオブジェクトの使用を示すデータも受信され得る。たとえば、「靴」オブジェクトは、オブジェクトが仮想ヒューマノイドキャラクタの足に着用されているように描写できることを示す注釈を含み得、「シャツ」オブジェクトは、仮想ヒューマノイドキャラクタの胴体に着用されているように描写され得る注釈を含み得る。
【0104】
いくつかの実装形態では、3Dモデルは、認証されていない仮想3Dオブジェクトに関連付けられるテクスチャ情報をさらに含み得る。たとえば、テクスチャ情報は、認証されていない仮想3Dオブジェクトの外面の色および/またはパターンを示し得る。テクスチャ情報は、仮想3Dオブジェクトに関連付けられるテクスチャおよびメッシュの様々な程度の透明度、反射率、拡散度、材料特性、および耐火性の性質を変化させることが可能になり得る。テクスチャの例は、草、水色の窓ガラス、氷、水、コンクリート、レンガ、カーペット、木などを含む。
【0105】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトは、仮想3Dオブジェクトの記述子として機能し得るユーザ提供のラベルを含み得る。たとえば、ラベルは、たとえば、「楽しいロボット(fun robot)」、「アクションロボット(action robot)」、「シルクハット(top hat)」、「クールジャケット(cool jacket)」などの、オブジェクトの名前を示し得る。ブロック405の後にブロック410が続く場合がある。
【0106】
ブロック410において、仮想3Dオブジェクトの複数の2次元(2D)ビューが生成される。いくつかの実装形態では、それぞれの視点からキャプチャされた少なくとも2つの2Dビューが生成される。いくつかの実装形態では、2Dビューは、仮想3Dオブジェクトに適した特定のあらかじめ定められた照明条件下で取得され得る。いくつかの実装形態では、2つ以上の2Dビューが同じ視点でキャプチャされ得るが、使用中の照明条件は異なる。たとえば、仮想オブジェクトのテクスチャが光と相互作用するようなものである場合(たとえば、入射角に基づいて光を異なって反射する場合)、異なる照明条件が利用され得る。
【0107】
いくつかの実装形態では、2Dビューの視点は、認証されていない仮想3Dオブジェクトのカテゴリタイプに基づいて選択される。たとえば、ジャケットが仮想ゲームにおいて描写されている場合、たとえば仮想アバタによって着用されている場合、または他の方法で仮想ゲームの空間に描写されている場合、ジャケットの内側が見えるオープンジャケットなどのアクセサリの内部ビューが選択され得る。別の例では、帽子に対して上面ビューおよび/または側面ビューが選択され得る。別の例では、帽子などではなく靴の底面ビューおよび側面ビューが選択され得る。
【0108】
いくつかの実装形態では、1つまたは複数の部分的に透明なポリゴンを含むオブジェクトの場合、すべての特徴が確実に抽出されるように、複合透明度のすべての順列をカバーする視点と照明ベクトルが含まれ得る。
【0109】
いくつかの実装形態では、屈折の遷移を含むオブジェクトの場合、遷移がある場合とない場合の視点が選択され得る。たとえば、受信された3D仮想オブジェクトが水中の魚である場合、視点は、水面の上方から水中の魚を見ているビューと、水中の魚を見ているビューを含み得る。
【0110】
いくつかの実装形態では、カテゴリは、ユーザ提供のラベルから決定され得る。いくつかの実装形態では、カテゴリタイプは、仮想3Dオブジェクトの特徴に基づいて、ゲームプラットフォームによって(たとえば、ゲームサーバ102を使用して)決定され得る。たとえば、カテゴリタイプは、仮想3Dオブジェクトの形状および/またはサイズに基づいて決定され得る。いくつかの実装形態では、カテゴリタイプのセットは、仮想3Dオブジェクトにおいて識別された特徴に基づいて決定され得る。
【0111】
いくつかの実装形態では、視点は、オブジェクトが仮想3D環境においてレンダリングされるときに、ユーザに見える仮想3Dオブジェクトの部分に基づいて決定される。たとえば、視点は、仮想環境またはゲーム内で仮想3Dオブジェクトを見ているユーザに見える仮想3Dオブジェクトの可能性のある部分に基づいて決定され得る。いくつかの実装形態では、ユーザに見える部分は、仮想アバタのポーズによって異なる場合がある。たとえば、いくつかの実装形態では、仮想帽子はゲーム内のキャラクタ(たとえば、アバタ)によって着用されているという決定に基づいて、仮想帽子の内側を視点として選択できないことがある。いくつかの実装形態では、仮想帽子が仮想環境において振り回され、仮想帽子の内部がゲーム内で仮想帽子を見ているユーザに見えると決定された場合、仮想帽子の内部が視点として選択され得る。ブロック410の後にブロック415が続く場合がある。
【0112】
ブロック415において、ハッシュ値は、2つ以上の2Dビューに対して計算される。いくつかの実装形態では、ハッシュ値は知覚ハッシュ関数を使用して計算される。画像ファイル、アニメーションなどのデジタルメディアコンテンツの知覚的類似性の決定を可能にするために、知覚ハッシュ関数が利用され得る。メディアコンテンツから関心のある特徴を抽出し、その特徴に基づいてハッシュ値を計算するために、知覚ハッシュ関数が利用され得る。
【0113】
知覚ハッシュ関数は、オリジナルのオブジェクトおよび認証されるオブジェクトのハッシュ値(知覚ハッシュ関数を使用して計算される)が、オブジェクトが知覚的に類似している(たとえば、視覚的に類似している)場合は近く、オブジェクトが知覚的に異なる場合は遠くになるように設計され得る。ブロック415の後にブロック420が続き得る。
【0114】
ブロック420において、受信された仮想3Dオブジェクトの2Dビューのハッシュ値は、受信された仮想3Dオブジェクトの2Dビューが、真正の仮想3Dオブジェクトの対応する2Dビューと一致するかどうかを決定するために、真正の仮想3Dオブジェクトの対応する2Dビュー(たとえば、同じ視点からのビュー)と比較される。たとえば、受信された仮想3Dオブジェクトの上面ビューのハッシュ値が、真正の仮想3Dオブジェクトの上面ビューのハッシュ値と比較される、などである。
【0115】
いくつかの実装形態では、受信された仮想3Dオブジェクトの複数の計算された2Dビューが、真正の仮想3Dオブジェクトの対応する2Dビューと比較される。複数の計算された2Dビューは、受信された仮想3Dオブジェクトの取得されたすべての2Dビューを含んでもよく、受信された仮想3Dオブジェクトのカテゴリタイプ(オブジェクトタイプ)に基づいて取得した2Dビューのサブセットを含んでもよい。比較のしきい値数が一致する場合(すなわち、受信されたオブジェクトのビューが真正のオブジェクトの対応するビューと知覚的に類似している場合)、受信された仮想3Dオブジェクトは偽造されたオブジェクトであると決定される。
【0116】
いくつかの実装形態では、受信された仮想3Dオブジェクトの2Dビューは、類似したオブジェクトの対応する2Dビュー、すなわち、受信された仮想3Dオブジェクトと同じカテゴリタイプのものと比較される。たとえば、受信された仮想3Dオブジェクトが帽子である場合、受信された3D仮想オブジェクトの2Dビューと、ゲームプラットフォームに記憶されている他の帽子(または、他のヘッドウェア)の対応する2Dビューとの比較が行われる。
【0117】
いくつかの実装形態では、複数の2Dビューのそれぞれのハッシュ値と、真正の仮想3Dオブジェクトの2Dビューの対応するハッシュ値との間の距離値を計算することができる。距離値の少なくともしきい値数がしきい値距離値を満たす場合、受信された仮想3Dオブジェクトの2Dビューが、真正の仮想3Dオブジェクトの対応する2Dビューと一致するという決定がなされ得る。たとえば、しきい値距離値は、しきい値距離値内にある2Dビューが視覚的に類似するように選択され得る。しきい値距離値は、使用するハッシュ関数のタイプに基づいて選択され得る。
【0118】
いくつかの実装形態では、距離値は、2Dビューに対して計算されたハッシュ値と、真正の仮想3Dオブジェクトの対応する2Dビューのハッシュ値との間で決定される。総距離値は、比較のために選択されたすべての2Dビューにわたって計算された距離値に基づいて決定される。
【0119】
前に説明したように、いくつかの実装形態では、異なるビューのパラメータ化された重み付けが利用され得、いくつかのビューは他のビューとは異なる重み付けがされる。たとえば、3D環境内でユーザ(ビューア)によってより一般的に見られる可能性のあるビューは、あまり一般的ではない可能性のあるビューよりも重み付けされ得る。たとえば、帽子の内側のビューは、帽子の上部のビューよりも重みが少ない場合がある。
【0120】
複合透明度を含む3D仮想オブジェクトにおいて、使用可能な遷移のサブセットのみを含むビューは、より多くの(またはすべての使用可能な)遷移を含むビューとは異なる重み付けがされ得る。
【0121】
部分的に透明な3D仮想オブジェクトにおいて、別のプレイヤによって見られる可能性が高いビューは、他のビューよりも重み付けされ得る。たとえば、仮想3Dオブジェクトが一足の靴で、各靴の上部に水槽を備えている(sported)場合、他のプレイヤが見る靴のビューは、水槽内の魚の視点からキャプチャされたビューよりも重み付けされ得る。
【0122】
いくつかの実装形態では、総距離値は、受信された仮想3Dオブジェクトが真正の仮想3Dオブジェクトに類似しているかどうかを決定するために、あらかじめ定められた距離しきい値と比較される。いくつかの実装形態では、距離しきい値は、受信された仮想3Dオブジェクトのカテゴリタイプに基づく値に設定され得る。いくつかの実装形態では、距離しきい値は、以前に利用された距離しきい値、およびそれらの距離しきい値に基づいて偽造または本物のオブジェクトとして以前に分類されたオブジェクトに基づいて(たとえば、ゲームサーバ102によって)調整され得る。
【0123】
いくつかの実装形態では、しきい値距離値、あらかじめ定められた距離しきい値、および距離値のしきい値数は、構成可能な値であり得る。いくつかの実装形態では、しきい値距離値、あらかじめ定められた距離しきい値、および距離値のしきい値数は、受信された仮想3Dオブジェクトのカテゴリタイプに基づく値に設定され得る。
【0124】
たとえば、ゲームプラットフォーム内で偽造の頻度がより高い特定のオブジェクトカテゴリは、偽造の頻度がより低いカテゴリに属する受信された仮想3Dオブジェクトと比較した場合、類似度がより低いと、それらのカテゴリの受信された仮想3Dオブジェクトに偽造のフラグが立てられる可能性があるしきい値を使用し得る。たとえば、シャツおよびズボンは、簡単に、頻繁に、そして非常に迅速に偽造される仮想3Dオブジェクトの例である。コンテンツの作成とアップロードにかかる作業がより少ない仮想3Dオブジェクトは、コピーされる傾向がより高くなる。
【0125】
いくつかの実装形態では、以前に分類された偽造されたオブジェクトと、他の技法を使用して(たとえば、手動認証によって)それらの偽造の性質を確認することとに基づいてしきい値を改良するために、機械学習技法が利用され得る。いくつかの実装形態では、偽造アニメーション作品の検出は、レンダリングされたアニメーションのビデオの知覚ハッシュを利用し得る。
【0126】
いくつかの実装形態では、仮想3Dオブジェクトがテクスチャを含む3Dモデルである場合、3Dモデルに関連付けられるメッシュポリゴンに適用された後、テクスチャを含む仮想3Dオブジェクトの2Dビューがキャプチャされる。
【0127】
いくつかの実装形態では、テクスチャを仮想3Dオブジェクトにマッピングするために指定されたUVマッピングと組み合わせたテクスチャは、知覚ハッシュプロセスにおいて利用される。たとえば、受信された仮想3Dオブジェクトのテクスチャ/UVマッピングの知覚ハッシュが計算され、他の本物のテクスチャ/UVマッピングの知覚ハッシュと比較される。
【0128】
ブロック420において、受信された仮想3Dオブジェクトの2Dビューのハッシュ値が、真正の仮想3Dオブジェクトの対応する2Dビューと一致すると決定された場合、ブロック420の後にブロック425が続く。
【0129】
ブロック425において、受信された仮想3Dオブジェクトは、偽造されたオブジェクトとして分類される。いくつかの実装形態では、分類された偽造されたオブジェクトが仮想プラットフォーム(ゲームプラットフォーム)のリストから除外され得る。いくつかの実装形態では、オブジェクトに偽造のフラグが立てられたことを示すメッセージが、アップローダおよび/または仮想環境の管理者に提供され得る。いくつかの実装形態では、偽造されたオブジェクトは、さらなるレビューのため(たとえば、ゲームプラットフォームに関連付けられる管理者による手動レビューのため)にフラグが立てられる場合がある。
【0130】
ブロック420において、受信された仮想3Dオブジェクトの2Dビューのハッシュ値が、真正の仮想3Dオブジェクトの対応する2Dビューと一致しないと決定された場合、ブロック420の後にブロック430が続く。
【0131】
ブロック430において、受信された仮想3Dオブジェクトは、本物のオブジェクトとして分類される。いくつかの実装形態では、本物のオブジェクトとしての分類は、仮想3Dオブジェクトを分類するために、シグナルとして使用され、他のシグナル(たとえば、3Dオブジェクトの手動レビュー、3Dオブジェクトをアップロードする開発者に関連付けられる開発者の評価など)と組み合わせられる。
【0132】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトを本物のオブジェクトとして分類した後、認証されていない仮想3Dオブジェクトの複数の2Dビューが(たとえば、データストア120に)記憶され、その後受信され得る他の仮想3Dオブジェクトを認証するために利用され得る。記憶された本物のオブジェクトは、仮想環境において使用できるようになる場合がある。さらに、仮想環境が、ユーザが本物のオブジェクトを購入すること(たとえば、仮想通貨の支払いによって)、またはサブスクリプションを介して本物のオブジェクトへのアクセスを取得することを可能にする場合、本物のオブジェクト(ブロック430において分類された後の認証されていない仮想オブジェクト)は、ユーザにとって使用できるようになる。
【0133】
ブロック405~430は、上記とは異なる順序で実行(または、反復)することができ、および/あるいは1つまたは複数のステップを省略することができる。たとえば、ブロック420は、たとえば、複数の知られている真正のオブジェクト(たとえば、認証されていない仮想オブジェクトと同じカテゴリタイプのもの)を認証されていない仮想オブジェクトと比較するために、複数回実行され得る。複数の比較のうちのいずれかがハッシュ値が一致することを検出した場合、そのオブジェクトは偽造品として分類され得る。このようにして、方法400の一部は、受信された仮想3Dオブジェクトが、プラットフォームに記憶されているカテゴリタイプ(オブジェクトタイプ)のすべての本物のオブジェクトと比較されるまで繰り返され得る。いくつかの実装形態では、ブロック420における比較に使用するために、真正の仮想3Dオブジェクトの2Dビューが計算され得る。
【0134】
いくつかの実装形態では、ゲームプラットフォーム上で受信された仮想3Dオブジェクトは、偽造されたオブジェクトを検出して、そのようなオブジェクトへのユーザアクセスを軽減するために、あらかじめ定められた頻度(たとえば、毎日、隔日、毎時など)でスキャンされ得る。いくつかの実装形態では、コピーされる可能性が高い受信された仮想3Dオブジェクトは、コピーされる可能性が低い仮想3Dオブジェクトよりも高い頻度でスキャンされ得る。いくつかの実装形態では、方法400は、アップロードを介して新しいオブジェクトが受信されるたびに実行され得る。いくつかの実装形態では、方法400は、記憶されたオブジェクトが修正されたときに実行され得る。
【0135】
いくつかの実装形態では、しきい値距離を更新するために、プラットフォーム上で遭遇する偽造されたオブジェクトに関するユーザフィードバックが利用され得、方法400は、1つまたは複数の以前に認証されたオブジェクトに対して実行され得る。
【0136】
いくつかの実装形態では、本物のオブジェクトとしての分類は、仮想3Dオブジェクトを分類するために、シグナルとして使用され、他のシグナル(たとえば、3Dオブジェクトの手動レビュー、3Dオブジェクトをアップロードする開発者に関連付けられる開発者の評価など)と組み合わせられる。
【0137】
いくつかの実装形態では、認証されていない仮想3Dオブジェクトを本物のオブジェクトとして分類した後、認証されていない仮想3Dオブジェクトの複数の2Dビューが(たとえば、データストア120に)記憶され、その後受信され得る他の仮想3Dオブジェクトを認証するために利用され得る。
【0138】
図5は、本明細書で説明される1つまたは複数の機能を実装するために使用され得る例示的なコンピューティングデバイス500のブロック図である。一例では、コンピュータデバイス(たとえば、
図1の102および/または110)を実装することと、本明細書に記載の適切な方法実装形態を実行することとを行うために、デバイス500が使用され得る。コンピューティングデバイス500は、任意の適切なコンピュータシステム、サーバ、または他の電子またはハードウェアデバイスであり得る。たとえば、コンピューティングデバイス500は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、または電子デバイス(ポータブルデバイス、モバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、携帯情報端末(PDA)、メディアプレイヤ、ゲームデバイス、ウェアラブルデバイスなど)であってよい。いくつかの実装形態では、デバイス500は、プロセッサ502、メモリ504、入力/出力(I/O)インターフェース506、およびオーディオ/ビデオ入力/出力デバイス514を含む。
【0139】
プロセッサ502は、プログラムコードを遂行し、デバイス500の基本的な動作を制御するための1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号、または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズム、あるいはコンポーネントを含む。プロセッサは、汎用中央処理装置(CPU)、複数の処理装置、機能を達成するための専用回路、または他のシステムを備えたシステムを含み得る。処理は特定の地理的な場所に限定される必要はなく、時間的な制限もない。たとえば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などにおいてその機能を実行し得る。処理の一部は、異なる時間に、異なる場所で、異なる(または、同じ)処理システムによって実行され得る。コンピュータは、メモリと通信する任意のプロセッサであり得る。
【0140】
メモリ504は、通常、プロセッサ502によるアクセスのためにデバイス500において提供され、たとえば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去可能読取り専用メモリ(EEPROM)、フラッシュメモリなどであり得、プロセッサによって遂行するための命令を記憶するために適しており、プロセッサ502とは別に配置され、および/またはプロセッサ502と統合されている、任意の適切なプロセッサ可読ストレージ媒体であり得る。メモリ504は、オペレーティングシステム508、1つまたは複数のアプリケーション510、たとえば、オーディオ空間化アプリケーションおよびアプリケーションデータ512を含む、プロセッサ502によってサーバデバイス500上で動作するソフトウェアを記憶することができる。いくつかの実装形態では、アプリケーション510は、プロセッサ502が本明細書に記載の機能を実行する(または、その機能を制御する)ことを可能にする命令、たとえば、
図4に関して説明される方法のいくつかまたはすべてを含むことができる。
【0141】
たとえば、アプリケーション510は、オーディオ空間化モジュール512を含むことができ、これは、本明細書で説明されるように、オンラインゲームサーバ(たとえば、102)内にオーディオ空間化を提供することができる。あるいは、メモリ504内の任意のソフトウェアを、任意の他の適切なストレージ場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ504(および/または他の接続されたストレージデバイス)は、本明細書で説明される機能において使用される命令およびデータを記憶することができる。メモリ504および他のタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「ストレージデバイス」と見なすことができる。
【0142】
I/Oインターフェース506は、サーバデバイス500を他のシステムおよびデバイスとインターフェースすることを可能にする機能を提供することができる。たとえば、ネットワーク通信デバイス、ストレージデバイス(たとえば、メモリおよび/またはデータストア120)、および入力/出力デバイスは、インターフェース506を介して通信することができる。いくつかの実装形態では、I/Oインターフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナなど)および/または出力デバイス(ディスプレイデバイス、スピーカデバイス、プリンタ、モータなど)を含むインターフェースデバイスに接続することができる。
【0143】
オーディオ/ビデオ入力/出力デバイス514は、ユーザ入力を受信するために使用することができるユーザ入力デバイス(たとえば、マウスなど)、ディスプレイデバイス(たとえば、画面、モニタなど)、および/またはグラフィカルおよび/またはビジュアル出力を提供するために使用できる、入力デバイスとディスプレイデバイスの組合せを含むことができる。
【0144】
説明を容易にするために、
図5は、プロセッサ502、メモリ504、I/Oインターフェース506、およびソフトウェアブロック508および510のそれぞれについて1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサあるいは処理回路、オペレーティングシステム、メモリ、I/Oインターフェース、アプリケーション、および/またはソフトウェアエンジンを表す場合がある。他の実装形態では、デバイス500は、図示されるコンポーネントのすべてを有さない場合があり、および/または本明細書に示されるものの代わりに、またはそれに加えて、他のタイプの要素を含む他の要素を有する場合がある。オンラインゲームサーバ102は、本明細書のいくつかの実装形態において説明されるような動作を実行するものとして説明されるが、オンラインゲームサーバ102または同様のシステムの任意の適切なコンポーネントまたはコンポーネントの組合せ、あるいはそのようなシステムに関連付けられる任意の適切なプロセッサまたは複数のプロセッサは、説明された動作を実行し得る。
【0145】
ユーザデバイスはまた、本明細書に記載の機能を実装および/または使用することができる。例示的なユーザデバイスは、デバイス500と同様の何らかのコンポーネント、たとえば、プロセッサ502、メモリ504、およびI/Oインターフェース506を含むコンピュータデバイスであり得る。クライアントデバイスに適したオペレーティングシステム、ソフトウェア、およびアプリケーションは、メモリにおいて提供され、プロセッサによって使用することができる。クライアントデバイスのI/Oインターフェースは、ネットワーク通信デバイス、ならびに入力デバイスおよび出力デバイス、たとえば、サウンドをキャプチャするためのマイクロフォン、画像またはビデオをキャプチャするためのカメラ、ユーザ入力をキャプチャするためのマウス、ユーザのジェスチャーを認識するためのジェスチャーデバイス、ユーザ入力を検出するためのタッチスクリーン、サウンドを出力するためのオーディオスピーカデバイス、画像またはビデオを出力するためのディスプレイデバイス、あるいは他の出力デバイスに接続することができる。オーディオ/ビデオ入力/出力デバイス514内のディスプレイデバイスは、本明細書で説明されるように前処理および後処理の画像を表示するために、たとえば、デバイス500に接続され(または、含まれ)てよく、そのようなディスプレイデバイスは、任意の適切なディスプレイデバイス、たとえば、LCD、LED、またはプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、プロジェクタ、または他の視覚的ディスプレイデバイスを含むことができる。いくつかの実装形態は、たとえば、テキストを話す音声出力または合成などのオーディオ出力デバイスを提供することができる。
【0146】
本明細書に記載の1つまたは複数の方法(たとえば、方法400)は、コンピュータ上で遂行することができるコンピュータプログラム命令またはコードによって実装することができる。たとえば、コードは、1つまたは複数のデジタルプロセッサ(たとえば、マイクロプロセッサまたは他の処理回路)によって実装することができ、非一時的コンピュータ可読媒体(たとえば、ストレージ媒体)、たとえば、磁気、光学、電磁、あるいは半導体またはソリッドステートメモリを含む半導体ストレージ媒体、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、リジッドマグネティックディスク、光ディスク、ソリッドステートメモリドライブなどを含むコンピュータプログラム製品に記憶することができる。プログラム命令はまた、たとえば、サーバ(たとえば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SaaS)の形で、電子信号に含まれ、電子信号として提供され得る。あるいは、1つまたは複数の方法をハードウェア(論理ゲートなど)において実装することも、ハードウェアとソフトウェアの組合せにおいて実装することもできる。ハードウェアの例は、プログラマブルプロセッサ(たとえば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)などがある。1つまたは複数の方法は、システムで実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと組み合わせて実行されているアプリケーションまたはソフトウェアとして実行することができる。
【0147】
本明細書で説明する1つまたは複数の方法は、任意のタイプのコンピューティングデバイスにおいて実行できるスタンドアロンプログラム、ウェブブラウザにおいて実行されるプログラム、モバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、ジュエリ、ヘッドウェア、ゴーグル、グラスなど)、ラップトップコンピュータなど)において実行されるモバイルアプリケーション(「アプリ」)で実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、たとえば、モバイルコンピューティングデバイス(クライアントデバイスとして)は、ユーザ入力データをサーバデバイスに送信し、サーバから出力用(たとえば、表示用)の最終出力データを受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で分割することができる。
【0148】
説明は、特定の実装形態に関して説明されてきたが、これらの特定の実装形態は単なる例示であり、限定的ではない。例に示されている概念は、他の例および実装形態に適用され得る。
【0149】
本開示で説明される機能ブロック、動作、機能、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組合せに統合されてもよく、分割されてもよいことに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技法が使用され得る。異なるプログラミング技法、たとえば、手続き型またはオブジェクト指向が採用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサにおいて遂行され得る。ステップ、操作、または計算は特定の順序で提示される場合があるが、異なる特定の実装形態において順序が変更され得る。いくつかの実装形態では、本明細書においてシーケンシャルとして示されている複数のステップまたは動作が同時に実行されてもよい。
【符号の説明】
【0150】
100 システムアーキテクチャ
102 ゲームサーバ
102 オンラインゲームサーバ
104 ゲームエンジン
106 ゲーム
108 グラフィックエンジン
110 クライアントデバイス
110a、110b、110n クライアントデバイス
112 ゲームアプリケーション
114 入力/出力(I/O)インターフェース
120 データストア
122 ネットワーク
130 開発者デバイス
130a、130n 開発者デバイス
132 ゲームアプリケーション
134 I/Oインターフェース
210 仮想3Dオブジェクト
220 ゲームのカテゴリ
220 リスト
220a 人気のあるゲーム
220b トップのソーシャルゲーム
220c トップのアドベンチャゲーム
220n ユーザに推奨されるゲーム
230a 仮想照明
230b 仮想照明
230 個々のゲームのリスト
250a トークン
250b トークン
300 方法
310 仮想3Dオブジェクト
310 帽子
310a~d 受信された仮想3次元(3D)オブジェクトのビュー
310a 受信された仮想オブジェクトの3Dビュー
310b 受信された仮想オブジェクトの上面ビュー
310c 受信された仮想オブジェクトの底面ビュー
310d 受信された仮想オブジェクトの側面ビュー
320 真正の仮想3Dオブジェクト
320a~d 一致しない仮想3次元(3D)オブジェクトのビュー
320c 底面ビュー
330 真正の仮想3Dオブジェクト
330a~d 一致する仮想3次元(3D)オブジェクトのビュー
330c 底面ビュー
350 ハートサイン
400 方法
500 方法
500 コンピューティングデバイス
500 サーバデバイス
502 プロセッサ
504 メモリ
506 入力/出力(I/O)インターフェース
508 オペレーティングシステム
508 ソフトウェアブロック
510 アプリケーション
510 ゲームアプリケーション
510 ソフトウェアブロック
512 オーディオ空間化アプリケーションおよびアプリケーションデータ
512 オーディオ空間化モジュール
514 オーディオ/ビデオ入力/出力デバイス
520 ゲームソートジェネレータ
530 キーワードコンストラクタおよびエバリュエータ
540 チケットコンストラクタ
550 クエリ記述子
560 ゲームソータ(ゲームソートジェネレータ)
570 ゲーム統計モニタ
580 チケットジェネレータ(チケットコンストラクタ)