KR20210086977A - 가상 또는 실제 세계의 다차원 3d 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱 - Google Patents

가상 또는 실제 세계의 다차원 3d 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱 Download PDF

Info

Publication number
KR20210086977A
KR20210086977A KR1020200184598A KR20200184598A KR20210086977A KR 20210086977 A KR20210086977 A KR 20210086977A KR 1020200184598 A KR1020200184598 A KR 1020200184598A KR 20200184598 A KR20200184598 A KR 20200184598A KR 20210086977 A KR20210086977 A KR 20210086977A
Authority
KR
South Korea
Prior art keywords
virtual
world
distributed
cells
engine
Prior art date
Application number
KR1020200184598A
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 KR20210086977A publication Critical patent/KR20210086977A/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/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/32Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
    • A63F13/327Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections using wireless networks, e.g. Wi-Fi® or piconet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • H04L67/38
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/80Special adaptations for executing a specific game genre or game mode
    • A63F13/822Strategy games; Role-playing games
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1002
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/404Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network characterized by a local network connection
    • A63F2300/405Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network characterized by a local network connection being a wireless ad hoc network, e.g. Bluetooth, Wi-Fi, Pico net
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/807Role playing or strategy games
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Information Transfer Between Computers (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

가상 세계를 통해 동적 로드 밸런싱을 수행하기 위한 분산형 3D 엔진을 가능하게 하는 시스템이 제공된다. 이 시스템은 메모리 및 적어도 하나의 프로세서를 포함하는 하나 이상의 서버 컴퓨터를 포함하고, 메모리는 가상 객체를 저장하는 복수의 셀로서 가상 또는 현실 세계의 적어도 일부를 나타내는 데이터 구조를 저장한다. 메모리는 또한 분산 배치로 구현된 리소스 관리자 및 복수의 개별 소프트웨어 엔진을 포함하는 분산형 3D 엔진을 저장한다. 리소스는 현재 부하 및 대응하는 계산되고 순위 지정된 수요를 기반으로 하나 이상의 셀에 분산 전개를 통해 동적으로 할당된다. 일부 실시예에서, 수요는 사용자 아바타가 볼 수 있는 영구 가상 세계 시스템의 일부 내에서 가상 객체의 양 및 상호 작용 레벨 중 하나 이상을 추가로 고려한다. 그 방법도 제공된다.

Description

가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱{MULTI-DIMENSIONAL 3D ENGINE COMPUTING AND VIRTUALIZATION-BASED DYNAMIC LOAD BALANCING OF VIRTUAL OR REAL WORLDS}
(관련 출원(들)에 대한 상호 참조)
본 출원은 2019년 12월 30일에 출원된 미국 가출원 번호 62/955247의 효익을 주장하며, 이는 여기에 참조로 포함된다.
(기술분야)
본 개시는 일반적으로 컴퓨터 시스템 및 방법에 관한 것이고, 보다 구체적으로는 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 시스템 및 방법에 관한 것이다.
가상 세계, 특히 대규모 멀티 플레이어 온라인 게임(MMOG)을 실행하도록 설계된 기존 시스템은 가상 세계 내의 매우 많은 수의 플레이어 또는 엔티티를 지원하도록 확장하는 방식에서 제한적이다. 이러한 가상 세계는 일반적으로 단일 물리적 컴퓨터에서 실행되고 게임 또는 애플리케이션의 단일 인스턴스에 의존하기 때문에, 가상 세계는 시스템의 제한된 대역폭과 가상 세계를 호스팅하는 서버의 프로세서 용량에 의해 지원된다. 게임 또는 시뮬레이션 엔진을 호스팅하는 서버는 가상 세계의 모든 객체와 플레이어에 대한 시뮬레이션 기능을 제공해야 한다. 그러나 플레이어와 엔터티 수가 증가하면 자원 요구 사항도 증가하여, 가상 세계 내에서 서비스 품질(QOS) 및 사용자 경험이 저하된다.
다른 접근 방식에는 맵을 분할하고 균등하게 배포하고 맵의 일부를 여러 서버에서 실행하는 것이 포함되며, 각 서버는 맵의 해당 부분을 담당한다. 전체 맵을 프로비저닝하는 데 더 많은 자원을 사용할 수 있지만, 이 방법에는 여전히 몇 가지 단점이 있다. 예를 들어, 한 영역의 크라우딩은 이러한 유형의 지리적 분할을 가상 세계에서 사용하기에 비효율적으로 만들 수 있으며, 한 영역에서 다른 영역으로 마이그레이션하면 필요한 서버 전환으로 인해 연속적인 영역이 아닌 영역을 가로지르는 사용자에게 이산적인 보기를 제공할 수 있다.
또한, 가상 세계의 개발 및 처리에 사용되는 현재 3D 엔진에는 가상 세계의 프로비저닝 기능을 제한하는 여러 가지 단점이 있다. 예를 들어, 일반적인 현재 3D 엔진은 모놀리식(monolithic)인 경향이 있고, 중앙 집중화되어 있고, 확장이 어려울 수 있으며, 플랫폼에 종속적일 수 있다. 이것은 가상 세계를 개발하고 실행하는 동안 3D 엔진의 각 특정 모듈의 기능을 완전히 활용하는 가능성을 방해하여 앞서 언급한 단점을 추가한다.
이 요약은 아래의 상세한 설명에서 더 자세히 설명하는 단순화된 형태로 개념 선택을 소개하기 위해 제공된다. 이 요약은 청구된 주제의 주요 특징을 식별하기 위한 것이 아니며 청구된 주제의 범위를 판정하는 데 도움을 주기 위한 것도 아니다.
본 개시는 일반적으로 컴퓨터 시스템 및 방법에 관한 것이고, 보다 구체적으로는 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 시스템 및 방법에 관한 것이다.
본 개시 내용의 시스템은 메모리 및 적어도 하나의 프로세서를 포함하는 하나 이상의 서버 컴퓨터를 포함하고, 상기 메모리는 영구 가상 세계 시스템을 형성하는 가상 객체를 저장하는 복수의 셀로 가상 또는 실제 세계의 적어도 일부를 가상화하는 데이터 구조를 저장한다. 일부 실시 예에서, 상기 가상 객체의 적어도 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본이다. 상기 메모리는 또한 분산 배치로 구현된 분산 3D 엔진을 더 저장하며, 상기 분산 3D 엔진은 자원 관리자 및 복수의 개별 분산 소프트웨어 엔진을 포함한다. 자원은 상기 분산 배치를 통해 현재 부하와 상기 하나 이상의 셀의 대응하는 연산 및 순위화된 요구를 기반으로 상기 하나 이상의 셀에 동적으로 할당된다. 일부 실시 예에서, 상기 요구는 적어도 부분적으로 상기 하나 이상의 셀 내의 가상 객체의 크기 또는 상기 하나 이상의 셀 내의 사용자 아바타가 볼 수 있는 상기 영구 가상 세계 시스템의 일부 내의 상호 작용의 레벨, 또는 이들의 조합에 기초한다. 일부 실시 예에서, 상기 자원은 컴퓨팅 파워, 메모리, 네트워크 자원(예를 들어, 대역폭) 또는 이들의 조합을 포함한다.
추가 실시 예에서, 상기 요구는 또한 상기 하나 이상의 셀 및 네트워크 장비(예를 들어, 서버 및 네트워크 안테나)에 액세스하는 사용자 장치 간의 거리, 사용자가 사용하는 애플리케이션 유형 또는 상기 하나 이상의 셀에 액세스하는 사용자가 가지는, 그의 개별 사용자 프로필 또는 계약 세부 사항에 따른 자격 유형, 또는 이들의 조합에 더 기초한다.
일부 실시 예에서, 상기 가상 객체는 상기 실제 세계에서 사용할 수 없는 순수 가상 객체, 실제 사람의 가상 아바타 및 애플리케이션을 더 포함한다.
일부 실시 예에서, 상기 영구 가상 세계 시스템은 동일한 가상 또는 실제 세계의 복수의 시뮬레이션을 포함하고, 상기 시뮬레이션은 고 충실도에서 저 충실도까지 다양하며, 저 충실도 시뮬레이션은 요구 평가 및 부하 밸런싱에 사용되며, 고 충실도 시뮬레이션은 사용자 경험을 개선하는 데 사용된다. 이를 통해 사례와 상황에 따라 상이한 시뮬레이션을 수행할 수 있다. LOD 관리를 통해 특정 요구 사항 및 컨텍스트에 따라 최적화된 사용자 경험을 제공할 수도 있다. 따라서 동일한 가상 또는 실제 세계를 서로 다른 LOD에서 시뮬레이션하여 사용자에게 적합한 경험을 제공하면서 현재 개시물의 상기 부하 밸런싱 방법을 용이하게 할 수 있다.
일부 실시 예에서, 상기 영구 가상 세계 시스템의 상기 가상 객체는 가상 또는 대응하는 실제 객체의 양태의 임의의 그래픽, 수학적 또는 논리적 표현을 나타내는 데이터 및 모델을 포함한다. 일부 실시 예에서, 데이터 및 모델은 상기 영구 가상 세계 시스템의 엔티티에 자체 컴퓨팅 기능 및 자율 동작을 제공한다. 일부 실시 예에서, 적합한 모델은 3D 모델, 지오메트리 모델, 동적 모델 및 기계 학습 모델 중 하나 이상을 포함한다. 상기 가상 객체는 시뮬레이션에서 얻은 데이터, 사용자 장치를 통한 사용자 입력으로 제공되거나 또는 사물 인터넷 장치와 같은 센서 장치(예를 들어, 실제 세계에 기반한 영구 가상 세계 시스템에 대한)에 의해 캡처될 수 있다. 데이터의 지속적인 흐름은 주기적으로 업데이트되는 상기 영구 가상 세계 시스템을 유지할 수 있다.
일부 실시 예에서, 상기 영구 가상 세계 시스템은 증강 현실(AR) 층 및 가상현실(VR) 층으로 분리될 수 있는 가상 세계 층을 포함할 수 있다. 별도의 층은 증강 현실 또는 가상현실 중 어느 하나의 상기 영구 가상 세계 시스템에 액세스하고 각 층에 저장된 엘리먼트를 결합할 수 있으며, 하나 또는 다른 유형의 현실에 액세스할 때마다 상기 네트워크를 통해 상기 적어도 하나의 서버 컴퓨터에 연결된 클라이언트 장치를 통해 활성화될 수 있다. 상기 각 층은 각 층에 특정될 수 있는 실제 및 가상 객체의 증강을 포함할 수 있다.
일부 실시 예에서, 상기 개별 분산 소프트웨어 엔진은 로컬로 구성될 때 서로 통신할 수 있는 복수의 동적 및 독립 소프트웨어 모듈로 분해되거나 원격에 위치한 개별 소프트웨어 모듈로 분해된 분산 3D 엔진일 수 있다. 일부 실시 예에서, 복수의 분산 소프트웨어 엔진은 서로 시너지를 생성하기 위해 상기 네트워크 내에서 병렬로 또는 순차적으로 사용될 수 있다. 예를 들어, 동일하거나 다른 서버 컴퓨터에서 호스팅되는 복수의 3D 그래픽 엔진은 하나 이상의 특정 작업의 구현을 위해 서로의 엔진 서비스를 보완하도록 분산 메시지 교환 플랫폼을 통해 순차적으로 또는 병렬로 엔진 서비스를 할당할 수 있다.
일부 실시 예에서, 상기 하나 이상의 프로세서는 대응하는 개별 분산 소프트웨어 엔진으로부터의 작업을 하드웨어에서 처리하도록 구성된 전용 처리 장치, 범용 처리 장치, 또는 이들의 조합이다. 일 실시 예에서, 표준 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU) 중 하나 이상을 사용할 수 있는 일반적인 시스템과 달리, 상기 전용 하드웨어 엔진은 각각 특히 3D 그래픽, 인공 지능 작업, 물리 작업, 3D 구조 처리 작업, 시뮬레이션 작업, 추적 및 위치 지정, 통신 중 적어도 하나의 처리에 사용되는 개별 분산 소프트웨어 엔진의 처리를 위해 특별히 조정된다. 일부 실시 예에서, 각각의 하드웨어 엔진은 각각의 특정 유형의 동작을 처리하도록 지정된 하나 이상의 특정 하드웨어 처리 코어를 포함하는 전자 칩 상의 칩 또는 시스템으로서 결합될 수 있다. 상기 하나 이상의 전자 칩의 처리 코어는 각 3D 엔진의 필요한 알고리즘을 물리적으로 실행하도록 설계된 상기 전자 칩의 전자 회로의 기능 유닛 또는 모듈로 간주될 수 있다. 예를 들어, 하나 이상의 처리 코어 중 적어도 하나는 FPGA 또는 전용 기능을 구현하는 집적 회로의 임의의 다른 형태로서 구현될 수 있다. 따라서, 상기 전자 칩은 상기 하나 이상의 처리 코어 중 적어도 일부를 구현하는 적어도 하나의 집적 회로를 포함하고, 상기 처리 코어 중 적어도 하나는 상이한 전용 하드웨어 엔진을 구현한다. 이러한 전자 칩은 예를 들어 하나 이상의 외부 서버 또는 주 서버 중 하나 또는 둘 다에 설치될 수 있다. 일부 실시 예에서, 상기 전자 칩은 CPU 및/또는 GPU와 같은 범용 처리 코어를 추가로 포함할 수 있거나, 각 엔진 작업에 대한 추가 지원을 그것들에게 제공하기 위해 외부 CPU 및/또는 GPU에 연결할 수 있다. 각 소스에 전용 하드웨어 엔진을 제공하고 각 3D 엔진 모듈을 분산되고 독립적인 방식으로 구성하면 각 3D 엔진 모듈이 하나 이상의 하드웨어 엔진으로부터의 하나 이상의 전용 하드웨어 코어를 가질 수 있을 뿐만 아니라 시스템 전체에 추가 자원을 제공할 수 있다.
일부 실시 예에서, 상기 가상 또는 실제 세계를 셀로 나타내는 데이터 구조는 옥트리 데이터 구조이고, 여기서 각 셀은 상기 옥트리 데이터 구조 내에서 복셀로 표시된다. 일부 실시 예에서, 상기 옥트리 데이터 구조에서 사용되는 상기 복셀은 상기 실제 세계의 더 큰 부분의 배열에 사용하기 위한 희소 복셀이다. 다른 실시 예에서, 상기 옥트리 데이터 구조에서 사용되는 상기 복셀은 상기 실제 세계의 더 작은 부분의 배열에 사용하기 위한 조밀한 복셀이다. 옥트리 및 선택된 희소 또는 조밀한 복셀은 상기 실제 세계를 나타내는 상기 영구 가상 세계 시스템과 같은 가상 세계에서 3차원 공간을 나타내는 데 적합한 데이터 구조이다. 옥트리는 복수의 객체를 빠르고 쉽게 조합하고, 비교적 간단한 렌더링 알고리즘을 구현하고, 빠른 공간 검색을 수행하고, 실제 객체의 가상화를 통해(예를 들어, LIDAR 또는 기타 이미지 스캐닝 방법을 통해) 모델 생성을 가능하게 한다. 상기 실제 세계의 적어도 일부를 나타내는 3D 가상 세계를 포함하는 가상 세계의 경우, 이러한 세계의 3D 파티션은 사용자가 보거나 및/또는 상호작용할 수 있는 영역에 대한 3차원 기반 엔진 서비스 및 클라우드 자원 할당을 가능하게 한다.
일부 실시 예에서, 상기 세계의 적어도 하나의 부분으로부터 더 높은 자원 집약적인 관심 영역을 나타내는 셀은 더 많은 수의 셀로 더 분할된다. 추가 실시 예에서, 각각의 고 자원 집약적 셀은 이에 따라 하나 이상의 소스로부터의 자원이 할당되며, 여기서 더 작은 셀에는 더 많은 양의 자원이 할당된다. 또 다른 실시 예에서, 하나 이상의 요청과 연관된 이벤트를 종료한 후, 상기 자원은 복수의 소스로부터 원래의 하나 이상의 소스로 복원된다. 그 후, 상기 세계의 적어도 하나의 부분이 원래의 셀 수로 다시 통합된다. 이러한 방식으로 시스템은 요구가 많은 관심 영역을 선택하여 효율적이고 동적으로 자원 할당을 달성한다.
일부 실시 예에서, 상기 자원 관리자는 분산 메시지 교환 플랫폼을 통해 할당을 수행한다. 추가 실시 예에서, 상기 분산 메시지 교환 플랫폼은 퍼블리싱-구독 모델을 이용하며, 여기서 상기 하나 이상의 가상 객체는 자원이 퍼블리싱되는 하나 이상의 셀에 구독한다. 또 다른 실시 예에서, 상기 분산 메시지 교환 플랫폼은 상기 메모리에 저장된 세계의 적어도 하나의 부분의 동적으로 업데이트된 상태를 클라이언트 장치 및 서버 중 하나 이상과 공유한다. 따라서, 본 개시의 분산 3D 엔진의 자원 관리자는 각 자원을 상기 분산 메시지 교환 플랫폼에 한 번 퍼블리싱하고, 퍼블리싱된 상기 자원으로 상기 셀을 구독하여 이를 필요로 하는 각 가상 객체에 전달한다. 이는 가상 세계를 프로비저닝하기 위해 조정된 일반적인 3D 엔진 시스템과 대조되며, 이는 맵 내의 각 클라이언트 장치에 대한 완전한 데이터 업데이트 패킷을 출력하고 상기 클라이언트 장치에 대해 각 패킷을 조정하여 상기 클라이언트 장치가 상기 클라이언트 장치와 관련이 있고 시야 내의 객체에 대한 데이터만 수신하도록 하여, 게임 또는 시뮬레이션 엔진이 잠재적으로 상기 객체가 표시될 수 있는 각 클라이언트 장치에 대해 한 번씩 동일한 데이터를 여러 번 전송하도록 한다.
일 실시 예에 따르면, 상기 세계의 적어도 하나의 부분의 상태는 센서 데이터를 상기 영구 가상 세계 시스템에 제공하는 센서를 포함하는 복수의 연결 장치를 통해 추가로 업데이트된다. 상기 연결 장치는 예를 들어 네트워크를 통해 서로 및 서버와 통신할 수 있고 상기 영구 가상 세계 시스템의 상기 가상 복제본을 업데이트하기 위해 상기 실제 세계로부터 다중 소스 센서 데이터를 지속적으로 캡처할 수 있는 사물 인터넷(IoT) 장치일 수 있다. 따라서 상태 업데이트는 상기 센서 데이터에서 발생할 수 있다. 그러나 상태 업데이트는 사용자 입력 또는 하나 이상의 3D 엔진의 계산(예를 들어, 인공 지능 추론)으로부터 발생할 수도 있다. 그런 다음 상기 세계의 상태 업데이트가 분산 메시지 교환 플랫폼에 퍼블리싱되어 모든 클라이언트 장치 및 소스가 요구에 따라 구독하고 볼 수 있다.
일부 실시 예에서, 복수의 셀 중 각 셀은 하나 이상의 스트림을 포함하고, 각각의 스트림은 하나 이상의 스트림 특정 가상 객체를 포함하고 상기 클라이언트 장치 상에서 보고 상호 작용하기 위해 활성화 또는 비활성화되도록 구성된다. 또 다른 실시 예에서, 각 스트림은 하나 이상의 사용자 애플리케이션과 관련된다. 각 스트림은 대응하는 가상 객체로부터 데이터를 획득하고 테마 및/또는 목표 특정 시뮬레이션을 수행하도록 구성될 수 있다. 각 스트림은 복수의 스트림 관련 가상 객체를 생성하는 루트 노드 또는 루트 시뮬레이션 객체에 연결될 수 있다. 상기 스트림은 상기 스트림이 상기 시뮬레이션을 수행하는 데 필요한 가상 복제본을 정의하는 임포트 기능에 추가로 연결할 수 있다. 일부 실시 예에서, 셀 또는 복수의 셀에서와 같은 미리 정해진 환경에서 가상 복제본의 전체 또는 대부분을 포함하는 복수의 스트림, 이들의 컨텍스트 및 각 가상 복제본 간의 관계 및 상호 작용은 유니버스 또는 서브 유니버스를 형성한다. 서브 유니버스의 네트워크는 영구 가상 세계 시스템의 유니버스를 형성할 수 있다. 예를 들어, 도시의 서브 유니버스는 도시 및 그들의 관계, 상호 작용 및 컨텍스트의 건물, 나무, 사람, 거리, 신호등, 차량 등 모두를 나타낼 수 있는 시티 버스(city-verse)라고 할 수 있다. 시티 버스 내의 하우스 버스(house-verse)와 같이 또 다른 서브 유니버스 내의 서브 유니버스가 있을 수 있다. 하우스 버스에는 집의 외부 및 내부, 집의 가전제품, 사람, 벽, 에너지 소비 데이터 등 모두의 3D 디자인이 포함될 수 있다. 모든 서브 유니버스의 네트워크는 가상 또는 증강 현실에서 볼 수 있는 영구 가상 세계 시스템의 유니버스를 형성할 수 있다. 이들 서브 유니버스 각각은 자원이 동적으로 할당되는 복수의 셀로 동적으로 분할될 수 있다.
본 개시의 실시 예들에서, 시스템은 공공 또는 사설 클라우드, 포그 서버, 피어-투-피어 클라우드 서버 시스템, 분산 원장 기반 인프라, 클라우드렛, 및 엔터프라이즈 시스템, 모바일 플랫폼 및 사용자 장치와 같은 에지 시스템를 사용하는 것을 포함하는 분산 컴퓨팅 기능을 표시할 수 있는 클라우드-에지 인프라에서 구현될 수 있다. 상기 분산 원장 기반 인프라는 가상 복제본, 순수 가상 객체, 애플리케이션 및 상기 영구 가상 세계 시스템 내의 모든 이벤트 또는 상호 작용을 포함하는 상기 영구 가상 세계 시스템을 널리 배포하는 데 필요한 데이터의 전송 및 저장을 용이하게 하는 탈중앙화되고 불변인 블록체인 또는 분산 원장 네트워크 일 수 있다. 클라우드-에지 인프라를 통해 물리적 서버 및 네트워크 장비를 포함한 자원은 사용자와 자원 및 네트워크까지의 거리 및 그것들이 그에 따라서 다소 연산하는 것을 명령하는 소재지의 위치 및 서로에 대한 사용자로부터의 컴퓨팅 요구와 같은 요인에 따라 동적 할당이 가능한 공유 스토리지 및 컴퓨팅을 가능하게 한다. 일부 실시 예에서, 자원의 동적 할당은 상기 분산 원장 인프라를 사용하여 스마트 계약으로 코드화되어 트랜잭션 로직(예를 들어, 스토리지 및 컴퓨팅의 각 할당 뒤에 있는 컴퓨터 로직) 및 이러한 할당의 결론 또는 결과를 자동화한다.
일 실시 예에 따르면, 가상 세계를 통해 동적 부하 밸런싱을 수행하기 위한 분산 3D 엔진을 가능하게 하는 방법은 적어도 하나의 서버 컴퓨터의 메모리에서 가상 또는 실제 세계의 적어도 일부를 나타내는 데이터 구조를 영구 가상 세계 시스템을 형성하는 가상 객체를 저장하는 복수의 셀로 가상화하는 단계를 포함하고, 여기서 상기 가상 객체의 적어도 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본이다. 상기 방법은 상기 적어도 하나의 서버 컴퓨터의 메모리에 분산 배치로 구현된 분산 3D 엔진을 제공함으로써 계속되며, 상기 분산 3D 엔진은 자원 관리자 및 복수의 개별 분산 소프트웨어 엔진을 포함한다. 그 후, 상기 방법은 현재 부하에 기초하여 자원 관리자에 의해 상기 복수의 셀 중 개별 셀의 요구를 계산함으로써 계속되며, 여기서 상기 요구는 상기 개별 셀 내의 가상 객체의 크기에 적어도 부분적으로 기초하거나 상기 개별 셀 내의 사용자 아바타가 볼 수 있는 상기 영구 가상 세계 시스템의 일부 내의 상호 작용 레벨에 기초한다. 그런 다음 이 방법은 요구에 따라 상기 개별 셀의 순위를 매기는 방식으로 계속된다. 마지막으로, 순위화된 요구에 따라 이 방법은 자원을 상기 개별 셀(예를 들어, 하나 이상의 더 높은 자원 집약 셀)에 동적으로 할당하여 종료된다.
일 실시 예에 따르면, 상기 방법은 계산된 요구에 기초하여, 상기 가상 또는 실제 세계의 적어도 하나의 부분의 관심 영역을 추가 셀로 분할하는 단계; 및 대응하는 자원을 상기 추가 셀(예를 들어, 자원 집약적인 관심 영역을 나타내는 각 셀)에 할당하는 단계;를 더 포함한다. 일 실시 예에서, 상기 방법은 더 높은 자원 집약적 관심 영역 내의 하나 이상의 요청과 관련된 이벤트를 종료한 후, 상기 자원을 원래의 하나 이상의 소스로 복원하는 단계; 및 상기 영구 가상 세계 시스템 내의 상기 세계의 적어도 하나의 부분을 상기 원래의 수의 셀로 다시 통합하는 단계;를 더 포함한다.
일부 실시 예에서, 상기 할당은 퍼블리싱-구독 모델을 사용하여 상기 자원 관리자의 분산 메시지 교환 플랫폼을 통해 상기 대응하는 셀에 자원을 퍼블리싱하고; 및 요청된 자원을 획득하기 위해 상기 하나 이상의 가상 객체에 의해 관심 셀을 구독하는 단계;에 의해 수행된다.
일부 실시 예에서, 상기 방법은 상기 분산 메시지 교환 플랫폼을 통해 상기 세계의 적어도 하나의 부분의 동적 업데이트 상태를 상기 클라이언트 장치 및/또는 서버 컴퓨터가 상기 세계의 업데이트 버전을 획득하기 위해 구독한 상기 하나 이상의 클라이언트 장치 및/또는 서버 컴퓨터와 공유하는 단계를 더 포함한다. 또 다른 실시 예에서, 상기 세계의 적어도 하나의 부분의 상태는 사용자 입력, 서버 계산, 또는 이들의 조합에 의해 상기 영구 가상 세계 시스템에 센서 데이터를 제공하는 센서를 포함하는 복수의 연결 장치에 의해 획득된다.
상기 요약은 본 개시의 모든 양태의 완전한 목록을 포함하지 않는다. 본 개시 내용은 아래의 상세한 설명에 개시되고 특히 출원서와 함께 출원된 청구 범위에서 지적된 것들뿐만 아니라 위에 요약된 다양한 양태의 모든 적합한 조합으로부터 실시될 수 있는 모든 시스템 및 방법을 포함하는 것으로 고려된다. 이러한 조합은 상기 요약에서 구체적으로 언급되지 않은 특별한 이점을 갖는다. 본 개시의 다른 특징 및 이점은 첨부된 도면 및 이하의 상세한 설명으로부터 명백해질 것이다.
본 개시의 특정 피처, 양태 및 이점은 다음의 설명 및 첨부 도면과 관련하여 더 잘 이해될 것이다.
도 1은 일 실시 예에 따른 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 시스템의 개략도를 도시한다.
도 2는 일 실시 예에 따른 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 시스템의 서버의 개략도를 도시한다.
도 3은 일 실시 예에 따른 분산 메시지 교환 플랫폼을 통한 자원할당의 개략도를 도시한다.
도 4a-4b는 일 실시 예에 따른 분산 메시지 교환 플랫폼을 통한 엔진 서비스할당의 개략도를 도시한다.
도 5a-5c는 일 실시 예에 따른 영구 가상 세계 시스템의 엘리먼트들 사이의 관계의 개략도이다.
도 6a-6b는 일 실시 예에 따른, 복수의 셀로의 분할의 개략도를 도시한다.
도 7은 일 실시 예에 따른 복수의 셀로의 분할의 추가 실시 예의 개략도를 도시한다.
도 8은 일 실시 예에 따른 클라이언트 장치의 개략도를 도시한다.
도 9는 일 실시 예에 따른 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 컴퓨터 구현 방법의 블록도를 도시한다.
도 10은 일 실시 예에 따른 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 컴퓨터 구현 방법의 추가 단계를 포함하는 블록도를 도시한다.
도 11은 일 실시 예에 따른 분산 메시지 교환 플랫폼을 통한 자원 할당 단계를 설명하는 블록도를 도시한다.
다음의 설명에서, 다양한 실시 예를 도시하는 도면을 참조한다. 또한, 다수의 예를 참조하여 다양한 실시 예를 하기에 설명한다. 실시 예는 청구된 주제의 범위를 벗어나지 않고 설계 및 구조의 변경을 포함할 수 있음을 이해해야 한다.
도 1은 일 실시 예에 따른 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 시스템(100)의 개략도를 도시한다.
시스템(100)은 네트워크(104)를 통해 분산 배치(106)에서 자원 관리자를 포함하는 분산 3D 엔진을 구현하는 복수의 서버 컴퓨터(102)(예를 들어, 외부 서버 A-C)를 포함한다. 분산 배치(106)는 시스템(100) 중 하나와 같은 분산 아키텍처를 사용하는 것에 의한 복수의 서버 컴퓨터(102)에서의 분산 3D 엔진의 소프트웨어로의 구현이다. 서버 컴퓨터(102)는 퍼블리싱-구독 모델을 사용하여 자원 관리자를 통해 각각의 셀(108)이 실제 세계 또는 가상 세계의 하나 이상의 상이한 영역을 가상으로 나타내는 복수의 셀(108) 중 하나 이상(예를 들어, 셀 1-3)에 자원을 동적으로 할당한다. 할당은 현재 부하와 해당 계산 및 순위화된 요구를 기반으로 한다. 일부 실시 예에서, 요구는 이하에서 더 상세히 설명되는 바와 같이, 가상 객체(110)의 크기 및 사용자 아바타가 볼 수 있는 영구 가상 세계 시스템의 부분 내의 상호 작용 레벨 중 하나 이상을 추가로 고려한다.
복수의 셀(108) 중 하나 이상은 가상 객체(110)를 포함하고, 셀(108) 내의 복수의 가상 객체(110)는 영구 가상 세계 시스템(112)을 형성한다. 일부 실시 예에서, 가상 객체(110) 중 적어도 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본이다. 일부 실시 예에서, 개별 셀의 요구는 하기에 더 상술하는 바와 같이 개별 셀 내의 가상 객체(110)의 크기, 각각의 클라이언트 장치(114)를 통해 사용자에게 보이는 영구 가상 세계 시스템의 부분 내의 상호 작용 레벨, 또는 이들의 조합을 고려한다. 추가 실시 예에서, 요청은 하기에 더 상술하는 바와 같이 클라이언트 장치(114)와 서버 및/또는 안테나와 같은 네트워크 장비 사이의 거리, 사용자가 사용하는 애플리케이션 유형, 자신의 개인 사용자 프로필 또는 계약 세부 사항에 따라 사용자가 가질 수 있는 자격 유형과 같은 다른 파라미터를 고려한다.
본 명세서에서 "영구"라는 용어는 지속적으로 실행되는 프로세스 또는 네트워크 연결 없이 계속 존재할 수 있는 시스템의 상태를 특성화하는 데 사용된다. 예를 들어, "영구"라는 용어는 가상 세계 시스템과 여기에 포함된 모든 객체가 가상 개체를 만드는 데 사용되는 프로세스가 중단된 후에도 계속 존재하고 가상 세계 시스템에 연결되는 사용자와 무관한 가상 세계 시스템을 특성화하는 데 사용될 수 있다. 따라서 가상 세계 시스템은 비휘발성 저장 위치(예를 들어, 서버)에 저장된다. 이러한 방식으로 가상 복제본, 순수 가상 개체 및 애플리케이션은 사용자가 서버에 연결되어 있지 않더라도 특정 목표를 달성하도록 구성될 때 서로 상호 작용하고 협력할 수 있다.
일부 실시 예에서, 하드웨어 및 네트워크 요구를 감소시키고, 네트워크 지연의 감소에 기여하고, 일반적인 병합 현실 경험을 개선하기 위해, 시스템은 mmW(밀리미터파) 또는 mmW와 5세대 무선 시스템 통신(5G)과 같은 6GHz 이하의 통신 시스템의 조합을 포함하는 네트워크(104)를 통해 연결할 수 있다. 다른 실시 예에서, 시스템은 무선 근거리 네트워킹(Wi-Fi)을 통해 연결할 수 있다. 제공된 통신 시스템은, 일반적으로 상호 작용이 높은 디지털 현실 애플리케이션 또는 기타 매우 까다로운 애플리케이션을 실행할 필요가 있는 파라미터와 호환하는, 필드의 엔드 포인트에 대한 낮은(예를 들어, 약 1 내지 약 5 밀리초) 종단 간(E2E) 지연 및 높은(예를 들어, 1-10 Gbps) 다운 링크 속도를 허용할 수 있다. 그 결과 고품질의, 낮은 지연 시간, 실시간 디지털 애플리케이션 콘텐츠 스트리밍이 가능하다. 다른 실시 예에서, 시스템은 4세대 무선 시스템 통신(4G)을 통해 통신 연결될 수 있거나, 4G 통신 시스템에 의해 지원될 수 있거나, 다른 유선 또는 무선 통신 시스템을 포함할 수 있다.
다른 실시 예에서, GPS, BDS, Glonass, QZSS, Galileo 및 IRNSS와 같은 위성 기반 내비게이션 시스템을 지칭하는 글로벌 내비게이션 위성 시스템(GNSS)은 장치의 위치 지정을 가능하게 하는 데 사용될 수 있다. 충분한 수의 위성 신호와 삼각 측량 및 삼변 측량(trilateration)과 같은 기술을 사용하여, GNSS는 장치의 위치, 속도, 고도 및 시간을 계산할 수 있다. 일 실시 예에서, 외부 위치지정 시스템은 기존 셀룰러 통신 네트워크의 아키텍처를 통해 보조 GNSS(AGNSS)에 의해 증강되며, 여기서 기존 아키텍처는 5G를 포함한다. 다른 실시 예에서, AGNSS 추적 시스템은 4G 셀룰러 통신 네트워크에 의해 추가로 지원된다. 실내 실시 예에서, GNSS는 Wi-Fi와 같은, 바람직하게는 60GHz에서 데이터를 제공하는 라디오 무선 근거리 네트워크를 통해 추가로 증강되지만, 이에 제한되지 않는다. 대안적인 실시 예에서, GNSS는 차동 GPS(DGPS), 위성 기반 증강 시스템(SBAS), 실시간 키네매틱(real-time kinematic)(RTK) 시스템과 같은 당 업계에 알려진 다른 기술을 통해 증강된다. 일부 실시 예에서, 장치의 추적은 장치 내의 AGNSS 및 관성 센서의 조합에 의해 구현된다.
본 개시의 일부 실시 예에서, 시스템(100)은 그 모두가 네트워크(104)를 통해 연결될 수 있는 공공 또는 개인 클라우드, 포그 서버, 클라우드렛, 피어-투-피어 클라우드 서버 시스템, 분산 원장 기반 인프라, 및 엔터프라이즈 시스템, 모바일 플랫폼 및 사용자 장치와 같은 에지 장치 및 시스템과 같은 컴퓨팅 장치 및 시스템을 사용하는 분산 컴퓨팅 기능을 표시할 수 있는 클라우드-에지 인프라에서 구현될 수 있다. 클라우드-에지 컴퓨팅 네트워크를 사용하여, 컴퓨팅 파워에 대한 액세스, 컴퓨터 인프라(예를 들어, 소위 서비스로서의 인프라 또는 IaaS를 통해), 애플리케이션 및 비즈니스 프로세스는 요구에 따라 클라이언트 장치(114)를 통해 사용자에게 서비스로서 제공될 수 있다. 이러한 방식으로 물리적 서버 및 네트워크 장비를 포함한 자원은 동적으로 할당될 수 있는 공유 스토리지 및 컴퓨팅을 가능하게 한다. 일부 실시 예에서, 클라이언트 장치(114)는 사용자 장치 및 다른 장치를 포함한다. 사용자 장치는 예를 들어 모바일 장치, 개인용 컴퓨터, 게임 콘솔, 미디어 센터, 헤드 장착형 디스플레이 및 투시 장치(예를 들어, 디지털 현실 콘택트 렌즈)를 포함할 수 있다. 다른 장치는 대응하는 실제 세계 객체의 가상 복제본을 업데이트하고 풍부하게 하기 위해 센서 메커니즘을 통해 실제 세계 객체로부터 다중 소스 센서 데이터를 캡처하도록 특별히 구성될 수 있다. 일 실시 예에 따르면, 다른 장치는 하나 이상의 감시 카메라, 차량, 신호등, 건물, 거리, 기차 트랙, 가전제품 등이다.
도 2는 일 실시 예에 따른 가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 시스템(100)의 서버(102)의 개략도를 도시한다.
하나 이상의 서버(102)는 가상 또는 실제 세계의 적어도 일부를 각각의 셀이 영구 가상 세계 시스템(112)을 형성하는 가상 객체(110)를 구비하는 복수의 셀(예를 들어, 도 1의 셀(108))로서 가상화하는 데이터 구조를 저장하는 하나 이상의 프로세서(202) 및 메모리(204)를 포함한다. 영구 가상 세계 시스템(112)이 실제 세계에 기초한 실시 예에서, 가상 객체(110) 중 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본(206)이다. 다른 실시 예에서, 가상 객체(110)는 애플리케이션(208) 및 실제 세계에 존재하지 않는 순수 가상 객체(210)를 더 포함한다. 메모리(204)는 자원을 관리하는 자원 관리자(214)를 포함하는 분산 3D 엔진(212)을 더 저장한다. 자원 관리자(214)는 가상 객체가 구독할 수 있는 하나 이상의 셀에 자원을 퍼블리싱함으로써 컴퓨팅 파워, 메모리 및 네트워크를 포함하는 자원을 할당하기 위해 퍼블리싱-구독 모델을 사용하여 분산 메시지 교환 플랫폼(216)을 활용한다. 자원 관리자(214)는 자원을 관리하는 하드웨어 및 소프트웨어 컴포넌트를 인터페이싱하는 가상 층으로서 기능할 수 있다. 관리 동작은 분산 메시지 교환 플랫폼(216)을 통한 자원의 평가, 프로비저닝, 스케일링 및 복제를 포함할 수 있다.
본 명세서에서 "가상 복제본"이라는 용어는 실제 세계 엘리먼트의 정확하고 영구적인 가상 표현을 의미한다. 일 실시 예에서, 본 개시 내용의 가상 복제본(206)은 컴퓨터 보조 도면(CAD) 또는 컴퓨터 보조 엔지니어링(CAE) 방법을 통해 매핑되거나 모델링되고, 실제 객체의 컴퓨터 모델(예를 들어, 건물 정보 모델-BIM) 또는 기타 적절한 선행 기술 방법에 의해 입력될 수 있고, 실제 트윈의 모습뿐만 아니라 행동을 미러링할 수 있는 실제 세계 엘리먼트 또는 실제 트윈의 가상 버전 또는 가상 트윈을 가리킨다. 실제 세계 객체 중 일부는 가상 복제본(206)을 그들 각각의 실제 대응물과 강화하고 동기화하기 위한 다중 소스 입력 데이터를 가상 복제본(206)에 제공할 수 있는 센서를 추가로 포함할 수 있다.
일부 실시 예에서, 가상 복제본(206)은 애플리케이션을 위한 3D 구조를 모델링하는데 사용할 수 있는 실제 세계의 구조적 속성을 나타내는 SLAM 또는 파생 매핑 기반 데이터와 같은 3D 세계 및 건물 데이터; 3D 지오메트리 데이터; 3D 포인트 클라우드 데이터; 또는 지리 정보 시스템 데이터; 중 하나 이상을 포함한다.
본 개시에서, "가상화"라는 용어는 가상 또는 실제 세계의 적어도 일부의 추상화된 가상 버전 또는 영구 가상 세계 시스템(112)을 생성하는 동작을 의미한다. 실제 세계의 경우, 가상화는 실제 세계의 임의의 자원(예를 들어, 컴퓨팅 파워, 메모리 또는 네트워크) 및 관련 장비뿐만 아니라 실제 세계에서 발견되는 엘리먼트의 가상 버전을 생성하여 사용자(예를 들어, 인간 사용자, 컴퓨터 프로그램 또는 기계)로 하여금 영구 가상 세계 시스템(112)을 통해 실제 세계의 엘리먼트와 상호 작용할 수 있도록 하는 것을 가리킨다. 이러한 방식으로, 사용자는 상호 작용이 실제 세계의 엘리먼트와 직접 일어난 것처럼 느낄 수 있다. 예를 들어, 인간 사용자는 사용자 장치(예를 들어, 휴대폰 또는 헤드 장착 디스플레이 장치)의 사용자 인터페이스를 통해 증강 또는 가상현실에서, 실제 도시의 복수의 엘리먼트가 영구 가상 세계 시스템(112)에서 가상화된 가상 도시를 통해 실제 도시의 엘리먼트와 상호 작용할 수 있다. 가상 복제본을 통한 실제 세계의 물리적 조작을 위해, 전자기계 장치가 가상 복제본을 통해 실제 세계 객체로 전송된 원격 명령을 실제 세계 엘리먼트로부터의 물리적 동작으로 변환하기 위해 실제 세계 객체에 설치될 수 있다. 가상 또는 실제 세계를 기반으로 하는 영구 가상 세계 시스템(112)에 관계없이, 가상 객체는 가상 또는 대응하는 실제 객체의 양태의 임의의 그래픽, 수학적 또는 논리적 표현을 나타내는 모델을 더 포함할 수 있다. 일부 실시 예에서, 이러한 모델은 영구 가상 세계 시스템(112)의 엔티티에 자가 컴퓨팅 능력 및 자율 동작을 제공한다. 일부 실시 예에서, 적합한 모델은 3D 모델, 지오메트리 모델, 동적 모델 및 기계 학습 모델 중 하나 이상을 포함한다.
본 개시의 분산 3D 엔진(212)은 분산 배치(예를 들어, 복수의 서버 또는 클라이언트 컴퓨터에서)로 구현되는 3D 엔진의 분산 버전을 지칭한다. 분산 3D 엔진(212)은 자원 관리자(214)를 통해 자원(예를 들어, 컴퓨팅 파워, 메모리 및 네트워크)을 가상으로 풀링, 할당, 제공하고 및 동적으로 부하 밸런싱 및 할당하도록 구성된다. 영구 가상 세계 시스템(112)에 대한 분산 3D 엔진(212)의 연결 및 액세스는 실제 또는 가상 세계의 적어도 하나의 부분을 나타내는 각 셀의 요구를 평가하기 위해 공간 컴퓨팅 원리를 사용함으로써 부하 밸런싱이 정확하게 수행될 수 있게 한다. 자원 프로비저닝의 일부로서, 분산 3D 엔진(212)은 복수의 개별 분산 소프트웨어 엔진을 통해 주문형으로 복수의 엔진 서비스(예를 들어, 3D 렌더링, 그래픽, 물리, 오디오, 인공 지능, 포지셔닝 및 통신)를 제공한다. 언급된 각각의 엔진 서비스를 제공하기 위해 수행되는 하드웨어 동작은 복수의 대응하는 하드웨어 엔진에 의해 제공될 수 있다. 이러한 자원 풀링은 상술한 바와 같이 가상화를 통해 구현된다. 따라서, 본 개시 내용의 분산 3D 엔진(212)의 개념은 단순히 서로 다른 애플리케이션(예를 들어, 비디오 게임) 간에 재사용될 수 있는 라이브러리에서 추상화된 기능의 집합뿐만 아니라, 자원 관리자(214)를 통해 풀링, 할당, 제공 및 부하 밸런싱되는 엔진 동작을 포함하는 분산 하드웨어 및 소프트웨어 구현으로서 상기 동작들의 기반으로 영구 가상 세계 시스템을 사용하는 공간 컴퓨팅 원리를 사용하는 것으로 해석되어서는 안된다.
본 명세서에서 "공간 컴퓨팅"이라는 용어는 컴퓨터로부터의 입력을 송신하고 및 출력을 수신하기 위한 물리적 공간의 사용을 의미한다. 따라서 공간 컴퓨팅은 필요한 컴퓨팅 및 동적 부하 밸런싱을 수행하기 위해 가상 객체의 지오메트리 속성과 위치 및 방향을 사용한다.
가상 객체(110)는 시뮬레이션으로부터 획득되거나, 사용자 장치를 통해 사용자에 의해 입력되거나, 사물 인터넷 장치와 같은 센서 장치(예를 들어, 실제 세계를 기반으로 하는 영구 가상 세계 시스템의 경우)에 의해 캡처된 데이터가 공급될 수 있다. 데이터의 연속적인 흐름은 영구 가상 세계 시스템을 주기적으로 업데이트되도록 유지할 수 있다. 따라서, 가상 객체(110)는 실제 세계의 다른 차원 또는 양태로부터의 모델 및 데이터를 포함하기 때문에, 실제 세계의 적어도 하나의 부분으로부터의 영구 가상 세계 시스템(112)은 다수의 현재 가상 세계 시스템의 경우처럼 실제 세계의 시각적 3D 표현뿐만이 아니라 실제 세계의 다차원 표현이다. 예를 들어, 복수의 가상 객체(110)는 각각의 가상 객체 간의 연결 및 통신을 가능하게 하는 온도, 연료 소비, 속도, 파워, 압력, 질량, 소리 등과 관련된 데이터를 포함할 수 있다.
일부 실시 예에서, 가상 또는 실제 세계의 가상화는 다양한 세부 레벨(LOD)에서 동일한 세계의 복수의 시뮬레이션을 수행하는 것을 포함한다. 다른 물리적 모델이 낮은 충실도에서 높은 충실도 모델까지 가상 복제본에 연관될 수 있기 때문에, LOD 관리는 그래픽 파이프 라인 사용(일반적으로 정점 변환)에 대한 워크로드를 줄이거나 물리적 시뮬레이션을 향상시킴으로써 렌더링 프로세스와 같은 컴퓨팅 프로세스의 효율을 높인다. 이를 통해 케이스와 상황에 따라 상이한 시뮬레이션을 수행할 수 있다. LOD 관리를 통해 특정 요구 사항 및 컨텍스트에 따라 최적화된 사용자 경험을 제공할 수도 있다. 따라서 동일한 가상 또는 실제 세계를 서로 다른 LOD에서 시뮬레이션하여 사용자에게 적합한 경험을 제공하면서 현재 개시물의 부하 밸런싱 방법을 용이하게 할 수 있다. 예를 들어, 영구 가상 세계 시스템(112)의 실제 세계 시뮬레이션은 인간 사용자의 시각화를 위한 실제 세계의 적어도 하나의 부분에 대한 고 충실도 시뮬레이션과 각각의 셀의 요구를 평가하고 고 충실도 시뮬레이션의 부하 밸런싱을 용이하게 하기 위한 저 충실도 시뮬레이션을 포함할 수 있다. 따라서 저 충실도 시뮬레이션은 자원을 적게 사용하면서 과부하가 발생할 수 있는 영역과 그렇지 않은 영역을 쉽게 볼 수 있다. 다른 예에서, 제조 공장의 각 기계의 현재 에너지 소비, 생산 속도, 효율성 등과 관련된 데이터 및 모델을 제외하고 객체 간의 정확한 공간 표현 및 관계 때문에 제조 공장의 가상화는 분산 3D 엔진(212)을 통한 요구 평가 및 해당 자원 할당을 포함하여 제조 공장의 정확한 관리를 가능하게 한다. 제조 공장은 제조 공장의 관리(예를 들어, 공장 내의 생산 공정 및 모든 엘리먼트의 제어)를 위해 높은 충실도로 시뮬레이션될 수 있고, 제조 공장의 부하 밸런싱을 관리하기 위해 낮은 충실도로 추가로 시뮬레이션될 수 있다. 상기 동일한 LOD 원리는 가상 세계에 기초한 영구 가상 세계 시스템(112)에 적용될 수 있으며, 여기서 가상 세계의 저 충실도 버전은 가상 세계의 낮은 밸런싱을 목적으로 영구 가상 세계 시스템(112) 내에서 시뮬레이션될 수 있는 동시에, 더 나은 사용자 경험을 제공하기 위해 가상 세계의 고 충실도 버전을 시뮬레이션할 수 있다.
여기에서 "자체 관리 능력"이라고도 하는 "자체 컴퓨팅 능력"은 컴퓨팅 자원을 자율적으로 관리하기 위해 인공 지능 알고리즘을 적용하는 기능을 의미한다. 일 실시 예에서, 영구 가상 세계 시스템에서 자체 컴퓨팅 기능을 가진 가상 복제본은 대응하는 실제 세계 엘리먼트 또는 실제 세계 엘리먼트 자체의 환경 변화에 적응하기 위해 컴퓨팅 자원을 자율적으로 관리할 수 있다. 자체 관리 규칙 및 조건은 블록체인 또는 분산 원장 기술에서 실행되는 스마트 계약의 사용을 통해 추가로 관리되어 규칙 및 조건을 분산되고 투명한 방식으로 더 체계화할 수 있다. 따라서, 일 실시 예에서, 실제 객체의 가상 복제본과 같은 각 가상 객체는 영구 가상 세계 시스템에 반영된 실제 세계의 조건에 따라 자율적으로 작동하는 자율적인 동작을 나타낼 수 있다(예를 들어, 필요한 자원을 할당하고 각 상황에서 요구하는 대로 명령을 자율적으로 전송 및 실행하고 및/또는 이벤트를 생성함으로써). 이러한 유형의 동작을 달성하려면 가상 객체를 모델링하는 동안 인공 지능 알고리즘으로 가상 객체를 훈련해야 할 수 있다.
가상 복제본은 하나 이상의 소스(예를 들어, 하나 이상의 실제 세계 개체, 환경 센서, 컴퓨팅 장치 등으로부터)에서 데이터를 얻을 수 있다. 본 명세서에서 사용되는 용어 "다중 소스 데이터"는 다중 소스로부터 얻을 수 있는 데이터를 의미한다. 가상 복제본은 공지된 파라미터 또는 피처를 업데이트하거나, 추가 파라미터 또는 피처 등으로 가상 복제본을 강화함으로써 다중 소스 데이터를 기반으로 업데이트 될 수 있다.
본 개시에서, 용어 "강화(enriching)"는 다중 소스 데이터에 기초하여 가상 복제본에 추가 속성을 제공하는 동작을 설명하기 위해 사용된다. 예를 들어, 가상 복제본을 강화하는 것은 클라이언트 장치의 센서 메커니즘에서 캡처한 실제 세계 데이터를 제공하는 것을 의미할 수 있으며, 여기서 추가 실제 세계 데이터는 비디오 데이터, 온도 데이터, 실시간 에너지 소비 데이터, 실시간 물소비 데이터, 속도 또는 가속도 데이터 등을 포함한다.
일부 실시 예에서, 가상 복제본(206) 중 일부는 클라이언트 장치를 통해 영구 가상 세계 시스템(112)에 액세스하는 실제 사용자의 가상 아바타일 수 있다. 이러한 실시 예에서, 자원은 예를 들어 사용자가 클라이언트 장치를 통해 볼 수 있는 위치 및 방향에 대응하여 사용자의 가상 아바타가 활성화된 해당 셀에 퍼블리싱되어, 사용자 클라이언트 장치를 통해 해당 셀을 구독하는 해당 가상 아바타를 통해 사용자에 의해 자원이 수신되도록 한다. 유사하게, 애플리케이션(208) 및/또는 순수 가상 객체(210)가 셀에서 활성화될 때, 이러한 가상 객체(110)는 셀을 구독하여 자원 관리자(214)가 요구를 평가하고 그에 따라 가상 객체(110)가 해당 셀을 구독함으로써 획득할 수 있는 더 많거나 적은 자원을 퍼블리싱하도록 트리거한다.
예를 들어, 도시의 특정 신호등은 도로 또는 거리에 연결되어 있으며 센서 또는 기타 교통 신호와 같은 다른 개체에도 연관될 수 있다. 이러한 관계는 영구 가상 세계 시스템(112)에서 새로운 상호 작용을 생성할 수 있는 이벤트를 트리거할 수 있고, 예를 들어, 거리에서의 긴급 차량은 긴급 차량의 궤적과 해당 지역의 실제 교통 상황의 시뮬레이션에 기초하여 교차로에서의 임의의 정차를 방지하기 위해 신호등 패턴을 변경하는 우선순위 이벤트를 자동으로 트리거할 수 있다. 이러한 이벤트에 관련된 장치(예를 들어, 차량)의 프로비저닝을 포함하여 그러한 이벤트 동안 자원의 관리는 자원 관리자(212)에 의해 수행된다. 일부 실시 예에서, 이러한 조건, 이벤트 및 결과는 트래픽 특정 분산 원장, 예를 들어, 다양한 코드화된 교통 규범을 정의하고 행동을 기대하며, 그에 따라서 이러한 이벤트의 발생을 자동화하고 기록하는 다수의 스마트 계약이 있는 트래픽 사이드 체인에 대해 한정되는 스마트 계약으로서 프로그래밍될 수 있다.
일부 실시 예에서, 순수 가상 객체(210)는 영구 가상 세계 시스템(112)에만 존재하고 따라서 실제 세계에서 대응 객체를 갖지 않는 객체를 가리킨다.
일부 실시 예에서, 애플리케이션(208)은 하나 이상의 기존 애플리케이션, 분산 애플리케이션 또는 탈중앙화된 애플리케이션일 수 있다. 기존 애플리케이션은 일반적으로 기존 클라이언트-서버 모델을 기반으로 하며 정적 인프라의 전용 서버에서 실행된다. 분산 애플리케이션은 본 개시물의 클라우드 서버와 같은 클라우드 컴퓨팅 플랫폼에 주로 저장되는 애플리케이션이며, 동일한 네트워크에서 동시에 다수의 시스템 및 장치에서 실행되거나, 블록체인 또는 분산 원장 기반 분산 데이터베이스에서 실행될 수 있다. 탈중앙화된 애플리케이션은 주로 블록체인 또는 분산 원장 기반 분산 데이터베이스와 같은 탈중앙화된 인프라에서 실행된다.
일부 실시 예에서, 영구 가상 세계 시스템(112)은 증강 현실(AR) 층 및 가상현실(VR) 층으로 분리될 수 있는 가상 세계 층을 포함할 수 있다. 개별 층은 증강 또는 가상현실 중 임의의 것에서의 영구 가상 세계 시스템에 액세스하고 각 층에 저장된 엘리먼트를 결합할 수 있으며, 하나 또는 다른 유형의 현실에 액세스할 때마다 네트워크를 통해 적어도 하나의 서버 컴퓨터(102)에 연결된 클라이언트 장치를 통해 활성화될 수 있다. 각 층은 각 층에 특정할 수 있는 실제 및 가상 객체(110)의 증강을 포함할 수 있다. 예를 들어, AR 층은 증강 현실에서 영구 가상 세계 시스템(112)에 액세스할 때만 볼 수 있는 가상 복제본(206), 애플리케이션(208) 및 순수 가상 객체(210)만을 포함할 수 있다. 유사하게, VR 층은 가상현실에서 영구 가상 세계 시스템(112)에 액세스할 때만 볼 수 있는 가상 복제본(206), 애플리케이션(208) 및 순수 가상 객체(210) 만을 포함할 수 있다. 그러나 사용자는 두 층 모두를 활성화하거나 각 층의 레벨을 조정하여 하나의 층의 적어도 일부 객체가 다른 층에서 보이도록 결정할 수 있다. 예를 들어, 가상현실에서 장면에 액세스할 때, 그것은 건물 또는 관광지에 대한 추가 설명을 보는 것과 같이 VR 층에서 가상화된 실제 개체의 증강을 볼 수 있도록 증강 현실 층을 활성화할 수 있다.
일부 실시 예에서, 분산 3D 엔진(212)은 하나 이상의 개별 분산 소프트웨어 엔진(218)을 더 포함한다. 분산 소프트웨어 엔진(218)은 복수의 동적 및 독립 소프트웨어 모듈로 분해된 3D 엔진일 수 있으며, 각각의 소프트웨어 모듈은 특정 엔진 작업을 수행하도록 프로그래밍된다. 개별 분산 소프트웨어 엔진(218)은 예를 들어 분산 메시지 교환 플랫폼(216)을 통해 서로 통신할 수 있다. 각각의 개별 분산 3D 엔진(218)은 다른 개별 분산 소프트웨어 엔진(218)에서 서비스 기능을 호출하기 위해 메시지 교환 플랫폼(216)을 사용할 수 있다. 이러한 호출은 간접적으로(예를 들어, 분산 메시지 교환 플랫폼(216)에 의해 호출되는 일반 프록시 함수를 통해) 또는 직접(예를 들어, 각각의 개별 분산 3D 엔진(218)과 직접 통신을 유지하는 분산 메시지 교환 플랫폼(216)에 의해) 수행될 수 있다.
일부 실시 예에서, 하나 이상의 프로세서(202)는 하나 이상의 전용 하드웨어 엔진(220)일 수 있다. 다른 실시 예에서, 하나 이상의 프로세서(202)는 범용 처리 유닛이거나, 범용 처리 유닛에 의해 지원되는 전용 처리 유닛이다. 일부 실시 예에서, 전용 처리 유닛은 엔진 작업을 수행하기 위한 하나 이상의 개별 분산 소프트웨어 엔진(218)의 처리를 위해 특별히 조정된 처리 유닛이다. 따라서 전용 하드웨어 엔진(220)은 3D 그래픽, 인공 지능 연산, 물리 연산, 3D 구조 처리 연산, 시뮬레이션 연산, 추적 및 포지셔닝, 또는 이들의 통신 중 하나 이상과 관련된 연산의 처리를 위해 개별적으로 설계 및 구성될 수 있다. 일부 실시 예에서, 각각의 하드웨어 엔진(220)은 각각의 특정 유형의 동작을 처리하도록 지정된 하나 이상의 특정 하드웨어 처리 코어를 포함하는 칩 상의 하나 이상의 전자 칩 또는 시스템 상에 결합 될 수 있다. 하나 이상의 전자 칩의 처리 코어는 각각의 개별 분산 소프트웨어 엔진(218)의 필요한 알고리즘을 물리적으로 실행하도록 설계된 전자 칩의 전자 회로의 기능 유닛 또는 모듈로 간주될 수 있다. 예를 들어, 하나 이상의 처리 코어 중 적어도 하나가 FPGA 또는 전용 기능을 구현하는 집적 회로의 다른 형태로 구현될 수 있다. 따라서, 하나 이상의 전자 칩은 하나 이상의 처리 코어 중 적어도 일부를 구현하는 적어도 하나의 집적 회로를 포함할 수 있으며, 여기서 처리 코어 중 적어도 하나는 상이한 전용 하드웨어 엔진(220)을 구현한다. 일부 실시 예에서, 전자 칩은 CPU 및/또는 GPU와 같은 범용 처리 코어를 추가로 포함할 수 있거나, 각 엔진 작업에 대한 추가 지원을 제공하기 위해 외부 CPU 및/또는 GPU에 연결할 수 있다. 각각의 개별 분산 3D 엔진(218)이 하나 이상의 하드웨어 엔진(220)으로부터 하나 이상의 전용 하드웨어 코어로부터의 자원을 획득할 수 있기 때문에, 전용 하드웨어 엔진(220)을 제공하는 것은 각각의 개별 분산 소프트웨어 엔진(218)이 영구 가상 세계 시스템 내에서 더 많은 수의 작업을 실행하기 위한 더 큰 자원 풀을 가질 수 있게 한다.
프로세서(202)는 단일 전용 프로세서, 단일 공유 프로세서, 또는 그 일부가 공유될 수 있는 복수의 개별 프로세서를 가리킬 수 있다. 또한, "프로세서"라는 용어의 명시적인 사용은 소프트웨어를 실행할 수 있는 하드웨어만을 의미하는 것으로 해석되어서는 안되며, DSP(디지털 신호 프로세서) 하드웨어, 네트워크 프로세서, ASIC(application specific integrated circuit), FPGA 등을 묵시적으로 포함할 수 있다.
메모리(204)는 컴퓨터 판독 가능 매체, 또는 하드 드라이브, 메모리 카드, 플래시 드라이브, ROM, RAM, DVD 또는 기타 광학 디스크와 기타 쓰기 가능 및 판독 전용 메모리와 같은 전자 장치의 도움으로 판독될 수 있는 데이터를 저장하는 기타 매체를 포함하여 프로세서(202)에 의해 액세스 가능한 정보를 저장할 수 있는 임의의 적절한 유형일 수 있다. 메모리에는 영구 저장소 외에 임시 저장소가 포함될 수 있다. 명령어는 프로세서(202)에 의해 직접(예를 들어, 기계 코드) 또는 간접적으로(예를 들어, 스크립트) 실행될 수 있다. 명령어는 프로세서(202)에 의한 직접 처리를 위해 객체 코드 포맷으로 또는 스크립트 또는 요구에 따라 해석되거나 미리 컴파일될 수 있는 독립적인 소스 코드 모듈 모음을 포함한 임의의 기타 컴퓨터 언어로 저장될 수 있다. 데이터는 명령에 따라 프로세서(202)에 의해 검색, 저장 또는 수정될 수 있다. 예를 들어, 데이터는 특히 복수의 상이한 필드와 레코드, XML 문서 또는 플랫 파일을 가지는 테이블로서 관계형 데이터베이스의 컴퓨터 레지스터에 저장될 수 있다. 데이터는 컴퓨터 판독가능한 포맷으로 포맷될 수 있다.
일부 실시 예에서, 가상 객체(110)와 그들 사이의 상호 작용 메커니즘은 컴퓨터 스크립트 및 컴퓨터 프로그램에 포함된 컴퓨터 코드의 사용을 통해 정의되며, 상호작용 및 상호작용 애플리케이션이 발생하는 영구 가상 세계 시스템(112)에서 제공된 애플리케이션, 스마트 계약 또는 이들의 조합을 통해 활성화될 수 있다. 따라서 애플리케이션, 스마트 계약 또는 이들의 조합은 영구 가상 세계 시스템(112)을 통해 실제 세계의 모든 엘리먼트 간의 가능하고 원하는 상호 작용 및 상호 작용 인터페이스를 디지털 방식으로 코딩하고 표현할 수 있도록 한다. 상호 작용은 인터렉티브 게임의 형태로 또는 게임과 같은 상호 작용 메커니즘을 통해 사용자가 경험할 수 있다.
도 3은 일 실시 예에 따른, 자원 관리자의 분산 메시지 교환 플랫폼(216)을 통한 자원 할당 시스템(300)의 개략도를 도시한다.
자원 할당 시스템(300)은 분산 메시지 교환 플랫폼(216)에 자원(302)을 할당하며, 여기서 자원(302)은 컴퓨팅 파워(304), 메모리(306) 및 네트워크(308)를 포함하고, 자원(302)은 하나 이상의 서버 컴퓨터(102) 및/또는 클라이언트 장치(114)로부터 획득될 수 있다. 분산 메시지 교환 플랫폼(216)은 셀(108)에 존재하는 하나 이상의 가상 객체(110)로부터 요청을 수신하고, 셀(108)에 퍼블리싱함으로써 대응하는 할당을 수행한다. 일부 실시 예에서, 이러한 자원 할당을 수행하기 위해, 분산 메시지 교환 플랫폼(216)은 퍼블리싱-구독 모델을 이용하고, 이에 의해 하나 이상의 가상 객체(110)는 자원(302)이 퍼블리싱된 하나 이상의 셀(108)을 구독한다. 예를 들어, 사용자를 나타내는 가상 객체 또는 사용자 가상 아바타가 특정 셀(108)에서 활성화되어 자원 관리자가 사용자 가상 아바타가 필요로하는 자원을 해당 셀에 퍼블리싱하도록 트리거할 수 있고, 여기서, 상기 퍼블리싱은 분산 메시지 교환 플랫폼(216)을 통해 수행된다. 따라서, 자원(302)은 분산 메시지 교환 플랫폼(216)에 한번 퍼블리싱되면 그들을 구독(310)하는 각각의 가상 객체(110)로 전달된다. 이는 가상 세계를 프로비저닝하기 위해 개발된 전형적인 3D 엔진 시스템과 대조되고, 이는 맵 내의 각 클라이언트 장치에 대해 완전한 데이터 업데이트 패킷을 출력하고 클라이언트 장치에 맞게 각 패킷을 조정하여 클라이언트 장치가 클라이언트 장치와 관련이 있고 시야 내의 객체에 대한 데이터만 수신하도록 하고, 3D 엔진이 잠재적으로 개체가 표시될 수 있는 각 클라이언트 장치에 대해 한 번씩 동일한 데이터를 여러번 전송하도록 유도한다.
퍼블리싱-구독 모델은 일반적으로 두 노드(클라이언트와 서버)간에 통신이 이루어지는 일반적으로 사용되는 클라이언트/서버 기반 통신 모델과는 다른 컨텐츠의 생산 및 소비를 기반으로하는 통신 모델이다. 퍼블리싱-구독 모델을 통한 이러한 통신은 익명으로 가능할 수 있으며, 이는 서버 컴퓨터(102) 및/또는 클라이언트 장치(114)가 자원(302)을 얻기 위해 어느 셀(108)에 누가 가입했는지 알 필요가 없음을 의미하며; 마찬가지로, 자원을 획득하는 가상 객체(110)는 자원(302)이 어디서 왔는지 알 필요가 없다. 일반적인 퍼블리싱-구독 모델은 모든 사람이 정보를 퍼블리싱하고 받을 수 있는 정보 교환을 가능하게 하여 일반적인 클라이언트-서버 모델보다 더 큰 유연성을 가능하게 한다. 그러나 퍼블리싱 서비스 모델을 사용하면 일반적으로 모든 단일 퍼블리싱이 관련성을 판정하기 위해 정보를 분석해야 하는 모든 단일 참여자에게 전송되기 때문에 비효율성 문제가 발생할 수 있다. 반면에, 본 개시의 퍼블리싱-구독 모델은 많은 양의 자원을 가장 많이 요구하는 셀(108), 예를 들어 가상 객체(110)가 구독할 수 있는 더 높은 자원 요구 셀(108)에 동적으로 집중할 수 있게 한다. 또한, 퍼블리싱된 자원의 양이 가상 객체(110)의 양, 사용자에게 보이는 영구 가상 세계 시스템의 부분 내 상호 작용 레벨 및 기타 파라미터를 고려하므로, 각 가상 객체(110)는 각각의 가입된 셀로부터 각 시뮬레이션 중에 필요한 자원만을 획득한다.
일부 실시 예에서, 자원(302)의 컴퓨팅 파워(304)는 하나 이상의 개별 분산 3D 엔진(예를 들어, 도 2의 개별 분산 소프트웨어 엔진(218))으로부터 획득된 엔진 서비스(314)를 포함한다. 추가 실시 예에서, 자원(302)의 메모리(306)는 가상 세계를 통해 실제 세계의 업데이트된 버전으로 셀(108)에 가입하는 클라이언트 장치를 제공하기 위해 대응하는 셀(108)에도 퍼블리싱되는 세계 상태를 저장한다. 추가 실시 예에서, 분산 메시지 교환 플랫폼(308)은 그에 따라 공유되는 네트워크 자원의 일부로서 포함된다. 일부 실시 예에서, 복수의 분산 소프트웨어 엔진(218)은 서로 시너지를 생성하기 위해 네트워크(308) 내에서 병렬로 또는 순차적으로 사용될 수 있다.
본 명세서에서 사용되는 용어 "엔진 서비스"는 게임 또는 기타 애플리케이션 관련 작업과 같은 하나 이상의 작업을 달성하기 위해 하나 이상의 3D 엔진에 의해 수행되고 제공되는 작업을 의미한다. 3D 엔진은 일반적으로 이러한 작업을 수행하는 데 필요한 라이브러리, 소프트웨어 개발 키트(SDK), 객체 등과 같은 소프트웨어 구성 요소를 포함한다. 예를 들어, 엔진 서비스는 3D 렌더링, 그래픽, 물리, 오디오, 인공 지능, 포지셔닝 및 통신과 관련된 서비스를 포함한다. 각 엔진 서비스는 전용 하드웨어 엔진, 범용 하드웨어 엔진 또는 이들의 조합일 수 있는 하드웨어 엔진에 의해 프로비저닝되는 개별 분산 소프트웨어 엔진에 의해 수행될 수 있으며, 각 하드웨어 엔진은 개별 분산 3D 엔진에 의해 호출되는 함수로부터의 명령어를 실행하는데 전용인 회로를 포함한다.
본 명세서에서 사용되는 "세계 상태"라는 용어는 영구 가상 세계 시스템에서 각 가상 객체의 상태를 의미하며, 이는 영구 가상 세계 시스템에 센서 데이터를 제공하는 센서를 포함하는 복수의 연결 장치를 통해 적시에 업데이트될 수 있다. 연결 장치는 예를 들어 네트워크를 통해 서로 및 서버와 통신할 수 있는 사물 인터넷(IoT) 장치일 수 있으며, 영구 가상 세계 시스템의 가상 복제본을 업데이트하기 위해 실제 세계에서 다중 소스 데이터를 지속적으로 캡처할 수 있다. 따라서 상태 업데이트는 센서 데이터로부터 발생할 수 있다. 그러나 세계 상태의 업데이트는 사용자 입력 또는 하나 이상의 3D 엔진의 계산(예를 들어, 인공 지능 추론)으로부터 발생할 수도 있다.
일부 실시 예에서, 셀(108)에 퍼블리싱함으로써 가상 객체(110)에 대한 할당은 현재 부하 및 대응하는 계산되고 순위화된 요구에 기초할 수 있다. 도 2를 참조하면. 이러한 계산 및 요구의 순위화는 예를 들어 분산 3D 엔진(212)의 자원 관리자(214)에 의해 수행될 수 있다. 순위화는 각 셀(108)에 퍼블리싱할 자원(302)의 크기를 판정하여 낮은 요구 순위의 셀은 더 높은 요구 순위의 셀보다 적은 자원(302)을 얻도록 할 수 있다. 일부 실시 예에서, 요구는 셀 내의 대응하는 클라이언트 장치를 통해 사용자에게 보이는 영구 가상 세계 시스템의 부분 내의 가상 객체(110)의 크기를 고려한다. 사용자 아바타가 볼 수 있는 영구 가상 세계 시스템의 일부는 셀 내 아바타의 시야 또는 필드에 의해 정의될 수 있다. 예를 들어, 사용자가 증강 현실 또는 가상현실에서 세계의 일부를 볼 때, 해당 아바타는 영구 가상 세계 시스템에서 이용 가능할 수 있으며, 따라서 사용자 아바타의 시청 절두체가 이러한 시야를 정의할 수 있다. 다른 실시 예에서, 사용자가 "평탄한" 사용자 인터페이스를 통해(예를 들어, 컴퓨터 또는 휴대폰 화면을 통해) 아바타를 사용하는 경우, 실제 사용자 아바타를 컴퓨터 화면에서 볼 수 있으며, 여기서 사용자 아바타는 영구 가상 세계 시스템의 일부 내에서 보고 상호 작용한다. 이러한 예에서, 사용자 아바타는 1인칭 시점에서 영구 가상 세계 시스템을 볼 수 있고, 1인칭 시점에서 아바타의 시청 절두체가 시야를 정의할 수 있다. 사용자 아바타가 평면도에서 보이는 실시 예에서, 시야는 사용자 아바타 주위의 반경에 의해 정의될 수 있다. 모든 경우에, 시야는 사용자가 사용자 아바타를 통해 상호 작용할 수 있는 복수의 가상 객체(110)를 포함할 수 있다. 따라서 사용자 아바타의 시야 내에서 가상 개체가 많을수록 해당 특정 셀에 대한 자원 요구가 높아져 요구 순위 점수가 높아진다. 다른 실시 예에서, 요구는 사용자가 볼 수 있는 영구 가상 세계 시스템의 일부 내의 상호 작용 레벨을 더 고려한다. 예를 들어, 영구 가상 세계 시스템의 두 개의 서로 다른 영역과 두 개의 서로 다른 셀 내에 두 개의 사용자 아바타가 있을 수 있으며, 둘 다 상호 작용에 사용할 수 있는 5개의 가상 객체(110)를 가지고 있다. 제1 사용자가 (예를 들어, 그룹 활동, 대화, 전투 등에 참여함으로써) 모든 가상 객체(110)와 동시에 상호 작용하기로 결정했다면, 그러한 셀은 더 높은 순위의 요구를 가질 수 있고 따라서 제2 사용자 아바타가 가상 객체(110) 중 어느 것과도 상호 작용하지 않거나 그러한 가상 객체(110)와 더 낮은 레벨의 상호 작용을 가져야 하는 경우 제2 사용자 아바타보다 더 많은 자원이 할당될 수 있다. 이 예에서, 순위화된 요구는 제2 사용자 아바타가 위치한 가상 셀보다, 제1 사용자 아바타가 위치한 가상 셀에 대해 더 높다.
다른 실시 예에서, 요구는 클라이언트 장치와 네트워크 장비(예를 들어, 서버 및/또는 안테나) 사이의 거리, 사용자가 사용하는 애플리케이션 유형 또는 사용자가 자신의 개인 사용자 프로필 또는 계약 세부 사항에 따라 가질 수 있는 자격 유형과 같은 다른 파라미터에서 추가 요인을 고려한다. 클라이언트 장치와 네트워크 장비 사이의 거리의 예로는 영구 가상 세계 시스템의 특정 셀 내에서 사용자가 네트워크 장비에서 멀어질 수 있고, 각 셀에는 특정 네트워크 장비가 할당되어있을 수 있으므로, 잠재적으로 낮은 서비스 품질(QoS)을 보완하기 위해 동시에 활성화되어 해당 셀에 대한 더 높은 순위의 요구가 발생하는 더 많은 네트워크 장비가 있을 수 있다. 사용자가 사용하는 애플리케이션의 예로서, 더 높은 실시간 렌더링 속도 또는 더 나은 세부 레벨 및 정의를 요구하기 때문에 애플리케이션이 대역폭 또는 컴퓨팅 성능과 같은 더 많은 자원을 소비하는 경우, 그것은 그 셀에 대해 필요한 자원이 증가하고, 그에 따라 순위화된 요구가 대응하여 증가하는 것을 나타낸다. 자격 유형의 예로서, 사용자는 프리미엄 계정 사용자로 등록되어 다른 사용자보다 더 높은 서비스 품질(QOS)과 더 빠른 데이터 전송 속도를 얻을 수 있어, 다른 사용자보다 더 많은 자원의 할당을 가져올 수 있다. 또한, 위의 모든 요소는 각 셀에 대한 순위화된 요구를 판정하기 위해 서로 조합하여 연산될 수 있다.
도 4a-4b는 일 실시 예에 따른 분산 메시지 교환 플랫폼(216)을 통한 엔진 서비스 할당의 개략도(400a-b)를 도시한다.
도 4a의 개략도(400a)는 도 1의 서버 컴퓨터(102)와 같은 하나 이상의 서버에서 호스팅되는 복수의 개별 분산 소프트웨어 엔진(218)을 포함한다. 각각의 개별 분산 소프트웨어 엔진(218)은 분산 메시지 교환 플랫폼(216)을 통해 셀(108)에 퍼블리싱될 수 있는 특정 엔진 서비스를 제공한다. 그런 다음, 가상 객체 A-D와 같은 가상 객체(110)는 셀 1-2과 같이 그들이 위치한 셀(108)에 가입함으로써 이러한 엔진 서비스를 얻을 수 있다.
도 4a에서 볼 수 있듯이, 개별 분산 소프트웨어 엔진(218)은 하나 이상의 특정 유형의 작업을 위해 설계된 복수의 동적 및 독립 소프트웨어 모듈일 수 있다. 개별 분산 소프트웨어 엔진(218)은 개별 분산 소프트웨어 엔진(218)이 프로그래밍된 기능을 제공하는 독립 엔티티이다. 따라서, 개별 분산 소프트웨어 엔진(218)은 특히 예를 들어 인공 지능 엔진(402a), 3D 그래픽 엔진(402b), 시뮬레이션 엔진(402c), 통신 엔진(402d), 오디오 엔진(402e), 3D 구조 엔진(402f), 위치 엔진(402g) 및 렌더링 엔진(402h)일 수 있다. 개별 분산 소프트웨어 엔진(218) 간의 통신은 분산 메시지 교환 플랫폼(216)에 의해 관리되는 함수 호출을 통해 구현된다.
일부 실시 예에서, 복수의 분산 소프트웨어 엔진(218)은 서로 시너지를 생성하기 위해 네트워크 내에서 병렬로 또는 순차적으로 사용될 수 있다. 예를 들어, 동일하거나 다른 서버 컴퓨터에서 호스팅되는 복수의 3D 그래픽 엔진(402b)은 하나 이상의 특정 작업의 구현을 위해 서로의 엔진 서비스를 보완하기 위해 분산 메시지 교환 플랫폼(216)을 통해 순차적으로 또는 병렬로 엔진 서비스를 할당할 수 있다. 일 예에서, 상이한 3D 그래픽 엔진(402b)은 상이한 위치의 3D 모델을 계산하며, 여기서 위치는 동일하거나 상이한 셀(108)에 있을 수 있다. 다른 예에서, 상이한 3D 그래픽 엔진(402b)은 동일한 영역에 위치한 상이한 애플리케이션을 계산할 수 있으며, 애플리케이션 중 적어도 일부는 AR 층에 구성되고 애플리케이션 중 적어도 일부는 VR 층에 구성된다. 예를 들어 동일한 셀 내의 동일한 위치는 VR 층에서 Unity®에 의해 연산되는 반면, AR 층에 구성된 순수 가상 개체 및 애플리케이션과 같은 모든 증강은 부분적으로 CryEngine® 및 UnrealEngine®에 의해 연산된다. 또한, 이 예에서, 동일하거나 다른 셀(108) 내의 연속적인 위치는 CryEngine®에 의해 VR 층에서 연산될 수 있는 반면, AR 층의 증강은 UnrealEngine® 및 Unity®에 의해 부분적으로 연산된다.
추가적으로, 도 4a에서, 가상 객체 A-B는 현재 영구 가상 세계 시스템의 셀 1에 위치하며, 현재 셀 1에서 가상 객체 및 상호 작용의 현재 애플리케이션 및 처리에 필요할 수 있는 AI 엔진(402a)에 의해 프로비저닝되는 AI 서비스(404), 렌더링 엔진(402h)에 의해 프로비저닝되는 렌더링 서비스(406), 시뮬레이션 엔진(402c)에 의해 프로비저닝되는 시뮬레이션 서비스(408)와 같은 복수의 엔진 서비스를 수신하고 있다. 반면에, 가상 객체 C-D는 현재 영구 가상 세계의 시스템의 셀 2에 위치하며, 현재 셀 2의 가상 객체 및 상호 작용의 현재 애플리케이션 및 처리에 필요할 수 있는 오디오 엔진(402e)에 의해 프로비저닝되는 오디오 서비스(410), 통신 엔진(402d)에 의해 프로비저닝되는 통신 서비스(412) 및 시뮬레이션 엔진(402c)에 의해 프로비저닝되는 시뮬레이션 서비스(408)와 같은 복수의 엔진 서비스를 수신하고 있다. 이러한 엔진 서비스는 개별 분산 소프트웨어 엔진(218)을 호스팅하는 동일한 서버 컴퓨터에 의해, 개별 분산 소프트웨어 엔진(218)을 호스팅하는 복수의 서버 컴퓨터에 의해, 또는 이들의 조합에 의해 프로비저닝 될 수 있다.
도 4b는 하나 이상의 서버(102)의 개별 분산 소프트웨어 엔진(218), 하드웨어 엔진(220) 및 분산 3D 엔진(212) 사이의 관계를 나타내는 개략도(400b)를 도시한다. 셀(108)에 위치한 하나 이상의 가상 객체로부터 요청을 수신하면, 하나 이상의 서버 컴퓨터(102)에서 호스팅되는 자원 관리자(214)는 요청을 수신하고, 요구를 평가하고, 분산 메시지 교환 플랫폼(216)을 통해 소프트웨어 및 하드웨어 엔진(218-220)을 호스팅하는 하나 이상의 서버 컴퓨터(102)에 대한 엔진 서비스를 각각 요청한다. 각각의 엔진 서비스는 전용 하드웨어 엔진, 범용 하드웨어 엔진, 또는 이들의 조합일 수 있는 하드웨어 엔진 1-N과 같은 각각의 하드웨어 엔진(220)에 의해 프로비저닝되는 3D 엔진 1-N과 같은 개별 분산 소프트웨어 엔진(218)에 의해 제공될 수 있다. 분산 메시지 교환 플랫폼(216)은 각각의 엔진 서비스를 수신하고 그것들을 엔진 서비스를 필요로 하는 하나 이상의 셀(108)에 퍼블리싱한다. 서비스를 요청하는 가상 객체는 분산 메시지 교환 플랫폼(216)을 통해 필요한 엔진 서비스를 수신하기 위해 각 셀에 가입한다.
도 5a-5c는 일 실시 예에 따른 서브 유니버스(본 명세서에서 축약된 형태로 "버스(verse)"라고도 함), 스트림 및 영구 가상 세계 시스템의 다른 엘리먼트 사이의 관계의 개략도(500a-c)를 도시한다.
도 5a의 개략도(500a)를 참조하면, 목표 특정 시뮬레이션에 사용될 수 있는 복수의 연결 가상 객체(110)는 스트림(502)을 구성할 수 있으며, 각 스트림(502)은 대응하는 가상 객체(110)로부터 데이터를 획득하고 목표 특정 시뮬레이션을 수행하도록 구성된다. 각각의 스트림(502)은 복수의 스트림 관련 가상 객체(110)를 생성하는 루트 노드(504) 또는 루트 시뮬레이션 객체에 연결될 수 있다. 스트림(502)은 요구되는 시뮬레이션을 수행하기 위해 스트림(502)이 필요로 하는 가상 객체(110)를 정의하는 임포트 기능(506)에 추가로 연결할 수 있다. 예를 들어, 차량, 사람, 신호등 및 심지어 기상 조건의 복수의 가상 복제본을 포함하는 교통 스트림(502)이 있을 수 있다. 즉, 스트림(502)은 스트림(502)의 특정 기능과 관련될 수 있는 가상 복제본과 같은 임의의 수의 가상 객체(110)를 포함한다. 이 예에서, 임포트 기능(506)은 교통 시뮬레이션에 대해 고려할 가상 객체(110)를 정의할 수 있다. 스트림(502)은 가상 및/또는 실제 센서의 조합을 사용하고 트래픽 시나리오의 목표 특정 시뮬레이션을 수행함으로써 대응하는 가상 객체(110) 각각의 행동을 읽을 수 있다. 예를 들어, 목표는 트래픽 스트림을 최적화하거나, 미리 정해진 평균 속도로 실행하거나, 교통 체증 가능성을 줄이는 것이다. 이러한 시뮬레이션은 예를 들어 자율 주행 자동차 또는 드론을 운전하는 데 사용될 수 있다. 스트림(502)의 또 다른 예는 에너지 소비일 수 있으며, 이는 전력 소비 데이터를 포함하는 건물의 가상 복제본 및 기계, 컴퓨터, 기기 등과 같은 특정 에너지 소비 가상 복제본을 포함할 수 있다.
도 5a를 참조하여 설명을 계속하면, 미리 정해진 환경에서 모든 또는 대부분의 가상 객체(110)를 포함하는 복수의 스트림(502)은 본 명세서에서 버스(508)로 지칭되는 서브 유니버스를 형성한다. 예를 들어, 시티 버스(508)는 도시의 건물, 나무, 사람, 거리, 신호등, 차량 등의 전부 또는 대부분을 나타낼 수 있다. 일부 실시 예에서, 집의 외부와 내부의 3D 디자인, 그리고 집의 기기, 사람, 벽, 에너지 소비 데이터 등의 전부 또는 대부분을 포함할 수 있는 시티 버스 내의 하우스 버스와 같은 버스(508) 내의 버스(508)가 있을 수도 있다.
도 5b의 개략도(500b)를 참조하면, 버스 1-N와 같은 버스(508)의 네트워크는 영구 가상 세계 시스템(112)을 형성할 수 있다. 예를 들어, 시티 버스는 다른 시티 버스에 연결되어 국가 버스(country-verse)를 형성할 수 있다. 국가 버스가 다른 버스(508)에 연결되지 않으면, 국가 버스는 영구 가상 세계 시스템(112)의 유니버스를 나타낼 수 있다.
도 5c의 개략도(500c)를 참조하면, 각각이 복수의 스트림 관련 가상 객체(110)를 포함하는 스트림 1-4와 같은 복수의 스트림(502)을 구비하는 버스(508)의 공간 다이어그램을 도시한다.
도 6a-6b는 일 실시 예에 따른, 버스(508)를 복수의 셀(108)로 분할하는 개략도(600a-b)를 도시한다.
도 6a에서 볼 수 있듯이, 세계의 영역을 나타내는 분할되지 않은 버스(602)는 가상 객체(110)로부터의 요청에 기초하여 자원을 요청하는 자원 관리자에 대해 복수의 셀(606)을 포함하는 분할된 버스(604)로 분할될 수 있다. 더 많은 수의 가상 객체(110)를 포함하는 셀과 같이 더 높은 자원 집약적 셀(608)은 더 많은 수의 셀(606)로 더 분할될 수 있다. 유사하게, 더 적은 수의 가상 객체(110)를 갖는 셀(606)은 더 적은 수의 셀(606)로 분할될 수 있다. 따라서, 각 셀(606)에는 자원이 할당되며, 여기서 더 높은 자원 집약적 셀(608)은 더 낮은 자원 집약적 셀(606)보다 더 많은 자원을 수신한다. 예를 들어, 더 높은 자원 집약적 셀(608) 내의 일부 셀(606)은 나머지 셀(606)보다 더 많은 가상 객체(110)를 포함한다. 그러나 각 셀(606)에 할당된 자원의 크기는 특정 셀(606)에 있는 가상 객체(110)의 수에만 연관되는 것이 아니라, 사용자가 볼 수 있는 영구 가상 세계 시스템의 일부 내에서의 상호 작용의 레벨; 사용자와 서버 및/또는 안테나와 같은 네트워크 장비 사이의 거리; 사용자가 사용하는 애플리케이션 유형; 자신의 개별 사용자 프로필 또는 계약 세부 정보에 따라 사용자가 가질 수 있는 자격 유형 또는 이들의 조합;까지 연관된다. 그러나 단순화 및 예시 목적으로, 도 6a 내지 6b는 요구를 평가하고 하나 이상의 셀에 대한 할당을 관리하기 위한 파라미터로서 가상 객체(110)만을 이용한다.
일부 실시 예에서, 실제 세계를 셀로 나타내는 데이터 구조는 옥트리 데이터 구조이며, 여기서 각 셀은 옥트리 데이터 구조 내에서 복셀로 표시된다. 일부 실시 예에서, 옥트리 데이터 구조에서 사용되는 복셀은 실제 세계의 더 큰 부분의 배열에 사용하기 위한 희소 복셀이다. 다른 실시 예에서, 옥트리 데이터 구조에서 사용되는 복셀은 실제 세계의 더 작은 부분의 배열에 사용하기 위한 조밀한 복셀이다. 옥트리 및 선택된 희소 또는 조밀한 복셀은 실제 세계를 나타내는 영구 가상 세계 시스템에서와 같은 가상 세계에서 3차원 공간을 나타내는데 적합한 데이터 구조이다. 옥트리는 복수의 객체를 빠르고 쉽게 조합하고, 비교적 간단한 렌더링 알고리즘을 구현하고, 빠른 공간 검색을 수행하고, 실제 객체의 가상화를 통해(예를 들어, LIDAR 또는 기타 이미지 스캐닝 방법을 통해) 모델 생성을 가능하게 한다. 실제 세계의 적어도 일부를 나타내는 3D 가상 세계를 포함하는 가상 세계의 경우, 이러한 세계의 3D 파티션은 사용자가 보고있고 및/또는 상호작용하고 있을 수 있는 영역에 대한 3차원 기반 엔진 서비스 및 클라우드 자원 할당을 가능하게 한다. 그러나 쿼드 트리는 2D 세계의 경우를 다룰 때에도 활용될 수 있다. 다른 실시 예에서, 특히, BSP 트리, 희소 복셀 옥트리, 3D 어레이, kD 트리, 포인트 클라우드, 와이어 프레임, 경계 표현(B-Rep), 구성 솔리드 지오메트리 트리(CSG 트리), 빈 트리, 육각형 구조와 같은 다른 적절한 데이터 구조가 활용될 수 있다.
일부 실시 예에서, 데이터 구조는 데이터에 적용될 수 있는 데이터 값, 관계 및 기능 또는 연산의 집합을 포함하며, 여기서 데이터는 영구 가상 세계 시스템에서 적어도 가상 객체의 지오메트리 및 좌표를 정의한다. 예를 들어, 올바른 데이터 구조 선택은 데이터의 출처; 렌더링 중에 찾으려는 지오메트리의 정밀도; 렌더링이 실시간으로 수행되는지 또는 미리 렌더링되는지 여부; 렌더링이 클라우드 서버, 사용자 장치, 포그 장치 또는 이들의 조합을 통해 수행되는지 여부; 예를 들어 다른 유형의 애플리케이션 보다 의료 또는 과학 애플리케이션에 더 높은 레벨의 정의가 필요할 수 있는, 영구 가상 세계 시스템이 사용되는 특정 응용 프로그램; 서버 및 사용자 장치의 메모리 용량, 그에 따른 원하는 메모리 소비; 및 기타;에 따라 달라진다.
추가로, 도 6a에서, 하나 이상의 요청과 관련된 이벤트를 종료한 후, 자원은 원래의 하나 이상의 소스로 복원된다. 이어서, 분할된 버스(604)는 분할된 버스(604)에서 다시 분할되지 않은 버스(602)로 가리키는 곡선 화살표(610)에 의해 표현된 바와 같이 원래의 수의 셀(606)로 다시 통합된다. 이러한 방식으로, 시스템은 요구가 더 많은 관심 영역을 선택하고 더 이상 필요하지 않을 때 자원을 그들의 소스로 반환함으로써 자원의 효율적이고 동적인 할당을 달성한다.
도 6b는 옥트리 데이터 구조(600b)의 예시를 도시한다. 옥트리 데이터 구조(600b)는 실제 세계의 적어도 일부를 나타내는 볼륨과 같이 데이터 구조에서 직접 볼륨을 나타낸다. 옥트리 데이터 구조(600b)의 주요 이점은 다수의 객체의 빠르고 쉬운 조합; 간단한 렌더링 구현; 빠른 공간 검색 수행 가능; 실제 객체의 디지털화(예를 들어, LIDAR 또는 기타 이미지 스캐닝)를 통한 모델 생성 가능;이다.
옥트리 데이터 구조(600b)는 각각의 내부 노드가 8개의 하위 노드(children node) 또는 8진수(octant)를 갖는 트리 데이터 구조이다. 버스가 더 분할될수록 더 많은 레벨의 하위 노드가 생성되고 더 많은 자원이 자원을 필요로하는 추가 분할된 셀에 할당된다. 따라서, 도 6b의 예에서, 옥트리 데이터 구조(600b)는 하위 노드의 3개의 레벨(612), 레벨 1-3에 더해 전체 버스를 나타내는 루트 노드(614)를 생성했다. 굵게 표시된 옥트리 데이터 구조(600b)의 영역은 가상 객체(110)가 있는 영역을 나타낸다. 버스의 옥트리 데이터 구조(600b)의 상위 레벨은, 예를 들어 그 내부에 더 적은 수의 가상 객체(110)가 있기 때문에, 더 적은 분할, 그에 따른 더 적은 자원이 필요한 영역을 나타낸다. 대조적으로, 더 많은 수의 가상 객체(110)를 포함하는 더 낮은 레벨은 더 많은 분할, 따라서 더 많은 자원을 필요로 한다.
도 7은 일 실시 예에 따라 버스를 복수의 셀로 분할하는 추가 실시 예의 개략도(700)를 도시한다.
계략도(700)는 3개의 스트림(702), 스트림 1-3으로 구성된 분할된 버스(604)를 보여주며, 여기서 각 스트림(702)은 하나 이상의 스트림 특정 가상 객체(110)를 포함하고, 각 스트림(702)은 시청 및 클라이언트 장치상에서의 상호작용을 위해 활성화 또는 비활성화되도록 프로그래밍된다. 또 다른 실시 예에서, 각 스트림(702)은 하나 이상의 사용자 애플리케이션과 연관된다. 각각의 스트림(702)은 대응하는 가상 객체(110)로부터 데이터를 획득하고 테마 및/또는 목표 특정 시뮬레이션을 수행하도록 구성될 수 있다. 각각의 스트림(702)은 복수의 스트림 관련 가상 객체(110)를 생성하는 루트 노드 또는 루트 시뮬레이션 객체에 연결될 수 있다. 스트림(702)은 스트림이 시뮬레이션을 수행하는 데 필요한 가상 객체(110)를 정의하는 임포트 기능에 추가로 연결할 수 있다.
예를 들어, 뷰어가 레스토랑 애플리케이션을 사용하는 경우, 사용자는 분할된 버스(704)의 레스토랑 스트림(예를 들어, 스트림 1)을 활성화할 수 있는 옵션을 가질 수 있으며, 이에 따라 레스토랑만 사용자에게 표시되거나 강조된다. 유사하게, 트래픽 관련 애플리케이션은 트래픽 스트림(예를 들어, 스트림 2)이 사용자에게 트래픽을 표시하거나 강조 표시할 수 있도록 구성될 수 있다. 다른 예에서, 복수의 순수 가상 객체를 포함하는 게임 관련 애플리케이션은 게임 스트림(예를 들어, 스트림 3)을 활성화하여 게임 애플리케이션과 연관된 순수 가상 객체를 표시하거나 강조할 수 있다. 현재 예에서, 스트림 3은 더 많은 가상 객체(110)를 갖기 때문에 다른 스트림 1-2보다 더 많은 양의 자원을 필요로 할 수 있다. 따라서 모든 스트림 1-3의 합은 분할된 버스(704)를 가져올 것이다. 일부 실시 예에서, 어떤 스트림(702)이 활성화되는지에 따라, 활성화된 스트림(702)은 클라이언트 장치에서 출력되는 렌더링되거나 렌더링되지 않은 미디어 스트림으로 사용자에게 보여지며, 여기서 스트림(702)은 특히 3D 이미지 데이터, 3D 지오메트리 구조, 3D 엔티티, 3D 감지 데이터, 3D 동적 객체, 비디오 데이터, 오디오 데이터, 텍스트 데이터, 시간 데이터, 위치 데이터, 방향 데이터, 햅틱 데이터 및 조명 데이터, 또는 이러한 미디어 콘텐츠의 조합을 포함한다. 따라서, 각각의 스트림(702)은 하나 이상의 하드웨어 엔진에 의해 프로비저닝되는 하나 이상의 개별 분산 소프트웨어 엔진에 의해 계산되고, 선택적으로 렌더링될 수 있다. 일부 실시 예에서, 하나 이상의 개별 분산 소프트웨어 엔진은 일단 하나 이상의 하드웨어 엔진에 의해 실행되면 특정 스트림과 관련된 사용자만 스트림(702)의 미디어 콘텐츠를 수신하고 해독할 수 있도록 스트림(702)의 종단 간 암호화(E2EE)를 트리거하는 명령을 포함한다. 이러한 실시 예는 예를 들어 종단 간 스트리밍 서비스를 이용하는 비디오 호출 동안에 사용될 수 있다.
도 8은 일 실시 예에 따른 클라이언트 장치(114)의 개략도를 도시한다. 도 9의 일부 엘리먼트는 도 1-8의 엘리먼트와 유사할 수 있으며, 따라서 유사하거나 동일한 참조 번호가 이러한 엘리먼트를 묘사하는 데 사용될 수 있다.
본 개시의 클라이언트 장치(114)는 모두 프로세서(816)에 동작가능하게 연결된 입력/출력(I/O) 모듈(802); 전원(804); 메모리(806); 추적 모듈(812)을 형성하는 감지 메커니즘(808) 및 트랜시버(810); 및 네트워크 인터페이스(814)를 포함한다.
I/O 모듈(802)은 사용자와 상호 작용하고 하나 이상의 다른 시스템 구성 요소에 사용자 입력 데이터를 제공하도록 구성된 컴퓨팅 하드웨어 및 소프트웨어로 구현된다. 예를 들어, I/O 모듈(802)은 사용자와 상호 작용하고, 상호 작용에 기초하여 사용자 입력 데이터를 생성하고, 서버에게와 같이, 사용자 입력 데이터를 네트워크를 통해 다른 처리 시스템으로 전송되기 전에 프로세서(816)에 제공하도록 구성될 수 있다. 다른 예에서, I/O 모듈(802)은 클라이언트 장치(114)와 상호작용하도록 구성된 외부 컴퓨팅 포인팅 장치(예를 들어, 터치 스크린, 마우스, 3D 제어, 조이스틱, 게임 패드 등) 및/또는 텍스트 입력 장치(예를 들어, 키보드, 받아쓰기 툴(dictation tool) 등)로서 구현된다. 또 다른 실시 예에서, I/O 모듈(802)은 상술한 기능에 대해 추가적, 더 적은 또는 상이한 기능을 제공할 수 있다.
전원(804)은 클라이언트 장치(114)에 파워를 제공하도록 구성된 컴퓨팅 하드웨어 및 소프트웨어로서 구현된다. 일 실시 예에서, 전원(804)은 배터리일 수 있다. 전원(804)은 클라이언트 장치(114)에 내장되거나 클라이언트 장치(114)로부터 제거될 수 있고, 재충전 가능하거나 재충전 불가능할 수 있다. 일 실시 예에서, 클라이언트 장치(114)는 하나의 전원(804)을 다른 전원(804)으로 교체함으로써 재충전될 수 있다. 다른 실시 예에서, 전원(804)은 개인용 컴퓨터에 부착된 범용 직렬 버스("USB"), FireWire, 이더넷, Thunderbolt 또는 헤드폰 케이블과 같은 충전 소스에 부착된 케이블에 의해 재충전될 수 있다. 또 다른 실시 예에서, 전원(804)은 유도 충전에 의해 재충전될 수 있으며, 여기서 전자기장은 2개가 근접하게 되었을 때(그러나, 케이블을 통해 서로 플러그인 될 필요는 없음) 유도 충전기에서 전원(804)으로 에너지를 전달하는 데 사용된다. 다른 실시 예에서, 도킹 스테이션은 충전을 용이하게 하기 위해 사용될 수 있다.
메모리(806)는 애플리케이션 프로그램 명령을 저장하고 복수의 감지 메커니즘(808)에 의해 캡처된 센서 데이터를 저장하도록 적응된 컴퓨팅 하드웨어 및 소프트웨어로서 구현될 수 있다. 메모리(806)는, 다른 쓰기 가능 및 판독 전용 메모리뿐만이 아니라 컴퓨터 판독 가능 매체 또는 하드 드라이브, 메모리 카드, 플래시 드라이브, ROM, RAM, DVD 또는 기타 광학 디스크와 같은 전자 장치의 도움으로 판독될 수 있는 데이터를 저장하는 기타 매체를 포함하는, 프로세서(816)에 의해 액세스 가능한 정보를 저장할 수 있는 임의의 적절한 유형일 수 있다. 메모리(806)는 영구 저장소에 추가하여 임시 저장소를 포함할 수 있다.
감지 메커니즘(808)은 실제 세계로부터 다양한 센서 데이터를 획득하고 클라이언트 장치(114)의 위치 및 방향을 판정/추적하도록 적응된 컴퓨팅 하드웨어 및 소프트웨어로서 구현될 수 있다. 감지 메커니즘(808)은 제한없이 하나 이상의 온도 센서, 근접 센서, 관성 센서, 적외선 센서, 오염 센서(예를 들어, 가스 센서), 압력 센서, 광센서, 초음파 센서, 연기 센서, 터치 센서, 색채 센서, 습도 센서, 물 센서, 전기 센서, 또는 이들의 조합을 포함할 수 있다. 특히, 감지 메커니즘(808)은 하나 이상의 관성 측정 유닛(IMU), 가속도계 및 자이로스코프를 포함한다. IMU는 가속도계와 자이로스코프의 조합을 사용하여 클라이언트 장치(114)의 속도, 가속도, 각운동량, 이동 속도, 회전 속도 및 기타 원격 측정 메타 데이터를 측정하고 보고하도록 구성된다. IMU 내부 및/또는 IMU와 별도로 구성된 가속도계는 지구 중력장으로 인한 가속도를 포함하여 상호 작용 장치의 가속도를 측정하도록 구성될 수 있다. 일 실시 예에서, 가속도계는 3개의 직교 방향으로 가속도를 측정할 수 있는 3축 가속도계를 포함한다.
트랜시버(810)는 클라이언트 장치(114)가 안테나로부터 무선 라디오파를 수신하고 데이터를 다시 안테나로 전송할 수 있도록 구성된 컴퓨팅 하드웨어 및 소프트웨어로서 구현될 수 있다. 일부 실시 예에서, mmW 트랜시버가 사용될 수 있으며, 이는 안테나로부터 mmW파 신호를 수신하고 몰입형 콘텐츠와 상호 작용할 때 데이터를 안테나로 다시 전송하도록 구성될 수 있다. 트랜시버(810)는 양방향 통신 트랜시버(810)일 수 있다.
일 실시 예에서, 추적 모듈(812)은 IMU, 가속도계 및 자이로스코프의 기능을 트랜시버(810)에 의해 제공되는 위치 추적과 결합하여 구현될 수 있고, mmW 기반 안테나에 의해 제공되는 정확한 추적, 저 지연 및 높은 QOS 기능은 센티미터 미만 또는 밀리미터 미만의 위치 및 방향 추적을 가능하게 할 수 있으며, 이는 클라이언트 장치(114)의 실시간 위치 및 방향을 추적할 때 정확도를 증가시킬 수 있다. 대안적인 실시 예에서, 감지 메커니즘(808)과 트랜시버(810)는 단일한 추적 모듈 장치에서 결합될 수 있다.
네트워크 인터페이스(814)는 네트워크에 통신가능하게 연결하고, 서버 또는 클라이언트 장치(114)에 의해 전송된 네트워크로부터의 컴퓨터 판독 가능 프로그램 명령어를 수신하고, 프로세서(816)에 의해 실행하도록 메모리(806)에 저장하기 위해 컴퓨터 판독 가능 프로그램 명령어를 전달하는 컴퓨팅 소프트웨어 및 하드웨어로서 구현될 수 있다.
프로세서(816)는 센서 데이터를 수신하고 처리하도록 구성된 컴퓨팅 하드웨어 및 소프트웨어로서 구현될 수 있다. 예를 들어, 프로세서(816)는 이미징 요청을 제공하고, 이미징 데이터를 수신하고, 이미징 데이터를 환경 또는 다른 데이터로 처리하고, 사용자 입력 데이터 및/또는 이미징 데이터를 처리하여 사용자 상호 작용 데이터를 생성하고, 에지 기반(온디바이스) 기계 학습 훈련 및 추론을 수행하고, 서버 요청을 제공하고, 서버 응답을 수신하고 및/또는 사용자 상호 작용 데이터, 환경 데이터 및 콘텐츠 객체 데이터를 하나 이상의 다른 시스템 구성 요소에 제공하도록 구성될 수 있다. 예를 들어, 프로세서(816)는 I/O 모듈(802)로부터 사용자 입력 데이터를 수신할 수 있고 각각 메모리(806)에 저장된 애플리케이션 프로그램을 구현할 수 있다. 다른 예들에서, 프로세서(816)는 실제 세계로부터 캡처된 감지 메커니즘(808)으로부터 센서 데이터를 수신할 수 있거나, 또는 추적 모듈(812)을 통해 클라이언트 장치(114)의 정확한 위치 및 방향을 수신할 수 있고, 추가 처리를 위해 데이터를 서버로 보내기 전에 데이터의 일부를 준비할 수 있다. 예를 들어, 프로세서(816)는 데이터를 서버로 전송하기 전에 원시 데이터 감소 또는 센서 데이터의 필터링과 같은 아날로그 또는 디지털 신호 처리 알고리즘을 포함하여 데이터 준비 중에 필요한 일부 단계를 구현할 수 있다.
도 9는 일 실시 예에 따른 분산 3D 엔진을 통해 동적 부하 밸런싱을 가능하게 하는 컴퓨터 구현 방법(900)의 블록도를 도시한다.
가상 또는 실제 세계의 다차원 3D 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱을 가능하게 하는 방법(900)은 서버 컴퓨터의 메모리에서 실제 세계의 적어도 하나의 부분을 나타내는 데이터 구조를 영구 가상 세계 시스템을 형성하는 가상 객체를 저장하는 복수의 셀로 제공함으로써 단계(902)에서 시작하고, 여기서 가상 객체 중 적어도 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본이다. 방법은 적어도 하나의 서버 컴퓨터, 분산 배치로 구현된 자원 관리자 및 복수의 개별 분산 소프트웨어 엔진을 구비하는 분산 3D 엔진의 메모리에서 단계(904)에서 계속된다.
그 다음, 단계(906)에서, 방법은 현재 부하에 기초하여 자원 관리자에 의해 각각의 개별 셀의 요구를 계산하는 것을 진행하며, 여기서 상기 요구는 가상 객체의 양 및 사용자 아바타가 볼 수 있는 영구 가상 세계 시스템의 부분 내의 상호 작용 레벨 중 하나 이상을 추가로 고려한다. 다른 실시 예에서, 요구는 사용자와 서버 및/또는 안테나와 같은 네트워크 장비 사이의 거리, 사용자가 사용하는 애플리케이션 유형 또는 사용자가 자신의 개인 프로필 또는 계약 세부 사항에 따라 가질 수 있는 자격 유형과 같은 다른 파라미터를 고려한다. 요구에 기초하여, 방법은 요구에 따라 셀의 순위를 매김으로써 단계(908)에서 계속된다. 이어서, 순위화된 요구에 기초하여, 방법은 하나 이상의 더 높은 자원 집약적 셀에 자원을 동적으로 할당함으로써 단계(910)에서 계속된다.
도 10은 일 실시 예에 따른, 분산 3D 엔진을 통해 동적 부하 밸런싱을 가능하게 하는 방법(900)의 추가 단계를 포함하는 컴퓨터 구현 방법(1000)의 블록도를 도시한다.
일 실시 예에 따르면, 방법(1000)은 계산된 요구에 기초하여, 세계의 적어도 하나의 부분의 더 높은 자원 집약적 관심 영역을 더 많은 수의 셀로 분할함으로써 단계(1002)에서 시작한다. 그런 다음, 단계(1004)에서, 방법(1000)은 하나 이상의 소스로부터의 대응하는 자원을 각각의 셀에 할당함으로써 계속된다. 더 높은 자원 집약적 관심 영역 내에서 하나 이상의 요청과 관련된 이벤트를 종료한 후, 방법(1000)은 자원을 원래의 하나 이상의 소스로 복원함으로써 단계(1006)에서 계속된다. 마지막으로, 단계(1008)에서, 방법(1000)은 버스를 원래 수의 셀로 다시 통합함으로써 종료된다.
도 11은 일 실시 예에 따른 분산 메시지 교환 플랫폼을 통한 자원 할당 단계를 설명하는 방법(1100)의 블록도를 도시한다.
방법(1100)은 퍼블리싱-구독 모델을 사용하여 자원 관리자의 분산 메시지 교환 플랫폼을 통해 대응하는 자원을 대응하는 셀에 퍼블리싱함으로써 단계(1102)에서 시작할 수 있다. 그런 다음, 단계(1104)에서, 방법(1100)은 분산 메시지 교환 플랫폼을 통해 필요한 자원을 획득하기 위해 하나 이상의 가상 객체에 의해 관심 셀에 가입함으로써 종료된다.
일부 실시 예에서, 방법(1200)은, 클라이언트 장치 및/또는 서버 컴퓨터가 세계의 업데이트된 버전을 얻기 위해 이에 가입할 수 있는, 분산 메시지 교환 플랫폼을 통해 세계의 적어도 하나의 부분의 동적 업데이트 상태를 하나 이상의 상기 클라이언트 장치, 서버 컴퓨터 또는 이들의 조합과 공유하는 단계를 더 포함한다. 또 다른 실시 예에서, 세계의 적어도 하나의 부분의 상태는 사용자 입력, 서버 계산, 또는 이들의 조합에 의해 영구 가상 세계 시스템에 센서 데이터를 제공하는 센서를 포함하는 복수의 연결 장치에 의해 획득된다.
특정 실시 예가 설명되고 첨부 도면에 도시되었지만, 그러한 실시 예는 단지 예시일 뿐이고 광범위한 개시를 제한하지 않으며, 당업자에게는 다양한 다른 변형이 발생할 수 있기 때문에 본 개시는 도시되고 설명된 특정 구성 및 배열로 제한되지 않는다는 것을 이해해야 한다. 따라서 설명은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다.

Claims (20)

  1. 메모리 및 적어도 하나의 프로세서를 구비하는 하나 이상의 서버 컴퓨터로서, 상기 메모리는:
    가상 또는 실제 세계의 적어도 하나의 일부를 영구 가상 세계 시스템을 형성하는 가상 객체들을 저장하는 복수의 셀로 가상화하는 데이터 구조; 및
    자원 관리자 및 복수의 개별 분산 소프트웨어 엔진을 구비하며, 분산 배치로 구현되는 분산 3D 엔진;
    을 저장하고
    자원은 상기 분산 배치를 통해 현재 부하 및 상기 하나 이상의 셀의 대응하는 계산되고 순위가 매겨진 요구에 기초하여 상기 복수의 셀 중 하나 이상에 동적으로 할당되며, 상기 순위가 매겨진 요구는 상기 하나 이상의 셀 내의 가상 객체의 양 또는 상기 하나 이상의 셀 내에서 사용자 아바타가 볼 수 있는 상기 영구 가상 세계 시스템의 일부 내의 상호 작용의 레벨에 기초하는 것을 특징으로 하는 시스템.
  2. 제1 항에 있어서, 상기 순위가 매겨진 요구는 또한 상기 하나 이상의 셀에 액세스하는 클라이언트 장치와 네트워크 장비 사이의 거리, 상기 하나 이상의 셀에 액세스하는 사용자에 의해 사용되는 애플리케이션 유형, 또는 상기 하나 이상의 셀에 액세스하는 사용자의 자격 유형에 더 기초하는 것을 특징으로 하는 시스템.
  3. 제1 항에 있어서, 상기 영구 가상 세계 시스템은 요구 평가 및 부하 밸런싱에 사용되는 저 충실도 시뮬레이션과 사용자 경험을 개선하기 위해 사용되는 고 충실도 시뮬레이션을 포함하는 것을 특징으로 하는 시스템.
  4. 제1 항에 있어서, 상기 영구 가상 세계 시스템의 가상 객체 중 적어도 일부는 자체 컴퓨팅 기능 및 자율 동작을 포함하는 것을 특징으로 하는 시스템.
  5. 제1 항에 있어서, 상기 개별 분산 소프트웨어 엔진은 하나 이상의 특정 작업의 실현을 위해 서로의 엔진 서비스를 보완하기 위해 상기 분산 배치를 통해 순차적으로 또는 병렬로 사용되는 것을 특징으로 하는 시스템.
  6. 제1 항에 있어서, 상기 가상 또는 실제 세계를 셀로 표현하는 상기 데이터 구조는 옥트리(octree) 데이터 구조이고, 각 셀은 상기 옥트리 데이터 구조 내에서 복셀(voxel)로 표현되고, 상기 복셀은 상기 실제 세계의 더 큰 부분의 배열에 사용하기 위해서는 희소 복셀, 또는 상기 실제 세계의 더 작은 부분의 배열에 사용하기 위해서는 조밀한 복셀인 것을 특징으로 하는 시스템.
  7. 제1 항에 있어서, 상기 가상 또는 실제 세계를 셀로 표현하는 상기 데이터 구조는 BSP 트리, 희소 복셀 옥트리, 3D 어레이, kD 트리, 포인트 클라우드, 와이어 프레임, 경계 표현(B- Rep), 건설적인 솔리드 지오메트리 트리(CSG 트리), 빈 트리 및 육각형 구조 중 하나 이상을 포함하는 것을 특징으로 하는 시스템.
  8. 제1 항에 있어서, 상기 세계의 적어도 하나의 부분으로부터 더 높은 자원 집약적 관심 영역을 나타내는 셀은 더 많은 수의 셀로 더 분할되고, 더 작은 셀에는 더 많은 양의 자원이 할당되고, 상기 자원은 하나 이상의 요청과 연관된 이벤트가 종료된 후 복원되며, 상기 세계의 적어도 하나의 부분은 원래 셀 수로 다시 통합되는 것을 특징으로 하는 시스템.
  9. 제1 항에 있어서, 상기 자원 관리자는 분산 메시지 교환 플랫폼을 통해 할당을 수행하고, 상기 분산 메시지 교환 플랫폼은 퍼블리싱-구독 모델을 이용하고, 하나 이상의 가상 객체가 자원이 퍼블리싱되는 하나 이상의 셀에 가입하는 것을 특징으로 하는 시스템.
  10. 제9 항에 있어서, 상기 분산 메시지 교환 플랫폼은 상기 메모리에 저장된 상기 세계의 적어도 하나의 부분의 동적으로 업데이트된 상태를 하나 이상의 클라이언트 장치 및 서버와 공유하고, 상기 세계 상태는 사용자 입력, 서버 계산 또는 이들의 조합에 의해 상기 영구 가상 세계 시스템에 센서 데이터를 제공하는 센서를 포함하는 복수의 연결 장치 중 하나 이상에 의해 획득된 데이터를 통해 수정되는 것을 특징으로 하는 시스템.
  11. 제1 항에 있어서, 상기 복수의 셀의 각각의 셀은 하나 이상의 스트림을 포함하고, 각각의 스트림은 클라이언트 장치상에서 보고 상호 작용하기 위해 활성화 또는 비활성화되도록 프로그래밍된 복수의 스트림 특정 가상 객체를 포함하고, 각 스트림은 하나 이상의 애플리케이션과 연관되는 것을 특징으로 하는 시스템.
  12. 적어도 하나의 서버 컴퓨터의 메모리에서, 가상 또는 실제 세계의 적어도 일부를 영구 가상 세계 시스템을 형성하는 가상 객체를 저장하는 복수의 셀로 가상화하는 데이터 구조를 제공하는 단계로서, 상기 가상 객체의 적어도 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본인 상기 단계;
    상기 적어도 하나의 서버 컴퓨터의 메모리에서, 분산 배치로 구현된 분산 3D 엔진을 제공하는 단계로서, 상기 분산 3D 엔진은 자원 관리자 및 복수의 개별 분산 소프트웨어 엔진을 구비하는 상기 단계;
    상기 자원 관리자가 현재 부하를 기반으로 상기 복수의 셀 중 개별 셀의 요구를 계산하는 단계로서, 상기 요구는 상기 개별 셀 내의 가상 객체의 양 또는 상기 개별 셀 내의 사용자 아바타가 볼 수 있는 상기 영구 가상 세계 시스템의 일부 내의 상호 작용의 레벨에 기초하는 상기 단계;
    요구에 따라 상기 개별 셀의 순위를 매기는 단계; 및
    순위가 매겨진 요구에 따라 상기 개별 셀에 자원을 동적으로 할당하는 단계;
    를 포함하는 것을 특징으로 하는 방법.
  13. 제12 항에 있어서, 상기 요구는 상기 개별 셀에 액세스하는 클라이언트 장치와 네트워크 장비 사이의 거리, 상기 개별 셀에 액세스하는 사용자가 사용하는 애플리케이션 유형, 또는 상기 개별 셀에 액세스하는 사용자의 자격 유형에 더 기초하는 것을 특징으로 하는 방법.
  14. 제12 항에 있어서, 상기 영구 가상 세계 시스템은 요구 평가 및 부하 밸런싱에 사용되는 저 충실도 시뮬레이션을 포함하고, 사용자 경험을 개선하기 위해 사용되는 고 충실도 시뮬레이션을 포함하는 것을 특징으로 하는 방법.
  15. 제12 항에 있어서, 하나 이상의 특정 작업의 구현을 위해 서로의 엔진 서비스를 보완하도록, 상기 개별 분산 소프트웨어 엔진은 상기 분산 배치를 통해 순차적으로 또는 병렬로 사용되는 것을 특징으로 하는 방법.
  16. 제12 항에 있어서, 상기 가상 또는 실제 세계를 나타내는 상기 데이터 구조로서 옥트리 데이터 구조를 제공하는 단계를 더 포함하고, 각 셀은 복셀로 표현되고, 상기 복셀은 상기 실제 또는 가상 세계의 더 큰 부분의 배열에 사용하기 위한 희소 복셀 또는 상기 가상 또는 실제 세계의 더 작은 부분의 배열에 사용하기 위한 조밀한 복셀인 것을 특징으로 하는 방법.
  17. 제12 항에 있어서,
    계산된 요구에 기초하여, 상기 가상 또는 실제 세계의 상기 적어도 하나의 부분의 적어도 하나의 관심 영역을 추가 셀로 분할하는 단계;
    상기 추가 셀에 대응하는 자원을 할당하는 단계;
    를 더 포함하는 것을 특징으로 하는 방법.
  18. 제12 항에 있어서, 상기 할당은:
    퍼블리싱-구독 모델을 사용하여 상기 자원 관리자의 분산 메시지 교환 플랫폼을 통해 상기 대응하는 셀에 자원을 퍼블리싱하는 단계; 및
    필요한 자원을 얻기 위해 상기 하나 이상의 가상 객체에 의해 관심 셀에 가입하는 단계;
    에 의해 수행되는 것을 특징으로 하는 방법.
  19. 제12 항에 있어서, 상기 복수의 셀의 각 셀은 하나 이상의 스트림을 포함하고, 각각의 스트림은 복수의 스트림 특정 가상 객체를 포함하고 상기 클라이언트 장치에서 보고 상호 작용하기 위해 활성화 또는 비활성화되도록 구성되며, 각 스트림은 하나 이상의 사용자 애플리케이션과 연관되는 것을 특징으로 하는 방법.
  20. 하나 이상의 컴퓨터에 의해 실행될 때 상기 하나 이상의 컴퓨터로 하여금:
    영구 가상 세계 시스템을 형성하는 가상 객체를 저장하는 복수의 셀로 가상 또는 실제 세계의 적어도 일부를 가상화하는 데이터 구조를 제공하는 단계로서, 상기 가상 객체의 적어도 일부는 대응하는 실제 세계 엘리먼트의 가상 복제본인 상기 단계;
    분산 배치로 구현되고, 자원 관리자 및 복수의 개별 분산 소프트웨어 엔진을 구비하는 분산 3D 엔진을 제공하는 단계;
    상기 자원 관리자가 현재 부하를 기반으로 상기 복수의 셀 중 개별 셀의 요구를 계산하는 단계로서, 상기 요구는 상기 개별 셀 내의 가상 객체의 양 또는 상기 개별 셀 내의 사용자 아바타가 볼 수 있는 상기 영구 가상 세계 시스템의 일부 내의 상호 작용의 레벨에 기초하는 상기 단계;
    요구에 따라 상기 개별 셀의 순위를 매기는 단계; 및
    순위가 매겨진 요구에 따라 상기 개별 셀에 자원을 동적으로 할당하는 단계;
    를 포함하는 단계를 수행하게 하도록 구성된 명령어를 저장하는 것을 특징으로 하는 하나 이상의 비일시적 컴퓨터 판독 가능 매체.
KR1020200184598A 2019-12-30 2020-12-28 가상 또는 실제 세계의 다차원 3d 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱 KR20210086977A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962955247P 2019-12-30 2019-12-30
US62/955,247 2019-12-30

Publications (1)

Publication Number Publication Date
KR20210086977A true KR20210086977A (ko) 2021-07-09

Family

ID=74103883

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200184598A KR20210086977A (ko) 2019-12-30 2020-12-28 가상 또는 실제 세계의 다차원 3d 엔진 컴퓨팅 및 가상화 기반 동적 부하 밸런싱

Country Status (5)

Country Link
US (2) US11798119B2 (ko)
EP (1) EP3846058A1 (ko)
JP (2) JP7302885B2 (ko)
KR (1) KR20210086977A (ko)
CN (1) CN113117317A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024106602A1 (ko) * 2022-11-16 2024-05-23 주식회사 컴투버스 물리 시뮬레이션 서버의 분산 처리 방법 및 장치
WO2024122729A1 (ko) * 2022-12-09 2024-06-13 주식회사 컴투버스 물리 시뮬레이션 서버의 스케일링 방법 및 장치

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7305194B2 (ja) * 2019-12-30 2023-07-10 ティーエムアールダブリュー ファウンデーション アイピー エスエーアールエル n層アーキテクチャにより仮想世界計算を最適化するためのシステムおよび方法
TWI744068B (zh) * 2020-11-03 2021-10-21 啟碁科技股份有限公司 資源管理系統及資源管理方法
US11527047B2 (en) 2021-03-11 2022-12-13 Quintar, Inc. Augmented reality system for viewing an event with distributed computing
US11657578B2 (en) 2021-03-11 2023-05-23 Quintar, Inc. Registration for augmented reality system for viewing an event
US12003806B2 (en) * 2021-03-11 2024-06-04 Quintar, Inc. Augmented reality system for viewing an event with multiple coordinate systems and automatically generated model
US11645819B2 (en) 2021-03-11 2023-05-09 Quintar, Inc. Augmented reality system for viewing an event with mode based on crowd sourced images
US11522947B1 (en) * 2021-06-09 2022-12-06 Bank Of America Corporation System for implementing hybrid cloud computation engines using infrastructure optimization
WO2023114668A1 (en) * 2021-12-13 2023-06-22 Commscope Technologies Llc Resource pooling for virtualized radio access network
US20230367444A1 (en) * 2022-05-10 2023-11-16 Tmrw Foundation Ip S. À R.L. Layer-partitioned virtual world system
CN115374141B (zh) * 2022-09-20 2024-05-10 支付宝(杭州)信息技术有限公司 虚拟形象的更新处理方法及装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0693737A3 (en) * 1994-07-21 1997-01-08 Ibm Method and apparatus for managing tasks in a multiprocessor system
JP2727974B2 (ja) * 1994-09-01 1998-03-18 日本電気株式会社 映像提示装置
JP2003271985A (ja) 2002-03-14 2003-09-26 N Technology Kk 並列画像処理方法及びそのシステム
JP4467267B2 (ja) 2002-09-06 2010-05-26 株式会社ソニー・コンピュータエンタテインメント 画像処理方法、画像処理装置、および画像処理システム
US7428588B2 (en) 2004-04-08 2008-09-23 International Business Machines Corporation Method for distributing and geographically load balancing location aware communication device client-proxy applications
AU2007304834C1 (en) 2006-10-05 2014-01-23 National Ict Australia Limited Decentralised multi-user online environment
JP5373295B2 (ja) 2008-02-04 2013-12-18 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチノード・サーバシステム、負荷分散方法、リソース管理サーバ、およびプログラム
US8230441B2 (en) 2008-04-29 2012-07-24 International Business Machines Corporation Virtual world subgroup determination and segmentation for performance scalability
US9498711B2 (en) 2008-11-04 2016-11-22 Quado Media Inc. Multi-player, multi-screens, electronic gaming platform and system
US20100113158A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for hosting a distributed virtual world system
US20100113159A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems
CN102446192A (zh) * 2010-09-30 2012-05-09 国际商业机器公司 在虚拟世界中评估关注度的方法和装置
EP2745462B1 (en) 2011-08-18 2021-10-20 Pfaqutruma Research LLC Systems and methods of virtual world interaction
JP6140052B2 (ja) 2013-10-30 2017-05-31 株式会社三菱東京Ufj銀行 情報処理システム
US10086285B2 (en) * 2014-05-08 2018-10-02 High Fidelity, Inc. Systems and methods for implementing distributed computer-generated virtual environments using user contributed computing devices
US11297346B2 (en) * 2016-05-28 2022-04-05 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
JP6637855B2 (ja) 2016-08-22 2020-01-29 株式会社ソニー・インタラクティブエンタテインメント データ処理装置、データ処理方法およびコンピュータプログラム
US10289767B2 (en) 2016-08-24 2019-05-14 Improbable Worlds Ltd Communications interface facilitating operations of a persistent spatially-optimized computer-based simulation
US10207184B1 (en) 2017-03-21 2019-02-19 Amazon Technologies, Inc. Dynamic resource allocation for gaming applications
US10810064B2 (en) 2018-04-27 2020-10-20 Nasdaq Technology Ab Publish-subscribe framework for application execution

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024106602A1 (ko) * 2022-11-16 2024-05-23 주식회사 컴투버스 물리 시뮬레이션 서버의 분산 처리 방법 및 장치
WO2024122729A1 (ko) * 2022-12-09 2024-06-13 주식회사 컴투버스 물리 시뮬레이션 서버의 스케일링 방법 및 장치

Also Published As

Publication number Publication date
US20240029194A1 (en) 2024-01-25
JP2023058518A (ja) 2023-04-25
JP7302885B2 (ja) 2023-07-04
JP2021119453A (ja) 2021-08-12
EP3846058A1 (en) 2021-07-07
US11798119B2 (en) 2023-10-24
US20210201437A1 (en) 2021-07-01
CN113117317A (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
JP7302885B2 (ja) 仮想世界または現実世界の多次元3dエンジンコンピューティングおよび仮想化ベースの動的負荷分散
US11245872B2 (en) Merged reality spatial streaming of virtual spaces
US11949728B2 (en) System and method for optimizing virtual world computations through an N-tier architecture
US20240037844A1 (en) 3d structure engine-based computation platform
JP2021111385A (ja) 協調的3dマップデータ融合プラットフォーム及びその仮想世界システムを可能にするシステム及び方法
CN112104691B (zh) 跨边缘和云的软件引擎虚拟化以及动态资源和任务分布
CN112102463B (zh) 通过位置虚拟化技术操作3d应用的系统和方法
JP2023157874A (ja) プライベートからパブリックのメディア体験を実現するシステム及び方法
US12033271B2 (en) 3D structure engine-based computation platform
CN117839206A (zh) 数据处理方法、装置及电子设备