KR20070048656A - 규칙 기반 절차적 지형 생성을 위한 지형 편집 툴 - Google Patents

규칙 기반 절차적 지형 생성을 위한 지형 편집 툴 Download PDF

Info

Publication number
KR20070048656A
KR20070048656A KR1020067027153A KR20067027153A KR20070048656A KR 20070048656 A KR20070048656 A KR 20070048656A KR 1020067027153 A KR1020067027153 A KR 1020067027153A KR 20067027153 A KR20067027153 A KR 20067027153A KR 20070048656 A KR20070048656 A KR 20070048656A
Authority
KR
South Korea
Prior art keywords
terrain
state
generation system
chunk
virtual world
Prior art date
Application number
KR1020067027153A
Other languages
English (en)
Other versions
KR101148613B1 (ko
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 KR20070048656A publication Critical patent/KR20070048656A/ko
Application granted granted Critical
Publication of KR101148613B1 publication Critical patent/KR101148613B1/ko

Links

Images

Classifications

    • 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/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • 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/05Geographic models
    • 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/60Methods for processing data by generating or executing the game program
    • A63F2300/6009Methods for processing data by generating or executing the game program for importing or creating game content, e.g. authoring tools during game development, adapting content to different platforms, use of a scripting language to create content

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Remote Sensing (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

가상 세계에서 실시간으로 규칙 기반 절차적 지형의 생성을 위한 시스템 및 방법이 개시된다. 실제 구조 데이터를 저장하는 것이 아니라 규칙을 이용하여 지형을 기술함으로써, 지형이 필요할 때 실시간으로 온더플라이 방식으로 절차적으로 지형을 생성함으로써 메모리 및 디스크 공간 면에서의 상당한 절약이 달성된다. 지형 편집기 도구를 이용함으로써 지형 시스템은 예를 들어 지형의 높이, 칼라, 쉐이더, 텍스쳐, 식물군 및 환경을 정의하고 수정하는 것을 허용한다. 또한, 절차적으로 지형을 생성하는 것은 지형 구조를 생성하는 데 이용되는 파라미터들을 변경함으로써 거의 제한 없는 세부 묘사를 허용한다. 이들 규칙은 또한 동적으로 추가 또는 삭제될 수 있어, 실시간 지형 수정을 가능하게 한다. 또한, 메모리 할당 및 할당 해제와 같이 지형 생성 시스템을 위한 자원들이 관리된다.
3차원 게임, 가상 세계, 규칙 기반 절차적 지형 생성, 가상 지형

Description

규칙 기반 절차적 지형 생성을 위한 지형 편집 툴{TERRAIN EDITOR TOOL FOR RULE-BASED PROCEDURAL TERRAIN GENERATION}
본 발명은 일반적으로 지형 생성 분야에 관한 것이다. 더 구체적으로, 본 발명은 가상 세계의 표시를 위해 실시간으로 지형 메타데이터의 규칙 기반 절차적 생성에 관한 것이다.
특정의 컴퓨터 애플리케이션들, 예를 들어, 3차원(3D) 대규모 멀티플레이어 온라인 게임들과 같은 개인용 컴퓨터(PC) 게임들에서는 가상 지형을 가진 가상 세계가 생성될 수 있다. 지형 생성은 강, 도로, 식물군, 조명, 대륙, 천체 물체, 환경 특징, 진흙 및 바위와 같은 물체 및 특징의 생성을 포함할 수 있다. 전통적인 지형 생성 시스템은 3D 지형 아티스트가 하나 이상의 지형 데이터베이스에 저장되는 매우 상세하고 긴 지형 정의들을 수동으로 입력할 것을 요구한다.
대규모 멀티플레이어 온라인 컴퓨터 게임들에서, 아바타는 실제 사람 또는 캐릭터를 표현하는 그래픽 아이콘 또는 이미지를 지칭한다. 예를 들어, 게임 플레이어가 게임 시스템에 입장할 때, 플레이어는 종종 다수의 아바타로부터 선택할 수 있다. 정교한 3D 아바타들은 심지어 이들이 현재 행하고 있는 것, 예를 들어 걷기, 앉아 있기, 달리기 등에 따라 형상을 변경할 수 있다.
전통적인 지형 생성 및 렌더링 시스템은 많은 단점과 한계를 갖고 있다. 예를 들어, 지형 데이터의 입력은 종종 지형 아티스트가 입력하고 수정하는 데 많은 시간이 걸릴 수 있는 시간 소모 프로세스이다. 또한, 지형 생성 시스템은 일반적으로 지형 데이터를 저장하고, 생성하고, 렌더링하기 위해 매우 많은 양의 데이터베이스 저장 공간 및 처리 자원을 소모한다. 더욱이, 사용자의 컴퓨터 시스템 상에서 렌더링되도록 하기 위하여 네트워크를 통해 지형 데이터의 전송을 요구하는 지형 생성 시스템에서, 지형 데이터는 지형의 매끄러운 렌더링에 필요한 갱신 속도를 지원할 수 있을 만큼 충분히 빠르게 전송될 수 없다.
따라서, 가상 세계 애플리케이션들, 예를 들어 3D 대규모 멀티플레이어 온라인 게임들에서 실시간으로 지형 데이터를 효율적으로 정의하고, 생성하고, 렌더링하기 위한 규칙 기반 시스템 및 방법이 필요하다.
<본 발명의 특정 양태들의 개요>
본 발명의 일부 실시예들은 가상 세계에서 지형을 생성하는 시스템에 관한 것이다. 상기 시스템은 절차 규칙을 생성하는 모듈을 포함하고, 절차 규칙들의 각각은 가상 세계에서 지형의 적어도 일 부분을 정의하고, 지형 생성기는 생성된 절차 규칙을 처리하여 가상 세계의 디지털 표현을 생성한다.
상기 시스템에서, 모듈은 가상 세계 내에서 사용자가 영역을 정의하도록 하는 인터페이스를 포함할 수 있다. 또한, 상기 시스템에서, 모듈은 필터 조건을 만족시키는 지형의 영역들을 사용자가 식별하도록 하는 인터페이스를 포함할 수 있다. 필터 조건은 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나일 수 있다. 시 스템에서, 모듈은, 가상 지형의 다른 지역들과 비교하여 생성하기에 시간 소모적인 가상 지형의 지역들을 그래픽으로 식별할 수 있다. 또한, 상기 시스템에서, 모듈은, 가상 지형의 적어도 일 부분에서 생성하기 위해 소요되는 시간을 식별할 수 있다.
추가 실시예들은 절차 규칙들을 사용하여 지형을 생성하는 방법에 관한 것이다. 상기 방법은, 가상 세계에서 지형의 적어도 일 부분을 디스플레이하는 단계, 가상 세계에서 지형의 적어도 일 부분을 식별하는 사용자로부터 표시를 수신하는 단계, 식별된 부분의 적어도 한 개의 특성을 선택하는 단계, 및 수신된 표시와 수신된 정보에 기초하여 절차 규칙을 생성하는 단계를 포함한다.
상기 방법은, 생성된 절차 규칙에 따라서, 지형의 디지털 표현을 생성하는 단계를 더 포함할 수 있다. 상기 방법에서, 표시는 가상 세계에서 원형 지역, 정사각형, 직사각형, 또는 삼각형 지역을 평면도에서 정의할 수 있다. 또한, 상기 방법에서, 표시는 적어도 한 개의 지형 특성을 기술하는 필터 기준을 포함할 수 있다. 지형 특성은 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나일 수 있다.
추가 실시예들은 절차 규칙들을 사용하여 지형을 생성하는 시스템에 관한 것이다. 상기 시스템은, 가상 세계에서 지형의 적어도 일 부분을 디스플레이하는 수단, 가상 세계에서 지형의 적어도 일 부분을 식별하는 사용자로부터 표시를 수신하는 수단, 식별된 부분의 적어도 한 개의 특성을 선택하는 수단, 및 수신된 표시와 수신된 정보에 기초하여 절차 규칙을 생성하는 수단을 포함한다.
상기 시스템은, 생성된 절차 규칙에 따라서, 지형의 디지털 표현을 생성하는 것을 더 포함할 수 있다. 상기 시스템에서, 표시는 가상 세계에서 원형 지역, 정사각형, 직사각형, 또는 삼각형 지역을 평면도에서 정의할 수 있다. 또한, 상기 시스템에서, 표시는 적어도 한 개의 지형 특성을 기술하는 필터 기준을 포함할 수 있다. 지형 특성은, 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나일 수 있다.
추가 실시예들은, 실행될 때, 절차 규칙들을 사용하여 지형을 생성하는 방법을 수행하는 명령들을 저장하는 프로그램 저장 장치에 관한 것이다. 상기 방법은, 가상 세계에서 지형의 적어도 일 부분을 디스플레이하는 단계, 가상 세계에서 지형의 적어도 일 부분을 식별하는 사용자로부터 표시를 수신하는 단계, 및 식별된 부분의 적어도 한 개의 특성을 선택하는 단계를 포함한다.
상기 방법은, 생성된 절차 규칙에 따라서, 지형의 디지털 표현을 생성하는 단계를 더 포함할 수 있다. 상기 방법에서, 표시는 가상 세계에서 원형 지역, 정사각형, 직사각형, 또는 삼각형 지역을 평면도에서 정의할 수 있다. 또한, 상기 방법에서, 표시는 적어도 한 개의 지형 특성을 기술하는 필터 기준을 포함할 수 있다. 지형 특성은, 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나일 수 있다.
본 발명의 상기 및 다른 양태, 특징 및 이점은 첨부 도면과 함께 읽어야 하는 아래의 상세한 설명을 참조함으로써 보다 잘 이해될 것이다. 이들 도면 및 관련 설명은 본 발명의 범위를 제한하기 위한 것이 아니라, 본 발명의 소정의 실시예들을 설명하기 위해 제공된다.
도 1은 규칙 기반 지형 생성 시스템의 실시예들을 실행하기 위한 컴퓨터 시 스템의 일례를 나타내는 도면.
도 1a는 지형 생성 시스템 네트워크 구성의 일례를 나타내는 블록도.
도 2는 예시적인 지형 생성 시스템 네트워크 구성을 나타내는 블록도.
도 3은 도 1a 및 도 2에 도시된 다양한 서버 중 하나 이상에서 실행될 수 있는 지형 생성 시스템의 서버측 지형 시스템 모듈들의 일 실시예를 나타내는 블록도.
도 4는 도 1a 및 도 2에 도시된 다양한 클라이언트 컴퓨터 중 하나 이상에서 실행될 수 있는 지형 생성 시스템의 클라이언트측 지형 시스템 모듈들의 일 실시예를 나타내는 블록도.
도 5는 도 2 및 도 4에 도시된 청크 관리자 모듈에 의해 관리되는 지형 생성 시스템 내의 지형 청크의 구성의 일례를 나타내는 도면.
도 6은 도 5에 도시된 다수의 인접 지형 청크의 세계 좌표들의 일례를 나타내는 도면.
도 7은 도 5 및 도 6에 도시된 청크들에 대해 전체 지형 청크의 다수의 타일 및 삼각형으로의 분해의 일례를 나타내는 도면.
도 8은 도 3에 도시된 서버측 지형 시스템 모듈들에 의해 실행되는 지형 생성 시스템의 서버측 시스템의 최상위 레벨 실행 프로세스의 일 실시예를 나타내는 흐름도.
도 9는 도 4에 도시된 클라이언트측 지형 시스템 모듈들에 의해 실행되는 지형 생성 시스템의 클라이언트측 시스템의 최상위 레벨 실행 프로세스의 일 실시예 를 나타내는 흐름도.
도 10은 도 8에 도시된 서버측 시스템의 최상위 레벨 실행 프로세스의 지형 사전 처리 프로세스의 일 실시예를 나타내는 흐름도.
도 11은 지형 생성 시스템의 지형 생성 프로세스의 일 실시예를 나타내는 흐름도.
도 12는 도 11에 도시된 지형 생성 프로세스의 청크 생성 프로세스의 일 실시예를 나타내는 흐름도.
도 13은 도 12에 도시된 청크 생성 프로세스의 2D 버퍼 할당 프로세스의 일 실시예를 나타내는 흐름도.
도 14는 도 12에 도시된 청크 생성 프로세스의 규칙 처리 프로세스의 일 실시예를 나타내는 흐름도.
도 15는 도 14에 도시된 규칙 처리 프로세스의 경계 영향 계산 프로세스의 일 실시예를 나타내는 흐름도.
도 16은 도 14에 도시된 규칙 처리 프로세스의 필터 영향 계산 프로세스의 일 실시예를 나타내는 흐름도.
도 17은 도 14에 도시된 규칙 처리 프로세스의 영향자 처리 프로세스의 일 실시예를 나타내는 흐름도.
도 18은 서버측 상의 청크 관리자 모듈 또는 클라이언트측 상의 청크 관리자 모듈에 의해 실행되는 지형 생성 프로세스의 청크 클린-업 프로세스의 일 실시예를 나타내는 흐름도.
도 19는 식물군 관리자 모듈에 의해 실행되는 도 11에 도시된 지형 생성 프로세스의 식물군 관리자 갱신 프로세스의 일 실시예를 나타내는 흐름도.
도 20은 도 9에 도시된 최상위 레벨 실행 프로세스의 세계 작도 프로세스의 일 실시예를 나타내는 흐름도.
도 21은 지형 생성 시스템의 고속 식물군 배치 프로세스의 일 실시예를 나타내는 흐름도.
도 22는 지형 생성 시스템의 식물군 밀도 계산 프로세스의 일 실시예를 나타내는 흐름도.
도 23은 지형 생성 시스템의 실시간 도로 생성 프로세스의 일 실시예를 나타내는 흐름도.
도 24는 지형 생성 시스템의 서버측 시스템의 지형 사전 처리 프로세스의 일 실시예를 나타내는 흐름도.
도 25는 지형 특징들이 정의되지 않은 가상 세계를 나타내는 스크린 디스플레이의 일례를 나타내는 도면.
도 26은 지형 특징들이 정의되지 않은 도 25에 도시된 디폴트 지형에 산과 다른 가변 지형 높이가 추가된 스크린 디스플레이의 일례를 나타내는 도면.
도 27은 도 26에 도시된 지형 높이 특징들 외에 그라운드 텍스쳐에 대해 쉐이더 특징이 정의된 스크린 디스플레이의 일례를 나타내는 도면.
도 28은 도 27에 도시된 다른 지형 특징들 외에 수풀, 관목 및 수목을 포함하는 식물군이 정의된 스크린 디스플레이의 일례를 나타내는 도면.
도 29는 도 28에 도시된 다른 지형 특징들 외에 강이 정의된 스크린 디스플레이의 일례를 나타내는 도면.
도 30은 지형 규칙들을 입력하고 수정하기 위한 지형 편집기 도구의 스크린 스냅샷의 일례를 나타내는 도면.
도 31은 지형 편집기 도구를 이용한 맵 파라미터 및 쉐이더 자손 특성의 표시 및 입력을 위한 윈도우를 나타내는 스크린 스냅샷의 일례를 나타내는 도면.
도 32는 지형 편집기 도구를 이용한 식물군 파라미터의 표시 및 입력을 위한 윈도우를 나타내는 스크린 스냅샷의 일례를 나타내는 도면.
도 33은 지형 편집기 도구를 이용하여 입력된 2D 지형 맵의 일례를 나타내는 스크린 스냅샷의 일례를 나타내는 도면.
도 34는 지형 편집기 도구를 이용하여 입력된 2D 지형 맵의 다른 예를 나타내는 스크린 스냅샷의 일례를 나타내는 도면.
아래의 소정의 실시예들에 대한 상세한 설명은 본 발명의 특정 실시예들의 다양한 설명을 제공한다. 그러나, 본 발명은 청구범위에 의해 정의되고 커버되는 다수의 상이한 방식으로 구현될 수 있다. 본 설명에서는 전반적으로 동일 부품들이 동일 번호들로 표시되는 도면들이 참조된다.
일 실시예에서, 지형 생성 시스템은 지형 규칙들로부터 지형 구조 데이터(terrain geometry data)를 절차적으로 생성하기 위한 시스템 및 방법을 포함한다. 규칙은 본 명세서에서 영향자(affector)로도 지칭된다. 실제 지형 구조 데이터를 저장하는 것이 아니라, 규칙들을 이용하여 지형을 절차적으로 기술함으로써, 지형이 필요할 때 실시간으로 온더플라이 방식으로(on the fly) 지형을 생성함으로써 메모리 및 디스크 공간에 있어서의 상당한 절약이 달성된다. 지형 생성 시스템은 예를 들어 지형 높이, 칼라, 쉐이더 및 텍스쳐, 식물군 및 환경을 수정한다. 또한, 절차적으로 지형을 생성함으로써, 지형 생성 시스템은 지형 구조를 생성하는 데 이용되는 파라미터들을 변경함으로써 실제로 제한 없는 상세를 생성하고 렌더링할 수 있다. 지형 규칙들로도 지칭될 수 있는 이들 파라미터는 동적으로 추가되고 제거될 수 있어, 지형의 실시간 수정이 이루어질 수 있다.
소정의 실시예들에서, 디폴트 지형 크기는 16km×16km이다. 지형들은 1km×1km의 크기 정도로 작을 수 있으며, 16km×16km보다 클 수도 있다. 클라이언트측 지형 생성 시스템의 소정 실시예들에서, 지형 생성 시스템은 낮, 밤, 해, 달, 별, 및 다른 천체 물체를 포함하는 주간 사이클의 전 시간을 떠 맡을 수 있다. 그러나, 환경, 기상 효과, 또는 조명 조건은 종종 행성 전체에서 동일하지 않다. 예를 들어, 정글 영역은 일반적으로 혼잡하고 희미하게 조명된 것으로 보이며, 늪지대는 안개낀 것처럼 보인다. 환경 블록들은 예를 들어 조명, 안개 및 배경 파라미터를 변경할 수 있는 지형의 사용자 정의 영역들을 지칭한다. 지형 생성 시스템의 소정 실시예들에서, 환경 블록들 간의 전이는 시간에 따라 간단히 변경될 수 있다.
지형 생성 시스템에서의 규칙들은 영향자들로도 지칭될 수 있으며, 계층들로 체계화된다. 경계는 원하는 규칙이 영향을 미치는 가상 지형의 지형 설계자 또는 아티스트 정의 영역을 지칭한다. 필터는 영향자를 적용할 때 고려되는 조건을 지칭한다. 계층들은 부모-자손 또는 트리-리프(tree-leaf) 관계를 가진 계층 구조로 배열될 수 있다. 경계의 예는 원, 사각형 및 다각형을 포함한다. 필터의 예는 경사, 높이, 쉐이더, 방향 및 프랙탈에 의한 필터링을 포함한다. 영향자의 예는 높이, 칼라, 쉐이더, 식물군 및 방사상 식물군에 영향을 미치는 영향자를 포함한다. 경계, 필터 및 계층은 후술한다.
규칙들의 계층 구조는 규칙들이 중복되는 것을 허용한다. 규칙들이 중복될 때 견고하고 가시적인 불연속을 최소화하거나 방지하기 위하여, 지형 생성기는 경계 에지 및 필터를 페더링(feathering)할 수 있다. 페더링은 블렌드 영역 및 높이와 칼라를 블렌딩하기 위한 동작들을 지정하는 방법이다.
지형 생성 시스템은 또한, 텍스쳐, 구조 또는 심지어는 알고리즘과 같은 자산의 그룹을 지칭하는 패밀리를 포함한다. 패밀리는 가중치를 가진 자손을 포함할 수 있다. 이것은 1의 가중치를 가진 자손을 선택함으로써 자산을 선택하는 것을 포함할 수 있다. 예를 들어, 이것은 사용자가 한 영역에 대한 "수풀" 패밀리를 선택하는 것을 허용하지만, 지형 시스템은 수풀 패밀리를 생성할 때, 수풀 패밀리의 자손들 중 하나를 선택하여, 단일 수풀 쉐이더의 렌더링을 이룰 수 있게 된다.
패밀리의 예는 쉐이더 패밀리, 블렌드 패밀리, 식물군 패밀리, 방사상 식물군 패밀리 및 프랙탈 패밀리를 포함한다. 쉐이더 패밀리는 텍스쳐를 배치하기 위한 쉐이더 그룹핑을 지칭한다. 블렌드 패밀리는 알파 블렌드 마스크를 선택하기 위한 쉐이더 그룹핑 지칭한다. 식물군 패밀리는 식물군을 선택하기 위한 구조 그룹핑을 지칭한다. 방사상 식물군 패밀리는 방사상 식물군을 배치하기 위한 쉐이더 그룹핑을 지칭한다. 프랙탈 패밀리는 상이한 규칙들 내에서의 재사용을 위한 프랙탈 그룹핑을 지칭한다.
경계, 필터 및 영향자는 계층 및 하위 계층에서 정의될 수 있으며, 따라서 지형 내의 단일 위치가 다수의 지형 규칙을 가질 수 있게 된다. 경계(또는 필터) 없는 계층은 "한정되지 않으며", 거의 전체 풍경에 영향을 미칠 수 있다. 경계를 가진 계층은 계층 및 하위 계층 내의 영향자가 경계에 의해 지정되는 영역에 적용되는 것을 허용한다.
계층의 예는 다음을 포함한다:
1. 계층
Figure 112006095579847-PCT00001
2. 계층
Figure 112006095579847-PCT00002
3. 계층
Figure 112006095579847-PCT00003
본 예는 규칙들에 대한 실제 코드와 달리, 규칙들의 텍스트 표현을 나타낸다. 위에 열거된 계층 규칙 예에서, 다양한 경계, 필터 및 영향자에는 논리적 텍스트 포맷으로 원하는 속성을 나타내는 수치 값 또는 텍스트 값(예를 들어, "feather=InOut")이 할당될 수 있다. 소정의 실시예들에서, 텍스트 값은 컴파일 시에 특정 수치 값에 할당될 수 있다.
위에 열거한 규칙 예를 이용하여, 대응하는 규칙 기술은 다음을 수행할 수 있는데, 즉 어디에서나 지형의 높이를 10 미터로 설정하고 암석 쉐이더를 할당할 수 있다. 이어서, 좌표(500, 500)에서 비롯되는 500 미터 원에서, 10 미터에서 0 미터로 높이를 점차 감소시키고, 진흙 쉐이더를 배치하며, 주어진 샘플 점에서의 지형의 높이가 13 내지 17 미터인 블랙 밴드를 생성한다. 마지막으로, 좌표(-500, -500)에서 (500, 500)까지의 사각형에서, 사각형 내에 침엽수 및 죽은 수풀을 배치한다.
지형 생성 시스템은 규칙들을 추가 또는 삭제함으로써 지형을 수정하기 위하여 실행 시간 동안 계층들을 추가하는 것을 지원한다. 이것은 예를 들어 빌딩 아래의 지형으로부터 임의의 식물군 또는 방사상 식물군을 제거하면서 빌딩 아래의 지형을 평탄화하거나, 소정의 온라인 게임에서 위에서 나타나는 궤도 선회 우주선으로부터의 이온 캐논 블라스트를 따라 지형에 분화구를 만드는 것과 같은 특징들을 위해 사용될 수 있다. 마찬가지로, 규칙 세트의 삭제는 규칙 세트가 제공하는 임의의 특징을 제거한다. 예를 들어, 사용자는 호수를 제거하거나, 호수를 이동시키거나, 호수를 복제하는 등등을 행할 수 있다.
일례로서, 지형 생성 시스템에서 절벽을 정의하기 위하여, 사용자는 예를 들어 이웃 영역보다 상당히 낮게 하기 위하여 지형의 한 영역의 높이를 수정하는 높이 규칙들을 생성할 수 있다. 그 높이 데이터에 대한 규칙적 그리드를 이용하는 지형 생성 시스템에서, 이웃하는 높이 기둥들의 높이가 너무 크게 상이하지 않은 경우, 지형 텍스쳐들은 지형의 다각형들을 가로질러 연장되어 있는 것처럼 보일 수 있다. 이러한 연장은 허용되거나 수정될 수 있다.
대규모 멀티플레이어 온라인 컴퓨터 게임에서, 아바타는 실제 사람 또는 캐릭터를 나타내는 그래픽 아이콘 또는 이미지를 지칭한다. 예를 들어, 게임 플레이어가 게임 시스템에 입장할 때, 플레이어는 종종 다수의 아바타로부터 선택할 수 있다. 정교한 3D 아바타들은 이들이 예를 들어 걷거나, 앉아 있거나 달리는 등등, 현재 행하고 있는 행동에 따라 형상을 변경할 수도 있다.
지형 생성 시스템은 많은 그래픽 렌더링 하드웨어 및 협약들 중 하나 이상을 이용할 수 있다. 이러한 하나의 그래픽 렌더링 플랫폼은 산업 표준 DirectX9이다. 지형 생성 시스템은 DirectX9의 상부에 계층화된 현존 3D 그래픽 엔진 및 객체 시스템의 상부에 계층화된다.
지형 생성 시스템은 또한, 절차적으로 생성된 지형의 실시간 수정을 포함한다. 소정 영역 및 변형 파라미터를 지정함으로써, 지형 생성 시스템은 집 또는 다른 빌딩에 대한 분화구 및 지형 평탄화와 같은 다양한 지형 특징에 대해 실시간으로 지형을 수정(또는 변형)할 수 있다. 예를 들어, 지형 시스템은 다음과 같은 확장의 필요, 즉 대륙의 확장, 규칙 추가, 행성 추가, 가파른 절벽, 상세 레벨 팝핑, 환경 블록, 충돌 가능 식물군, 표변 특성, 정적 메쉬 추가 및 자원 배치를 처리하도록 설계되었다.
지형 생성 시스템은 또한, 가상 세계에서 글로벌 워터에 대한 규칙의 정의를 포함한다. 글로벌 워터는 전체 행성 또는 지형 세계에서 지정된 높이에 있는 워터 시트(sheet of water)이다. 소정 실시예들에서, 글로벌 워터는 청크가 렌더링될 때 청크와 함께 렌더링되는 청크당 단일 평면으로서 구현된다. 글로벌 워터는 대양 등에 대해 사용될 수 있다. 워터는 그래픽적으로 파동치며, 고품질 쉐이더 효과로 렌더링된다.
표면 지형 특성은 플레이어가 경험하는 것에 영향을 미치는 게임 고유 데이터로 지형 타일들을 태깅하는 것을 포함한다. 예를 들어, 타일들은 예를 들어 미끄럽거나, 손상을 가하거나, 통과할 수 없는 것으로 표시될 수 있다. 타일당 하나의 쉐이더로 하여, 표면 특성들이 쉐이더마다 연관될 수 있다.
지형 생성 시스템은 또한, 지형 시스템에서 식물군 물체들을 배치하기 위한 시스템 및 방법을 포함한다. 고속 식물군 배치는 현재의 시점 둘레의 식물군이 최소이고, 정확하고, 상세한 것을 보장한다. 전통적인 방법들은 일반적으로 식물군 모두를 사전에 생성하고, 이들 물체의 일부, 예를 들어 보다 가까운 다른 물체들로부터의 폐쇄로 인해 보이지 않는 물체들을 렌더링하지 않도록 선택하는 렌더 시스템 또는 장면 그래프 시스템을 이용한다. 예를 들어, 고속 식물군 배치의 소정의 실시예들은 필요한 경우에만 지형 식물군을 생성한다.
또한, 지형 생성 시스템은 지형 내의 실시간 도로 생성을 위한 시스템 및 방법을 포함한다. 절차적 지형 생성은 산, 계곡, 구비치는 언덕 및 평원과 같은 지구형 구조의 생성을 포함한다. 절차적 지형 생성 시스템에 대한 데이터를 정의하는 사용자는 종종 도로와 같은 인조 지형 구조를 생성하기를 원한다. 사용자는 도로의 경로에 영향을 미치고, 도로 폭을 할당하고, 도로 지형에 적용할 쉐이더를 할당하는 제어점들을 규정함으로써 지형 생성 시스템에 대한 도로 데이터를 정의한다. 지형 생성 시스템은 도로 없는 지형을 생성한 후, 도로를 위해 지형을 수정하고, 도로를 편평하게 유지하기 위해 도로의 폭을 따라 지형을 평탄화하고, 도로의 길이를 따른 지형 경사의 급격한 변화를 최소화하려고 시도한다.
더욱이, 지형 생성 시스템은 지형 내의 실시간 하천 생성을 위한 시스템 및 방법을 포함한다. 절차적 지형 생성은 산, 계곡, 구비치는 언덕 및 평원과 같은 지구형 구조의 생성을 포함할 수 있다. 절차적 지형 생성 시스템에 대한 데이터를 정의하는 사용자는 하천과 같이 흐르는 워터 시스템을 생성하기를 원할 수 있다. 사용자는 하천의 경로에 영향을 미치고, 하천 폭 및 깊이를 할당하고, 하천 측면, 하천 바닥 및 하천의 물 자체에 적용할 쉐이더를 할당하는 제어점들을 규정함으로써 지형 생성 시스템에 대한 하천 데이터를 정의할 수 있다. 지형 생성 시스템은 하천 없는 지형을 생성한 후, 하천을 위해 지형을 수정하고, 하천을 형성하기 위하여 그 폭 및 깊이를 따라 지형을 깎아내며, 물이 상방으로 흐르게 하는 하천의 길이를 따른 지형 경사의 임의의 변화를 제거함으로써 물이 편평하거나 언덕 아래로 흐르는 것을 보장한다.
이제 도면을 참조하면, 도 1은 규칙 기반 지형 생성 시스템의 실시예들을 실행하기 위한 컴퓨터 시스템(100)의 일례를 나타내는 도면이다. 컴퓨터 시스템(100)은 적어도 하나의 컴퓨팅 장치(110), 예를 들어 도 1의 실시예의 컴퓨터를 포함한다. 지형 생성 시스템이 둘 이상의 컴퓨터 시스템(100)을 포함하는 실시예들에서, 컴퓨터 시스템들은 네트워크(120), 예를 들어 인터넷과 같은 공개 네트워크를 통해 상호 접속되어, 네트워킹된 컴퓨팅 환경을 형성한다(도 1a 및 도 2 참조).
도 1의 컴퓨팅 장치(110)는 지형 생성 시스템 모듈들을 실행하기 위한 마이크로프로세서 및 다른 하드웨어를 포함한다(예를 들어, 도 3 및 도 4 참조). 마이크로프로세서는 임의의 통상적인 범용 단일 또는 멀티칩 마이크로프로세서, 단지 몇몇 예로서, 펜티엄 프로세서, 펜티엄 프로 프로세서, 8051 프로세서, MPS 프로세서, 파워 PC 프로세서, 또는 알파 프로세서일 수 있다. 또한, 마이크로프로세서는 ASIC(Application-Specific Integrated Circuit) 프로세서와 같은 임의의 통상적인 특수 마이크로프로세서일 수 있다.
컴퓨팅 장치(110)는 디스플레이(125) 및 적어도 하나의 입력 장치에 접속된다. 입력 장치 및 디스플레이(125)를 이용하여, 사용자는 지형 생성 시스템에 사용자 입력을 제공할 수 있다. 입력 장치는 키보드(130), 마우스(135), 롤러볼(도시되지 않음), 펜 및 스타일러스(도시되지 않음), 또는 음성 인식 시스템(도시되지 않음)일 수 있다. 입력 장치는 디스플레이(125)에 연결된 터치 스크린(도시되지 않음)일 수도 있다. 사용자는 터치 스크린을 이용하여 디스플레이 상의 프롬프트에 응답하거나, 디스플레이 스크린의 소정 영역을 터치함으로써 다른 사용자 선택을 입력할 수 있다. 또한, 입력 장치를 통해 사용자에 의해 텍스트 데이터가 입력될 수 있다. 다른 실시예들에서, 컴퓨팅 장치(110)는 예를 들어 개인 휴대 단말(PDA), 셀룰러 전화, 무선 컴퓨팅 장치, 랩탑 컴퓨터, 셋톱 박스 등일 수 있다.
네트워크(120)는 예를 들어 다음의 네트워크, 즉 인터넷, 인트라넷, 근거리 네트워크(LAN) 또는 원거리 네트워크(WAN)를 포함하는 임의 타입의 전자 접속 컴퓨팅 장치들의 그룹을 포함할 수 있다. 또한, 네트워크에 대한 접속은 예를 들어 원격 모뎀, 이더넷(IEEE 802.3), 토큰 링(IEEE 802.5), 광섬유 분산 데이터 링크 인터페이스(FDDI) 또는 비동기 전송 모드(ATM)를 통해 이루어질 수 있다. 네트워킹된 컴퓨팅 장치들은 데스크탑, 서버, 포터블, 핸드헬드, 셋톱, 또는 임의의 다른 원하는 타입의 구성일 수 있다. 본 명세서에서 사용되는 인터넷 네트워크는 공개 인터넷, 비밀 인터넷 및 보안 인터넷과 같은 네트워크 변형들을 포함할 수 있다. 더욱이, 네트워크는 비밀 네트워크, 공개 네트워크, 부가 가치 네트워크, 인트라넷 등으로 구성될 수 있다.
도 1a는 지형 생성 시스템 네트워크 구성의 일례를 나타내는 블록도이다. 도 1에 도시된 바와 같이, 지형생성 시스템은 네트워크(120)를 통해 접속되는 다수의 컴퓨터를 옵션으로 포함할 수 있다. 도 1a에 도시된 지형 생성 시스템은 서버 1(160), 서버 2(164) 및 서버 N(168)을 포함한다. 지형 생성 시스템의 추가 실시예들은 단 하나의 서버 컴퓨터, 또는 서버 N(168)에 대한 표시 'N'으로 표현되는 임의 수의 다수의 서버를 포함할 수 있다. 지형 생성 시스템은 또한, 클라이언트 컴퓨터 1(180), 클라이언트 컴퓨터 2(184) 및 클라이언트 컴퓨터 N(188)을 포함할 수 있다. 서버 컴퓨터와 유사하게, 지형 생성 시스템의 추가 실시예들은 단 하나의 클라이언트 컴퓨터, 또는 클라이언트 컴퓨터 N(188)에 대한 표시 'N'으로 표현되는 임의 수의 다수의 클라이언트 컴퓨터를 포함할 수 있다. "클라이언트 컴퓨터" 및 "사용자 컴퓨터"라는 용어는 본 명세서에서 교환 가능하게 사용된다.
도 2는 예시적인 지형 생성 시스템 네트워크 구성(200)을 나타내는 블록도이다. 지형 생성 시스템은 하나 이상의 서버 컴퓨터, 하나 이상의 데이터베이스 저장 시스템, 및 하나 이상의 클라이언트 컴퓨터를 포함할 수 있다. 도 2에 도시된 지형 생성 시스템의 예는 게임 서버 1(210), 게임 서버 2(214), 게임 서버 3(220) 및 게임 서버 N(224)(집합적으로 게임 서버들(210, 214, 220, 224)로 지칭됨)로 표시되는 하나 이상의 게임 서버를 포함한다. 게임 서버들(210, 214, 220, 224) 각각은 행성 또는 세계의 소정 영역들에 대한 지형 데이터를 생성한다. 게임 서버들(210, 214, 220, 224)은 네트워크(120)를 통해 중앙 서버(260)에 접속된다. 데이터베이스 서버(250)가 또한 네트워크(120), 및 예를 들어 물체 위치, 플레이어 정보, 및 게임 서버들(210, 214, 220, 224) 상에서 실행되는 지형 생성 시스템의 모듈들에 의해 생성되는 다른 세계 정보를 저장하기 위한 데이터베이스 저장 시스템(254)에 접속될 수 있다. 중앙 서버(260) 상에서의 처리는 접속되는 게임 서버들(210, 214, 220, 224)의 리스트의 유지 및 게임 서버들(210, 214, 220, 224)과의 통신을 포함한다.
도 2에 도시된 지형 생성 시스템은 또한, 접속 서버 1(270), 접속 서버 2(274), 및 접속 서버 N(278)(집합적으로 접속 서버들(270, 274, 278)로 지칭됨)으로 표시되는 하나 이상의 접속 서버를 포함한다. 지형 생성 시스템은 또한, 클라이언트 컴퓨터 1-1(280), 클라이언트 컴퓨터 1-N(284), 클라이언트 컴퓨터 2-1(288), 클라이언트 컴퓨터 2-N(290), 클라이언트 컴퓨터 N-1(294) 및 클라이언트 컴퓨터 N-N(298)(집합적으로 클라이언트 컴퓨터들(280, 284, 288, 290, 294, 298)로 지칭됨)로 표시되는 하나 이상의 클라이언트 컴퓨터를 포함한다. 도 2가 하나 이상의 접속 컴퓨터(270, 274, 278) 각각에 접속된 2개의 클라이언트 컴퓨터를 도시하고 있지만, 다른 실시예들에서는, 둘보다 적거나 많은 클라이언트 컴퓨터가 접속 서버들(270, 274, 278) 각각에 접속될 수 있다.
중앙 서버(260)는 네트워크(120)를 통해 접속 서버들(270, 274, 278)과 통신한다. 접속 서버들(270, 274, 278)은 중앙 서버(260)와의 통신 외에 이들이 접속된 하나 이상의 클라이언트 컴퓨터(280, 284, 288, 290, 294, 298)와 통신한다. 절차적으로 생성된 지형은 클라이언트 컴퓨터들(280, 284, 288, 290, 294, 298) 상에서 렌더링(그래픽으로 표시)된다.
도 3은 도 1a 및 도 2에 도시된 다양한 서버 중 하나 이상에서 실행될 수 있는 지형 생성 시스템의 서버측 지형 시스템 모듈들(300)의 일 실시예를 나타내는 블록도이다. 서버측 지형 시스템 모듈들(300)은 예를 들어 도 2에 도시된 게임 서버들(210, 214, 220, 224) 상에서 실행된다. 서버측 지형 시스템 모듈들(300)은 행성 또는 가상 세계의 영역들에 대한 지형 메타데이터를 절차적으로 생성한다. 서버측 지형 시스템 모듈들(300)은 지형 물체 모듈(310), 충돌 시스템 모듈(350) 및 세계 물체 모듈(360)을 포함한다.
지형 물체 모듈(310)은 지형 생성기 모듈(320), 청크 관리자 모듈(330) 및 기준 물체 관리자 모듈(340)을 포함한다. 본 명세서에서 설명되는 청크는 지형 데이터가 생성되는 전체 지형의 일부를 지칭한다. 즉, 지형 풍경이 청크들로 지칭되는 정사각형 조각들로 논리적으로 분할된다. 청크들의 구조는 적어도 도 5 - 도 7과 관련하여 후술한다. 청크 관리자 모듈(330)은 어느 청크들에 대한 지형을 생성할지를 결정한다. 예를 들어, 청크 관리자 모듈(330)은 인접 청크들은 물론, 움직이는 물체들을 가진 청크들에 대한 지형을 생성할 수 있다. 지형 생성기 모듈(320)은 전술한 바와 같이 청크 관리자 모듈(330)에 의해 식별되는 청크들 주위의 지형을 생성한다. 기준 물체 관리자 모듈(340)은 지형 생성 시스템에서 기준 물체들의 위치 및 상태를 유지한다.
충돌 시스템 모듈(350)은 지형 시스템에서 이동 가능 물체들이 다른 물체들과 충돌하였는지를 결정한다. 충돌이 발생한 것으로 결정한 경우, 충돌 시스템 모듈(350)은 충돌 가능 또는 충돌 불가능한 물체와의 충돌인지를 결정한다. 예를 들어, 소정의 식물군 타입들(예를 들어, 수목)은 충돌 가능 타입이며, 따라서 이동 가능 물체는 식물군 타입을 통해 이동할 수 없게 된다. 다른 식물군 타입들(예를 들어, 수풀의 잎들)은 이동 가능 물체들의 이동을 방해하거나 저지하지 않는 충돌 불가능 타입이다.
지형 생성 시스템에서의 충돌 결정은 클라이언트 컴퓨터 및 서버 양자 상에서 정확한 다각형이다. 충돌 결정은 임의의 라인과의 충돌 테스트를 지원한다. 지형은 쿼드 트리 내에 구성되므로, 자손들이 테스트되어야 하는지를 결정하기 위하여 쿼드 트리 내의 각각의 노드 상에 구 검사가 행해진다. 자손이 쿼드 트리 내의 리프인 경우, 자손은 실제 구조를 포함하며, 각각의 다각형은 라인과의 충돌에 대해 테스트된다. 사용자는 충돌 지점 및 지형 다각형 법선 양자를 조회할 수 있다. 충돌 검출을 위한 하나의 최적 사례는 주어진 (x,z) 좌표에서 높이를 조회하는 것이다.
지형 생성 시스템의 소정 실시예들의 식물군 특징들은 플레이어가 큰 식물군(수목들, 암석들 등)을 통해 걷는 것을 허용하지 않도록 하기 위하여 게임의 충돌 시스템과 통합된다. 사용자는 식물군 패밀리 내의 어느 자손들이 충돌 가능한지를 지정할 수 있는 능력을 갖는다. 방사상 식물군은 충돌 가능하지 않은 것으로 가정된다. 서버는 또한, 이동 및 경로 찾기를 검증하기 위하여 충돌 가능 식물군에 대해 알고 있다.
세계 물체 모듈(360)은 세계 내의 다수의 비지형 물체에 대한 위치 및 상태 정보를 유지할 수 있다. 비지형 물체들의 예는 지형 생성 시스템의 멀티플레이어 온라인 게임 실시예들에서 게임 캐릭터 또는 플레이어(아바타로도 지칭됨)와 같은 물체를 포함한다.
도 4는 도 1a 및 도 2에 도시된 다양한 클라이언트 컴퓨터 중 하나 이상에서 실행될 수 있는 지형 생성 시스템의 클라이언트측 지형 시스템 모듈(400)의 일 실시예를 나타내는 블록도이다. 클라이언트측 지형 시스템 모듈(400)은 예를 들어 도 2에 도시된 클라이언트 컴퓨터들(280, 284, 288, 290, 294, 298) 상에서 실행된다. 클라이언트측 지형 시스템 모듈(400)은 사용자의 디스플레이 스크린 상에 지형을 생성하고 렌더링한다. 클라이언트측 지형 시스템 모듈(400)은 지형 생성기 모듈(420), 청크 관리자 모듈(430), 식물군 관리자(440) 및 기준 물체 관리자(450)를 포함하는 지형 물체 모듈(410)을 포함한다.
청크 관리자 모듈(430)은 어느 청크들에 대한 지형을 생성할 것인지를 결정한다. 클라이언트측 지형 시스템 모듈(400)의 청크 관리자 모듈(430)은 현재의 지형 시점에서 수평선까지의 지형을 생성한다. 소정의 실시예들에서, 청크 관리자 모듈(430)은 소정 거리 밖까지는 하이 레벨(상세) 지형을 생성하고, 그 거리를 지나서는 덜 상세한 지형을 생성한다. 청크 관리자 모듈(430)은 고성능 클라이언트 컴퓨터들(280, 284, 288, 290, 294, 298) 상에서 보다 먼 거리 밖까지 보다 상세한 지형을 생성하도록 구성될 수 있다. 마찬가지로, 청크 관리자 모듈(430)은 저성능 클라이언트 컴퓨터들(280, 284, 288, 290, 294, 298) 상에서 보다 짧은 거리 밖까지 하이 레벨 지형을 생성하도록 구성될 수 있다. 클라이언트측 지형 시스템 모듈(400)의 청크 관리자 모듈(430)은 지형을 공간적으로 사분원으로 세분하기 위하여 청크 구조를 쿼드 트리로서 셋업한다. 클라이언트측 청크 맵이 후술된다.
지형 생성기 모듈(420)은 전술한 바와 같이 청크 관리자 모듈(430)에 의해 식별되는 청크들 주위에 지형을 생성한다. 식물군 관리자 모듈(440)은 갱신된 기준 물체 위치들에 기초하여 새로운 식물군 위치 데이터를 계산한다. 기준 물체 관리자 모듈(450)은 지형 생성 시스템에서 기준 물체들의 위치 및 상태를 유지한다.
도 5는 도 2 및 도 4에 도시된 청크 관리자 모듈에 의해 관리되는 지형 생성 시스템 내의 지형 청크(500)의 구성의 일례를 나타내는 도면이다. 청크들은 많은 상이한 크기 및 형상을 갖도록 정의될 수 있지만, 본 명세서에 설명되는 실시예들은 고정 폭의 변들을 가진 정사각형 청크, 예를 들어 각 변의 길이가 8 미터인 정사각형을 갖는다. 마찬가지로, 각 청크는 상이한 실시예들에서 많은 상이한 방법으로 세분될 수 있다. 예를 들어, 도 5의 예에 도시된 바와 같이, 청크들은 2 미터 정사각형 타일들인 타일들로 세분될 수 있다. 청크들은 타일들을 세분함으로써, 예를 들어 도 5에 또한 도시된 바와 같이 8개의 동일 크기의 삼각형으로 더 세분될 수 있다. 따라서, 전체 지형 풍경이 청크라고 하는 정사각형 조각들로 논리적으로 분할되는 실시예들에서 지형은 한번에 하나의 청크씩 생성될 수 있다.
지형 생성 시스템은 청크 또는 타일 크기의 변경을 지원한다. 청크 및 타일 크기 파라미터는 지형 데이터를 구성할 때 사용자에 의해 설정될 수 있다. 예시적인 컴퓨터 시스템 상에서 지형 생성 시스템의 성능을 최적화하기 위하여 2×2 타일 구조를 가진 8 미터 청크들이 선택될 수 있다. 그러나, 많은 다른 청크 및 타일 크기 및 구조도 예를 들어 사용되는 컴퓨터 시스템 또는 운영 체제의 타입에 기초하여 사용될 수 있다. 또한, 보다 강력한 하드웨어가 개발되어 이용될 때 청크 및 타일 크기 값을 증가시킬 수 있으며, 그 결과 시각적 품질이 향상되어, 제품 론칭 후 상당한 기간 동안 게임을 시각적으로 경쟁력 있게 유지하는 데에도 이용될 수 있다. 또한, 클라이언트는 서버보다 높은 해상도로 지형을 표시할 수 있다.
도 6은 도 5에 도시된 다수의 인접 지형 청크들의 세계 좌표의 일례를 나타내는 도면이다. 소정의 실시예들에서, 각 청크의 세계 좌표는 청크의 좌하 코너의 위치에 의해 결정된다. 지형 생성 시스템의 실시예들에서, 지형 청크들은 청크 공간 내에 좌표를 갖는다. 임의의 세계 좌표는 청크 공간으로 해싱되거나 변환될 수 있으며, 임의의 지형 청크에 대한 세계 공간 좌표는 청크 좌표 및 청크 폭을 이용하여 계산될 수 있다. 공간 데이터베이스(또는 심지어 맵)가 고유 청크 식별자와 함께 청크를 저장할 수 있다. 소정 실시예들에서, 고유 청크 식별자는 더블 워드 메모리 위치의 하이 워드 내의 청크 x 좌표, 및 더블 워드의 로우 워드 내의 청크 z 좌표를 해싱함으로써 생성될 수 있다. 청크가 존재하는지를 결정하기 위하여, 청크 식별자가 공간 데이터베이스에서 검색될 수 있다.
도 6의 예에 도시된 바와 같이, 청크 공간 좌표 (0,0)은 세계 위치들(0 미터, 0 미터) 및 (8 미터, 8 미터) 내의 세계 공간 청크를 정의한다. 세계 공간 위치를 청크 공간으로 변환하는 것은 청크 폭으로 각 좌표를 나눔으로써 달성될 수 있다. 좌표가 최초에 0보다 작은 경우, 결과적인 청크 공간 좌표로부터 1을 뺀다. 일례로서, 세계 공간 내의 (100,100)은 청크 공간 내의 100/8=12, 또는 (12,12)로 변환된다. 마찬가지로, 세계 공간 내의 (-100, -100)은 청크 공간 내의 -100/8=-12-1=-13, 또는 (-13,-13)로 변환된다.
도 7은 도 5 및 도 6에 도시된 청크들에 대해 전체 지형 청크를 다수의 타일 및 삼각형으로 분해하는 일례를 나타내는 도면이다. 전술한 바와 같이, 소정 실시예들에서 각 청크는 16 타일의 8 미터×8 미터 섹션이다. 타일은 8 삼각형의 2 미터×2 미터 섹션이며, 각 삼각형은 1 미터의 폭과 길이를 갖는다. 이러한 방식으로 청크를 삼각형들로 분할함으로써 그리드 샘플 지점들이 1 미터마다 배치될 수 있다. 따라서, 각 청크는 총 81 샘플 지점을 위해 9×9 샘플 지점을 갖는다. 이러한 샘플 지점들은 생성된 버퍼들의 퍼-픽셀(per-pixel) 값들을 나타낸다.
소정 실시예들에서, 지형 생성 시스템은 지형이 생성되는 상세 레벨을 결정한다. 상이한 크기를 가질 수 있는 지형의 각 청크에 대해, 지형 생성 시스템은 소정 양의 데이터, 일반적으로 청크 및 채워질 버퍼들의 크기를 지형 생성기에 제공한다. 지형 생성기는 규칙들을 통해 버퍼들을 실행하고, 나중에 지형에 대한 실제 3D 구조를 생성하는 데 사용되는 비트맵을 출력한다. 이 구조는 쿼드 트리에 추가되어, 상세 레벨들 간의 접합부가 이어질 수 있다. 또한, 블렌드 쉐이더들이 생성될 수 있다.
도 8은 도 3에 도시된 서버측 지형 시스템 모듈에 의해 실행되는 지형 생성 시스템의 서버측 시스템의 최상위 레벨 실행 프로세스(800)의 일 실시예를 나타내는 흐름도이다. 소정 실시예들에서, 최상위 레벨 실행 프로세스(800)는 서버측 지형 시스템 모듈(300)의 지형 물체 모듈(310)(도 3 참조), 또는 구체적으로 지형 물체 모듈(310)의 지형 생성기(320)에 의해 실행될 수 있다. 실시예에 따라, 도 8의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
최상위 레벨 실행 프로세스(800)는 시작 상태(810)를 포함한다. 최상위 레벨 실행 프로세스(800)는 생성되는 특정 지형에 대해 정의되고 저장된 규칙들 및 메타데이터를 로딩하기 위한 지형 로딩 상태(820)로 계속된다. 최상위 레벨 실행 프로세스(800)는 지형 데이터에 대한 다양한 사전 처리 동작을 수행하기 위한 지형 사전 처리 상태(830)로 계속된다. 사전 처리 동작들은 예를 들어 도로 세그먼트 데이터 및 하천 세그먼트 데이터의 사전 처리 및 식물군 리스트 데이터의 생성을 포함할 수 있다. 지형 사전 처리 상태(830) 동작들은 도 24와 관련하여 후술한다.
최상위 레벨 실행 프로세스(800)는 비지형 서버측 시스템들을 초기화하기 위한 상태(840)로 계속된다. 상태 850에서, 최상위 레벨 실행 프로세스(800)는 세계 물체들, 예를 들어 게임 캐릭터, 빌딩, 배 등을 갱신한다. 세계 물체들의 갱신은 이동 가능 물체들의 위치 갱신 및 물체들의 상태 갱신을 포함한다. 최상위 레벨 실행 프로세스(800)는 적어도 도 10 - 도 18에 더 도시되고 이 도면들과 관련하여 후술되는 지형 갱신 상태(860)로 계속된다.
최상위 레벨 실행 프로세스(800)는 비지형 서버측 시스템들을 갱신하기 위한 상태(870)로 계속된다. 결정 상태(880)에서, 최상위 레벨 실행 프로세스(800)는 예를 들어 사용자 선택에 기초하여 게임에서 퇴장할 것인지, 또는 메인 서버측 처리 루프를 계속할 것인지를 결정한다. 상태 880에서 루프 내에 남는 것으로(퇴장하지 않음) 결정한 경우, 최상위 레벨 실행 프로세스(800)은 전술한 바와 같이 세계 물체들을 갱신하기 위한 상태 850으로 되돌아가 계속한다. 대안으로, 상태 880에서 루프를 나오는 것으로 결정한 경우, 최상위 레벨 실행 프로세스(800)는 종료 상태(890)로 계속된다. 최상위 레벨 실행 프로세스(800)는 종료 상태(890)에서 종료된다.
도 9는 도 4에 도시된 클라이언트측 지형 시스템 모듈에 의해 실행되는 지형 생성 시스템의 클라이언트측 시스템의 최상위 레벨 실행 프로세스(900)의 일 실시예를 나타내는 흐름도이다. 소정 실시예들에서, 최상위 레벨 실행 프로세스(900)는 클라이언트측 지형 시스템 모듈(400)의 지형 물체 모듈(410)(도 4 참조), 또는 구체적으로 지형 물체 모듈(410)의 지형 생성기(420)에 의해 실행될 수 있다. 실시예에 따라, 도 9의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
최상위 레벨 실행 프로세스(900)는 시작 상태(910)에서 시작한다. 최상위 레벨 실행 프로세스(900)는 생성되는 특정 지형에 대해 정의되고 저장된 규칙들 및 메타데이터를 로딩하기 위한 지형 로딩 상태(920)로 계속된다. 최상위 레벨 실행 프로세스(900)는 지형 데이터에 대한 다양한 사전 처리 동작을 수행하기 위한 지형 사전 처리 상태(930)로 계속된다. 사전 처리 동작들은 예를 들어 도로 세그먼트 데이터 및 하천 세그먼트 데이터의 사전 처리, 및 식물군 리스트 데이터의 생성을 포함할 수 있다. 지형 사전 처리 상태(930) 동작들은 도 10과 관련하여 후술한다.
최상위 레벨 실행 프로세스(900)는 가상 세계에서 세계 물체들을 초기 위치 또는 상태로 로딩하기 위한 상태 940으로 계속된다. 상태 950에서, 최상위 레벨 실행 프로세스(900)는 도 1a 및 도 2에 도시된 서버들 중 하나 이상으로부터 물체들 또는 지형 갱신들에 관한 데이터를 수신한다. 최상위 레벨 실행 프로세스(900)는 사용자 입력을 처리하기 위한 상태 960으로 계속된다. 클라이언트 컴퓨터에서의 사용자 입력은 몇몇 예로서, 게임에 입장 또는 퇴장하거나, 사용자의 캐릭터를 지정 방향으로 이동시키거나, 다른 캐릭터를 저격하기 위한 사용자에 의한 요구들을 포함할 수 있다.
상태 970에서, 최상위 레벨 실행 프로세스(900)는 세계 물체들, 예를 들어 게임 캐릭터, 빌딩, 배 등을 갱신한다. 세계 물체들의 갱신은 이동 가능 물체들의 위치 갱신 및 물체들의 상태 갱신을 포함한다. 최상위 레벨 실행 프로세스(900)는 적어도 도 10 - 도 18에 더 도시되고 이 도면들과 관련하여 후술하는 지형 갱신 상태(974)로 계속된다.
최상위 레벨 실행 프로세스(900)는 물체들 및 지형을 포함하는 세계를 실제로 작도(렌더링)하기 위한 상태 980으로 계속된다. 세계 작도 상태(980)의 동작들은 도 20과 관련하여 후술된다. 결정 상태(9840)에서, 최상위 레벨 실행 프로세스(900)는 메인 클라이언트측 처리 루프를 나올 것인지 계속할 것인지를 결정한다. 상태 984에서 루프에 남는 것으로(나오지 않음) 결정한 경우, 최상위 레벨 실행 프로세스(900)는 전술한 바와 같이 서버(들)로부터 데이터를 수신하기 위한 상태 950으로 되돌아간다. 상태 984에서 루프를 나오는 것으로 결정한 경우, 최상위 레벨 실행 프로세스(900)는 종료 상태(990)로 계속된다. 최상위 레벨 실행 프로세스(900)는 종료 상태(990)에서 종료된다.
도 10은 도 8에 도시된 서버측 시스템의 최상위 레벨 실행 프로세스의 지형 사전 처리 프로세스(830)의 일 실시예를 나타내는 흐름도이다. 실시예에 따라, 도 10의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
지형 사전 처리 프로세스(830)는 시작 상태(1010)에서 시작된다. 지형 사전 처리 프로세스(830)는 도로 세그먼트 데이터를 사전 처리하기 위한 상태 1020으로 계속된다. 상태 1020에서의 도로 세그먼트 데이터의 사전 처리는 도로 세그먼트, 예를 들어 도로의 경로 및 도로 폭을 정의하는 일련의 연결된 라인 세그먼트에 기초하여 도로 지점들의 좌표를 결정하는 것을 포함한다. 실시간 도로 생성 프로세스는 도 23과 관련하여 후술한다.
상태 1030에서, 지형 사전 처리 프로세스(830)는 하천 세그먼트 데이터를 사전 처리한다. 상태 1030에서의 하천 세그먼트 데이터의 사전 처리는 전술한 바의 상태 1020에서의 도로 사전 처리와 유사하다. 그러나, 하천은 도로에서 가능한 방식인 언덕을 오르는 것을 할 수 없으므로, 상태 1030에서의 하천 사전 처리는 하천이 단지 수평으로 또는 아래 방향으로 흐르는 것을 보장하기 위하여 필요에 따라 현존 지형을 잘라낸다. 또한, 상태 1030에서의 하천 사전 처리는 현존 지형에 도랑 깊이를 추가하는 것을 포함하는데, 이는 도로와 달리 하천이 하천의 깊이를 정의하는 깊이를 지형 내에 갖기 때문이다.
지형 사전 처리 프로세서(830)는 식물군 리스트 데이터를 생성하기 위한 상태 1040으로 계속된다. 식물군 타입들은 캐릭터와 같은 이동 가능 물체들이 식물군을 통과할 수 있는지, 식물군을 우회해야 하는지에 따라 충돌 가능 및 충돌 불가능 식물군을 포함할 수 있다. 식물군 관리 및 배치는 도 21 및 도 22와 관련하여 후술한다. 지형 사전 처리 프로세스(830)는 종료 상태(1090)로 계속된다. 지형 사전 처리 프로세스(830)는 종료 상태(1090)에서 종료된다.
도 11은 지형 생성 시스템의 지형 생성 프로세스(1100)의 일 실시예를 나타내는 흐름도이다. 지형 생성 프로세스(1100)는 예를 들어 물체 위치에 기초하여 청크 생성을 결정하고, 생성된 청크들의 리스트를 관리한다. 소정 실시예들에서, 지형 생성 프로세스(1100)는 지형 생성기(320) 및 청크 관리자(330)(도 3 참조) 중 하나 이상에 의해 수행된다. 실시예에 따라, 도 11의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
지형 생성 프로세스(1100)는 시작 상태(1110)에서 시작된다. 지형 생성 프로세스(1100)는 청크 클린-업 처리를 수행하기 위한 상태 1120으로 계속된다. 상태 1120에서의 청크 클린업 처리는 생성된 청크들의 수가 임계치를 초과하는지를 결정하는 것, 각 청크에 대해 할당된 우선 순위 레벨에 기초하여 청크들을 삭제하는 것, 및 청크 메모리를 지형 생성 시스템으로 리턴하는 것을 포함한다. 상태 1120에서의 청크 클린업 처리는 도 18과 관련하여 후술한다.
상태 1130에서, 지형 생성 프로세스(1100)는 물체 위치들에 기초하여 생성될 청크들의 리스트를 생성한다. 예를 들어, 소정 실시예들에서, 지형 생성 프로세스(1100)는 가상 세계 내에 정의되는 각각의 이동 가능 물체 아래에 청크들을 생성한다. 따라서, 물체가 하나의 청크에서 다른 청크로 이동할 때, 청크가 아직 생성되지 않은 경우 청크가 생성된다. 이러한 방식으로, 청크들이 필요하지만 어떤 다른 곳에 생성되지 않은 경우에 청크들이 생성되므로, 불필요한 청크들의 생성을 피할 수 있어 우수한 성능이 얻어진다.
지형 생성 프로세스(1100)는 생성될 청크 리스트 내의 다음 청크를 결정하기 위한 상태 1140으로 계속된다. 결정 상태(1144)에서, 지형 생성 프로세스(1100)는 생성될 청크가 이미 생성되었는지를 결정한다. 지형 생성 프로세스(1100)가 결정 상태(1144)에서 청크가 아직 생성되지 않은 것으로 결정한 경우, 상태 1150은 리스트 내의 다음 청크를 생성한다. 상태 1150에서의 다음 청크 생성 프로세스는 도 12와 관련하여 후술한다. 지형 생성 프로세스(1100)는 생성된 청크들의 추적 및 관리를 위해 생성된 청크를 생성된 청크 리스트에 삽입하기 위한 상태 1160으로 계속된다.
지형 생성 프로세스(1100)는 청크가 더 생성되어야 하는지를 결정하기 위한 결정 상태(1164)로 계속된다. 결정 상태(1144)에서 청크가 이미 생성된 것으로 결정되는 경우, 지형 생성 프로세스(1100)는 결정 상태(1164)로 계속된다. 결정 상태(1164)에서 청크가 더 생성되어야 하는 것으로 결정되는 경우, 지형 생성 프로세스(1100)는 생성될 리스트 내의 다음 청크를 결정하기 위한 상태 1140으로 되돌아가 계속된다. 그러나, 지형 생성 프로세스(1100)가 결정 상태(1164)에서 청크가 더 이상 생성되지 않아야 하는 것으로 결정하는 경우, 식물군 관리자 갱신 프로세스가 상태 1170에서 수행된다. 상태 1170에서의 식물군 관리자 갱신 프로세스는 기준 물체 위치들 사이의 차이에 기초하여 식물군의 새로운 위치를 결정한다. 상태 1170에서의 식물군 관리자 갱신 프로세스는 도 19와 관련하여 후술한다. 지형 생성 프로세스(1100)는 종료 상태(1190)로 계속된다. 지형 생성 프로세스(1100)는 종료 상태(1190)에서 종료된다.
도 12는 도 11에 도시된 지형 생성 프로세스(1100)의 청크 생성 프로세스(1150)의 일 실시예를 나타내는 흐름도이다. 소정 실시예들에서, 청크 생성 프로세스(1150)는 지형 물체 모듈(310)(도 3 참조)의 청크 관리자 모듈(330)에 의해 수행된다. 다른 실시예들에서, 청크 생성 프로세스(1150)는 지형 생성 시스템의 다른 모듈들로 이동될 수 있다. 실시예에 따라, 도 12의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
청크 생성 프로세스(1150)는 시작 상태(1210)에서 시작된다. 청크 생성 프로세스(1150)는 다른 청크들이 삭제되었을 때 리턴된 메모리 버퍼들로부터 또는 운영 체제로부터 할당된 2차원(2D) 버퍼들을 할당하기 위한 상태 1220으로 계속된다. 2D 버퍼 할당 상태(1220)의 동작은 도 13과 관련하여 후술한다.
상태 1230에서, 청크 생성 프로세스(1150)는 전술한 바와 같이 상태 1220에서 할당된 2D 버퍼들을 소거한다. 예를 들어, 높이, 칼라, 식물군 및 환경의 값들이 상태 1230에서 소거될 수 있다. 청크 생성 프로세스(1150)는 2D 영향 어레이를 초기화하기 위한 상태 1240으로 계속된다. 2D 영향 어레이는 규칙들이 예를 들어 필터 또는 경계에 대해 어느 정도로 영향을 미치는지를 결정하는 데 사용된다. 청크 생성 프로세스(1150)는 2D 청크 범위를 계산하기 위한 상태 1250으로 계속된다. 2D 청크 범위는 청크 세계 좌표 및 청크 폭에 기초하여 세계 원점으로부터의 청크의 4개 에지의 거리를 나타낸다.
청크 생성 프로세스(1150)는 생성되는 청크에 대한 규칙들을 처리하기 위한 상태 1260으로 계속된다. 규칙 처리 상태(1260)의 동작은 도 14와 관련하여 후술한다. 상태 1270에서, 청크 생성 프로세스(1150)는 평면 및 정점 법선을 생성한다. 표현된 모든 삼각형에 대한 표면 법선이 계산되며, 도 7에 표시된 모든 샘플 지점에 대한 정점 법선이 계산된다. 이 데이터는 지형을 렌더링할 때 충돌 검출 및 조명 계산 양자에 유용하다. 청크 생성 프로세스(1150)는 종료 상태(1290)로 계속된다. 청크 생성 프로세스(1150)는 종료 상태(1290)에서 종료된다.
도 13은 도 12에 도시된 청크 생성 프로세스(1150)의 2D 버퍼 할당 프로세스(1220)의 일 실시예를 나타내는 흐름도이다. 지형 생성 시스템은 클라이언트 컴퓨터 상에서 메모리를 캐시하고 재사용하도록 구성될 수 있다. 청크 데이터를 위한 메모리는 청크들이 추가되고 제거될 때 재사용될 수 있다. 쉐이더들은 이들이 이미 구축된 경우 카운트되고 재사용되는 기준이다. 실시예에 따라, 도 13의 상태들의 순서가 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
소정 실시예들에서, 청크 메모리는 현존 청크들의 삭제로부터 지형 생성 시스템에 리턴된 메모리로부터, 또는 운영 체제로부터 직접 할당된다. 운영 체제로부터의 메모리 할당이 삭제된 청크들로부터의 메모리를 재사용하는 것보다 시간 소모적이므로, 2D 버퍼 할당 프로세스(1220)의 실시예들은 후술하는 바와 같이 가능할 때마다 메모리를 재사용한다.
2D 버퍼 할당 프로세스(1220)는 시작 상태(1310)에서 시작된다. 2D 버퍼 할당 프로세스(1220)는 할당할 다음 2D 버퍼를 결정하기 위한 상태 1320으로 계속된다. 2D 버퍼 할당 프로세스(1220)는 버퍼 리스트가 운영체제로부터 이미 할당된 이용 가능한 미사용 메모리를 갖고 있는지를 결정하기 위한 결정 상태(1330)로 계속된다. 이미 할당되었지만 현재 사용되지 않은 메모리는 이것이 운영 체제로부터 추가 메모리를 할당하는 것보다 더 적은 시스템 자원을 소비할 때, 이용 가능한 경우에 할당된다. 결정 상태(1330)에서 버퍼 리스트가 이용 가능한 미사용 메모리를 갖는 것으로 결정되는 경우, 2D 버퍼 할당 프로세스(1220)는 새로운 2D 버퍼에 대해 버퍼 리스트로부터의 미사용 메모리를 리턴하기 위한 상태 1340으로 계속된다.
대안으로, 결정 상태(1330)에서 버퍼 리스트가 이용가능한 미사용 메모리를 갖지 않은 것으로 결정되는 경우, 2D 버퍼 할당 프로세스(1220)는 운영 체제로부터 2D 버퍼에 대한 메모리를 할당하기 위한 상태 1350으로 계속된다. 2D 버퍼 할당 프로세스(1220)는 메모리를 할당해야 하는 2D 버퍼들이 더 있는지를 결정하기 위한 결정 상태 1360으로 계속된다. 결정 상태(1360)에서 할당되어야 하는 2D 버퍼들이 더 존재하는 것으로 결정되는 경우, 2D 버퍼 할당 프로세스(1220)는 할당할 다음 2D 버퍼를 결정하기 위한 상태 1320으로 계속된다. 대안으로, 결정 상태(1360)에서 할당되어야 하는 2D 버퍼들이 더 이상 존재하지 않는 것으로 결정되는 경우, 2D 버퍼 할당 프로세스(1220)는 종료 상태(1390)로 계속된다. 2D 버퍼 할당 프로세스(1220)는 종료 상태(1390)에서 종료된다.
도 14는 도 12에 도시된 청크 생성 프로세스(1150)의 규칙 처리 프로세스(1260)의 일 실시예를 나타내는 흐름도이다. 지형 생성 시스템은 실제 구조 데이터를 저장하는 것이 아니라 규칙들(본 명세서에서 영향자로도 지칭됨)을 이용하여 지형을 절차적으로 정의한다. 지형 생성 시스템은 실시간으로 온더플라이 방식으로 지형을 생성하며, 지형 높이, 칼라, 쉐이더, 텍스쳐, 식물군 및 환경과 같은 파라미터들의 수정을 허용한다. 또한, 지형을 절차적으로 생성하는 것은 지형 구조를 생성하는 데 사용되는 파라미터들을 변경함으로써 거의 제한 없는 상세를 허용한다. 이들 규칙은 또한 동적으로 추가되고 삭제될 수 있으므로, 실시간 지형 수정이 이루어진다. 규칙들은 경계, 필터, 높이, 칼라, 쉐이더, 식물군 및 다른 잡다한 파라미터들과 같은 파라미터들에 영향을 미칠 수 있다. 실시예에 따라, 도 14의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
규칙 처리 프로세스(1260)는 시작 상태(1410)에서 시작된다. 규칙 처리 프로세스(1260)는 계층의 범위가 처리되는 규칙들에 대한 청크 범위와 교차하는지를 결정하기 위한 결정 상태(1414)로 계속된다. 결정 상태(1414)에서 계층의 범위가 청크 범위와 교차하는 것으로 결정된 경우, 규칙 처리 프로세스(1260)는 임의의 하위 계층들이 존재하는 경우에 영향 맵을 할당하기 위한 상태(1420)로 계속된다. 상태 1430에서, 규칙 처리 프로세스(1260)는 처리되는 규칙에 대한 청크에서 다음 샘플 지점을 결정한다. 규칙 처리 프로세스(1260)는 청크 내의 다음 샘플 지점에 대한 청크 좌표들로부터 세계 좌표들을 계산하기 위한 상태 1440으로 계속된다.
상태 1450에서, 규칙 처리 프로세스(1260)는 현재의 샘플 지점에서 규칙의 경계 영향을 계산한다. 전술한 바와 같이, 경계는 원하는 규칙이 영향을 미치는 지형 설계자 또는 아티스트 정의 영역을 지칭한다. 계층들은 부모-자손 관계를 가진 계층 구조로 배열될 수 있다. 경계의 예는 원, 사각형 및 다각형을 포함한다. 지형 생성 시스템 내의 계층들은 규칙들이 중복되는 것을 가능하게 하며, 중복 영역에서의 견고하고 가시적인 불연속을 최소화하거나 피하기 위하여 지형 생성 시스템은 경계 에지들 및 필터들을 페더링할 수 있다. 페더링은 중복 영역에서의 높이들 및 칼라들의 블렌딩을 포함하는 영역들의 특정 블렌딩 방식이다. 경계 영향을 계산하기 위한 상태 1450의 동작들은 도 15와 관련하여 후술한다.
규칙 처리 프로세스(1260)는 현재의 샘플 지점에서 규칙의 필터 영향을 계산하기 위한 상태 1460으로 계속된다. 필터는 영향자를 적용할 때 고려되는 조건을 지칭한다. 필터의 예는 경사, 높이, 쉐이더, 방향 및 프랙탈에 의한 필터링을 포함한다. 프랙탈 시스템이 생성하는 패턴들은 자원 시스템이 자원들로 행성을 채우는 데 사용될 수 있다. 사용자는 자원의 할당을 위한 영역마다 프랙탈 파라미터를 구성할 수 있다. 영향자의 예는 높이, 칼라, 쉐이더, 식물군, 및 방사상 식물군에 영향을 미치는 영향자들을 포함한다.
필터 영향을 계산하기 위한 상태 1460의 동작들은 도 16과 관련하여 후술한다. 규칙 처리 프로세스(1260)는 현재의 샘플 지점에서 영향자를 처리하기 위한 상태 1470으로 계속된다. 영향자를 처리하기 위한 상태 1470의 동작들은 도 17과 관련하여 후술한다.
상태 1480에서, 규칙 처리 프로세스(1260)는 상태 1450, 상태 1460 및 상태 1470에서 계산된 영향에 기초하여 하위 계층들을 처리한다. 규칙 처리 프로세스(1260)는 청크 내에 처리할 샘플 지점들이 더 존재하는지를 결정하기 위한 결정 상태(1484)로 계속된다. 상태 1484에서 샘플 지점이 더 존재하는 것으로 결정된 경우, 규칙 처리 프로세스(1260)는 전술한 바와 같이 다음 샘플 지점을 결정하기 위한 상태 1430으로 되돌아가 계속된다. 그러나, 상태 1484에서 청크 내에 샘플 지점이 더 이상 존재하지 않는 것으로 결정된 경우, 규칙 처리 프로세스(1260)는 종료 상태(1490)로 계속된다. 또한, 결정 상태(1414)에서 계층의 범위가 청크 범위와 교차하지 않는 것으로 결정된 경우, 규칙 처리 프로세스(1260)는 종료 상태(1490)로 계속된다. 규칙 처리 프로세스(1260)는 종료 상태(1490)에서 종료한다.
도 15는 도 14에 도시된 규칙 처리 프로세스(1260)의 경계 영향 계산 프로세스(1450)의 일 실시예를 나타내는 흐름도이다. 규칙들의 계층화는 규칙들이 중복되는 것을 허용하며, 규칙들이 중복될 때 견고하고 가시적인 불연속을 최소화하거나 피하기 위하여 지형 생성기는 경계 에지들을 페더링할 수 있다. 페더링은 블렌드 영역, 및 높이와 칼라를 블렌딩하기 위한 동작들을 지정하는 방법이다. 실시예에 따라, 도 15의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
경계 영향 계산 프로세스(1450)는 시작 상태(1510)에서 시작된다. 경계 영향 계산 프로세스(1450)는 처리되는 규칙에 대한 계층 내의 다음 경계를 결정하기 위한 상태 1520으로 계속된다. 상태 1530에서, 경계 영향 계산 프로세스(1450)는 상태 1520에서 결정된 계층 내의 다음 경계에 대한 영향을 계산한다. 경계 영향 계산 프로세스(1450)는 상태 1540에서 영향 값을 페더링한다. 전술한 바와 같이, 페더링은 지형 규칙들의 중복시에 견고하고 가시적인 불연속을 방지하기 위하여 블렌드 영역 및 높이와 칼라를 블렌딩하기 위한 동작들을 지정하는 방법이다.
경계 영향 계산 프로세스(1450)는 최대 영향 값을 유지하기 위한 상태 1550으로 계속된다. 지형 지점이 중복 경계 영역들 중 임의의 영역 내에 있는 경우에 경계 영향이 적용되므로, 최대 영향 값이 유지된다. 결정 상태(1560)에서, 경계 영향 계산 프로세스(1450)는 계층 내에 처리할 경계들이 더 존재하는지를 결정한다. 결정 상태(1560)에서 경계가 더 존재하는 것으로 결정된 경우, 경계 영향 계산 프로세스(1450)는 계층 내의 다음 경계를 결정하기 위한 상태 1520으로 되돌아간다. 그러나, 결정 상태(1560)에서 경계가 더 이상 존재하지 않는 것으로 결정된 경우, 경계 영향 계산 프로세스(1450)는 경계들이 반전되는지를 결정하기 위한 결정 상태(1570)로 계속된다.
결정 상태(1570)에서 경계들이 반전되는 것으로 결정된 경우, 경계 영향 계산 프로세스(1450)는 경계들이 더 이상 반전되지 않도록 경계 영향을 조정하기 위한 상태 1580으로 계속된다. 그러나, 결정 상태(1570)에서 경계들이 반전되지 않는 것으로 결정된 경우, 또는 상태 1580 이후에, 경계 영향 계산 프로세스(1450)는 종료 상태(1590)로 계속된다. 경계 영향 계산 프로세스(1450)는 종료 상태(1590)에서 종료한다.
도 16은 도 14에 도시된 규칙 처리 프로세스(1260)의 필터 영향 계산 프로세스(1460)의 일 실시예를 나타내는 흐름도이다. 필터 규칙들의 계층화는 규칙들이 서로 중복되는 것을 가능하게 하며, 규칙들이 중복되는 지점들에서 견고하고 가시적인 불연속을 최소화하거나 방지하기 위하여 지형 생성기는 필터 규칙들을 페더링할 수 있다. 실시예에 따라, 도 16의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
필터 영향 계산 프로세스(1460)는 시작 상태(1610)에서 계속된다. 필터 영향 계산 프로세스(1460)는 처리되는 규칙에 대한 계층 내의 다음 필터를 결정하기 위한 상태 1620으로 계속된다. 상태 1630에서, 필터 영향 계산 프로세스(1460)는 상태 1620에서 결정된 계층 내의 다음 필터에 대한 영향을 계산한다. 필터 영향 계산 프로세스(1460)는 상태 1640에서 영향 값을 페더링한다. 전술한 바와 같이, 페더링은 지형 규칙들의 중복시에 견고하고 가시적인 불연속을 방지하기 위하여 블렌드 영역 및 높이와 칼라를 블렌딩하기 위한 동작들을 지정하는 방법이다.
필터 영향 계산 프로세스(1460)는 최소 영향 값을 유지하기 위한 상태 1650으로 계속된다. 지형 지점이 정의된 중복 필터 영역들 모두를 만족시킬 경우에 필터 조건이 적용되므로, 최소 영향값이 유지된다. 결정 상태(1660)에서, 필터 영향 계산 프로세스(1460)는 계층 내에 처리할 필터들이 더 존재하는지를 결정한다. 결정 상태(1660)에서 필터들이 더 존재하는 것으로 결정된 경우, 필터 영향 계산 프로세스(1460)는 계층 내의 다음 필터를 결정하기 위한 상태 1620으로 되돌아간다. 그러나, 결정 상태(1660)에서 필터가 더 이상 존재하지 않는 것으로 결정된 경우, 필터 영향 계산 프로세스(1460)는 필터들이 반전되는지를 결정하기 위한 결정 상태 1670으로 계속된다.
결정 상태 1670에서 필터들이 반전되는 것으로 결정된 경우, 필터 영향 계산 프로세스(1460)는 필터들이 더 이상 반전되지 않도록 필터 영향을 조정하기 위한 상태 1680으로 계속된다. 그러나, 결정 상태 1670에서 필터들이 반전되지 않는 것으로 결정된 경우, 또는 상태 1680 후에, 필터 영향 계산 프로세스(1460)는 종료 상태 1690으로 계속된다. 필터 영향 계산 프로세스(1460)는 종료 상태 1690에서 종료한다.
도 17은 도 14에 도시된 규칙 처리 프로세스(1260)의 영향자 처리 프로세스(1470)의 일 실시예를 나타내는 흐름도이다. 지형 생성 시스템의 규칙들은 계층들로 체계화될 수 있는 영향자들로도 지칭된다. 영향자의 예는 높이, 칼라, 쉐이더, 식물군 및 방사상 식물군에 영향을 미치는 규칙들을 포함한다. 실시예에 따라, 도 17의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
영향자 처리 프로세스(1470)는 시작 상태 1710에서 시작된다. 영향자 처리 프로세스(1470)는 세계 원점에서의 영향을 결정하기 위한 상태 1720으로 계속된다. 결정 상태 1730에서, 영향자 처리 프로세스(1470)는 상태 1720에서 결정된 영향이 0보다 큰지를 결정한다. 결정 상태 1730에서 영향이 0보다 큰 것으로 결정된 경우, 영향자 처리 프로세스(1470)는 수정할 지형 버퍼를 선택하기 위한 상태 1740으로 계속된다.
상태 1750에서, 영향자 처리 프로세스(1470)는 상태 1740에서 선택된 2D 지형 버퍼를 수정한다. 일례로서, 지형 높이에 영향을 미치는 규칙에 대해, 지형 높이는 주어진 영향에 대해 계산되고, 2D 높이 버퍼에 기록된다. 칼라 버퍼도 수정되는 경우, 주어진 영향에 대해 새로운 칼라가 계산되고, 칼라 버퍼에 기록된다. 버퍼 수정 상태 1750 후에, 또는 결정 상태 1730에서 영향이 0보다 크지 않은 것으로 결정된 경우, 영향자 처리 프로세스(1470)는 종료 상태 1790으로 계속된다. 영향자 처리 프로세스(1470)는 종료 상태 1790에서 종료한다.
도 18은 서버측 상의 청크 관리자 모듈(330) 또는 클라이언트측 상의 청크 관리자 모듈(430)에 의해 실행되는 지형 생성 프로세스(1100)의 청크 클린업 프로세스(1120)의 일 실시예를 나타내는 흐름도이다. 임의의 주어진 시간에 생성될 수 있는 지형 청크들의 수는 이용가능한 시스템 메모리와 같은 시스템 자원에 의해 제한된다. 청크들의 수가 청크 한도를 초과할 때, 청크들은 후술하는 바와 같이 우선 순위에 기초하여 삭제된다. 실시예에 따라, 도 18의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
청크 클린업 프로세스(1120)는 시작 상태 1810에서 시작된다. 청크 클린업 프로세스(1120)는 청크들의 수가 임계치보다 큰지를 결정하기 위한 결정 상태 1820으로 계속된다. 청크들의 임계치는 서버 또는 클라이언트 컴퓨터의 시스템 구성에 적절한 수가 되도록 수정될 수 있다. 예를 들어, 임계치는 더 큰 양의 컴퓨터 메모리를 가진 시스템에 대해서는 증가되거나, 더 적은 양의 컴퓨터 메모리를 가진 시스템에 대해서는 감소될 수 있다.
결정 상태 1820에서 청크 수가 임계치보다 큰 것으로 결정된 경우, 청크 클린업 프로세스(1120)는 각각의 청크에 우선 순위 레벨을 할당하기 위한 상태 1830으로 계속된다. 소정의 실시예들에서, 청크 우선 순위 레벨은 높은 우선 순위, 중간 우선 순위, 중저 우선 순위 및 낮은 우선 순위를 포함한다. 높은 우선 순위의 청크들은 이동 물체 아래의 청크들이며, 따라서 이동 물체들이 행성 주위를 이동할 때 이동 물체들 아래에 지형이 생성된다. 중간 우선 순위의 청크들은 이동 물체 아래의 청크에 인접하고 물체가 현재 이동하고 있는 방향에 있는 청크들이다. 중저 우선 순위의 청크들은 이동 물체 아래의 청크에 인접하고 물체가 현재 이동하고 있는 반대 방향에 있는 청크들이다. 낮은 우선 순위의 청크들은 이동 물체의 아래에 있지 않고 이동 물체 아래의 청크에 인접하지 않는 청크들이다. 다른 실시예들에서는, 전술한 것과 다른 우선 순위 결정 기준은 물론, 다른 우선 순위 레벨 및 스킴이 이용될 수 있다.
상태 1840에서, 청크 클린업 프로세스(1120)는 우선 순위 레벨에 기초하여 청크들을 삭제한다. 소정의 실시예들에서, 청크 클린업 프로세스(1120)는 남은 청크들의 수가 청크 임계치와 같도록 청크들을 충분히 삭제한다. 대안으로, 청크 클린업 프로세스(1120)는 남은 청크들의 수가 청크 임계치보다 소정량 작도록 충분하게 청크들을 삭제함으로써 추가 청크들이 삭제될 필요가 있기 전에 생성될 수 있는 소정 수의 추가적인 새로운 청크들이 존재할 수 있게 한다.
상태 1850에서, 청크 클린업 프로세스(1120)는 새로 생성된 청크들에서 재사용을 위한 저장 또는 추가 메모리 할당을 위한 운영 체제로의 리터닝을 위해 청크 메모리를 버퍼 관리자로 리턴한다. 도 13과 관련하여 전술한 바와 같이, 운영 체제로부터의 메모리 할당은 새로운 청크에 대해 이미 할당된 메모리를 재사용하는 것보다 오래 걸린다. 상태 1850 후, 또는 결정 상태 1820에서 청크 수가 임계치보다 크지 않은 것으로 결정된 경우, 청크 클린업 프로세스(1120)는 종료 상태 1890으로 계속된다. 청크 클린업 프로세스(1120)는 종료 상태 1890에서 종료한다.
도 19는 식물군 관리자 모듈(440)에 의해 실행되는 도 11에 도시된 지형 생성 프로세스(1100)의 식물군 관리자 갱신 프로세스(1170)의 일 실시예를 나타내는 흐름도이다. 실시예에 따라, 도 19의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
지형 생성 시스템의 식물군 특징은 플레이어와 함께 이동하는 세계 공간 지점들의 고정 크기 구를 포함한다. 예를 들어, 식물군 지점은 구 밖으로 떨어질 때 다른 쪽에 미러링될 수 있으며, 타일당 데이터를 지정하는 지형 생성기의 방사상 식물군 맵으로부터 파라미터가 할당될 수 있다. 식물군 특징은 또한 "계획된 식물군 배열"을 심기 위한 지형 설계자 또는 아티스트의 소망을 구성하는 물리적 구조의 시드 배열(seeded arrangement)을 처리할 수 있다. 식물군은 실제 구조이므로, 그림자를 이용하여 식물군을 폐색자(occluder)로서 표시하거나, 식물군을 가로막을 수 있다.
지형 생성 시스템의 방사상 식물군 특징은 플레이어와 함께 이동하는 세계 공간 지점들의 고정 크기 구를 포함한다. 전술한 바의 식물군 지점들과 유사하게, 방사상 식물군 지점은 구 밖으로 떨어질 때 다른 쪽에 미러링될 수 있으며, 타일당 데이터를 지정하는 지형 생성기의 방사상 식물군 맵으로부터 파라미터가 할당될 수 있다. 방사상 식물군은 쉐이더마다의 렌더링을 위해 버퍼에 저장될 수 있다. 쉐이더 내에서, 방사상 식물군은 정확한 알파 분류를 위해 거꾸로 분류될 수 있다. 현재의 방사상 식물군 특징에 대한 최적화는 여러 식물군 부분들을 단일 쉐이더로 패킹하는 것을 수반할 수 있다.
식물군 관리자 갱신 프로세스(1170)는 시작 상태 1910에서 시작된다. 식물군 관리자 갱신 프로세스(1170)는 기준 물체 위치들 사이의 델타(차이)를 계산하기 위한 상태 1920으로 계속된다. 예를 들어, 델타는 소정 이동 물체의 위치가 체크되고 저장된 최종 시간 이후 물체가 이동한 거리일 수 있다. 식물군 관리자 갱신 프로세스(1170)는 식물군을 배치하고 렌더링할 다음 식물군 지점을 결정하기 위한 상태 1930으로 계속된다. 소정 실시예들에서는, 소정 타입의 식물군만이 이동 물체 주위의 주어진 거리 또는 반경 내에 표시된다.
결정 상태 1940에서, 식물군 관리자 갱신 프로세스(1170)는 다음 식물군 지점이 이동 물체의 갱신 위치 주위의 새로운 원 밖에 있는지를 결정한다. 결정 상태 1940에서 지점이 새로운 원 밖인 것으로 결정된 경우, 식물군 관리자 갱신 프로세스(1170)는 세계 내의 물체의 새로운 위치에 기초하여 새로운 식물군 위치를 계산하기 위한 상태 1950으로 계속된다. 상태 1950 후, 또는 결정 상태 1940에서 다음 지점이 새로운 원 밖에 있지 않은 것으로 결정된 경우, 식물군 관리자 갱신 프로세스(1170)는 처리할 식물군 지점이 더 존재하는지를 결정하기 위한 결정 상태 1960으로 계속된다.
결정 상태 1960에서 처리할 식물군 지점이 더 존재하는 것으로 결정된 경우, 식물군 관리자 갱신 프로세스(1170)는 다음 식물군 지점을 결정하기 위한 상태 1930으로 되돌아간다. 그러나, 결정 상태 1960에서, 처리할 식물군 지점이 더 이상 존재하지 않는 것으로 결정된 경우, 식물군 관리자 갱신 프로세스(1170)는 종료 상태 1990으로 계속된다. 식물군 관리자 갱신 프로세스(1170)는 종료 상태 1990에서 종료한다.
도 20은 도 9에 도시된 최상위 레벨 실행 프로세스(900)의 세계 작도 프로세스(980)의 일 실시예를 나타내는 흐름도이다. 세계 작도 프로세스(980)는 클라이언트 컴퓨터의 디스플레이 스크린 상에 가상 세계에 대한 지형을 그래픽 렌더링한다. 실시예에 따라, 도 20의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
세계 작도 프로세스(980)는 시작 상태 2010에서 시작된다. 세계 작도 프로세스(980)는 가상 세계 내의 다른 아바타와 같은 다른 비지형 관련 물체를 렌더링을 위해 그래픽 시스템에 제공하기 위한 상태 2020으로 계속된다. 세계 작도 프로세스(980)는 절차 지형 생성 시스템에 의해 생성되는 지형을 그래픽 렌더링하기 위한 상태 2030으로 계속된다. 상태 2040에서, 세계 작도 프로세스(980)는 도 19와 관련하여 전술한 바와 같이 식물군 관리자 갱신 프로세스(1170)에 의해 결정된 식물군을 렌더링한다. 세계 작도 프로세스(980)는 종료 상태 2090으로 계속된다. 세계 작도 프로세스(980)는 종료 상태 2090에서 종료한다.
도 21은 지형 생성 시스템의 고속 식물군 배치 프로세스(2100)의 일 실시예를 나타내는 흐름도이다. 고속 식물군 배치 프로세스(2100)는 현재 시점 주위에 최소이고, 정확하고, 상세한 식물군을 생성한다. 예를 들어, 고속 식물군 배치 프로세스(2100)는 필요할 경우에만 지형 식물군을 생성한다. 실시예에 따라, 도 21의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
고속 식물군 배치 프로세스(2100)는 시작 상태 2110에서 시작된다. 고속 식물군 배치 프로세스(2100)는 식물군을 배치하고 렌더링하기 위한 다음 식물군 지점을 결정하기 위한 상태 2120으로 계속된다. 소정의 실시예들에서는, 소정 타입의 식물군만이 이동 물체 주위의 주어진 거리 또는 반경 내에 표시된다. 결정 상태 2130에서, 고속 식물군 배치 프로세스(2100)는 다음 식물군 지점이 이동 물체의 갱신 위치 주위의 새로운 원 밖에 있는지를 결정한다. 결정 상태 2130에서 지점이 새로운 원 밖에 있는 것으로 결정된 경우, 고속 식물군 배치 프로세스(2100)는 세계 내의 물체의 새로운 위치에 기초하여 새로운 식물군 위치를 계산하기 위한 상태 2140으로 계속된다. 상태 2150에서, 고속 식물군 배치 프로세스(2100)는 생성될 식물군의 타입에 대해 지형에 질의한다. 식물군 타입의 소정의 예는 수풀, 관목 및 수목을 포함한다. 상태 2150 후, 또는 결정 상태 2130에서 다음 지점이 새로운 원 밖에 있지 않은 것으로 결정된 경우, 고속 식물군 배치 프로세스(2100)는 처리할 식물군 지점이 더 존재하는지를 결정하기 위한 결정 상태 2160으로 계속된다.
결정 상태 2160에서 처리할 식물군 지점이 더 존재하는 것으로 결정된 경우, 고속 식물군 배치 프로세스(2100)는 다음 식물군 지점을 결정하기 위한 상태 2120으로 되돌아간다. 그러나, 결정 상태 2160에서 처리할 식물군 지점이 더 이상 존재하지 않는 것으로 결정된 경우, 고속 식물군 배치 프로세스(2100)는 종료 상태 2190으로 계속된다. 고속 식물군 배치 프로세스(2100)는 종료 상태 2190에서 종료한다.
도 22는 도 10에 도시된 지형 사전 처리 프로세스(930)의 식물군 리스트 생성 프로세스(1040)의 일 실시예를 나타내는 흐름도이다. 실시예에 따라, 도 22의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
식물군 리스트 생성 프로세스(1040)는 시작 상태 2210에서 시작한다. 식물군 리스트 생성 프로세스(1040)는 식물군 리스트에서 다음 식물군 타입을 결정하기 위한 상태 2220으로 계속된다. 상태 2230에서, 식물군 리스트 생성 프로세스(1040)는 식물군 타입에 대한 식물군 지점들의 밀도를 계산한다. 식물군 리스트 생성 프로세스(1040)는 리스트 내에 식물군 타입이 더 존재하는지를 결정하기 위한 결정 상태 2240으로 계속된다.
결정 상태 2240에서 리스트 내에 식물군 타입이 더 존재하는 것으로 결정된 경우, 식물군 리스트 생성 프로세스(1040)는 다음 식물군 타입을 결정하기 위한 상태 2220으로 되돌아간다. 그러나, 결정 상태 2240에서 식물군 타입이 더 이상 존재하지 않는 것으로 결정된 경우, 식물군 리스트 생성 프로세스(1040)는 종료 상태 2290으로 계속된다. 식물군 리스트 생성 프로세스(1040)는 종료 상태 2290에서 종료한다.
도 23은 지형 생성 시스템의 실시간 도로 생성 프로세스(2300)의 일 실시예를 나타내는 흐름도이다. 가상 세계에서 도로를 생성하기 위하여, 지형 생성 시스템은 도로 없는 기반 지형을 생성한 후, 도로를 위해 지형을 수정하고, 도로를 상대적으로 편평하게 유지하기 위해 도로의 폭을 따라 지형을 평탄화하며, 도로의 길이를 따른 지형 경사의 급격한 변화를 최소화하려고 시도한다. 실시예에 따라, 도 23의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
또한, 실시간 도로 생성 프로세스(2300)는 현존 지형의 쉐이딩 및 평탄화, 도로에 갓길 추가, 및 지형이 갓길과 경계 지형 사이의 예리한 콘트라스트 또는 불연속을 갖는 대신에 주변 지형으로 유연하게 전이하도록 주변 지형으로 갓길을 페더링(블렌딩)하는 것을 포함한다.
실시간 도로 생성 프로세스(2300)는 시작 상태 2310에서 시작된다. 실시간 도로 생성 프로세스(2300)는 도로에 의해 영향을 받는 지형 상의 다음 지점을 결정하기 위한 상태 2320으로 계속된다. 결정 상태 2324에서, 실시간 도로 생성 프로세스(2300)는 다음 지점이 도로의 범위 내에 있는지를 결정한다. 즉, 지점이 도로에 의해 영향을 받는 지형 지점들 내에 있는지에 대한 결정이 이루어진다. 지점이 도로 범위 내에 있는 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)는 지점에서 도로 세그먼트까지의 거리, 또는 도로의 중심으로부터의 거리를 결정하기 위한 상태 2330으로 계속된다.
결정 상태 2334에서, 실시간 도로 생성 프로세스(2300)는 상태 2330에서 계산된 거리가 도로 폭 플러스 갓길 폭보다 작은지를 결정한다. 결정 상태 2334에서 거리가 도로폭 플러스 갓길폭보다 작은 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)는 거리가 도로폭보다 작은지를 결정하기 위한 상태 2338로 계속된다. 결정 상태 2338에서 거리가 도로폭보다 작지 않은 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)은 도로에 의해 영향을 받는 지점에 대한 최초 지형 높이를 저장하기 위한 상태 2340으로 계속된다.
상태 2344에서, 실시간 도로 생성 프로세스(2300)는 도로 세그먼트를 따른 높이를 결정한다. 실시간 도로 생성 프로세스(2300)는 도로 갓길과 도로에 의해 영향을 받지 않는 주변 지형 사이의 임의의 예리한 불연속을 제거하기 위한 갓길 페더링을 위해 높이를 보간하기 위한 상태 2350으로 계속된다. 상태 2354에서, 실시간 도로 생성 프로세스(2300)는 도로 갓길 쉐이더와 동일하게 결과 쉐이더를 설정한다.
그러나, 결정 상태 2338에서 다음 지점에서 도로 세그먼트까지의 거리가 도로폭보다 작은 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)는 도로 세그먼트를 따른 높이를 보간하기 위한 상태 2360으로 계속된다. 상태 2370에서, 실시간 도로 생성 프로세스(2300)는 결과 쉐이더를 도로 쉐이더로 설정한다.
상태 2354 후, 상태 2370 후, 결정 상태 2324에서 다음 지점이 도로 범위 내에 있지 않은 것으로 결정된 경우, 또는 결정 상태 2334에서 거리가 도로폭 플러스 갓길폭보다 작지 않은 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)는 도로에 의해 영향을 받는 지점들이 더 존재하는지를 결정하기 위한 결정 블록 2374로 계속된다. 상태 2374에서 도로에 의해 영향을 받는 지점들이 더 존재하는 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)는 도로에 의해 영향을 받는 다음 지점을 결정하기 위한 상태 2320으로 되돌아간다. 그러나, 상태 2374에서 도로에 의해 영향을 받는 지점이 더 이상 존재하지 않는 것으로 결정된 경우, 실시간 도로 생성 프로세스(2300)는 종료 상태 2390으로 계속된다. 실시간 도로 생성 프로세스(2300)는 종료 상태 2390에서 종료된다.
도 24는 지형 생성 시스템의 서버측 시스템의 지형 사전 처리 프로세스(830)의 일 실시예를 나타내는 흐름도이다. 실시예에 따라, 도 24의 상태들의 순서는 재배열될 수 있고, 추가 상태들이 추가될 수 있으며, 다른 상태들이 삭제될 수 있다.
지형 사전 처리 프로세스(830)는 시작 상태 2410에서 시작된다. 지형 사전 처리 프로세스(830)는 도로 세그먼트 데이터를 사전 처리하기 위한 상태 2420으로 계속된다. 상태 2420에서의 도로 세그먼트 데이터의 사전 처리는 도로 세그먼트, 예를 들어 도로의 중심 경로 및 도로 폭을 정의하는 일련의 연결된 라인 세그먼트들에 기초하여 도로 지점들의 좌표를 결정하는 것을 포함한다. 또한, 상태 2420에서의 도로 사전 처리는 현존 지형의 쉐이딩 및 평탄화, 도로에 갓길 추가, 및 지형이 갓길과 경계 지형 사이의 예리한 콘트라스트 또는 불연속을 갖는 대신에 주변 지형으로 유연하게 전이하도록 주변 지형으로 갓길을 페더링(블렌딩)하는 것을 포함한다. 실시간 도로 생성 프로세스는 도 23과 관련하여 후술한다.
상태 2430에서, 지형 사전 처리 프로세스(830)는 하천 세그먼트 데이터를 사전 처리한다. 상태 2430에서의 하천 세그먼트 데이터의 사전 처리는 전술한 상태 2420에서의 도로 사전 처리와 유사하다. 그러나, 하천은 도로에서 가능한 방식인 언덕을 오르는 것을 할 수 없으므로, 상태 2430에서의 하천 사전 처리는 하천이 단지 수평으로 또는 아래 방향으로 흐르는 것을 보장하기 위하여 필요에 따라 현존 지형을 잘라낸다. 또한, 상태 2430에서의 하천 사전 처리는 현존 지형에 도랑 깊이를 추가하는 것을 포함하는데, 이는 도로와 달리 하천이 하천의 깊이를 정의하는 깊이를 지형 내에 갖기 때문이다. 지형 사전 처리 프로세스(830)는 종료 상태 2490으로 계속된다. 지형 사전 처리 프로세스(830)는 종료 상태 2490에서 종료한다.
도 25는 지형 특징이 정의되지 않은 가상 세계를 나타내는 스크린 디스플레이(2500)의 예이다. 이 예에서, 지형에 대해 정의되는 쉐이더의 존재하에 소정의 쉐이더(2510)가 디폴트로 적용된다. 스크린 디스플레이(2500)는 임의의 지형 특징의 정의 전에 세계의 지형 시작점을 나타낸다. 후술하는 바와 같이, 4개의 후속 도면 도 26 - 도 29는 다양한 지형 특징이 도 25의 디폴트 스크린 디스플레이에 추가된 추가 스크린 디스플레이들을 나타낸다.
도 26은 지형 특징이 정의되지 않은 도 25에 도시된 디폴트 지형에 산 및 다른 가변 지형 높이가 추가된 스크린 디스플레이의 일례이다.
도 27은 도 26에 도시된 지형 높이 특징 외에 그라운드 텍스쳐에 대해 정의된 쉐이더 특징을 가진 스크린 디스플레이의 일례이다.
도 28은 도 27에 도시된 다른 지형 특징 외에 수풀, 관목 및 수목을 포함하는 식물군이 정의된 스크린 디스플레이의 일례이다.
도 29는 도 28에 도시된 다른 지형 특징 외에 하천이 정의된 스크린 디스플레이의 일례이다.
도 30은 지형 규칙을 입력하고 수정하기 위한 지형 편집기 도구의 스크린 스냅샷(3000)의 일례이다. 지형 설계자 또는 아티스트는 지형 편집기 도구, 설계자 및 아티스트가 영역 및 패밀리를 생성하고 규칙(영향자)을 영역 및 패밀리와 연관시킬 수 있게 하는 커스텀 그래픽 사용자 인터페이스 도구를 이용하여 지형 특징을 편집할 수 있다. 소정의 실시예들에서, 지형 편집기 도구는 지형 편집기 도구를 이용하여 설계자 또는 아티스트에 의해 정의되는 지형에 따라 지형을 생성하고 렌더링하기 위해 지형 생성기가 사용하는 이진 파일을 생성한다.
지형 편집기 도구의 맵 보기는 지형의 2D 보기를 나타낸다. 사용자는 높이(예를 들어, 계조 높이 필드), 칼라(예를 들어, 높이 필드 상의 칼라 블렌딩), 쉐이더(예를 들어, 쉐이더의 배치를 나타내는 칼라), 식물군(예를 들어, 식물군의 배치를 나타내는 칼라), 방사상 식물군(방사상 식물군의 배치를 나타내는 칼라), 및 워터(예를 들어, 청색으로 표현됨)를 볼 수 있는 능력을 포함하는 지형의 메타데이터 표현을 볼 수 있다. 지형 메타데이터는 지형 생성기(2D 버퍼)를 통해 흐르는 데이터를 지칭하며, 지형 구조를 생성하고 식물군, 표면 특성, 환경 데이터 등과 같은 지형 물체들을 어디에 배치할 것인지를 지형 생성 시스템에게 설명하는 데 사용된다. 사용자는 사용자가 그렇게 선택할 경우 각각의 개별 표현을 턴오프할 수 있다. 지형 데이터의 시각적 표현 외에, 이러한 맵 보기에서 경계 편집이 이루어질 수 있다. 사용자는 예를 들어 원, 사각형 및 다각형 경계를 생성할 수 있다.
계층 보기는 지형 규칙들의 계층 구조적(트리) 보기이다. 사용자는 예를 들어 규칙들을 생성, 삭제, 이동, 복사, 가져오기 및 내보내기 할 수 있다. 사용자는 계층 보기를 이용하여 특성 보기에서 어느 규칙이 편집될지를 선택할 수 있다.
특성 보기는 사용자가 개별 규칙들의 파라미터를 수정할 수 있는 제어를 가진 형식 보기이다. 패밀리 보기는 설계자 또는 아티스트가 예를 들어 쉐이더, 블렌드, 프랙탈, 식물군 및 방사상 식물군 패밀리를 생성하고 편집할 수 있게 한다. 패밀리 보기는 또한 자산 사전 보기를 가능하게 한다. 설계자 또는 아티스트가 지형 규칙들에 대해 이루어진 변경을 빨리 볼 수 있게 하기 위하여, 첫번째 사람 보기(first-person view)는 사용자가 게임 내의 지형 주위를 걷고 있었던 경우처럼 지형을 나타낸다.
지형 편집기 도구는 예를 들어 다음 특징을 포함할 수 있다:
1) 행성 파라미터 설정-행성 파라미터, 행성 크기, 청크 및 타일 크기, 식물군 카운트 등
2) 경고/에러를 완비한 규칙 컴파일-자산 검증 외에 무효 또는 불완전 파라미터들이 게임에 의해 로딩된 데이터가 올바르다는 것을 보장한다. 그 예는 높은 높이가 낮은 높이보다 높거나, 또는 AffectorShader를 적용하는 경우 적용된 쉐이더가 사용 가능 자산으로서 존재하는 것을 FilterHeight에 대해 보장하는 것을 포함한다.
3) 규칙들의 병목을 결정하기 위한 규칙 프로파일링-사용자는 지형 편집기 도구와 함께 규칙의 적용에 대한 완전한 제어를 갖는다. 행성들은 수백개의 규칙으로 기술될 수 있으므로, 내장 프로파일러가 사용자에게 어느 계층들에 가장 값비싼 자원이 드는지를 보여준다. 소정 실시예들에서, 지형 편집기 도구는 다른 지형 영역들보다 생성하는 데 더 시간이 소모되는 지형 생성 영역들을 그래픽으로 식별할 수 있다.
4) 자원 맵 보기-자원 시스템은 프랙탈을 이용하며, 따라서 설계자는 자원을 영역과 연관시키고, 지형 편집기 내의 데이터를 볼 수 있다.
5) 정적 환경 블록들의 레이아웃-환경 블록 데이터는 환경 블록들이 영역과 연관될 때 지형 편집기 도구에서 편집될 수 있다. 예를 들어, 조명, 배경, 환경 맵, 안개 및 기후가 지정될 수 있다.
6) 표면 특성-쉐이더 패밀리는 설계자 및 아티스트가 쉐이더에 대한 표면 특성을 편집하는 것을 가능하게 한다.
지형 설계자 및 아티스트는 지형 편집기 도구, 설계자 및 아티스트가 영역 및 패밀리를 생성하고 규칙(영향자)을 영역 및 패밀리와 연관시킬 수 있게 하는 커스텀 그래픽 사용자 인터페이스 도구를 이용하여 지형 특징을 정의하고 편집할 수 있다. 지형 편집기 도구는 지형의 2D 보기를 나타내는 맵 보기를 포함한다. 지형 편집기 도구는 또한 지형 규칙들의 계층 구조(트리) 보기인 계층 보기를 포함한다. 더욱이, 지형 편집기 도구는 사용자들이 개별 규칙들의 파라미터를 수정할 수 있는 제어를 가진 형식 보기인 특성 보기를 포함한다. 지형 편집기 도구는 지형 설계자 및 아티스트에 의해 입력되는 지형 정의에 따라 지형 특징들을 정의하는 절차 규칙들을 자동으로 생성할 수 있다. 지형은 실시간으로 변환되고 렌더링되는 지형 특징들을 정의하는 규칙들의 세트로서 저장된다. 지형 편집기 도구는 도 30 - 도 34와 관련하여 후술한다.
지형을 생성하기 위한 데이터가 높이 필드로부터 도출되는 경우, 지형 생성 시스템은 첨탑, 아치 및 흥미로운 바위 형성을 위해 수직 벽 상에 지형을 정상적으로 생성할 수 없다. 대신에, 사용자는 지형 상에 정적 메쉬를 배치함으로써 수직 벽을 생성할 수 있다.
도 30에 도시된 지형 편집기 도구 스크린 스냅샷(3000)은 지형의 2D 보기를 표시하기 위한 2D 맵 윈도우(3010)를 포함한다. 도 30에 도시된 2D 맵 윈도우(3010)에서, 사용자는 사각형, 원, 다각형 및 다각선(라인 세그먼트 주위에 구축된 다각형)을 정의하였다. 이렇게 정의된 물체들에 도시된 쉐이딩은 물체들의 경계들의 페더링 효과를 나타낸다.
도 30의 지형 편집기 도구 스크린 스냅샷(3000)은 또한 구성 계층 윈도우(3020)를 포함한다. 구성 계층 윈도우(3020)는 지형 규칙들의 계층 구조(트리) 보기를 표시한다. 지형 편집기 도구 스크린 스냅샷(3000)은 또한 사용자가 지형 내의 물체들의 다양한 특성을 보고 수정할 수 있는 특성 윈도우(3030)를 포함할 수 있다.
도 31은 지형 편집기 도구를 이용하는 맵 파라미터 및 쉐이더 자손 특성들의 표시 및 입력을 위한 윈도우를 나타내는 스크린 스냅샷(3100)의 일례이다. 도 31에 도시된 지형 편집기 도구 스크린 스냅샷(3100)은 패밀리 데이터 및 쉐이더 데이터와 같은 쉐이더 자손 특성들을 보고 수정하기 위한 특성 윈도우(3110)를 포함한다. 지형 편집기 도구 스크린 스냅샷(3100)은 또한 글로벌 파라미터, 글로벌 워터 테이블 파라미터 및 글로벌 환경 파라미터와 같은 다양한 맵 파라미터를 보고 수정하기 위한 맵 파라미터 윈도우(3120)를 포함한다.
도 32는 지형 편집기 도구를 이용하는 식물군 파라미터들의 표시 및 입력을 위한 윈도우를 나타내는 스크린 스냅샷(3200)의 일례이다. 식물군 파라미터 스크린 스냅샷(3200)은 사용자에게 현재 값을 표시하며, 사용자가 최대 및 최소 거리, 타일 크기, 타일 경계 및 시드에 대한 값을 수정하는 것을 허용한다. 식물군 파라미터 스크린 스냅샷(3200)은 충돌 가능 및 충돌 불가능 식물군은 물론 가까운 방사상 식물군 및 먼 방사상 식물군에 대한 값들을 표시하고 사용자가 이를 수정할 수 있게 한다. 또한, 지형 편집기 도구는 상기 파라미터들에 대한 현재 설정치에 기초하여 생성되고 렌더링되는 근사적인 총 식물군을 계산하고 표시한다. 이러한 근사적 총 식물군의 계산치는 파라미터를 표시할 뿐 사용자에 의해 수정 가능하지 않다.
도 33은 지형 편집기 도구를 이용하여 입력되는 2D 지형 맵의 예를 나타내는 스크린 스냅샷(3300)의 일례이다. 도 33에 도시된 스크린 스냅샷(3300)은 쉐이더 패밀리 윈도우(3310), 방사상 패밀리 윈도우(3320), 환경 윈도우(3330), 구성 계층 윈도우(3340), 특성 윈도우(3350) 및 2D 맵 윈도우(3360)를 포함한다.
도 34는 지형 편집기 도구를 이용하여 입력되는 2D 지형 맵의 다른 예를 나타내는 스크린 스냅샷(3400)의 일례이다. 도 34에 도시된 스크린 스냅샷(3400)의 윈도우들은 예를 들어 도 33에 도시된 것들과 유사하다. 그러나, 도 34의 스크린 스냅샷(3400)에서는, 2D 맵 윈도우(3410)가 상이한 지형을 나타내며, 구성 계층 윈도우(3420)가 스크린 스냅샷(3400)의 거의 전체 높이를 연장하도록 도 34에서 크기가 증가되어 있다.
도 30 - 도 34의 예시적인 스냅샷들은 보고 수정할 수 있는 파라미터들 및 특성들의 여러 예를 보이고 있지만, 도시되지 않은 많은 파라미터 및 특성이 존재한다. 아래의 표(표 1)은 지형 편집기 도구를 이용하여 보고 수정할 수 있는 추가적인 파라미터 및 특성을 열거하고 있다.
규칙 특성 규칙 설명
Affector Color Constant 규칙에 대한 칼라 선택
Affector Color Ramp Fractal 규칙 패밀리 및 칼라 램프 선택
Affector Color Ramp Height 규칙 칼라 램프 및 높이 로우/하이 값 선택
Affector Flora Static Collidable 식물군을 추가/삭제하고, 식물군 타입을 지정하고 정적 충돌 가능 식물군에 대한 식물군 밀도를 설정하도록 선택
Affector Flora Dynamic Far 식물군을 추가/삭제하고, 식물군 타입을 지정하고 동적 먼 식물군에 대한 식물군 밀도를 설정하도록 선택
Affector Flora Dynamic Near 식물군을 추가/삭제하고, 식물군 타입을 지정하고 동적 가까운 식물군에 대한 식물군 밀도를 설정하도록 선택
Affector Flora Static Non-Collidable 식물군을 추가/삭제하고, 식물군 타입을 지정하고 정적 충돌 불가능 식물군에 대한 식물군 밀도를 설정하도록 선택
Affector Height Constant 규칙에 대한 지형 높이 값을 선택
Affector Height Fractal 프랙탈 패밀리에 대한 규칙에 대한 지형 높이 값을 선택
Affector Height Terrace 규칙에 대한 테라스 높이 및 편평비 값 선택
Affector River 폭, 도랑 깊이, 흐름 속도, 둑 및 바닥 쉐이더, 워터 쉐이더, 물 깊이, 물 폭, 및 페더링 거리를 포함하는 하천 규칙 특성 선택
Affector Road 폭, 쉐이더, 페더링 높이 거리, 및 페더링 쉐이더 거리를 포함하는 도로 규칙 특성 선택
Affector Shader Constant 규칙 쉐이더 패밀리 및 페더링 파라미터 선택
Affector Shader Replace 소스 패밀리(교체될 패밀리), 목적 패밀리(교체할 패밀리), 및 페더링 파라미터를 포함하는 규칙 쉐이더 교체 패밀리 선택
Boundary Circle 페더링 거리, 경계 중심 좌표, 및 경계 반경을 포함하는 원 경계 규칙 특성 선택
Boundary Polygon 페더링 거리 및 로컬 워터 테이블 높이, 쉐이더 및 쉐이더 크기를 포함하는 다각형 경계 규칙 특성 선택
Boundary Polyline 페더링 거리 및 폭을 포함하는 다각선 경계 규칙 특성 선택
Boundary Rectangle 페더링 거리, 경계 좌우 및 가까운/먼 좌표, 및 로컬 워터 테이블 높이, 쉐이더 및 쉐이더 크기를 포함하는 사각형 경계 규칙 특성 선택
Filter Direction 페더링 거리, 및 영향을 미치는 필터 설정을 위한 최소 및 최대 각도 설정을 포함하는 필터 방향 규칙 특성 선택
Filter Fractal 프랙탈 패밀리, 로우 및 하이 프랙탈 설정 및 페더링 거리를 포함하는 필터 프랙탈 규칙 특성 선택
Filter Height 페더링 거리, 필터 로우 높이, 및 필터 높은 높이를 포함하는 필터 높이 규칙 특성 선택
Filter Shader 쉐이더 패밀리를 포함하는 필터 쉐이더 규칙 특성 선택
Filter Slope 페더링 거리, 필터 최소 각도, 및 필터 최대 각도를 포함하는 필터 경사 규칙 특성 선택
Layer 반전 경계 및 반전 필터 설정, 및 계층 주석을 포함하는 계층 규칙 특성 선택
Flora Group 식물군 패밀리 데이터를 포함하는 식물군 그룹 규칙 특성 선택
Flora Child 식물군 패밀리 네임, 자손 가중치 데이터, 편향 배치 및 주기, 스케일링 최소값, 및 스케일링 최대값을 포함하는 식물군 자손 규칙 특성 선택
Fractal Group 프랙탈 시드, X 좌표 스케일, Z 좌표 스케일, 바이어스, 이득, 옥타브, 조합 규칙, 주파수, 진폭, X 오프셋, 및 Z 오프셋을 포함하는 프랙탈 그룹 규칙 특성 선택
Fractal Child 프랙탈 자손 규칙 특성 선택
Radial Group 방사상 그룹 특성 선택
Radiall Child 패밀리 네임 데이터, 자손 가중치, 거리, 폭 및 높이 데이터, 및 편향 배치 및 주기 데이터를 포함하는 방사상 자손 규칙 특성 선택
Shader Group 쉐이더 그룹 특성 선택
Shader Child 패밀리 네임 데이터, 및 쉐이더 가중치 데이터를 포함하는 쉐이더 자손 규칙 특성 선택
Environment Group 환경 그룹 규칙 특성 선택
아래의 규칙 계층들은 지형 규칙들의 추가 예를 정의한다. 이 예에서, 모래 쉐이더, 20 미터 높이의 완만한 기복의 언덕, 조명을 위한 불모 환경, 주변 사운드, 태양/달/하늘, 모래 언덕 칼라 램프, 및 작은 바위로 이루어진 전체 행성에 기본 지형 계층이 적용된다. 이어서, 지정된 프랙탈 출력이 0.45 내지 0.55인 영역에서, 지형은 7 미터마다 테라스가 설치되며, 지형 조명을 갈색으로 착색한다. 100 미터 반경을 가진 원점에 중심을 둔 원에서, 지형 높이를 0 미터로 점차 낮추며, 늪지 환경을 적용하고, 늪 수목을 적용하며, 워터 테이블을 4 미터 높이의 늪 워터로 대체한다. 또한, 17 미터 높이 이상의 지형의 임의 영역에 대해, 모래 쉐이더를 바람 모래로 교체한다. 이어서, 60도보다 큰 급격한 경사에 대해, 칼라 램프가 존재하는 어느 곳에나 절벽면 칼라 램프를 적용한다. 이어서, 500 제곱미터 면적의 원점 주위의 다각형에서, 북쪽을 향하는 임의의 경사 상에 작은 수풀을 배치한다. 이어서, 동굴 진입을 위해 테라스 내에 작은 20미터×20미터 구멍을 절단한다. 마지막으로, 서쪽으로 1미터에서 시작하여 원점 (0,0)에서 끝나는 20미터 폭의 하천을 추가하고, 북쪽으로 1킬로미터에서 시작하여 원점에서 끝나는 10 미터 폭의 도로를 추가한다.
1) 계층-기본 지형
Figure 112006095579847-PCT00004
2) 계층-프랙탈 필터에 기초한 테라스 높이
Figure 112006095579847-PCT00005
3) 계층-원점 근처 높이를 낮춤
Figure 112006095579847-PCT00006
4) 계층-모래 언덕들 모두의 최상부에 쉐이더 밴드를 생성
Figure 112006095579847-PCT00007
5) 계층-모래 쉐이더가 사용된 경우에, 가파른 경사 상에 칼라 램프를 추가
Figure 112006095579847-PCT00008
6) 계층-원점 근처에서 북쪽에 면하는 언덕들에는 수풀만이 성장
Figure 112006095579847-PCT00009
7) 계층-동굴 진입을 위한 지형을 배제
Figure 112006095579847-PCT00010
8) 계층-도로 및 하천
Figure 112006095579847-PCT00011
지형 생성 시스템의 소정 실시예들은 게임 실행 스레드로부터 분리된 실행 스레드에서 지형을 생성할 수 있다. 달리거나 걷는 속도로 이동하는 단일 프로세서 머신을 가진 플레이어들은 거의 보이지 않아 지형 생성에 대한 역효과가 없다. 달리거나 걷는 속도 이상으로 이동할 때, 지형 생성의 성능 저하가 현저할 수 있다. 다중 프로세서 머신을 가진 플레이어들은 실제로, 거의 모든 플레이어 속도로 지형을 가로지를 때 지형 생성에 악영향을 미치지 않는다.
일 실시예에서, 지형 생성 시스템은 지형 생성의 프레임당 성능 비용을 최소화하기 위하여 여러 게임 프레임에 대해 지형 생성의 로드를 분산하려고 시도한다. 또한, 플레이어가 이동하고 있지 않을 때, 지형 생성 시스템은 플레이어의 이동 요구를 예측하여 지형을 구축할 수 있다.
소정 실시예들에서, 지형 생성 시스템은 2개의 내장 프로파일러를 포함한다. 제1 프로파일러는 지형 생성기에서 실행되며, 어느 계층들이 지형 생성과 관련하여 최대 시간이 걸리고 있는지를 결정하기 위하여 규칙 단위로 규칙들의 분석을 허용한다. 클라이언트 컴퓨터 및 서버 양쪽에서 규칙들이 변환될 때, 사용자들은 종종 그들의 규칙을 최적화하기 위하여 지형 생성 도구 내의 데이터를 보기를 원한다.
제2 프로파일러는 디버그 모드로 사용될 수 있으며, 지형 생성 시스템이 얼마나 효율적으로 지형을 렌더링하고 있는지를 사용자에게 알릴 수 있다. 렌더링되는 쉐이더 버킷, 블렌드, 식물군 및 방사상 식물군의 수와 같은 정보는 사용자가 클라이언트 지형 데이터를 최적화하는 것을 도울 수 있다.
지형 생성 시스템은 클라이언트/서버 애플리케이션에서 생성되는 지형의 양을 제한하는 것과 같은 다양한 추가적인 최적화 기술을 포함할 수 있다. 메모리 및 디스크 공간과 같은 클라이언트/서버 애플리케이션의 자원은 필요시에만 지형을 생성함으로써 최소화될 수 있다. 예를 들어, 지형 생성 시스템은 이들 조건을 식별하는 데 이용되는 다양한 메트릭 및 조건을 상술할 수 있다.
지형 시스템은 어느 청크에 상세 레벨들이 표시되는지를 결정하기 위하여 쿼드 트리 지오그래피(상세 레벨 또는 LOD 기술이라 함)를 이용할 수 있다. 원하는 상세 레벨의 청크가 존재하지 않는 경우, 지형 생성 시스템은 예를 들어 높이 정보, 칼라 정보, 쉐이더 정보, 식물군 정보, 및 방사상 식물군 정보에 대응하는 비트맵을 지형 생성기로부터 요구한다.
소정 실시예들에서, 지형 상세 레벨은 서버측에서는 사용되지 않는다. 그러나, 서버측 지형 생성 시스템은 클라이언트측 시스템과 동일한 청크 및 타일 체계화 패턴을 이용할 수 있다. 서버는 지형 생성을 원하는 물체들 아래에 지형 청크를 생성한다.
지형 생성 시스템은 타일화된 텍스쳐의 접근법을 이용할 수 있다. 쉐이더 맵은 (가능하면 고유한) 텍스쳐와 특정 타일을 연관시키는 데 사용된다. 타일 이웃들인 2개의 상이한 패밀리의 경우, 주변 쉐이더에 따르는 적절한 알파 맵과 함께 블렌드 쉐이더가 자동 생성된다. 예를 들어, 쉐이더는 그 이웃들과 동일 패밀리를 공유할 수 있으며, 하나의 패스에서 렌더링될 수 있다. 대안으로, 하나의 쉐이더가 최대 4개의 쉐이더 및 3개의 블렌드를 갖는 것이 가능하다. 픽셀마다의 조명을 위해 정상 맵에 추가할 때, 텍스쳐들의 수는 예를 들어 타일당 11 텍스쳐에 접근할 수 있다.
타일마다 지형 생성 시스템에 대한 다수의 다른 작도 호출을 피하기 위하여, 지형 생성 시스템은 지형 원시 분류기 내에 렌더링될 타일들을 큐잉한다. 지형 원시 분류기는 유연 정점 포맷(FVF) 스위칭이 가장 자원 집약적일 때 정점 버퍼 포맷에 따라 분류한다. FVF 리스트 내에서, 지형 원시 분류기는 동일 쉐이더와 함께 타일들을 배치화한다. 각각의 FVF에 대한 각각의 쉐이더 배치 내에, 지형 원시 분류기는 최적 렌더링을 위해 정점 버퍼당 타일 수를 최대화하고 가능한 적은 작도 호출로 구조를 카드에 전송하는 하나의 커다란 동적 정점 버퍼를 구축한다. 이러한 기술은 단독으로 지형의 렌더링 성능을 300% 향상시킬 수 있다.
지형 생성 시스템의 소정 실시예들은 지형을 조명하기 위하여 정점 칼라링, 동적 조명, 및 픽섹당 범프 맵핑을 이용한다. 정점 칼라링은 텍스쳐에서 볼 수 있는 타일링을 해체하는 데 이용된다. 동적 조명은 낮 시간을 처리하는 데 이용된다. 지형 생성 시스템은 지형에 대한 구조를 구축할 때 이러한 조명 고려 사항을 이용한다.
지형 생성 시스템은 그림자를 만들지 않지만, 그림자를 수신할 수 있다. 그러나, 이것은 성능 절충의 결과이며, 지형 생성 시스템의 다른 실시예들은 그림자를 수신하는 것은 물론 그림자를 만들 수 있다.
가상 세계의 관리자는 지형 편집기 도구에서 행성 크기를 변경함으로써 간단히 대륙을 증가시킬 수 있다. 지형은 사용자가 추가 규칙으로 새로운 영역을 변경할 때까지 적용되는 기본 규칙 세트를 갖는다. 사용자는 초기 지형이 개발된 후 아무 때나 지형 시스템에 새로운 규칙을 추가할 수 있다. 사용자는 새로운 특징들을 이용하기 위하여 선택할 수 있으며, 규칙들은 또한 위치 종속일 수 있다. 일례는 침식을 시뮬레이션하기 위하여 필드 높이를 수정하는 침식 영향자의 추가, 또는 조명을 정점 칼라로 베이킹하는 영향자의 추가이다.
지형 생성 시스템은 규칙들의 라이브러리를 재사용할 수 있으며, 프랙탈 시드 또는 파라미터의 변경과 같은 약간의 수정을 통해 새로운 지형이 생성될 수 있다. 지형 파일은 크기가 작으므로, 패칭을 통해 새로운 클라이언트에게 전송될 수 있다. 이러한 방식으로, 이로운 자산의 재이용을 통해 많은 행성이 정의될 수 있다.
전술한 설명은 다양한 실시예에 적용된 본 발명의 신규한 특징을 도시하고, 설명하고 지적하였지만, 본 발명의 목적을 벗어나지 않고 이 분야의 전문가에 의해, 설명된 장치 또는 프로세스의 형태 및 상세에 있어서의 다양한 누락, 대체 및 변경이 이루어질 수 있음을 이해할 것이다. 본 발명의 범위는 전술한 설명에 의해서가 아니라 첨부된 청구의 범위에 의해 지시된다. 청구의 범위의 균등물의 의미 및 범위 내에 있는 모든 변경은 그 범위 내에 포함되어야 한다.

Claims (21)

  1. 가상 세계에서 지형을 생성하는 시스템으로서,
    절차 규칙들을 생성하는 모듈 - 상기 절차 규칙들의 각각은 가상 세계에서 상기 지형의 적어도 일 부분을 정의함 -; 및
    상기 생성된 절차 규칙들을 처리하여 상기 가상 세계의 디지털 표현을 생성하도록 구성되는 지형 생성기
    를 포함하는 지형 생성 시스템.
  2. 제1항에 있어서, 상기 모듈은 상기 가상 세계 내에서 사용자가 영역을 정의하도록 하는 인터페이스를 포함하는 지형 생성 시스템.
  3. 제1항에 있어서, 상기 모듈은, 필터 조건을 만족시키는 상기 지형의 영역을 사용자가 식별하도록 하는 인터페이스를 포함하는 지형 생성 시스템.
  4. 제3항에 있어서, 상기 필터 조건은, 경사, 높이, 쉐이더(shader), 방향, 및 프랙털(fractal) 중의 하나인 지형 생성 시스템.
  5. 제3항에 있어서, 상기 모듈은, 상기 가상 지형의 다른 지역들과 비교하여 생성하기에 시간 소모적인 상기 가상 지형의 지역들을 그래픽으로 식별하는 지형 생 성 시스템.
  6. 제3항에 있어서, 상기 모듈은, 상기 가상 지형의 적어도 일부를 생성하기 위해 소요되는 시간을 식별하는 지형 생성 시스템.
  7. 절차 규칙들을 사용하는 지형을 생성하는 방법으로서,
    가상 세계에서 상기 지형의 적어도 일부를 디스플레이하는 단계;
    상기 가상 세계에서 상기 지형의 적어도 일부를 식별하는 사용자로부터 표시자(indicia)를 수신하는 단계;
    상기 식별된 부분의 적어도 한 개의 특성을 선택하는 단계; 및
    상기 수신된 표시자와 상기 선택된 특성에 기초하여 절차 규칙을 생성하는 단계
    를 포함하는 지형 생성 방법.
  8. 제7항에 있어서, 상기 생성된 절차 규칙에 따라서, 상기 지형의 디지털 표현을 생성하는 단계를 더 포함하는 지형 생성 방법.
  9. 제7항에 있어서, 상기 표시자는, 상기 가상 세계에서의 원형 지역, 정사각형, 직사각형, 또는 삼각형 지역을 평면도에서 정의하는 지형 생성 방법.
  10. 제7항에 있어서, 상기 표시자는 적어도 한 개의 지형 특성을 기술하는 필터 기준을 포함하는 지형 생성 방법.
  11. 제10항에 있어서, 상기 지형 특성은, 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나인 지형 생성 방법.
  12. 절차 규칙들을 사용하는 지형을 생성하는 시스템으로서,
    가상 세계에서 상기 지형의 적어도 일 부분을 디스플레이하는 수단;
    상기 가상 세계에서 상기 지형의 적어도 일 부분을 식별하는 사용자로부터 표시자를 수신하는 수단;
    상기 식별된 부분의 적어도 한 개의 특성을 선택하는 수단; 및
    상기 수신된 표시자와 상기 선택된 특성을 기초로 절차 규칙을 생성하는 수단
    을 포함하는 지형 생성 시스템.
  13. 제12항에 있어서, 상기 생성된 절차 규칙에 따라서, 상기 지형의 디지털 표현을 생성하는 단계를 더 포함하는 지형 생성 시스템.
  14. 제12항에 있어서, 상기 표시자는, 상기 가상 세계에서 원형 지역, 정사각형, 직사각형, 또는 삼각형 지역을 평면도에서 정의하는 지형 생성 시스템.
  15. 제12항에 있어서, 상기 표시자는 적어도 한 개의 지형 특성을 기술하는 필터 기준을 포함하는 지형 생성 시스템.
  16. 제15항에 있어서, 상기 지형 특성은, 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나인 지형 생성 시스템.
  17. 실행될 때, 절차 규칙들을 사용하여 지형을 생성하는 방법을 수행하는 명령들을 저장하는 프로그램 저장 장치로서, 상기 방법은,
    가상 세계에서 상기 지형의 적어도 일 부분을 디스플레이하는 단계;
    상기 가상 세계에서 상기 지형의 적어도 일 부분을 식별하는 사용자로부터 표시자를 수신하는 단계; 및
    상기 식별된 부분의 적어도 한 개의 특성을 선택하는 단계
    를 포함하는 프로그램 저장 장치.
  18. 제17항에 있어서, 상기 생성된 절차 규칙에 따라서, 상기 지형의 디지털 표현을 생성하는 단계를 더 포함하는 프로그램 저장 장치.
  19. 제17항에 있어서, 상기 표시자는, 상기 가상 세계에서 원형 지역, 정사각형, 직사각형, 또는 삼각형 지역을 평면도에서 정의하는 프로그램 저장 장치.
  20. 제17항에 있어서, 상기 표시자는 적어도 한 개의 지형 특성을 기술하는 필터 기준을 포함하는 프로그램 저장 장치.
  21. 제20항에 있어서, 상기 지형 특성은 경사, 높이, 쉐이더, 방향, 및 프랙털 중의 하나인 프로그램 저장 장치.
KR1020067027153A 2004-05-26 2005-05-04 지형 생성 시스템, 지형 생성 방법 및 프로그램 저장 장치 KR101148613B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US57503504P 2004-05-26 2004-05-26
US60/575,035 2004-05-26
US10/877,512 2004-06-25
US10/877,512 US8207966B2 (en) 2004-05-26 2004-06-25 Terrain editor tool for rule-based procedural terrain generation
PCT/US2005/015445 WO2005119597A2 (en) 2004-05-26 2005-05-04 Terrain editor tool for rule-based procedural terrain generation

Publications (2)

Publication Number Publication Date
KR20070048656A true KR20070048656A (ko) 2007-05-09
KR101148613B1 KR101148613B1 (ko) 2012-05-29

Family

ID=35424683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067027153A KR101148613B1 (ko) 2004-05-26 2005-05-04 지형 생성 시스템, 지형 생성 방법 및 프로그램 저장 장치

Country Status (5)

Country Link
US (1) US8207966B2 (ko)
EP (1) EP1754199B8 (ko)
JP (1) JP4824019B2 (ko)
KR (1) KR101148613B1 (ko)
WO (1) WO2005119597A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8953872B2 (en) 2012-01-03 2015-02-10 Electronics And Telecommunications Research Institute Method for editing terrain data created by procedural terrain method
KR20190028437A (ko) * 2016-06-13 2019-03-18 아마존 테크놀로지스, 인크. 섹션 지형 편집
KR20230034000A (ko) * 2021-09-02 2023-03-09 주식회사 다온정보기술 최적화를 위한 스마트팜 시뮬레이터 시스템

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7612775B2 (en) * 2005-07-28 2009-11-03 The Boeing Company Real-time conformal terrain rendering
US8232994B2 (en) * 2006-08-22 2012-07-31 Microsoft Corporation Viewing multi-dimensional data in two dimensions
GB0719625D0 (en) * 2007-10-08 2007-11-14 Realtime Worlds Ltd Improved method of creating a computer model of the physical world
US20090144028A1 (en) * 2007-11-30 2009-06-04 Motorola, Inc. Method and apparatus of combining mixed resolution databases and mixed radio frequency propagation techniques
US20090144311A1 (en) * 2007-11-30 2009-06-04 Motorola, Inc. Method and apparatus for developing high resolution databases from low resolution databases
CN101933015B (zh) * 2007-12-13 2017-03-08 图形软件科技公司 用于编辑制图数据的系统和方法
US8990705B2 (en) 2008-07-01 2015-03-24 International Business Machines Corporation Color modifications of objects in a virtual universe based on user display settings
US8471843B2 (en) 2008-07-07 2013-06-25 International Business Machines Corporation Geometric and texture modifications of objects in a virtual universe based on real world user characteristics
US8963927B2 (en) * 2010-12-15 2015-02-24 Microsoft Technology Licensing, Llc Vertex-baked three-dimensional animation augmentation
US8821234B2 (en) * 2011-06-14 2014-09-02 Nintendo Co., Ltd. Methods and/or systems for designing virtual environments
JP6181917B2 (ja) 2011-11-07 2017-08-16 株式会社スクウェア・エニックス・ホールディングス 描画システム、描画サーバ、その制御方法、プログラム、及び記録媒体
DE102012103011A1 (de) 2012-04-05 2013-10-10 Krauss-Maffei Wegmann Gmbh & Co. Kg Verfahren zur synchronen Wiedergabe einer virtuellen Realität in einer verteilten Simulationsvorrichtung
JP5411385B1 (ja) * 2013-08-12 2014-02-12 株式会社 ディー・エヌ・エー ゲームを提供するサーバ及び方法
US10369472B1 (en) 2017-03-30 2019-08-06 Electronic Arts Inc. Virtual environment mapping system
US10679317B2 (en) * 2018-07-19 2020-06-09 Microsoft Technology Licensing, Llc Techniques for displaying a shader table associated with raytracing images
US10818070B2 (en) 2019-03-27 2020-10-27 Electronic Arts Inc. Artificial intelligence based virtual object aging
US11620800B2 (en) 2019-03-27 2023-04-04 Electronic Arts Inc. Three dimensional reconstruction of objects based on geolocation and image data
US11887253B2 (en) * 2019-07-24 2024-01-30 Electronic Arts Inc. Terrain generation and population system
US11189068B2 (en) * 2019-12-13 2021-11-30 Square Enix Ltd. Macro-based electronic map editing
CN111524231B (zh) * 2020-05-20 2024-01-26 网易(杭州)网络有限公司 一种虚拟地形的处理方法及装置、电子设备、存储介质
US11335058B2 (en) 2020-10-13 2022-05-17 Electronic Arts Inc. Spatial partitioning for graphics rendering
US11501497B1 (en) * 2021-06-28 2022-11-15 Monsarrat, Inc. Placing virtual location-based experiences into a real-world space where they don't fit
US11961183B2 (en) * 2022-08-31 2024-04-16 Electronic Arts Inc. Terrain search
CN115953541B (zh) * 2023-03-10 2023-06-23 中国地质大学(武汉) 一种四叉树lod地形生成方法、装置、设备及存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993016440A1 (en) * 1992-02-18 1993-08-19 Evans & Sutherland Computer Corporation Image texturing system having theme cells
US6126329A (en) * 1993-06-08 2000-10-03 Rational Software Coporation Method and apparatus for accurate profiling of computer programs
JP2623449B2 (ja) * 1994-10-29 1997-06-25 雅治 石井 地形モデル作成方法
US5790123A (en) * 1995-09-29 1998-08-04 The United States Of America As Represented By The Secretary Of The Army Method for generating and modifying simulated terrain surfaces and representing terrain related processes
US5889951A (en) 1996-05-13 1999-03-30 Viewpoint Corporation Systems, methods, and computer program products for accessing, leasing, relocating, constructing and modifying internet sites within a multi-dimensional virtual reality environment
JPH10154236A (ja) * 1996-09-30 1998-06-09 Ricoh Co Ltd フラクタル画像生成方法および画像処理装置
JP3503385B2 (ja) * 1997-01-20 2004-03-02 日産自動車株式会社 ナビゲーションシステム及びそれに用いるナビゲーションプログラムを記憶した媒体
JP2941230B2 (ja) 1997-05-06 1999-08-25 コナミ株式会社 画像表示処理装置,画像表示処理方法,及びコンピュータプログラムを記録した機械読取り可能な記録媒体
US5956039A (en) 1997-07-25 1999-09-21 Platinum Technology Ip, Inc. System and method for increasing performance by efficient use of limited resources via incremental fetching, loading and unloading of data assets of three-dimensional worlds based on transient asset priorities
US6229546B1 (en) * 1997-09-09 2001-05-08 Geosoftware, Inc. Rapid terrain model generation with 3-D object features and user customization interface
EP0965970A4 (en) 1997-10-27 2004-12-22 Matsushita Electric Ind Co Ltd THREE-DIMENSIONAL CARD REPRESENTATION DEVICE AND THE DATA GENERATING DEVICE USED FOR THIS
US5958039A (en) 1997-10-28 1999-09-28 Microchip Technology Incorporated Master-slave latches and post increment/decrement operations
US6362817B1 (en) * 1998-05-18 2002-03-26 In3D Corporation System for creating and viewing 3D environments using symbolic descriptors
WO1999060526A1 (fr) * 1998-05-20 1999-11-25 Sega Enterprises, Ltd. Processeur d'image, machine de distraction, procede de traitement d'image et support d'enregistrement
US20020060685A1 (en) * 2000-04-28 2002-05-23 Malcolm Handley Method, system, and computer program product for managing terrain rendering information
JP2002298162A (ja) * 2001-03-29 2002-10-11 Mitsubishi Electric Corp 3次元景観表示装置及び3次元景観生成装置
JP2003054332A (ja) 2001-08-20 2003-02-26 Alps Electric Co Ltd 車両用複合スイッチユニット
US7038694B1 (en) 2002-03-11 2006-05-02 Microsoft Corporation Automatic scenery object generation
US6952207B1 (en) 2002-03-11 2005-10-04 Microsoft Corporation Efficient scenery object rendering
US6747649B1 (en) * 2002-03-19 2004-06-08 Aechelon Technology, Inc. Terrain rendering in a three-dimensional environment
US7095423B2 (en) * 2002-07-19 2006-08-22 Evans & Sutherland Computer Corporation System and method for combining independent scene layers to form computer generated environments
JP4154469B2 (ja) * 2002-09-20 2008-09-24 株式会社ジオ技術研究所 仮想3次元地図生成システム
US7098868B2 (en) * 2003-04-08 2006-08-29 Microsoft Corporation Display source divider

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8953872B2 (en) 2012-01-03 2015-02-10 Electronics And Telecommunications Research Institute Method for editing terrain data created by procedural terrain method
KR20190028437A (ko) * 2016-06-13 2019-03-18 아마존 테크놀로지스, 인크. 섹션 지형 편집
KR20230034000A (ko) * 2021-09-02 2023-03-09 주식회사 다온정보기술 최적화를 위한 스마트팜 시뮬레이터 시스템

Also Published As

Publication number Publication date
WO2005119597A2 (en) 2005-12-15
EP1754199A2 (en) 2007-02-21
KR101148613B1 (ko) 2012-05-29
JP4824019B2 (ja) 2011-11-24
EP1754199B8 (en) 2017-11-22
US20050264566A1 (en) 2005-12-01
US8207966B2 (en) 2012-06-26
JP2008500636A (ja) 2008-01-10
WO2005119597A3 (en) 2006-11-09
EP1754199B1 (en) 2017-09-13
EP1754199A4 (en) 2011-06-01

Similar Documents

Publication Publication Date Title
KR101148613B1 (ko) 지형 생성 시스템, 지형 생성 방법 및 프로그램 저장 장치
KR101165482B1 (ko) 규칙 기반 절차적 지형 생성을 위한 자원 관리
KR101235538B1 (ko) 규칙 기반 절차적 지형 생성
Peytavie et al. Arches: a framework for modeling complex terrains
CN108537869B (zh) 一种基于级联纹理的圆锥追踪动态全局光照方法
KR100959349B1 (ko) 그래픽스 처리 유닛을 이용한 사진트리 기반의 지형 렌더링 방법을 가속화하는 방법
Scheiblauer Interactions with gigantic point clouds
KR20080018404A (ko) 게임 제작을 위한 배경 제작 프로그램을 저장한 컴퓨터에서읽을 수 있는 기록매체
CN109872390A (zh) 一种海量三维模型的组织方法
Derzapf et al. River networks for instant procedural planets
Benes et al. Urban brush: Intuitive and controllable urban layout editing
Anh et al. Physically based hydraulic erosion simulation on graphics processing unit
Noghani et al. Randomly generated 3d environments for serious games
Chang et al. Hierarchical simplification of city models to maintain urban legibility.
Chen et al. Community exploration of changing landscape values: The role of the virtual environment
US11620820B1 (en) Repetition reduction for real-time tile-based texture synthesis of aerial imagery
Cui Procedural cave generation
Borlik Constraint-Driven Open-World Scene Generation
Dusterwald Procedural Generation of Voxel Worlds with Castles
Dollins Modeling for the plausible emulation of large worlds
Ilangovan Procedural city generator
CN118121938A (zh) 网格数据生成方法、装置、存储介质及电子装置
Kluivers Procedural Generation of Urban Environments
Blomqvist et al. Generating Compelling Procedural 3D Environments and Landscapes
Beneš Procedurální generování měst

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150428

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190426

Year of fee payment: 8