KR20220070032A - 위조의 가상 오브젝트의 검출 - Google Patents

위조의 가상 오브젝트의 검출 Download PDF

Info

Publication number
KR20220070032A
KR20220070032A KR1020227014703A KR20227014703A KR20220070032A KR 20220070032 A KR20220070032 A KR 20220070032A KR 1020227014703 A KR1020227014703 A KR 1020227014703A KR 20227014703 A KR20227014703 A KR 20227014703A KR 20220070032 A KR20220070032 A KR 20220070032A
Authority
KR
South Korea
Prior art keywords
virtual
views
unauthenticated
view
implementations
Prior art date
Application number
KR1020227014703A
Other languages
English (en)
Inventor
로빈 이. 메이스
코트렌드 알. 칼드웰
레베카 엘. 헤른돈
하리하란 나타라잔
Original Assignee
로브록스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로브록스 코포레이션 filed Critical 로브록스 코포레이션
Publication of KR20220070032A publication Critical patent/KR20220070032A/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/75Enforcing rules, e.g. detecting foul play or generating lists of cheating players
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/63Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/73Authorising game programs or game devices, e.g. checking authenticity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • G06V20/647Three-dimensional objects by matching two-dimensional images to three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/95Pattern authentication; Markers therefor; Forgery detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Business, Economics & Management (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Analysis (AREA)

Abstract

여기서 설명된 구현예는 위조 가상 3차원(3D) 오브젝트를 검출하기 위한 방법, 시스템 및 컴퓨터 판독가능 미디어에 관한 것이다. 일부 구현예에서, 컴퓨터 구현 방법은 인증되지 않은 가상 3D 오브젝트를 수신하는 단계를 포함한다. 방법은 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 단계를 더 포함한다. 일부 구현예에서, 복수의 2D 뷰는 적어도 두 개의 2D 뷰를 포함하고, 복수의 2D 뷰의 각 뷰는 각각의 뷰 포인트로부터 캡처된다. 방법은 복수의 2D 뷰의 각 2D뷰에 대한 해시 값을 계산하는 단계를 더 포함한다. 방법은 복수의 2D 뷰 중 적어도 두 개의 2D 뷰의 각각의 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값과 매칭하는지 여부를 결정하는 단계 및 각각의 해시 값이 매칭한다고 결정되는 경우, 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 단계를 더 포함한다.

Description

위조의 가상 오브젝트의 검출
실시예는 일반적으로 컴퓨터 기반 게이밍에 관한 것이며 더 구체적으로, 위조 가상 오브젝트의 검출에 대한 방법, 시스템 및 컴퓨터 판독가능 매체에 관한 것이다.
일부 온라인 플랫폼(예컨대, 게이밍 플랫폼, 미디어 교환 플랫폼 등)은 사용자가 서로 연결하고, (예컨대, 게임 내에서) 서로 상호작용하고, 게임을 생성하고, 인터넷을 통하여 서로 정보를 공유하도록 허용한다. 온라인 게이밍 플랫폼의 사용자는 멀티플레이어 게이밍 환경 또는 가상 환경(예컨대, 3차원 환경)에 참가하고, 맞춤 게이밍 환경을 설계하고, 캐릭터 및 아바타를 설계하고, 아바타를 꾸미고, 가상 아이템/오브젝트를 다른 사용자와 교환하며, 오디오 또는 텍스트 메시지를 이용하여 다른 사용자와 통신하는 등을 할 수 있다. 메타버스 또는 멀티버스 환경과 같은 환경은 참가하는 사용자가 다른 사용자와 그들의 생성의 오브젝트를 공유하거나, 팔거나 거래할 수 있게 할 수 있다.
일부 구현예가 상기에 비추어 도출된다.
일 양상에 따르면, 위조 가상 3차원(3D)오브젝트를 검출하기 위한 컴퓨터 구현 방법이 제공된다. 방법은 인증되지 않은 가상 3D 오브젝트를 수신하는 단계; 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 단계; 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 단계; 복수의 2D 뷰 중 적어도 두 개의 각각의 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값과 매칭하는지 여부를 결정하는 단계; 및 각각의 해시 값이 매칭한다고 결정되는 경우, 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 단계를 포함한다.
일부 구현예에서, 복수의 2D 뷰는 적어도 두 개의 2D 뷰를 포함하고, 복수의 2D 뷰의 각 뷰는 각각의 뷰 포인트로부터 캡처된다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰를 결정하는 단계는 미리 결정된 조명 조건 하에서 복수의 2D 뷰를 결정하는 단계를 포함한다. 일부 구현예에서, 해시 값은 지각 해시 함수를 이용하여 계산된다.
일부 구현예에서, 각각의 해시 값이 매칭하는지 여부를 결정하는 단계는 복수의 2D 뷰 중 적어도 두 개의 2D 뷰의 각각의 해시 값과 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값 사이의 거리 값을 연산하는 단계; 적어도 임계 수의 거리 값이 임계 거리 값을 만족한다는 결정에 기초하여 각각의 해시 값이 매칭한다고 결정하는 단계를 포함한다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트를 수신하는 단계는 인증되지 않은 가상 3D 오브젝트의 3D 메시(mesh)를 수신하는 단계를 포함한다. 일부 구현예에서, 3D 메시는 텍스처 정보를 포함한다.
일부 구현예에서, 적어도 두 개의 2D 뷰는 인증되지 않은 가상 3D 오브젝트의 카테고리에 기초하여 선택된다. 일부 구현예에서, 뷰 포인트는 가상 3D 오브젝트의 사용자 가시부(user visible portion)에 기초하여 결정된다. 일부 구현예에서, 가상 3D 오브젝트는 가상 아바타에 의해 착용되고, 사용자 가시부는 가상 아바타의 포즈에 의존한다.
일부 구현예에서, 방법은 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 단계 이후, 가상 플랫폼에서의 리스트로부터 위조 3D 오브젝트를 제외하는 단계를 더 포함한다. 일부 구현예에서, 방법은 결정하는 단계를 복수 회 수행하는 단계를 더 포함한다. 일부 구현예에서, 결정하는 단계는 다른 인증된 가상 3D 오브젝트로 복수 회의 각각이 수행된다.
일부 구현예에서, 방법은 각각의 해시 값이 매칭하지 않는다고 결정되는 경우, 인증되지 않은 가상 3D 오브젝트를 정품(genuine) 3D 오브젝트로서 분류하는 단계를 더 포함한다. 일부 구현예에서, 방법은 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로서 분류하는 단계 이후, 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰를 저장하는 단계를 더 포함한다.
다른 양상에 따라, 컴퓨터 구현 방법이 위조 가상 3차원(3D) 오브젝트를 검출하기 위해 제공된다. 방법은 인증되지 않은 가상 3D 오브젝트를 수신하는 단계; 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 단계; 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 단계; 복수의 거리 값을 결정하는 단계; 복수의 거리 값에 기초하여 총 거리 값을 결정하는 단계; 및 총 거리 값이 미리 결정된 임계 거리 값을 만족하는 경우, 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 단계를 포함한다.
일부 구현예에서, 각 거리 값은 상기 복수의 2D 뷰 중 2D 뷰의 각각의 해시 값과 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값 사이의 거리를 나타낸다.
일부 구현예에서, 복수의 2D 뷰의 각 뷰는 각각의 뷰 포인트로부터 캡처된다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형과 인증된 가상 3D 오브젝트의 오브젝트 유형은 동일하다.
일부 구현예에서, 복수의 2D 뷰는 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형의 적어도 일부에 기초하여 선택된다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰를 결정하는 단계는 미리 정해진 조명 조건 하에서 복수의 2D 뷰를 결정하는 단계를 포함한다.
일부 구현예에서, 방법은 결정하는 것을 복수 회 수행하는 단계를 더 포함하고, 결정하는 것은 다른 인증된 가상 3D 오브젝트로 복수 회의 각각이 수행된다.
일부 구현예에서, 방법은 총 거리 값이 미리 결정된 임계 거리 값을 만족하지 못하는 경우, 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로서 분류하는 단계를 더 포함한다.
다른 양상에 따르면, 비일시적 컴퓨터 판독가능 기록 매체는 프로세싱 장치에 의한 실행에 응답하여, 프로세싱 장치로 하여금 동작들을 수행하도록 하는 명령어를 가지고, 동작들은 인증되지 않은 가상 3D 오브젝트를 수신하는 동작; 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 동작; 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 동작; 복수의 거리 값을 결정하는 동작; 복수의 거리 값에 기초하여 총 거리 값을 결정하는 동작; 및 총 거리 값이 미리 결정된 임계 거리 값을 만족하는 경우, 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 동작을 포함한다.
일부 구현예에서, 각 거리 값은 복수의 2D 뷰의 2D 뷰의 각 해시 값과 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값 사이의 거리를 나타낸다. 일부 구현예에서, 복수의 2D 뷰의 각 2D뷰는 각각의 뷰 포인트로부터 캡처된다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰를 결정하는 동작은 미리 결정된 조명 조건 하에서 복수의 2D 뷰를 결정하는 동작을 포함한다. 일부 구현예에서, 해시 값은 지각 해시 함수를 이용하여 계산된다.
일부 구현예에서, 복수의 뷰는 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형의 적어도 부분적으로 기초하여 선택된다.
일부 구현예에서, 동작들은 총 거리 값이 미리 결정된 임계 거리 값을 만족하지 않는 경우, 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로서 분류하는 동작을 더 포함한다.
또 다른 양상에 따르면, 시스템은 명령어가 저장된 메모리; 및 메모리에 결합된 프로세싱 장치를 포함하고, 프로세싱 장치는 메모리에 액세스하고, 명령어를 실행하도록 구성된다. 일부 구현예에서, 명령어는 프로세싱 장치로 하여금 동작들을 수행하도록 하며, 동작들은 인증되지 않은 가상 3D 오브젝트를 수신하는 동작; 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 동작; 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 동작; 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰 중 적어도 두 개의 2D 뷰의 각각의 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값과 매칭하는지 여부를 결정하는 동작; 및 각각의 해시 값이 매칭한다고 결정되는 경우, 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 동작을 포함하는 동작들을 수행하도록 한다.
일부 구현예에서, 복수의 2D 뷰의 각 2D 뷰는 각각의 뷰 포인트로부터 캡처된다.
일부 구현예에서, 해시 값은 지각 해시 함수를 이용하여 계산한다. 일부 구현예에서, 복수의 뷰는 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형의 적어도 일부에 기초하여 선택된다.
일부 구현예에서, 동작은 결정하는 것을 복수 회 수행하는 동작을 더 포함한다. 일부 구현예에서, 결정하는 것은 다른 인증된 가상 3D 오브젝트로 복수 회 각각이 수행된다.
일부 구현예에서, 동작들은 각각의 해시 값이 매칭하지 않는다고 결정되는 경우, 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로서 분류하는 동작을 더 포함한다.
도 1은 일부 구현예에 따라, 위조 가상 오브젝트의 검출을 위한 예시적인 시스템 아키텍처의 도면이다.
도 2는 일부 구현예에 따라, 다른 뷰 포인트로부터 가상 3D 오브젝트의 2D 뷰의 예시적인 캡처를 예시한다.
도 3은 일부 구현예에 따라, 매칭하는 가상 3차원(3D) 오브젝트와 매칭하지 않는 3D 오브젝트를 비교하여, 수신된 가상 3차원(3D) 오브젝트의 예시적인 2차원(2D) 뷰를 예시하는 도면이다.
도 4는 일부 구현예에 따라 위조 가상 오브젝트를 검출하기 위한 예시적인 방법을 예시하는 플로우차트이다.
도 5는 일부 구현예에 따라 예시적인 컴퓨팅 장치를 예시하는 블록도이다.
이하의 상세한 설명에서 본 개시의 일부를 이루는 첨부된 도면이 참조된다. 문맥에서 달리 지시하고 있지 않은 한, 통상적으로, 도면에서 유사한 부호는 유사한 컴포넌트를 나타낸다. 상세한 설명, 도면, 그리고 청구범위에 설명되는 예시적인 실시예는 제한적으로 여겨지지 않는다. 본 개시에서 제시되는 대상의 범위 또는 사상에서 벗어나지 않으면서도 다른 실시예가 이용되거나, 다른 변경이 이루어질 수 있다. 여기에서 일반적으로 설명되고, 도면에 도시되는 본 개시의 양상은 다양한 다른 구성으로 배열, 대체, 조합, 분리, 및 설계될 수 있음과 이 모두가 여기에서 고려됨이 기꺼이 이해될 것이다.
“일부 실시예”, “일 실시예”, “예시적인 실시예” 등에 대한 명세서에서 참조는 특정한 특징, 구조 또는 특성을 포함할 수 있는 설명된 실시예를 나타내지만 모든 실시예가 특정한 특징, 구조 또는 특성을 포함할 필요는 없을 수 있다. 또한, 이러한 구절은 동일한 실시예에 대해 지칭할 필요가 없다. 또한, 특정한 특징, 구조 또는 특성이 실시예와 관련되어 설명되는 경우, 이러한 특징, 구조 또는 특성은 명시적으로 설명되는지 여부와 관계없이 다른 실시예와 관련되어 영향을 받을 수 있다.
온라인 게이밍 플랫폼("사용자 생성 컨텐츠 플랫폼" 또는 "사용자 생성 컨텐츠 시스템"으로도 지칭됨)은 사용자가 서로 상호작용하기 위한 다양한 방식을 제공한다. 예를 들어, 온라인 게이밍 플랫폼의 사용자는 공통 목표를 향해 함께 작업하고, 다양한 가상 게이밍 아이템을 공유하고, 전자 메시지를 서로에게 송신하는 등을 할 수 있다. 온라인 게이밍 플랫폼의 사용자는 가상 캐릭터, 플레이하는 게임-특정 역할로 게임에 조인할 수 있다. 예를 들어, 가상 캐릭터는 팀 또는 멀티플레이어 환경에 참여할 수 있고 여기서 각 캐릭터는 특정 역할을 정하고 역할에 대응하는 연관된 파라미터, 예컨대, 의류, 갑옷, 무기, 스킬 등을 가진다. 다른 예시에서, 가상 캐릭터는 예컨대, 싱글 플레이어가 게임에 참여하는 경우, 컴퓨터 생성 캐릭터일 수 있는 하나 이상의 NPC(non-player character)에 의해 조인될 수 있다.
온라인 게이밍 플랫폼은 또한 플랫폼의 사용자(개발자)가 새로운 게임 및 캐릭터를 생성하도록 허용할 수 있다. 예를 들어, 온라인 게이밍 플랫폼의 사용자는 새로운 캐릭터(아바타), 새로운 애니메이션 패키지를 생성, 설계 및/또는 커스터마이즈하도록 허용될 수 있고, 그것을 다른 사용자에게 이용가능하게 할 수 있다.
새로운 캐릭터 및 애니메이션 패키지(가상 오브젝트)는 가상 및/또는 실제 통화를 위해 온라인 시장에서 거래되거나 교환되거나 사고 팔릴 수 있다. 가상 오브젝트는 가상 오브젝트의 위조 성질(counterfeit nature)의, 재판매자 또는 구매자의 인식 없이 복제되고 재분배될 수 있다.
시장에서 위조 가상 오브젝트의 쇄도(flooding)는 검출하기 어려울 수 있고 가상 오브젝트의 양과 성질은 위조 가상 오브젝트의 검출에서 인간 개입을 어렵게 만들 수 있다.
게임 플랫폼 소유자 또는 관리자의 목적은 위조 오브젝트의 완화이고 원본 컨텐츠의 생성자에게 인센티브를 제공하는 것이다. 게임 플랫폼 오퍼레이터에 대한 기술적 문제는 게임 플랫폼 전체에 걸친 위조 가상 오브젝트의 검출이다.
위조 가상 오브젝트의 빠른 검출은 위조 가상 오브젝트의 생성자가 위조 가상 오브젝트를 생성하고 전파하는 데에 어렵고/거나 비용이 많이 들게 할 수 있다. 위조 가상 오브젝트의 업로드를 방지하는 게임 플랫폼은 위조 오브젝트 생성자를 효과적으로 단념시킬 수 있다.
검출을 회피하기 위해, 생성자는 때때로 원본 가상 오브젝트를 조작하여 조작된 오브젝트를 생성할 수 있다. 조작된 오브젝트와 정품 오브젝트 간의 차이가 감지 가능하지 않을 수 있지만, 조작된 오브젝트는 일부 위조 검출 기법에 의해 원본으로서 분류될 수 있다.
본 개시는 게임 플랫폼에 알려진 정품 오브젝트와 유사한 위조 오브젝트를 검출함으로써 위에서 설명된 문제를 해결한다. 원본 가상 오브젝트에 대한 위조 가상 오브젝트의 유사도(지각 해시 매칭)는 위조 오브젝트의 검출을 위해 활용된다.
지각 해시 매칭은 컨텐츠로부터의 다양한 특징에서 비롯된 멀티미디어 파일(이미지 파일, 오디오 파일, 비디오 파일 등)의 지문(fingerprint)인 지각 해시 함수를 활용한다. 두 파일의 지각 해시는, 그들의 근본적인 특징이 유사한 경우, 서로 가깝다. 지각 해시 함수는 파일의 변환(회전, 스큐(skew), 대비 조정, 파일의 다른 압축/포맷의 사용 등)을 고려하지만 원본 파일과 유사한 변환된 파일을 검출하도록 강력하게 설계된다.
도 1은 본 개시의 일부 구현예에 따라, 예시적인 시스템 아키텍처(100)를 예시한다. 도 1과 다른 도면은 동일 요소를 식별하도록 동일한 참조 번호를 이용한다. "110"과 같은 참조 번호 뒤 문자는 텍스트가 구체적으로 특정 참조 번호를 가지는 요소를 지칭함을 나타낸다. 이후 "110"과 같이 뒤따르는 문자가 없는 텍스트 내 참조 번호는 참조 번호를 포함하는 도면에서의 요소의 일부 또는 임의의 것을 지칭한다(예컨대, 텍스트에서 "110"은 도면에서 참조 번호 "110a", "110b" 및/또는 "110n"를 지칭한다).
시스템 아키텍처(100)(여기서 "시스템"으로도 지칭됨)는 온라인 게이밍 서버(102), 데이터 저장소(120), 클라이언트 장치(110a, 110b 및 110n)(여기서, 일반적으로 "클라이언트 장치(110)"로 지칭됨) 및 개발자 장치(130a 및 130n)(여기서, 일반적으로 "개발자 장치(130)"로 지칭됨)를 포함한다. 게이밍 서버(102), 데이터 저장소(120), 클라이언트 장치(110) 및 개발자 장치(130)는 네트워크(122)를 통해 결합된다. 일부 구현예에서, 클라이언트 장치(110) 및 개발자 장치(130)는 동일하거나 장치의 동일한 유형을 지칭할 수 있다.
온라인 게이밍 서버(102)는 다른 것들 중에서도, 게임 엔진(104), 하나 이상의 게임(106) 및 그래픽 엔진(108)을 포함할 수 있다. 클라이언트 장치(110)는 게임 어플리케이션(112) 및 입력/출력(I/O) 인터페이스(114)(예컨대, 입력/출력 장치)를 포함할 수 있다. 입력/출력 장치는 마이크로폰, 스피커, 헤드폰, 디스플레이 장치, 마우스, 키보드, 게임 컨트롤러, 터치 스크린, 가상 현실 콘솔 등 중 하나 이상을 포함할 수 있다.
개발자 장치(130)는 게임 어플리케이션(132) 및 입력/출력(I/O) 인터페이스(134)(예컨대, 입력/출력 장치)를 포함할 수 있다. 입력/출력 장치는 마이크로폰, 스피커, 헤드폰, 디스플레이 장치, 마우스, 키보드, 게임 컨트롤러, 터치 스크린, 가상 현실 콘솔 등 중 하나 이상을 포함할 수 있다.
시스템 아키텍처(100)는 예시의 목적으로 제공된다. 다른 구현예에서, 시스템 아키텍처(100)는 도 1에서 도시된 바와 동일하거나 상이한 방식으로 구성되는, 동일하거나, 더 적거나, 더 많거나 상이한 요소를 포함할 수 있다.
일부 구현예에서, 네트워크(122)는 공공 네트워크(예컨대, 인터넷), 개인 네트워크(예컨대, 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)), 유선 네트워크(예컨대, 이더넷 네트워크), 무선 네트워크(예컨대, 802.11 네트워크, Wi-Fi®네트워크 또는 무선 LAN(WLAN)), 셀룰러 네트워크(예컨대, 5G 네트워크, LTE(Long Term Evolution) 네트워크 등), 라우터, 허브, 스위치, 서버 컴퓨터 또는 그들의 조합을 포함할 수 있다.
일 구현예에서, 데이터 저장소(120)는 비일시적 컴퓨터 판독가능 메모리(예컨대, 랜덤 액세스 메모리(random access memory; RAM)), 캐시, 드라이브(예컨대, 하드 드라이브), 플래시 드라이브, 데이터베이스 시스템 또는 데이터를 저장할 수 있는 다른 유형의 장치 또는 컴포넌트일 수 있다. 데이터 저장소(120)는 또한 복수의 컴퓨팅 장치(예컨대, 복수의 서버 컴퓨터)에 걸칠 수 있는 복수의 저장 컴포넌트(예컨대, 복수의 드라이브 또는 복수의 데이터베이스)를 포함할 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102)는 하나 이상의 컴퓨팅 장치(예컨대, 클라우드 컴퓨팅 시스템, 랙마운트 서버(rackmount server), 서버 컴퓨터, 물리적 서버의 클러스터 등)를 가지는 서버를 포함할 수 있다. 일부 구현예에서, 온라인 게이밍 서버(102)는 독립적인 시스템일 수 있거나, 복수의 서버를 포함할 수 있거나 다른 시스템 또는 서버의 일부일 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102)는 온라인 게이밍 서버(102) 상의 동작을 수행하고 사용자에게 온라인 게이밍 서버(102)로의 액세스를 제공하도록 이용될 수 있는 (랙마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 개인 컴퓨터, 메인프레임 컴퓨터, 랩탑 컴퓨터, 타블렛 컴퓨터, 데스크 탑 컴퓨터 등과 같은) 하나 이상의 컴퓨팅 장치, 데이터 저장소(예컨대, 하드 디스크, 메모리, 데이터베이스), 네트워크, 소프트웨어 컴포넌트 및/또는 하드웨어 컴포넌트를 포함할 수 있다. 온라인 게이밍 서버(102)는 또한 사용자에게 온라인 게이밍 서버(102)에 의해 제공되는 컨텐츠로의 액세스를 제공하도록 이용될 수 있는 웹사이트(예컨대, 웹페이지) 또는 어플리케이션 백-엔드 소프트웨어(application back-end software)를 포함할 수 있다. 예를 들어, 사용자는 클라이언트 장치(110) 상의 게임 어플리케이션(112)을 이용하여 온라인 게이밍 서버(102)에 액세스할 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102)는 사용자 간의 연결을 제공하는 소셜 네트워크의 유형 또는 사용자(예컨대, 최종 사용자 또는 소비자)가 온라인 게이밍 서버(102) 상의 다른 사용자와 통신하도록 허용하는 사용자 생성 컨텐츠 시스템의 유형일 수 있고, 통신은 음성 채팅(예컨대, 동기 및/또는 비동기 음성 통신), 비디오 채팅(예컨대, 동기 및/또는 비동기 비디오 통신) 또는 텍스트 채팅(예컨대, 동기 및/또는 비동기 텍스트 기반 통신)을 포함할 수 있다. 본 개시의 일부 구현예에서, "사용자"는 한 개인으로서 표현될 수 있다. 그러나, 본 개시의 다른 구현예는 자동화된 소스 또는 사용자의 집합에 의해 컨트롤된 엔티티인 "사용자"(예컨대, 생성 사용자)를 포함한다. 예를 들어, 사용자 생성 컨텐츠 시스템에서 커뮤니티 또는 그룹으로서, 연합된 개별 사용자의 집합이 "사용자"로 고려될 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102)는 가상 게이밍 서버일 수 있다. 예를 들어, 게이밍 서버는 네트워크(122)를 통해 클라이언트 장치(110)를 이용하여 게임에 액세스하거나 게임과 상호작용할 수 있는 사용자의 커뮤니티에 싱글-플레이어 또는 멀티플레이어 게임을 제공할 수 있다. 일부 구현예에서, 게임(여기서, "비디오 게임", "온라인 게임" 또는 "가상 게임"으로도 지칭됨)은 예를 들어, 2차원(2D) 게임, 3차원(3D) 게임(예컨대, 3D 사용자 생성 게임), 가상 현실(VR) 게임 또는 증강 현실(AR) 게임일 수 있다. 일부 구현예에서, 사용자는 다른 사용자와의 게임플레이에 참가할 수 있다. 일부 구현예에서, 게임은 게임의 다른 사용자와 실시간으로 플레이될 수 있다.
일부 구현예에서, 게임플레이는 게임(예컨대, 106) 내 클라이언트 장치(예컨대, 110)를 이용하여 하나 이상의 플레이어의 상호작용 또는 클라이언트 장치(예컨대, 110)의 다른 출력 장치(예컨대, 114) 또는 디스플레이 상에서의 상호작용의 프레젠테이션을 지칭할 수 있다.
일부 구현예에서, 게임(106)은 게임 컨텐츠(예컨대, 디지털 미디어 아이템)를 엔티티에 나타내도록 구성되는 소프트웨어, 펌웨어 또는 하드웨어를 이용하여 로드되거나 실행될 수 있는 전자 파일을 포함할 수 있다. 일부 구현예에서, 게임 어플리케이션(112)은 실행될 수 있고 게임(106)은 게임 엔진(104)과 관련되어 렌더링 될 수 있다. 일부 구현예에서, 게임(106)은 공통 목적 또는 규칙의 공통 세트를 가질 수 있고, 게임(106)의 게임 환경은 공통 목적 또는 규칙의 공통 세트를 공유한다. 일부 구현예에서, 상이한 게임은 서로 다른 규칙과 목적을 가질 수 있다.
일부 구현예에서, 게임은 복수의 환경이 링크될 수 있는 하나 이상의 환경(여기서, "게이밍 환경" 또는 "가상 환경"으로도 지칭됨)을 가질 수 있다. 환경의 일 예시는 삼차원(3D) 환경일 수 있다. 게임 어플리케이션(112 또는 132)의 하나 이상의 환경은 여기서, 일괄하여 "세계" 또는 "게이밍 세계" 또는 "가상 세계" 또는 "우주(universe)"로 지칭될 수 있다. 세계의 예시는 게임(106)의 3D 세계일 수 있다. 예를 들어, 사용자는 다른 사용자에 의해 생성된 다른 가상 환경에 링크되는 가상 환경을 개발할 수 있다. 가상 게임의 캐릭터는 가상 경계를 가로질러 인접한 가상 환경에 진입할 수 있다.
3D 환경 또는 3D 세계가 게임 컨텐츠(또는 기하학적 데이터의 3D 표현이 사용되었는지 여부와 상관없이 3D 컨텐츠로서 보이기 위한, 적어도 현재 게임 컨텐츠)를 대표하는 기하학적 데이터의 3차원 표현을 이용하는 그래픽을 이용한다는 점이 주목될 수 있다. 2D 환경 또는 2D 세계는 게임 컨텐츠를 대표하는 기하학적 데이터의 2차원 표현을 이용하는 그래픽을 이용한다.
일부 구현예에서, 온라인 게이밍 서버(102)는 하나 이상의 게임(106)을 호스팅할 수 있고 사용자가 클라이언트 장치(예컨대, 110)의 게임 어플리케이션(112)을 이용하여 게임(106)과 상호작용하도록 허용할 수 있다. 온라인 게이밍 서버(102)의 사용자는 게임(106)을 플레이하거나, 생성하거나, 상호작용하거나, 개발(build)할 수 있거나, 다른 사용자와 통신하고/거나 게임(106)의 오브젝트(예컨대, 여기서 "아이템" 또는 "게임 오브젝트" 또는 "가상 게임 아이템"으로도 지칭됨)를 생성하고 개발할 수 있다. 예를 들어, 사용자 생성 가상 아이템을 생성함에 있어서, 사용자는 다른 것들 중에서도, 게임(106)에서 이용되는 캐릭터, 캐릭터에 대한 장식, 상호작용 게임을 위한 하나 이상의 가상 환경 또는 구조물을 생성할 수 있다. 일부 구현예에서, 사용자는 온라인 게이밍 서버(102)의 다른 사용자와 플랫폼 내 통화(예컨대, 가상 통화)와 같은, 게임 가상 게임 오브젝트를 사거나, 팔거나 거래할 수 있다. 일부 구현예에서, 온라인 게이밍 서버(102)는 게임 컨텐츠를 게임 어플리케이션(예컨대, 112)으로 전송할 수 있다. 일부 구현예에서, 게임 컨텐츠(여기서, "컨텐츠"로도 지칭됨)는 온라인 게이밍 서버(102) 또는 게임 어플리케이션과 연관된 임의의 데이터 또는 소프트웨어 명령어(예컨대, 게임 오브젝트, 게임, 사용자 정보, 비디오, 이미지, 명령, 미디어 아이템 등)를 지칭할 수 있다. 일부 구현예에서, 게임 오브젝트(예컨대, 여기에서 "아이템" 또는 "오브젝트" 또는 "가상 오브젝트" 또는 "가상 게임 아이템"으로도 지칭됨)는 클라이언트 장치(110)의 게임 어플리케이션(112) 또는 온라인 게이밍 서버(102)의 그래픽 엔진(108) 또는 게임 엔진(104)에서 이용되고, 생성되고, 공유되거나 그렇지 않으면 묘사되는 오브젝트를 지칭할 수 있다. 예를 들어, 게임 오브젝트는 파츠, 모델, 캐릭터, 악세서리, 도구, 무기, 의류, 빌딩, 차량, 통화, 식물군, 동물군, 전술한 것의 컴포넌트(예컨대, 빌딩의 창문) 등을 포함할 수 있다.
게임(106)을 호스팅하는 온라인 게이밍 서버(102)는 제한이 아닌 예시의 목적으로 제공된다는 점이 주목될 수 있다. 일부 구현예에서, 온라인 게이밍 서버(102)는 일 사용자로부터 하나 이상의 다른 사용자로의 통신 메시지를 포함할 수 있는, 하나 이상의 미디어 아이템을 호스팅할 수 있다. 미디어 아이템은 디지털 비디오, 디지털 무비, 디지털 포토, 디지털 음악, 오디오 컨텐츠, 멜로디, 웹사이트 컨텐츠, 소셜 미디어 업데이트, 전자 책, 전자 잡지, 디지털 신문, 디지털 오디오 북, 전자 저널, 웹 블로그, 리얼 심플 신디케이션(real simple syndication:RSS) 피드, 전자 만화책, 소프트웨어 어플리케이션 등을 포함할 수 있지만, 이에 제한되는 것은 아니다. 일부 구현예에서, 미디어 아이템은 엔티티에 디지털 미디어 아이템을 나타내도록 구성되는 소프트웨어, 펌웨어 또는 하드웨어를 이용하여 로드되거나 실행될 수 있는 전자 파일일 수 있다.
일부 구현예에서, 게임(106)은 특정 사용자 또는 특정 그룹(예컨대, 비공개 게임(private game))의 사용자와 연관될 수 있거나, 온라인 게이밍 서버(102)(예컨대, 공개 게임(public game))에 액세스하는 사용자에게 널리 이용가능하도록 할 수 있다. 온라인 게이밍 서버(102)가 사용자의 그룹 또는 특정한 사용자와 하나 이상의 게임(106)을 연관시키는 일부 구현예에서, 온라인 게이밍 서버(102)는 사용자 계정 정보(예컨대, 사용자명 및 패스워드와 같은 사용자 계정 식별자)를 이용하여 게임(106)과 특정 사용자를 연관시킬 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102) 또는 클라이언트 장치(110)는 게임 엔진(104) 또는 게임 어플리케이션(112)을 포함할 수 있다. 일부 구현예에서, 게임 엔진(104)은 게임(106)의 실행 또는 개발을 위해 이용될 수 있다. 예를 들어, 게임 엔진(104)은 다른 특징 중에서도 2D, 3D, VR 또는 AR 그래픽을 위한 렌더링 엔진("렌더러"), 물리 엔진, 충돌 감지 엔진(및 충돌 반응), 사운드 엔진, 스크립팅 기능, 애니메이션 엔진, 인공지능 엔진, 네트워킹 기능, 스트리밍 기능, 메모리 관리 기능, 스레딩 기능, 씬그래프(scene graph) 기능 또는 영화(cinematic)를 위한 비디오 지원을 포함할 수 있다. 게임 엔진(104)의 컴포넌트는 연산을 돕고 게임을 렌더링하는 명령(예컨대, 렌더링 명령, 충돌 명령, 물리 명령 등)을 생성할 수 있다. 일부 구현예에서, 클라이언트 장치(110/116)의 게임 어플리케이션(112)은 각각 독립적으로 작업하거나, 온라인 게이밍 서버(102)의 게임 엔진(104)과 협동하여 작업하거나 또는 그 둘의 조합하여 작업할 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102) 및 클라이언트 장치(110) 모두 게임 엔진(각각, 104 및 112)을 실행할 수 있다. 게임 엔진(104)을 이용하는 온라인 게이밍 서버(102)는 플랫폼 내에서 일부 또는 모든 게임 엔진 기능을 수행(예컨대, 물리 명령, 렌더링 명령 등을 생성)할 수 있거나 클라이언트 장치(110)의 게임 엔진(104)에 대한 게임 엔진 기능 중 일부 또는 전부를 오프로드 할 수 있다. 일부 구현예에서, 각 게임(106)은 온라인 게이밍 서버(102) 상에서 수행되는 게임 엔진 기능과 클라이언트 장치(110) 상에서 수행되는 게임 엔진 기능 간의 상이한 비율을 가질 수 있다. 예를 들어, 온라인 게이밍 서버(102)의 게임 엔진(104)은 적어도 두 게임 오브젝트 간의 충돌이 있는 경우, 물리 명령을 생성하도록 이용될 수 있는 한편, 추가적인 게임 엔진 기능(예컨대, 렌더링 명령을 생성함)이 클라이언트 장치(110)로 오프로드될 수 있다. 일부 구현예에서, 온라인 게이밍 서버(102) 및 클라이언트 장치(110) 상에서 수행되는 게임 엔진 기능의 비율은 게임플레이 조건에 기초하여 (예컨대, 동적으로) 변경될 수 있다. 예를 들어, 특정한 게임(106)의 게임플레이에 참가하는 사용자의 수가 임계 값을 초과하는 경우, 온라인 게이밍 서버(102)는 이전에 클라이언트 장치(110)에 의해 수행된 하나 이상의 게임 엔진 기능을 수행할 수 있다.
예를 들어, 사용자는 클라이언트 장치(110)에서 게임(106)을 플레이할 수 있고, 온라인 게이밍 서버(102)로 컨트롤 명령어(예컨대, 오른쪽, 왼쪽, 위, 아래, 사용자 선택 또는 캐릭터 위치 및 속도 정보 등과 같은 사용자 입력)를 전송할 수 있다. 클라이언트 장치(110)로부터 컨트롤 명령어를 수신한 이후, 온라인 게이밍 서버(102)는 컨트롤 명령어에 기초하여, 게임플레이 명령어(예컨대, 렌더링 명령, 충돌 명령 등과 같은 명령 또는 같은 그룹 게임플레이에 참가하는 캐릭터의 위치 및 속도 정보)를 클라이언트 장치(110)로 송신할 수 있다. 예를 들어, 온라인 게이밍 서버(102)는 클라이언트 장치(110)에 대한 게임플레이 명령어를 생성하도록 컨트롤 명령어 상에서 (예컨대, 게임 엔진(104)을 이용하는) 하나 이상의 논리 연산을 수행할 수 있다. 다른 경우에서, 온라인 게이밍 서버(102)는 컨트롤 명령어 중 하나 이상을 하나의 클라이언트 장치(110)로부터 게임(106)에 참가하는 다른 클라이언트 장치로(예컨대, 클라이언트 장치(110a)로부터 클라이언트 장치(110b)로) 이동하게 할 수 있다. 클라이언트 장치(110)는 게임플레이 명령어를 이용할 수 있고, 클라이언트 장치(110)의 디스플레이 상에서의 프레젠테이션을 위해 게임플레이를 렌더링할 수 있다.
일부 구현예에서, 컨트롤 명령어는 사용자의 캐릭터의 인게임 동작을 나타내는 명령어를 지칭할 수 있다. 예를 들어, 컨트롤 명령어는 오른쪽, 왼쪽, 위, 아래, 사용자 선택과 같은 인게임 동작을 컨트롤 하기 위한 사용자 입력, 자이로스코프 위치 및 방향 데이터, 힘 센서 데이터 등을 포함할 수 있다. 컨트롤 명령어는 캐릭터 위치 및 속도 정보를 포함할 수 있다. 일부 구현예에서, 명령어는 온라인 게이밍 서버(102)에 직접적으로 송신된다. 다른 구현예에서, 컨트롤 명령어는 클라이언트 장치(110)로부터 다른 클라이언트 장치로(예컨대, 클라이언트 장치(110b)로부터 클라이언트 장치(110n)로) 전송될 수 있고, 다른 클라이언트 장치는 게임 엔진(104)을 이용하여 게임플레이 명령어를 생성한다. 컨트롤 명령어는 다른 사용자로부터의 음성 통신 메시지 또는 다른 사운드, 예를 들어, 여기서 설명된 바와 같이, 오디오 공간화 기법을 이용하여 생성된 음성 통신 또는 다른 사운드를 오디오 장치(예컨대, 스피커, 헤드폰 등) 상에서 재생하기 위한 명령어를 포함할 수 있다.
일부 구현예에서, 게임플레이 명령어는 클라이언트 장치(110)가 멀티플레이어 게임과 같은 게임의 게임플레이를 렌더링하도록 허용하는 명령어를 지칭할 수 있다. 게임플레이 명령어는 사용자 입력(예컨대, 컨트롤 명령어), 캐릭터 위치 및 속도 정보 또는 명령(예컨대, 물리 명령, 렌더링 명령, 충돌 명령 등) 중 하나 이상을 포함할 수 있다.
일부 구현예에서, 온라인 게이밍 서버(102)는 사용자에 의해 생성된 캐릭터를 데이터 저장소(120)에 저장할 수 있다. 일부 구현예에서, 온라인 게이밍 서버(102)는 사용자에게 나타낼 수 있는 캐릭터 카탈로그 및 게임 카탈로그를 유지한다. 일부 구현예에서, 게임 카탈로그는 온라인 게이밍 서버(102)에 저장된 게임의 이미지를 포함한다. 또한, 사용자는 캐릭터 카탈로그로부터 캐릭터(예컨대, 사용자 또는 다른 사용자에 의해 생성된 캐릭터)를 선택하여 선택된 게임에 참가할 수 있다. 캐릭터 카탈로그는 온라인 게이밍 서버(102) 상에 저장된 캐릭터의 이미지를 포함한다. 일부 구현예에서, 캐릭터 카탈로그 내 캐릭터 중 하나 이상은 사용자에 의해 생성되거나 커스터마이즈될 수 있다. 일부 구현예에서, 선택된 캐릭터는 캐릭터의 컴포넌트 중 하나 이상을 정의하는 캐릭터 세팅을 가질 수 있다.
일부 구현예에서, 사용자의 캐릭터는 컴포넌트의 구성을 포함할 수 있고, 여기서 컴포넌트의 구성과 외형, 그리고 더 일반적으로 캐릭터의 외형은 캐릭터 세팅에 의해 정의될 수 있다. 일부 구현예에서, 사용자의 캐릭터의 캐릭터 세팅은 사용자에 의해 적어도 부분적으로 선택될 수 있다. 다른 구현예에서, 사용자는 디폴트 캐릭터 세팅 또는 다른 사용자에 의해 선택된 캐릭터 세팅을 가지는 캐릭터를 선택할 수 있다. 예를 들어, 사용자는 미리 정의된 캐릭터 세팅을 가지는 캐릭터 카탈로그로부터의 디폴트 캐릭터를 선택할 수 있고, 사용자는 캐릭터 세팅의 일부를 바꿈(예컨대, 커스터마이즈된 로고가 있는 셔츠를 추가함)으로써 디폴트 캐릭터를 더 커스터마이즈할 수 있다. 캐릭터 세팅은 온라인 게이밍 서버(102)에 의한 특정 캐릭터와 연관될 수 있다.
일부 구현예에서, 클라이언트 장치(110)는 개인 컴퓨터(PC), 모바일 장치(예컨대, 랩탑, 모바일 폰, 스마트폰, 타블렛 컴퓨터 또는 넷북 컴퓨터), 네트워크 연결된 텔레비전, 게이밍 콘솔 등과 같은 컴퓨팅 장치를 각각 포함할 수 있다. 일부 구현예에서, 클라이언트 장치(110)는 "사용자 장치"로도 지칭될 수 있다. 일부 구현예에서, 하나 이상의 클라이언트 장치(110)는 임의의 소정의 순간에, 온라인 게이밍 서버(102)에 연결될 수 있다. 클라이언트 장치(110)의 수가 예시의 목적으로 제공된다는 점이 주목될 수 있다. 일부 구현예에서, 임의의 수의 클라이언트 장치(110)가 이용될 수 있다.
일부 구현예에서, 각 클라이언트 장치(110)는 각각 게임 어플리케이션(112)의 인스턴스를 포함할 수 있다. 일 구현예에서, 게임 어플리케이션(112)은 사용자가, 온라인 게이밍 서버(102)에 의해 호스팅되는 가상 게임에서 가상 캐릭터를 컨트롤하거나 게임(106), 이미지, 비디오 아이템, 웹 페이지, 문서 등과 같은 컨텐츠를 보거나 업로드하는 것과 같이, 온라인 게이밍 서버(102)를 이용하고 상호작용하도록 허용할 수 있다. 일 예시에서, 게임 어플리케이션은 웹 서버에 의해 제공되는 컨텐츠(예컨대, 가상 환경 내 가상 캐릭터 등)를 액세스, 검색, 제시 또는 조종(navigate)할 수 있는 웹 어플리케이션(예컨대, 웹 브라우저와 함께 동작하는 어플리케이션)일 수 있다. 다른 예시에서, 게임 어플리케이션은 설치되고, 클라이언트 장치(110)에 로컬로 실행하며 사용자가 온라인 게이밍 플랫폼(102)과 상호작용하는 것을 허용하는 고유 어플리케이션(native application)(예컨대, 모바일 어플리케이션, 앱 또는 게이밍 프로그램)일 수 있다. 게임 어플리케이션은 사용자에게 컨텐츠(예컨대, 웹 페이지, 미디어 뷰어)를 렌더링, 디스플레이 또는 제시할 수 있다. 일 구현예에서, 게임 어플리케이션은 또한 웹 페이지에 내장된 내장형 미디어 플레이어(예컨대, Flash®플레이어)를 포함할 수 있다.
본 개시의 양상에 따르면, 게임 어플리케이션은 사용자가 컨텐츠를 개발, 생성, 편집하고 온라인 게이밍 서버(102)에 업로드하고 온라인 게이밍 서버(102)과 상호작용(예컨대, 온라인 게이밍 서버(102)에 의해 호스팅되는 게임(106)을 플레이)하기 위한 온라인 게이밍 서버 어플리케이션일 수 있다. 이와 같이, 게임 어플리케이션은 온라인 게이밍 서버(102)에 의해 클라이언트 장치(110)에 제공될 수 있다. 다른 예시에서, 게임 어플리케이션은 서버로부터 다운로드되는 어플리케이션일 수 있다.
일부 구현예에서, 각 개발자 장치(130)는 각각 게임 어플리케이션(132)의 인스턴스를 포함할 수 있다. 일 구현예에서, 게임 어플리케이션(132)은 개발자 사용자가, 온라인 게이밍 서버(102)에 의해 호스팅되는 가상 게임에서 가상 캐릭터를 컨트롤하거나 게임(106), 이미지, 비디오 아이템, 웹 페이지, 문서 등과 같은 컨텐츠를 보거나 업로드하는 것과 같이, 온라인 게이밍 서버(102)를 이용하고 상호작용하도록 허용할 수 있다. 일 예시에서, 게임 어플리케이션은 웹 서버에 의해 제공되는 컨텐츠(예컨대, 가상 환경 내 가상 캐릭터 등)를 액세스, 검색, 제시 또는 조종(navigate)할 수 있는 웹 어플리케이션(예컨대, 웹 브라우저와 함께 동작하는 어플리케이션)일 수 있다. 다른 예시에서, 게임 어플리케이션은 설치되고, 개발자 장치(130)에 로컬로 실행하며 사용자가 온라인 게이밍 플랫폼(102)과 상호작용하는 것을 허용하는 고유 어플리케이션(native application)(예컨대, 모바일 어플리케이션, 앱 또는 게이밍 프로그램)일 수 있다. 게임 어플리케이션은 사용자에게 컨텐츠(예컨대, 웹 페이지, 미디어 뷰어)를 렌더링, 디스플레이 또는 제시할 수 있다. 일 구현예에서, 게임 어플리케이션은 또한 웹 페이지에 내장된 내장형 미디어 플레이어(예컨대, Flash®플레이어)를 포함할 수 있다.
본 개시의 양상에 따라, 게임 어플리케이션(132)은 사용자가 온라인 게이밍 서버(102)로 컨텐츠를 개발, 생성, 편집, 업로드하고 온라인 게이밍 서버(102)와 상호작용(예컨대, 온라인 게이밍 서버(102)에 호스팅되는 게임(106)을 제공 및/또는 플레이)하기 위한 온라인 게이밍 서버 어플리케이션일 수 있다. 이와 같이, 게임 어플리케이션(132)은 온라인 게이밍 서버(102)에 의해 클라이언트 장치(110)로 제공될 수 있다. 다른 예시에서, 게임 어플리케이션(132)은 서버로부터 다운로드되는 어플리케이션일 수 있다. 게임 어플리케이션(132)은 온라인 게이밍 서버(102)와 상호작용하고, 게임 개발자에 의해 개발, 호스팅 또는 제공되는 하나 이상의 게임(106)을 위한 사용자 자격, 사용자 통화 등으로의 액세스를 획득하도록 구성될 수 있다.
일부 구현예에서, 사용자는 게임 어플리케이션을 통해 온라인 게이밍 서버(102)에 로그인 할 수 있다. 사용자는 사용자 계정 정보(예컨대, 사용자 이름 및 패스워드)를 제공함으로써 사용자 계정에 액세스할 수 있고, 여기서, 사용자 계정은 온라인 게이밍 서버(102)의 하나 이상의 게임(106)에 참가하는 데 이용가능한 하나 이상의 캐릭터와 연관된다. 일부 구현예에서, 적절한 자격을 가지고, 게임 개발자는 다른 사용자와 연관되거나, 다른 사용자에 의해 소유되는 플랫폼 내 통화(예컨대, 가상 통화), 아바타, 스페셜 파워, 악세서리와 같은, 게임 가상 게임 오브젝트로의 액세스를 획득할 수 있다.
일반적으로, 온라인 게이밍 서버(102)에 의해 수행되는 것으로 일 구현예에서 설명된 기능은 또한, 적절하다면 다른 구현예에서, 클라이언트 장치(110) 또는 서버에 의해 수행될 수 있다. 또한, 특정한 컴포넌트에 기인한 기능은 함께 동작하는 상이한 컴포넌트 또는 복수의 컴포넌트에 의해 수행될 수 있다. 온라인 게이밍 서버(102)는 또한 적절한 어플리케이션 프로그래밍 인터페이스(API)를 통하여 다른 시스템 또는 장치로 제공되는 서비스로서 액세스될 수 있고, 따라서 웹사이트에서의 사용에 한정되는 것은 아니다.
일부 구현예에서, 온라인 게이밍 서버(102)는 그래픽 엔진(108)을 포함할 수 있다. 일부 구현예에서, 그래픽 엔진(108)은 온라인 게이밍 서버(102)가 그래픽 및 애니메이션 능력을 제공하도록 허용하는 시스템, 어플리케이션 또는 모듈일 수 있다. 일부 구현예에서, 그래픽 엔진(108)은 도 4에서 도시된 플로우 차트와 관련하여 이하 설명되는 동작 중 하나 이상을 수행할 수 있다.
도 2는 일부 구현예에 따라, 다른 뷰 포인트로부터 가상 3D 오브젝트의 2D 뷰의 캡처를 예시한다.
도 2는 예시적인 가상 3D 오브젝트(210)를 도시한다. 가상 3D 오브젝트(210)는 3차원에서 오브젝트의 표면의 수학적인, 모델 파일로서 수신될 수 있다.
가상 3D 오브젝트(210)는 게이밍 서버(102)에 의해(예컨대, 그래픽 엔진(108)에 의해) 내부적으로 렌더링된다. 일부 구현예에서, 렌더링은 수신된 3D 모델에 기초하여 하나 이상의 이미지의 생성으로 이어진다. 일부 구현예에서, 내부적인 렌더링은 모델 파일에서 명시된 해상도와 상이한 해상도로 수행될 수 있다.
일부 구현예에서, 하나 이상의 카메라 뷰(220)는 렌더링된 가상 3D 오브젝트(210)의 2D 이미지를 캡처하도록 이용된다.
여기서 도시되고 설명된 카메라 뷰는 카메라 뷰를 생성하고 다른 뷰를 생성하도록 3D 세계에서 다른 뷰 포인트에 위치될 수 있는, "가상 카메라"에 의해 제공될 수 있다. 가상 카메라의 위치와 캡처 해상도는 또한, 업데이트/변경될 수 있다. 예를 들어, 일부 구현예에서 카메라 뷰는 높거나 낮은 해상도로 이미지를 줌 인(zoom in)과 줌 아웃(zoom out) 및/또는 캡처하기 위한 특징을 포함할 수 있다.
예를 들어 카메라 뷰(220a, 220b, 220c 및 220n)는 가상 3D 오브젝트(210)의 이미지를 캡처하도록 3D 세계에 위치될 수 있는 카메라 뷰의 예시를 예시한다.
일부 구현예에서, 가상 조명(230)은 오브젝트에 시각적 효과를 생성하도록 이용될 수 있다. 이러한 예시에서, 가상 조명(230a)은 위에서부터 가상 3D 오브젝트를 조명하도록 이용될 수 있고, 가상 조명(230b)은 아래에서부터 가상 3D 오브젝트를 조명하도록 이용될 수 있다.
가상 조명(230)은 지향등(directional light), 스포트라이트(spot light), 면적 광(area light), 볼륨 광(volume light), 환경 광(ambient light) 등을 포함할 수 있다. 가상 조명(230)의 위치 및 유형은 오브젝트를 보는 방향에 기초하여 구성될 수 있다. 예를 들어, 가상 조명(230)은 가상 조명에서 비롯된 광 벡터가 보는 방향과 평행하지 않아 카메라가 오브젝트의 그림자를 캡처하는 것을 가능하게 하도록 위치될 수 있다. 장면 내 조명이 시각 절두체(viewing frustum)의 법선 벡터를 따르는 경우, 카메라는 광 벡터와 정상 절두체가 평행하지 않을 경우 존재할 그림자를 캡처하지 않을 수 있다.
일부 구현예에서, 가상 조명(230)은 특징과 영역 사이에 스트롱 에지(strong edge)를 생성하여 더 나은 특징 추출을 가능하게 하도록 구성될 수 있다. 특징 추출은 스트롱 에지가 이미지에 존재하는 경우, 더 효과적일 수 있다.
일부 구현예에서, 가상 게임에서 일반적으로 노출되는, 오목한 특징을 포함하는 오브젝트는 오목한 형태 내에 놓일 수 있는 관련 특징을 추출하도록 더 복잡한 조명 배열을 이용할 수 있다.
도 3은 매칭하는 3차원(3D) 오브젝트(330a-d)와 매칭하지 않는 가상 3차원(3D) 오브젝트(320a-d)의 비교에서, 수신된 가상 3D 오브젝트(310a-d)의 예시적인 뷰를 예시하는 도면이다. 예시에서, 310a는 수신된 가상 오브젝트의 3D 뷰이고, 310b는 수신된 가상 오브젝트의 상면이고, 310c는 수신된 가상 오브젝트의 저면 뷰이며 310d는 수신된 가상 오브젝트의 측면 뷰이다. 매칭하지 않는 가상 오브젝트의 대응하는 뷰는 320a-d이고, 매칭하는 가상 오브젝트의 대응하는 뷰는 330a-d이다.
수신된 가상 3D 오브젝트 및 다른 오브젝트의 2D 뷰는 오브젝트의 3D 모델을 렌더링하고 가상 카메라를 이용하여 다른 뷰 포인트로부터 2D 뷰를 획득함으로써, 생성될 수 있다. 카테고리 유형(오브젝트 유형)은 오브젝트에 대한 사용자 제공 라벨로부터 오브젝트에 대하여 결정될 수 있거나 3D 모델에 기초하여 식별된 가상 3D 오브젝트의 특징에 기초할 수 있다. 오브젝트의 사용자 지각가능 뷰가, 오브젝트가 가상 환경의 일부로서 렌더링되는 경우, 비교를 위해 획득되도록 다른 뷰 포인트가 선택될 수 있다. 예를 들어, 내부 부분과 외부 부분을 가지는 오브젝트에 대하여, 내부 부분은 이용하는 동안 가시적이지 않을 수 있다. 예를 들어, 가상 아바타에 의해 착용되는 셔츠 또는 모자의 내부는 이용 중에 보이지 않을 수 있고, 따라서, 대응하는 뷰는 위조를 식별하기 위한 다른 오브젝트와의 비교로부터 제외될 수 있다. 다른 예시에서, 오브젝트가 재킷인 경우, 내부 및 외부 뷰가 비교를 위해 이용될 수 있는 한편, 상면 뷰 및/또는 저면 뷰는 제외될 수 있다. 일부 구현예에서, 오브젝트의 카테고리 유형, 예컨대, 신발, 헤드웨어, 셔츠, 악세서리 등은 비교를 위해 이용되는 다른 뷰를 결정하도록 이용될 수 있다. 예를 들어, 각 카테고리 유형은 위조 오브젝트를 식별하도록 비교를 위해 이용될 연관된 뷰의 미리 정의된 리스트를 가질 수 있다.
일부 구현예에서, 다른 뷰 포인트가 먼저 캡처될 수 있고, 캡처된 2D 뷰의 서브세트가 3D 오브젝트의 카테고리 유형에 기초하여 비교를 위해 선택될 수 있다. 일부 구현예에서, 카테고리 유형이 먼저 결정될 수 있고, 그 카테고리 유형에 대하여 선택된 2D 이미지가 비교를 위해 캡처될 수 있다.
일부 구현예에서, 수신된 가상 3D 오브젝트의 캡처된 2D 뷰는 인증된 가상 3D 오브젝트의 대응하는 2D 뷰와 비교된다. 일부 구현예에서, 인증된 가상 3D 오브젝트의 대응하는 2D 뷰는 예컨대, 데이터 저장소(120)에 저장될 수 있다.
일부 구현예에서, 인증된 가상 3D 오브젝트의 대응하는 2D 뷰는 예컨대, 게이밍 서버(102)에 의한 비교 시간에서 렌더링된다.
일부 구현예에서, 인증된 가상 3D 오브젝트의 2D 뷰와 수신된 가상 3D 오브젝트의 2D 뷰의 비교는 2D 이미지의 해시 매칭을 이용한다. 일부 구현예에서, 근사 해시 매칭(퍼지 매칭)은 인증된 가상 3D 오브젝트의 2D 뷰와 수신된 가상 3D 오브젝트의 2D 뷰를 비교하여 유사한 2D 뷰를 검출하도록 이용된다.
해시 값은 각 2D 이미지에 대해 연산되며, 이미지에 대한 지문 또는 워터 마크로서 역할한다. 해시 값은 고정된 길이 및 구조의 알파벳-숫자 값(alphanumeric value)일 수 있고, 입력 기록(예컨대, 2D 이미지 파일)을 가지고 대응하는 해시 값을 생성하는 해시 함수에 의해 생성될 수 있다.
일부 구현예에서, 근사 해시 매칭 기법은 비교되는 이미지가 동일하지 않지만, 서로의 임계 거리 내에 있다는 점에서 유사하다고 결정하도록 활용될 수 있고, 여기서 이미지 해시 간의 거리는 그들의 유사성의 척도이다. 일부 구현예에서, 비교되는 2D 이미지가 유사한지 여부를 결정하는 임계 값 및 해시 함수를 이용하는 지각 해시 기법이 활용될 수 있다. 예를 들어, 지각 해시 기법이 이용되어 비교되는 2D 이미지가 유사한 특징을 가지는지 여부를 결정할 수 있다. 또한, 기법은 적대적인 조작, 예컨대, 위조 오브젝트를 정품으로 사칭하려는 시도에 저항력이 있다.
지각 해시 함수는 이미지로부터 관심있는 특징을 추출하여 특징에 기초하여 해시 값을 계산하도록 이용될 수 있다. 지각 해시 함수는 오브젝트가 지각적으로 유사(예컨대, 시각적으로 유사)한 경우, 원본 오브젝트의 (지각 해시 함수를 이용하여 연산된) 해시 값 및 인증될 오브젝트가 수학적으로 가깝고 오브젝트가 지각적으로 유사하지 않은 경우, 멀리 떨어지도록 설계될 수 있다.
예시에서, 비교에 기초하여, 가상 3D 오브젝트(310)가 인증된 가상 3D 오브젝트(320)의 복제품이 아니고(즉, 정품 오브젝트임), 가상 3D 오브젝트는 인증된 가상 3D 오브젝트(330)의 위조라고 결정된다. 도면에서 볼 수 있는 바와 같이, 오브젝트(320)는 모자인 한편, 모자(310)와 상이한 외부 형태와 치수를 가진다. 또한 모자(310)는 저면 뷰(310c)에서 보더라도 모자(330)와 유사하지만, 정품 모자에 존재하지 않는 추가적인 컨텐츠(하트 표시(350))를 가진다. 이러한 인스턴스에서, 모자의 저면 뷰는 가상 환경에서 가상 오브젝트의 이용 동안, 예컨대, 모자가 가상 아바타에 의해 착용되는 경우 보이지 않으므로 이러한 매칭되지 않는 뷰는 오브젝트가 위조인지 여부를 결정하는 경우, 가중치가 덜 부여될 수 있다. 그러나, 일부 인스턴스에서, 단일 미스매칭은 여전히 정품 오브젝트인 오브젝트를 나타낼 수 있다는 점이 이해될 수 있다. 예를 들어, 트레킹 막대와 같은 악세서리의 경우, 오브젝트는 크게는 유사할 수 있으며, 작은 부분, 예컨대, 손잡이는 상이하다. 이러한 경우, 특정 뷰는 더 높은 가중치가 부여될 수 있다.
일부 구현예에서, 다른 뷰의 파라미터화된 가중치가 이용될 수 있고 여기서 일부 뷰는 다른 것과 다르게 가중치가 부여된다. 예를 들어 도 3에서 설명된 예시에서, 저면 뷰(310b, 320b 및 330b)는 특정 뷰(즉, 모자의 내부)가 아바타에 의해 착용되는 경우, 사람 사용자에 의해 보이지 않을 수 있으므로, 다른 뷰 보다 더 적은 정도로 가중치가 부여될 수 있다(또는 전혀 가중치가 부여되지 않을 수 있다). 이는 위조 오브젝트의 검출을 가능하게 하고, 여기서 위조자는 해시 기반 매칭을 피하도록 뷰를 가지는 3D 오브젝트에 대해 수정을 하지만, 3D 모델에 대한 수정은 사용자 관점에서 덜 중요한 뷰에 있다.
일부 구현예에서, 미리 결정된 가중치는 가상 3D 오브젝트의 각 유형에 대해 특정될 수 있다. 일부 구현예에서, 원본 오브젝트의 해시 값은 미리 연산되고, 저장될 수 있다. 일부 구현예에서, 원본 오브젝트의 뷰는 저장될 수 있다.
도 4는 일부 구현예에 따라 위조 가상 오브젝트를 검출하기 위한 예시적인 방법을 예시하는 플로우차트이다. 일부 구현예에서, 방법(400)은 예컨대, 도 1을 참조하여 설명된 게이밍 서버(102) 상에서 구현될 수 있다.
프로세스는 인증되지 않은 가상 3D 오브젝트가 수신되는 블록(405)에서 시작한다. 가상 3D 오브젝트는 하나 이상의 사용자에 의한 가상 3D 환경에서의 이용을 위해, 게임(106)과 같은 가상 3D 환경에서 제공될 수 있다. 예를 들어, 인증되지 않은 가상 3D 오브젝트는 개발자 장치(130)를 이용하는 개발자에 의한 게이밍 서버(102)로의 업로드를 통해 수신될 수 있다.
일부 구현예에서, 가상 3D 오브젝트는 3D 메시를 포함할 수 있다. 3D 메시는 인증되지 않은 가상 3D 오브젝트의 3차원 구조를 정의할 수 있다. 일부 구현예에서, 3D 메시는 또한, 인증되지 않은 가상 3D 오브젝트의 하나 이상의 표면을 정의할 수 있다. 일부 구현예에서, 인증되지 않은 가상 3D 오브젝트는 가상 아바타, 예컨대, 휴머노이드 캐릭터, 동물 캐릭터, 로봇 캐릭터 등과 같은 가상 캐릭터일 수 있다.
일부 구현예에서, 메시는 FBX 파일 포맷으로 수신될(불러올) 수 있다. 메시 파일은 가상 3D 오브젝트를 포함하는 가상 3D 오브젝트를 포함하는 다각형에 대한 차원 데이터 및 다양한 다각형에 텍스처의 부분을 어떻게 붙이는지 설명하는 UV 맵 데이터를 제공하는 데이터를 포함한다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트는 오브젝트의 하나 이상의 움직임, 예컨대, 휴머노이드 캐릭터의 팔 움직임, 고양이 캐릭터의 꼬리 움직임 등을 정의하는 애니메이션을 포함할 수 있다. 일부 구현예에서, 인증되지 않은 가상 3D 오브젝트는 가상 아바타에 의해 착용되거나 그렇지 않으면 가상 아바타를 참조하여 묘사되는 악세서리, 예컨대, 모자, 무기, 옷 한 벌 등에 해당할 수 있다.
인증되지 않은 가상 3D 오브젝트가 악세서리인 일부 구현예에서, 가상 게임에서 오브젝트의 사용을 나타내는 데이터 또한 수신될 수 있다. 예를 들어, "신발" 오브젝트는, 오브젝트가 가상 휴머노이드 캐릭터의 발에 착용되는 것으로 묘사될 수 있음을 나타내는 주석을 포함할 수 있는 한편, "셔츠" 오브젝트는 가상 휴머노이드 캐릭터의 토르소에 착용되는 것으로 묘사될 수 있다는 주석을 포함할 수 있다.
일부 구현예에서, 3D 모델은 인증되지 않은 가상 3D 오브젝트와 연관된 텍스처 정보를 더 포함할 수 있다. 예를 들어, 텍스처 정보는 인증되지 않은 가상 3D 오브젝트의 외부 표면의 색상 및/또는 패턴을 나타낼 수 있다. 텍스처 정보는 투명의 정도, 반사, 확산의 정도, 물질 특성 및 가상 3D 오브젝트와 연관된 텍스처 및 메시의 굴절 반응을 변경하는 것을 가능하게 할 수 있다. 텍스처의 예시는 풀, 연청색 판 유리(a pane of light blue glass), 얼음, 물, 콘크리트, 벽돌, 카펫, 우드 등을 포함한다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트는 가상 3D 오브젝트의 디스크립터로서 역할할 수 있는 사용자 제공 라벨을 포함할 수 있다. 예를 들어, 라벨은 예컨대, "fun robot", "action robot", "top hat", "cool jacket" 등의 오브젝트의 이름을 나타낼 수 있다. 블록(405)은 블록(410)으로 이어질 수 있다.
블록(410)에서, 가상 3D 오브젝트의 복수의 2차원(2D) 뷰가 생성된다. 일부 구현예에서, 각 뷰 포인트로부터 캡처되는 적어도 두 개의 2D 뷰가 생성된다. 일부 구현예에서, 2D 뷰는 가상 3D 오브젝트에 적합한 특정한 미리 결정된 조명 조건 하에서 획득될 수 있다. 일부 구현예에서, 둘 이상의 2D 뷰는 동일한 뷰 포인트로 캡처될 수 있지만, 다른 조명 조건을 사용할 수 있다. 예를 들어, 가상 오브젝트의 텍스처가 조명과 상호작용(예컨대, 입사 각에 기초하여 다르게 조명을 반사)하는 것인 경우, 다른 조명 조건이 활용될 수 있다.
일부 구현예에서, 2D 뷰에 대한 뷰 포인트는 인증되지 않은 가상 3D 오브젝트의 카테고리 유형에 기초하여 선택된다. 예를 들어, 내부 뷰는 오픈 재킷(open jacket)과 같은 악세서리에 대하여 선택될 수 있고, 여기서, 재킷이 가상 게임에서 예컨대, 가상 아바타에 의해 착용되는 것으로 묘사되거나 그렇지 않으면 가상 게임의 공간에서 묘사되는 경우, 재킷의 내부는 가시적일 수 있다. 다른 예시에서, 상면 및/또는 측면 뷰가 모자에 대하여 선택될 수 있다. 다른 예시에서, 저면 및 측면 뷰가 모자 등 보다는 신발에 대하여 선택될 수 있다.
일부 구현예에서, 하나 이상의 부분적으로 투명한 다각형을 포함하는 오브젝트에 대하여, 복합 투명도의 순열 전부를 커버하는 조명 벡터 및 뷰 포인트가, 모든 특징이 추출되는 것을 보장하도록 포함될 수 있다.
일부 구현예에서, 굴절에서의 전이를 포함하는 오브젝트에 대하여, 전이가 있는 뷰 포인트 및 전이가 없는 뷰 포인트가 선택될 수 있다. 예를 들어, 수신된 가상 3D 오브젝트가 물 안에 있는 물고기인 경우, 뷰 포인트는 물 속에서 물고기를 보는 뷰 및 수면 위에서 물 속으로 물고기를 보는 뷰를 포함할 수 있다.
일부 구현예에서, 카테고리는 사용자 제공 라벨로부터 결정될 수 있다. 일부 구현예에서, 카테고리 유형은 가상 3D 오브젝트의 특징에 기초하여, 게이밍 플랫폼에 의해 (예컨대, 게이밍 서버(102)를 이용하여) 결정될 수 있다. 예를 들어, 카테고리 유형은 가상 3D 오브젝트의 형태 및/또는 사이즈에 기초하여 결정될 수 있다. 일부 구현예에서, 카테고리 유형의 세트는 가상 3D 오브젝트에서 식별된 특징에 기초하여 결정될 수 있다.
일부 구현예에서, 뷰 포인트는 오브젝트가 가상 3D 환경에서 렌더링되는 경우, 가상 3D 오브젝트의 사용자 가시부에 기초하여 결정된다. 예를 들어, 뷰 포인트는 가상 환경 또는 게임 내 가상 3D 오브젝트를 보는 사용자에게 가시적일 가상 3D 오브젝트의 예상 부분에 기초하여 결정될 수 있다. 일부 구현예에서, 사용자 가시부는 가상 아바타의 포즈에 의존할 수 있다. 예를 들어, 일부 구현예에서, 가상 모자의 내부는 가상 모자가 게임 내에서 캐릭터(예컨대, 아바타)에 의해 착용된다는 결정에 기초하여 뷰포인트로 선택되지 않을 수 있다. 일부 구현예에서, 가상 모자의 내부는 가상 모자가 가상 환경에서 흔들리고, 가상 모자의 내부는 게임 내 가상 모자를 보는 사용자에게 가시적이라고 결정되는 경우, 뷰포인트로서 선택될 수 있다. 블록(410)은 블록(415)으로 이어질 수 있다.
블록(415)에서, 해시 값이 2D 뷰 중 둘 이상에 대하여 계산된다. 일부 구현예에서, 해시 값은 지각 해시 함수를 이용하여 계산된다. 지각 해시 함수는 이미지 파일, 애니메이션 등과 같은, 디지털 미디어 컨텐츠의 지각 유사도의 결정을 가능하게 하도록 이용될 수 있다. 지각 해시 함수는 미디어 컨텐츠로부터 관심있는 특징을 추출하고, 특징에 기초하여 해시 값을 계산하도록 이용될 수 있다.
지각 해시 함수는 오브젝트가 지각적으로 유사한(예컨대, 시각적으로 유사한) 경우, 원본 오브젝트의 (지각 해시 함수를 이용하여 연산된) 해시 값 및 인증될 오브젝트가 가깝고 오브젝트가 지각적으로 유사하지 않은 경우, 멀리 떨어지도록 설계될 수 있다. 블록(415)은 블록(420)으로 이어질 수 있다.
블록(420)에서, 수신된 가상 3D 오브젝트의 2D 뷰가 인증된 가상 3D 오브젝트의 대응하는 2D 뷰와 매칭하는지를 결정하도록, 수신된 가상 3D 오브젝트의 2D 뷰의 해시 값은 인증된 가상 3D 오브젝트의 대응하는 2D 뷰(예를 들어, 동일한 뷰 포인트로부터의 뷰)와 비교된다. 예를 들어, 수신된 가상 3D 오브젝트의 상면 뷰의 해시 값은 인증된 가상 3D 오브젝트의 상면 뷰의 해시 값 등과 비교된다.
일부 구현예에서, 수신된 가상 3D 오브젝트의 복수의 연산된 2D 뷰는 인증된 가상 3D 오브젝트의 대응하는 2D 뷰와 비교된다. 복수의 연산된 2D 뷰는 수신된 가상 3D 오브젝트의 획득된 2D 뷰 전부를 포함할 수 있거나, 수신된 가상 3D 오브젝트의 카테고리 유형(오브젝트 유형)에 기초하여 획득된 2D 뷰의 서브세트를 포함할 수 있다. 임계 수의 비교가 매칭(즉, 수신된 오브젝트의 뷰가 인증된 오브젝트의 대응하는 뷰와 지각적으로 유사)하는 경우, 수신된 가상 3D 오브젝트가 위조 오브젝트라고 결정된다.
일부 구현예에서, 수신된 가상 3D 오브젝트의 2D 뷰는 유사한 오브젝트, 즉, 수신된 가상 3D 오브젝트와 동일한 카테고리 유형의, 유사한 오브젝트의 대응하는 2D 뷰와 비교된다. 예를 들어, 수신된 가상 3D 오브젝트가 모자인 경우, 수신된 가상 3D 오브젝트의 2D 뷰의 비교는 게임 플랫폼에서 저장되는 다른 모자(또는 다른 헤드웨어)의 대응하는 2D 뷰와 이루어진다.
일부 구현예에서, 복수의 2D 뷰의 각 해시 값과 인증된 가상 3D 오브젝트의 2D 뷰의 대응하는 해시 값 사이의 거리 값이 연산될 수 있다. 적어도 임계 수의 거리 값이 임계 거리 값을 만족하는 경우, 수신된 가상 3D 오브젝의 2D 뷰가 인증된 가상 3D 오브젝트의 대응하는 2D 뷰와 매칭한다고 결정될 수 있다. 예를 들어, 임계 거리 값은, 임계 거리 값 내에서의 2D 뷰가 시각적으로 유사하도록 선택될 수 있다. 임계 거리 값은 이용된 해시 함수의 유형에 기초하여 선택될 수 있다.
일부 구현예에서, 거리 값은 2D 뷰에 대해 계산된 해시 값과 인증된 가상 3D 오브젝트의 대응하는 2D 뷰에 대한 해시 값 사이에서 결정된다. 총 거리 값은 비교를 위해 선택된 모든 2D 뷰 전체에 걸쳐 연산된 거리 값에 기초하여 결정된다.
이전에 설명된 바와 같이, 일부 구현예에서, 다른 뷰의 파라미터화된 가중치 부여가 이용될 수 있고, 일부 뷰는 다른 것과는 상이하게 가중치가 부여된다. 예를 들어, 3D 환경 내 사용자(뷰어)에 의해 더 흔히 보일 수 있는 뷰는 덜 흔할 수 있는 뷰 보다 가중치가 더 부여될 수 있다. 예를 들어, 모자의 내부의 뷰는 모자 상단의 뷰보다 가중치가 덜 부여될 수 있다.
복합 투명도를 포함하는 가상 3D 오브젝트에서, 이용가능한 전이의 서브세트 만을 포함하는 뷰는 보다 많은(또는 모든 이용가능한) 전이를 포함하는 뷰와 다르게 가중치가 부여될 수 있다.
부분적으로 투명한 3D 가상 오브젝트에서, 다른 플레이어에 의해 보일 수 있는 뷰는 다른 뷰 보다 가중치가 더 부여될 수 있다. 예를 들어, 가상 3D 오브젝트가 각 신발의 상단 위에서 수조를 보는 한 쌍의 신발인 경우, 다른 플레이어가 볼 수 있는 신발의 뷰는 수조 내 물고기의 관점으로부터 캡처된 뷰보다 가중치가 더 부여될 수 있다.
일부 구현예에서, 총 거리 값은, 수신된 가상 3D 오브젝트가 인증된 가상 3D 오브젝트와 유사한지 여부를 결정하도록, 미리 결정된 거리 임계 값에 비교된다. 일부 구현예에서, 거리 임계 값은 수신된 가상 3D 오브젝트의 카테고리 유형에 기초하는 값으로 설정될 수 있다. 일부 구현예에서, 거리 임계 값은 이전에 이용된 거리 임계 값 및 이러한 거리 임계 값에 기초하여 위조 또는 정품 오브젝트로서 이전에 분류된 오브젝트에 기초하여 (예컨대, 게이밍 서버(102)에 의해) 조정될 수 있다.
일부 구현예에서, 임계 거리 값, 미리 결정된 거리 임계 값 및 거리 값의 임계 수는 설정가능한 값일 수 있다. 일부 구현예에서, 임계 거리 값, 미리 결정된 거리 임계 및 거리 값의 임계 수는 수신된 가상 3D 오브젝트의 카테고리 유형에 기초하는 값으로 설정될 수 있다.
예를 들어, 게임 플랫폼 내에서 더 빈번하게 위조되는 일부 오브젝트 카테고리는, 덜 빈번하게 위조되는 카테고리에 속하는 수신된 가상 3D 오브젝트와 비교하면, 보다 작은 정도의 유사성이 결과적으로 그 카테고리에 대하여 수신된 가상 3D 오브젝트가 위조로서 플래그 표시될 수 있는 임계치를 이용할 수 있다. 예를 들어, 셔츠 및 바지는 쉽고, 자주 그리고 매우 빠르게 위조되는 가상 3D 오브젝트의 예시이다. 컨텐츠를 생성하거나 업로드하기에 보다 적은 작업을 수반하는 가상 3D 오브젝트는 더 모방될 경향을 가진다.
일부 구현예에서, 머신 러닝 기법은 다른 기법(예를 들어, 매뉴얼 인증)을 이용하여 그들의 위조 종류의 확인 및 이전에 분류된 위조 오브젝트에 기초하여 임계치를 개선하도록 이용될 수 있다. 일부 구현예에서, 위조 애니메이션 작업의 검출은 렌더링된 애니메이션의 비디오의 지각 해싱을 이용할 수 있다.
일부 구현예에서, 가상 3D 오브젝트가 텍스쳐를 포함하는 3D 모델인 경우, 3D 모델과 연관된 메시 다각형(mesh polygon)에 적용된 이후 텍스쳐를 포함하는 가상 3D 오브젝트의 2D 뷰가 캡처된다.
일부 구현예에서, 가상 3D 오브젝트 상의 텍스처를 맵핑하기 위해 특정된 UV 맵핑과 결합된 텍스처는 지각 해시 프로세스에서 이용된다. 예를 들어, 수신된 가상 3D 오브젝트의 텍스처/UV 맵핑의 지각 해시가 연산되고, 다른 정품 텍스처/UV 맵핑의 지각 해시와 비교된다.
블록(420)에서 수신된 가상 3D 오브젝트의 2D 뷰에 대한 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰와 매칭한다고 결정되는 경우, 블록(420)은 블록(425)으로 이어진다.
블록(425)에서, 수신된 가상 3D 오브젝트는 위조 오브젝트로서 분류된다. 일부 구현예에서, 분류된 위조 오브젝트는 가상 플랫폼(게임 플랫폼)의 리스트로부터 제외될 수 있다. 일부 구현예에서, 오브젝트가 위조로 플래그 표시되었다고 나타내는 메시지가 가상 환경의 관리자 및/또는 업로더에게 제공될 수 있다. 일부 구현예에서, 위조 오브젝트는 추가 리뷰를 위해(예를 들어, 게이밍 플랫폼과 연관된 관리자에 의한 수동 리뷰를 위해) 플래그 표시될 수 있다.
블록(420)에서, 수신된 가상 3D 오브젝트의 2D 뷰에 대한 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰와 매칭하지 않는다고 결정되는 경우, 블록(420)은 블록(430)으로 이어진다.
블록(430)에서, 수신된 가상 3D 오브젝트는 정품 오브젝트로서 분류된다. 일부 구현예에서, 정품 오브젝트로서의 분류는 신호를 이용하고, 가상 3D 오브젝트를 분류하기 위해 다른 신호(예를 들어, 3D 오브젝트의 수동 리뷰, 3D 오브젝트를 업로드하는 개발자와 연관된 개발자 평가 등)와 조합된다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트를 정품 오브젝트로서 분류한 이후, 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰는 저장될 수 있고, 이후 수신될 수 있는, 다른 가상 3D 오브젝트를 인증하는 데에 이용될 수 있다. 저장된 정품 오브젝트는 가상 환경에 이용하기 위해 이용가능해질 수 있다. 또한, 가상 환경이 사용자가 (예컨대, 가상 통화의 지불로) 정품 오브젝트를 사거나 구독을 통해 정품 오브젝트로의 액세스를 획득하는 것을 가능하게 하는 경우, (블록(430)에서의 분류 이후, 인증되지 않은 가상 오브젝트인) 정품 오브젝트는 사용자에게 이용가능해진다.
블록(405-430)은 위에서 설명된 것과 상이한 순서로 수행(또는 반복)될 수 있고/거나 하나 이상의 단계가 생략될 수 있다. 예를 들어, 블록(420)은 예컨대, 인증되지 않은 가상 오브젝트와 복수의 알려진 인증된 오브젝트(예컨대, 인증되지 않은 가상 오브젝트와 동일한 카테고리 유형)를 비교하도록 복수회 수행될 수 있다. 복수의 비교 중 임의의 것이 해시 값 매칭을 검출하는 경우, 오브젝트는 위조로서 분류될 수 있다. 이러한 방식으로, 방법(400)의 부분은 수신된 가상 3D 오브젝트가 플랫폼에 저장된 카테고리 유형(오브젝트 유형)의 모든 정품 오브젝트와 비교될 때까지 반복될 수 있다. 일부 구현예에서, 인증된 가상 3D 오브젝트의 2D 뷰는 블록(420)에서의 비교에 이용하기 위해 계산될 수 있다.
일부 구현예에서, 게임 플랫폼 상에서 수신된 가상 3D 오브젝트는 임의의 위조 오브젝트를 검출하여 이러한 오브젝트로의 사용자 액세스를 줄이도록 미리 결정된 빈도(예컨대, 매일, 격일, 매시간 등)로 스캐닝될 수 있다. 일부 구현예에서, 더 모방될 것 같은 수신된 가상 3D 오브젝트는 덜 모방될 것 같은 가상 3D 오브젝트 보다 높은 빈도로 스캐닝될 수 있다. 일부 구현예에서, 방법(400)은 업로드를 통해 새로운 오브젝트가 수신되는 매 시간 수행될 수 있다. 일부 구현예에서, 방법(400)은 저장된 오브젝트가 수정되는 경우, 수행될 수 있다.
일부 구현예에서, 플랫폼 상에서 그들이 마주한, 위조 오브젝트에 관한 사용자 피드백은 임계 거리를 업데이트하는 데 이용될 수 있고, 방법(400)은 하나 이상의 이전에 인증된 오브젝트에 대해 수행될 수 있다.
일부 구현예에서, 정품 오브젝트로서의 분류는 신호를 이용하고, 가상 3D 오브젝트를 분류하기 위해 다른 신호(예컨대, 3D 오브젝트의 수동 리뷰, 3D 오브젝트를 업로드하는 개발자와 연관된 개발자 평가 등)와 조합된다.
일부 구현예에서, 인증되지 않은 가상 3D 오브젝트를 정품 오브젝트로서 분류한 이후, 인증되지 않은 가상 3D 오브젝트의 복수의 2D 뷰는 (예컨대, 데이터 저장소(120)에) 저장될 수 있고, 추후 수신될 수 있는 다른 가상 3D 오브젝트를 인증하는 데에 이용될 수 있다.
도 5는 여기서 설명된 하나 이상의 특징을 구현하도록 이용될 수 있는 예시적인 컴퓨팅 장치(500)의 블록도이다. 일 예시에서, 장치(500)는 컴퓨터 장치(예컨대, 도 1의 102 및/또는 110)를 구현하고, 여기서 설명된 적절한 방법 구현예를 수행하도록 이용될 수 있다. 컴퓨팅 장치(500)는 임의의 적절한 컴퓨터 시스템, 서버 또는 다른 전자 또는 하드웨어 장치일 수 있다. 예를 들어, 컴퓨팅 장치(500)는 메인 프레임 컴퓨터, 데스크 탑 컴퓨터, 워크스테이션(workstation), 휴대용 컴퓨터 또는 전자 장치(휴대용 장치, 모바일 장치, 휴대 전화, 스마트폰, 타블렛 컴퓨터, 텔레비전, TV 셋톱박스(STB), 개인 휴대 정보 단말기(PDA), 미디어 플레이어, 게임 장치, 웨어러블 장치 등)일 수 있다. 일부 구현예에서, 장치(500)는 프로세서(502), 메모리(504), 입력/출력(I/O) 인터페이스(506) 및 오디오/비디오 입력/출력 장치(514)를 포함한다.
프로세서(502)는 장치(500)의 기본 동작을 컨트롤하고 프로그램 코드를 실행하기 위한 하나 이상의 프로세서 및/또는 프로세싱 회로일 수 있다. "프로세서"는 임의의 적절한 하드웨어 및/또는 소프트웨어 시스템, 데이터, 신호 또는 다른 정보를 프로세싱하는 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 범용 중앙 프로세싱 유닛(CPU), 복수의 프로세싱 유닛, 목적 달성을 위한 전용 회로(dedicated circuitry)를 가진 시스템 또는 다른 시스템을 포함할 수 있다. 프로세싱은 특정한 지리적 위치에 제한되거나 시간적 제한을 가질 필요가 없다. 예를 들어, 프로세서는 "일괄 모드" 등에서 "실시간", "오프라인"으로 그 기능을 수행할 수 있다. 프로세싱의 부분은 상이한(또는 동일한) 프로세싱 시스템에 의해 상이한 시간 및 상이한 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다. 일부 구현예는 여기서 설명된 머신 러닝 모델 중 하나 이상을 구현하도록 머신 러닝 모델 구현을 위해 이용되는 머신 러닝 프로세서 또는 다른 프로세서(예컨대, GPU, ASIC, FPGA 등)을 포함할 수 있다.
메모리(504)는 보통 프로세서(502)에 의해 액세스하기 위해 장치에서 제공되고, 프로세서에 의해 실행을 위한 명령어를 저장하기 위해 적절한 임의의 적절한 프로세서-판독가능 저장 매체, 예컨대, RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리 등 일 수 있으며, 프로세서(502)로부터 분리되어 위치되고/거나 그들과 통합될 수 있다. 메모리(504)는 운영 체제(508), 하나 이상의 어플리케이션(510), 예컨대, 오디오 공간화 어플리케이션 및 어플리케이션 데이터(512)를 포함하는, 프로세서(502)에 의해 서버 장치(500) 상에서 동작하는 소프트웨어를 저장할 수 있다. 일부 구현예에서, 어플리케이션(510)은 프로세서(502)가 여기서 설명된 기능, 예컨대, 도 4의 방법의 일부 또는 모두를 수행(또는 그 기능을 제어)하는 것을 인에이블 하는 명령어를 포함할 수 있다.
예를 들어, 어플리케이션(510)는 여기서 설명된 바와 같이 온라인 게이밍 서버(예컨대, 102) 내 오디오 공간화를 제공할 수 있는 오디오 공간화 모듈(512)을 포함할 수 있다. 메모리(504) 내 소프트웨어 중 임의의 것이 대안적으로 컴퓨터 판독가능 기록매체 또는 임의의 다른 적절한 저장 위치 상에 저장될 수 있다. 또한, 메모리(504)(및/또는 다른 연결된 저장 장치)는 여기서 설명된 특징에서 이용되는 데이터 및 명령어를 저장할 수 있다. 메모리(504) 및 임의의 다른 유형의 저장소(마그네틱 디스크, 광학 디스크, 마그네틱 테이프 또는 다른 유형(tangible)의 미디어)는 "저장소" 또는 "저장장치"로 고려될 수 있다
I/O 인터페이스(506)는 서버 장치(500)를 다른 시스템 및 장치와 인터페이스로 접속시키는 것을 인에이블 하기 위한 기능을 제공할 수 있다. 예를 들어, 네트워크 통신 장치, 저장 장치(예컨대, 메모리 및/또는 데이터 저장(120)) 및 입력/출력 장치는 인터페이스(406)를 통하여 통신할 수 있다. 일부 구현예에서, I/O 인터페이스는 입력 장치(키보드, 포인팅 디바이스, 터치스크린, 마이크로폰, 카메라, 스캐너 등) 및/또는 출력 장치(디스플레이 장치, 스피커 장치, 프린터, 모터 등)를 포함하는 인터페이스 장치에 연결될 수 있다.
오디오/비디오 입력/출력 장치(514)는 사용자 입력을 수신하도록 이용될 수 있는 사용자 입력 장치(예컨대, 마우스), 그래픽 및/또는 시각적 출력을 제공하도록 이용될 수 있는 디스플레이 장치(예컨대, 스크린, 모니터 등) 및/또는 결합된 입력 및 디스플레이 장치를 포함할 수 있다.
예시의 편의를 위해, 도 5는 프로세서(502), 메모리(504), I/O 인터페이스(506) 및 소프트웨어 블록(508 및 510)의 각각에 대한 하나의 블록을 도시한다. 이러한 블록은 하나 이상의 프로세서 또는 프로세싱 회로망, 운영 체제, 메모리, I/O 인터페이스, 어플리케이션 및/또는 소프트웨어 엔진을 나타낼 수 있다. 다른 구현예에서, 장치(500)는 도시된 컴포넌트 모두를 가지지 않을 수 있고/거나, 여기에 도시된 것에 더하여 또는 이를 대신하여 다른 유형의 요소를 포함하는 다른 요소를 가질 수 있다. 온라인 게이밍 서버(102)가 여기의 일부 구현예에서 설명된 바와 같이, 동작을 수행하는 것으로 설명되는 한편, 온라인 게이밍 서버(102) 또는 유사한 시스템의 컴포넌트의 조합 또는 임의의 적절한 컴포넌트, 또는 시스템과 연관된 프로세서 또는 임의의 적절한 프로세서는 설명된 동작을 수행할 수 있다.
사용자 장치는 또한 여기서 설명된 특징을 구현할 수 있고/거나 이와 함께 이용될 수 있다. 예시적인 사용자 장치는 장치(500), 예컨대, 프로세서(502), 메모리(504) 및 I/O 인터페이스(506)와 일부 유사한 컴포넌트를 포함하는 컴퓨터 장치일 수 있다. 클라이언트 장치에 적합한 운영 체제, 소프트웨어 및 어플리케이션은 메모리에 제공될 수 있고, 프로세서에 의해 이용될 수 있다. 클라이언트 장치에 대한 I/O 인터페이스는 네트워크 통신 장치 및 입력과 출력 장치, 예컨대, 사운드를 캡처하기 위한 마이크로폰, 이미지 또는 비디오를 캡처하기 위한 카메라, 사용자 입력을 캡처하기 위한 마우스, 사용자 제스처를 인식하기 위한 제스처 장치, 사용자 입력을 검출하기 위한 터치스크린, 사운드를 출력하기 위한 오디오 스피커 장치, 이미지 또는 비디오를 출력하기 위한 디스플레이 장치 또는 다른 출력 장치에 연결될 수 있다. 오디오/비디오 입력/출력 장치(514) 내 디스플레이 장치는 예를 들어, 여기에 설명된 바와 같이, 전-처리 및 후-처리된 이미지를 디스플레이하도록 장치(500)에 연결될 수 있고(또는 포함될 수 있고), 이러한 디스플레이 장치는 임의의 적절한 디스플레이 장치, 예컨대, LCD, LED 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치스크린, 3D 디스플레이 스크린, 프로젝터 또는 다른 시각적 디스플레이 장치를 포함할 수 있다. 일부 구현예는 오디오 출력 장치, 예컨대 텍스트를 말하는 음성 출력 또는 합성을 제공할 수 있다.
여기에 설명된 하나 이상의 방법(예컨대, 방법(400))은 컴퓨터 상에서 실행될 수 있는 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예를 들어, 코드는 하나 이상의 디지털 프로세서(예컨대, 마이크로프로세서 또는 다른 프로세싱 회로)에 의해 구현될 수 있고, 예컨대, 마그네틱, 광학, 전자기 또는 반도체 또는 반도체 기억 장치(solid-state memory)를 포함하는 반도체 저장 매체, 마그네틱 테이프, 리무버블 컴퓨터 디스켓(removable computer diskette), RAM(random access memory), ROM(read-only memory), 플래시 메모리, 강체 자기 디스크(rigid magnetic disk), 광학 디스크, 반도체 기억 장치 드라이브 등과 같은 비일시적인 컴퓨터 판독가능 저장매체(예컨대, 저장 매체)를 포함하는 컴퓨터 프로그램 제품 상에 저장될 수 있다. 프로그램 명령어는 또한 예컨대, 소프트웨어의 형태로 서버(예컨대, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달되는 서비스(SaaS)로서 전자 신호에 포함되고 전자 신호로서 제공될 수 있다. 대안적으로 하나 이상의 방법은 하드웨어(로직 게이트 등)에서 또는 하드웨어와 소프트웨어의 조합에서 구현될 수 있다. 예시적인 하드웨어는 프로그램 가능 프로세서(예컨대, 필드 프로그램가능 게이트 어레이(FPGA), 복합 프로그램 가능 논리 소자), 범용 프로세서, 그래픽 프로세서, 주문형 집적 회로(ASIC) 등일 수 있다. 하나 이상의 방법은 시스템 상에서 동작하는 어플리케이션의 컴포넌트 또는 그 일부로서 또는 운영 체제 및 다른 어플리케이션과 결합되어 동작하는 소프트웨어 또는 어플리케이션으로서 수행될 수 있다.
여기에 설명된 하나 이상의 방법은 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 독립적인 프로그램, 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 장치(휴대전화, 스마트폰, 타블렛 PC, 웨어러블 장치(손목시계, 암밴드(armband), 장신구(jewelry), 헤드웨어(headwear), 고글, 안경 등), 랩탑 컴퓨터 등)에서 실행되는 모바일 어플리케이션("앱")에서 실행될 수 있다. 일 예시에서, 클라이언트/서버 아키텍처가 사용될 수 있으며, 예컨대, (클라이언트 장치로서) 모바일 컴퓨팅 장치가 서버 장치로 사용자 입력을 전송하고, 서버로부터 출력(예컨대, 디스플레이)을 위한 최종 출력 데이터를 수신한다. 다른 예시에서, 모든 연산은 모바일 컴퓨팅 장치 상의 모바일 앱(및/또는 다른 앱) 내에서 수행될 수 있다. 다른 예시에서, 연산은 모바일 컴퓨팅 장치 및 하나 이상의 서버 장치 사이에 분할될 수 있다.
설명이 그 특정한 구현예에 대하여 설명되었으나, 이러한 특정한 구현예는 단지 예시적인 것이며, 제한적이지 않다. 예시에서 예시된 개념은 다른 예시 및 구현예에 적용될 수 있다.
본 개시에 설명된 기능의 블록, 동작, 특징, 방법, 장치 및 시스템은 당업자에게 알려질 것과 같이, 기능의 블록, 장치 및 시스템의 다양한 조합으로 분할되거나 통합될 수 있다는 점이 주목된다. 임의의 적절한 프로그래밍 언어와 프로그래밍 기법은 특정한 구현예의 루틴을 구현하도록 이용될 수 있다. 절차상 또는 객체 지향형과 같은 다양한 프로그래밍 기법이 이용될 수 있다. 루틴은 단일 프로세싱 장치 또는 복수의 프로세서 상에서 실행될 수 있다. 단계, 동작 또는 연산이 특정한 순서로 나타날 수 있지만, 순서는 상이한 특정 구현예에서 변경될 수 있다. 일부 구현예에서, 본 명세서에서 순차적으로 도시된 복수의 단계 또는 동작은 동시에 수행될 수 있다.

Claims (29)

  1. 위조 가상 3차원(3D) 오브젝트를 검출하기 위한 컴퓨터 구현 방법으로서,
    인증되지 않은 가상 3D 오브젝트를 수신하는 단계;
    상기 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 단계 -상기 복수의 2D 뷰의 각 뷰는 각각의 뷰 포인트로부터 캡처됨 -;
    상기 복수의 2D 뷰의 각 2D뷰에 대한 해시 값을 계산하는 단계;
    상기 인증되지 않은 가상 3D 오브젝트의 상기 복수의 2D 뷰 중 적어도 두 개의 2D 뷰의 각각의 상기 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값과 매칭하는지 여부를 결정하는 단계; 및
    각각의 상기 해시 값이 매칭한다고 결정되는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 단계
    를 포함하는 컴퓨터 구현 방법
  2. 제1항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트의 상기 복수의 2D 뷰를 결정하는 단계는 미리 결정된 조명 조건 하에서 상기 복수의 2D 뷰를 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 해시 값은 지각 해시 함수(perceptual has function)를 이용하여 계산되는 것인, 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    각각의 상기 해시 값이 매칭하는지 여부를 결정하는 단계는,
    상기 복수의 2D 뷰 중 적어도 두 개의 2D 뷰의 각각의 상기 해시 값과 상기 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 상기 해시 값 사이의 거리 값을 연산하는 단계; 및
    적어도 임계 수의 상기 거리 값이 임계 거리 값을 만족한다는 결정에 기초하여 각각의 상기 해시 값이 매칭한다고 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트를 수신하는 단계는 상기 인증되지 않은 가상 3D 오브젝트의 3D 메시(mesh)를 수신하는 단계를 포함하는, 컴퓨터 구현 방법.
  6. 제5항에 있어서,
    상기 3D 메시는 텍스처 정보를 포함하는 것인, 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 적어도 두 개의 2D 뷰는 상기 인증되지 않은 가상 3D 오브젝트의 카테고리에 기초하여 선택되는 것인, 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 뷰 포인트가 상기 가상 3D 오브젝트의 사용자 가시부(user visible portion)에 기초하여 결정되는 것을 더 포함하는, 컴퓨터 구현 방법.
  9. 제8항에 있어서,
    상기 가상 3D 오브젝트는 가상 아바타에 의해 착용되고, 상기 사용자 가시부는 상기 가상 아바타의 포즈에 의존하는 것인, 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트를 상기 위조 3D 오브젝트로서 분류하는 단계 이후, 가상 플랫폼 내 리스트로부터 상기 위조 3D 오브젝트를 제외하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  11. 제1항에 있어서,
    상기 결정하는 단계를 복수 회 수행하는 단계
    를 더 포함하고, 상기 결정하는 단계는 다른 인증된 가상 3D 오브젝트로 상기 복수 회 각각이 수행되는, 컴퓨터 구현 방법.
  12. 제1항에 있어서,
    각각의 상기 해시 값이 매칭하지 않는다고 결정되는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 정품(genuine) 3D 오브젝트로 분류하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  13. 제12항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트를 상기 정품 3D 오브젝트로서 분류하는 단계 이후, 상기 인증되지 않은 가상 3D 오브젝트의 상기 복수의 2D 뷰를 저장하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  14. 위조 가상 3차원(3D) 오브젝트를 검출하기 위한 컴퓨터 구현 방법으로서,
    인증되지 않은 가상 3D 오브젝트를 수신하는 단계;
    상기 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 단계 -상기 복수의 2D 뷰의 각 뷰는 각각의 뷰 포인트로부터 캡처됨 -;
    상기 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 단계;
    복수의 거리 값을 결정하는 단계 - 각 거리 값은 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값과 상기 복수의 2D 뷰의 2D 뷰의 각각의 해시 값과 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값 사이의 거리를 나타냄 -;
    상기 복수의 거리 값에 기초하여 총 거리 값을 결정하는 단계; 및
    상기 총 거리 값이 미리 결정된 임계 거리 값을 만족하는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 단계
    를 포함하는 컴퓨터 구현 방법.
  15. 제14항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형과 상기 인증된 가상 3D 오브젝트의 상기 오브젝트 유형은 동일한 것인, 컴퓨터 구현 방법.
  16. 제15항에 있어서,
    상기 복수의 2D 뷰는 상기 인증되지 않은 가상 3D 오브젝트의 상기 오브젝트 유형의 적어도 일부에 기초하여 선택되는 것인, 컴퓨터 구현 방법.
  17. 제14항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트의 상기 복수의 2D 뷰를 결정하는 단계는 미리 정해진 조명 조건 하에서 상기 복수의 2D 뷰를 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  18. 제14항에 있어서,
    상기 결정하는 단계를 복수 회 수행하는 단계
    를 더 포함하고, 상기 결정하는 단계는 다른 인증된 가상 3D 오브젝트로 복수 회 각각이 수행되는 것인, 컴퓨터 구현 방법.
  19. 제14항에 있어서,
    상기 총 거리 값이 미리 결정된 임계 거리 값을 만족하지 못하는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로 분류하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  20. 프로세싱 장치에 의한 실행에 응답하여 상기 프로세싱 장치로 하여금 동작들을 수행하도록 하는 명령어를 포함하는 비일시적 컴퓨터 판독가능 기록 매체로서,
    상기 동작들은
    인증되지 않은 가상 3D 오브젝트를 수신하는 동작;
    상기 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 동작 -상기 복수의 2D 뷰의 각 뷰는 각각의 뷰 포인트로부터 캡처됨 -;
    상기 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 동작;
    복수의 거리 값을 결정하는 동작 -각 거리 값은 상기 복수의 2D 뷰의 2D 뷰의 각 해시 값과 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값 사이의 거리를 나타냄 -;
    상기 복수의 거리 값에 기초하여 총 거리 값을 결정하는 동작; 및
    상기 총 거리 값이 미리 결정된 임계 거리 값을 만족하는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 기록 매체.
  21. 제20항에 있어서,
    상기 인증되지 않은 가상 3D 오브젝트의 상기 복수의 2D 뷰를 결정하는 동작은 미리 결정된 조명 조건 하에서 상기 복수의 2D 뷰를 결정하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 기록 매체.
  22. 제20항에 있어서,
    상기 해시 값은 지각 해시 함수를 이용하여 계산되는 것인, 비일시적 컴퓨터 판독가능 기록 매체.
  23. 제20항에 있어서,
    상기 복수의 뷰는 상기 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형의 적어도 일부에 기초하여 선택되는 것인, 비일시적 컴퓨터 판독가능 기록 매체.
  24. 제20항에 있어서,
    상기 동작들은 상기 총 거리 값이 상기 미리 결정된 임계 거리 값을 만족하지 못하는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로사 분류하는 동작을 더 포함하는, 비일시적 컴퓨터 판독가능 기록 매체.
  25. 시스템으로서,
    명령어가 저장된 메모리; 및
    상기 메모리에 결합된 프로세싱 장치
    를 포함하고,
    상기 프로세싱 장치는 상기 메모리에 액세스하고, 상기 명령어를 실행하며, 상기 명령어는 상기 프로세싱 장치로 하여금 동작들을 수행하도록 하고, 상기 동작들은
    인증되지 않은 가상 3D 오브젝트를 수신하는 동작;
    상기 인증되지 않은 가상 3D 오브젝트의 복수의 2차원(2D) 뷰를 결정하는 동작 -상기 복수의 2D 뷰의 각 2D 뷰는 각각의 뷰 포인트로부터 캡처됨 -;
    상기 복수의 2D 뷰의 각 2D 뷰에 대한 해시 값을 계산하는 동작;
    상기 인증되지 않은 가상 3D 오브젝트의 상기 복수의 2D 뷰 중 적어도 두 개의 2D 뷰의 각각의 상기 해시 값이 인증된 가상 3D 오브젝트의 대응하는 2D 뷰의 해시 값과 매칭하는지 여부를 결정하는 동작; 및
    각각의 상기 해시 값이 매칭한다고 결정되는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 위조 3D 오브젝트로서 분류하는 동작을 포함하는, 시스템.
  26. 제25항에 있어서,
    상기 해시 값은 지각 해시 함수를 이용하여 계산되는 것인, 시스템.
  27. 제25항에 있어서,
    상기 복수의 뷰는 상기 인증되지 않은 가상 3D 오브젝트의 오브젝트 유형의 적어도 일부에 기초하여 선택되는 것인, 시스템.
  28. 제25항에 있어서,
    상기 동작들은 상기 결정하는 동작을 복수 회 수행하는 동작을 더 포함하고, 상기 결정하는 동작은 다른 인증된 가상 3D 오브젝트로 상기 복수 회 각각이 수행되는 것인, 시스템.
  29. 제25항에 있어서,
    상기 동작들은 각각의 상기 해시 값이 매칭하지 않는다고 결정되는 경우, 상기 인증되지 않은 가상 3D 오브젝트를 정품 3D 오브젝트로서 분류하는 동작을 더 포함하는, 시스템.
KR1020227014703A 2019-12-04 2019-12-20 위조의 가상 오브젝트의 검출 KR20220070032A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/703,823 US11238316B2 (en) 2019-12-04 2019-12-04 Detection of counterfeit virtual objects
US16/703,823 2019-12-04
PCT/US2019/067929 WO2021112888A1 (en) 2019-12-04 2019-12-20 Detection of counterfeit virtual objects

Publications (1)

Publication Number Publication Date
KR20220070032A true KR20220070032A (ko) 2022-05-27

Family

ID=76210926

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227014703A KR20220070032A (ko) 2019-12-04 2019-12-20 위조의 가상 오브젝트의 검출

Country Status (6)

Country Link
US (2) US11238316B2 (ko)
EP (1) EP4070276A4 (ko)
JP (1) JP7364795B2 (ko)
KR (1) KR20220070032A (ko)
CN (1) CN115003396A (ko)
WO (1) WO2021112888A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102540211B1 (ko) * 2022-11-09 2023-06-07 주식회사 인터포 스마트 조명기기 디자인을 위한 메타버스 서비스 시스템

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10242503B2 (en) 2017-01-09 2019-03-26 Snap Inc. Surface aware lens
US11030813B2 (en) 2018-08-30 2021-06-08 Snap Inc. Video clip object tracking
US11176737B2 (en) 2018-11-27 2021-11-16 Snap Inc. Textured mesh building
US11501499B2 (en) 2018-12-20 2022-11-15 Snap Inc. Virtual surface modification
US11189098B2 (en) 2019-06-28 2021-11-30 Snap Inc. 3D object camera customization system
US11238316B2 (en) 2019-12-04 2022-02-01 Roblox Corporation Detection of counterfeit virtual objects
US11227442B1 (en) 2019-12-19 2022-01-18 Snap Inc. 3D captions with semantic graphical elements
US11321856B1 (en) * 2020-12-18 2022-05-03 Roblox Corporation Detection of inauthentic virtual objects
US20220114255A1 (en) * 2021-12-23 2022-04-14 Intel Corporation Machine learning fraud resiliency using perceptual descriptors

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003087991A2 (en) * 2002-04-09 2003-10-23 The Escher Group, Ltd. System and method for authentication of a workpiece using three dimensional shape recovery
US7558762B2 (en) * 2004-08-14 2009-07-07 Hrl Laboratories, Llc Multi-view cognitive swarm for object recognition and 3D tracking
US8224018B2 (en) * 2006-01-23 2012-07-17 Digimarc Corporation Sensing data from physical objects
US8374920B2 (en) 2009-01-21 2013-02-12 Nike, Inc. Anti-counterfeiting system and method
US8509600B2 (en) * 2011-08-03 2013-08-13 Qatar Foundation Copy detection
JP2014103585A (ja) 2012-11-21 2014-06-05 Toshiba Corp 立体画像表示装置
SG11201503974SA (en) 2012-11-22 2015-06-29 Agency Science Tech & Res Method, apparatus and system for virtual clothes modelling
US9619706B2 (en) * 2014-03-28 2017-04-11 Enceladus Ip Holdings Llc Security scheme for authenticating object origins
US10065264B2 (en) * 2015-02-04 2018-09-04 The Boeing Company Apparatus and method for manufacturing an anti-counterfeit three-dimensional article
US10366536B2 (en) * 2016-06-28 2019-07-30 Microsoft Technology Licensing, Llc Infinite far-field depth perception for near-field objects in virtual environments
US11016960B2 (en) 2018-01-30 2021-05-25 Roblox Corporation Systems and methods to record and verify virtual item transactions
US20190232172A1 (en) * 2018-01-30 2019-08-01 Roblox Corporation Chain of custody in gaming platforms
EP3776518A1 (en) 2018-04-27 2021-02-17 Crisalix SA Medical platform
EP3599588B1 (en) * 2018-07-27 2021-09-08 Siemens Healthcare GmbH Rendering an object
US11176737B2 (en) * 2018-11-27 2021-11-16 Snap Inc. Textured mesh building
US11238316B2 (en) 2019-12-04 2022-02-01 Roblox Corporation Detection of counterfeit virtual objects
US11321856B1 (en) 2020-12-18 2022-05-03 Roblox Corporation Detection of inauthentic virtual objects

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102540211B1 (ko) * 2022-11-09 2023-06-07 주식회사 인터포 스마트 조명기기 디자인을 위한 메타버스 서비스 시스템

Also Published As

Publication number Publication date
CN115003396A (zh) 2022-09-02
WO2021112888A1 (en) 2021-06-10
US20210174132A1 (en) 2021-06-10
US11731053B2 (en) 2023-08-22
US20220121874A1 (en) 2022-04-21
US11238316B2 (en) 2022-02-01
JP7364795B2 (ja) 2023-10-18
JP2023504377A (ja) 2023-02-03
EP4070276A1 (en) 2022-10-12
EP4070276A4 (en) 2023-12-06

Similar Documents

Publication Publication Date Title
US11731053B2 (en) Detection of counterfeit virtual objects
US11715219B2 (en) Detection of inauthentic virtual objects
US20090202114A1 (en) Live-Action Image Capture
US11238667B2 (en) Modification of animated characters
US12002139B2 (en) Robust facial animation from video using neural networks
US11645805B2 (en) Animated faces using texture manipulation
Sami et al. The metaverse: Survey, trends, novel pipeline ecosystem & future directions
EP4291314A1 (en) Automatic detection of prohibited gaming content
EP4309135A1 (en) Layered clothing that conforms to an underlying body and/or clothing layer
US20230124297A1 (en) Hidden surface removal for layered clothing for an avatar body
US20240149165A1 (en) Optimized player positioning system in virtual experiences
CN118119979A (zh) 用于化身身体的分层服装的隐藏表面移除
CN116917957A (zh) 基于神经网络的鲁棒视频面部动画

Legal Events

Date Code Title Description
E902 Notification of reason for refusal