KR20220103088A - 애니메이션 생성 및 다른 목적들을 위해 시뮬레이션되는 표면들을 컴퓨팅하는 방법 - Google Patents

애니메이션 생성 및 다른 목적들을 위해 시뮬레이션되는 표면들을 컴퓨팅하는 방법 Download PDF

Info

Publication number
KR20220103088A
KR20220103088A KR1020227000466A KR20227000466A KR20220103088A KR 20220103088 A KR20220103088 A KR 20220103088A KR 1020227000466 A KR1020227000466 A KR 1020227000466A KR 20227000466 A KR20227000466 A KR 20227000466A KR 20220103088 A KR20220103088 A KR 20220103088A
Authority
KR
South Korea
Prior art keywords
particles
computer
particle
scene
computing
Prior art date
Application number
KR1020227000466A
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 KR20220103088A publication Critical patent/KR20220103088A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites
    • 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
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2012Colour editing, changing, or manipulating; Use of colour codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Architecture (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

시뮬레이터가 대각 행렬의 제곱근을 사용하는 입자들에 대한 공분산 행렬들을 컴퓨팅함으로써 시뮬레이션에서 개체들에 해당하는 표면들을 컴퓨팅한다. 시뮬레이터는 제1 개체를 포함하는 복수의 입자들 중 각각의 입자에 대한 위치들 및 사이즈들을 수신하는 것, 위치들이 제1 개체의 제1 표면에 근접하는 복수의 입자들의 서브세트를 식별하는 것, 대각 행렬 ― 대각 행렬은 복수의 입자들 중 각각의 입자에 대한 이웃 입자들의 대각 행렬임 ― 의 제곱근을 사용하여, 복수의 입자들 중 각각의 입자에 대한 공분산 행렬을 생성함으로써 복수의 입자들의 서브세트 중의 입자들을 변형하는 것, 및 변형된 입자들에 기초하여 제1 개체의 제1 표면을 컴퓨팅하는 것에 의해 동작할 수 있다.

Description

애니메이션 생성 및 다른 목적들을 위해 시뮬레이션되는 표면들을 컴퓨팅하는 방법
관련 출원들에 대한 상호 참조
본 출원은 2020년 2월 28일자로 출원된 미국 특허 가출원 제62/983,534호와, 2021년 2월 24일자로 출원된 미국 특허 출원 제17/184,336호를 우선권 주장하며, 이로써 본 명세서에서 완전히 설명된 것처럼 그 전부가 본 명세서에 참조에 의해 포함된다.
분야
본 개시는 일반적으로 애니메이션 및 다른 목적들을 위한 시뮬레이션에 관한 것이고 더 상세하게는 상호작용 시뮬레이션된 개체들의 표면들의 효율적인 컴퓨테이션에 관한 것이다.
실세계 시나리오들을 반영하도록 의도되는 장면들의 시각적 표현들은 애니메이션 및 다른 분야들에서 공통이다. 예를 들어, 컴퓨터 생성된 영상 장면이 아티스트가 비디오 시퀀스를 형성하기 위해 프레임들의 시퀀스를 수동으로 그림으로써 생성될 수 있다. 단순한 카툰들의 경우, 예를 들어, 이는 실현 가능한 접근법이다. 그러나, 관람자들이 더 복잡한 비주얼들을 기대하게 됨에 따라, 컴퓨터 주도(computer-driven) 영상 생성이 필요하다. 해당 컴퓨터 주도 영상 생성의 일부는 시뮬레이션에 의존할 수 있다.
영상 생성을 위해 사용되는 컴퓨터 시뮬레이션은 실세계 물리학 및 관절(joint) 제약조건들과 일치하는 유관절(articulated) 캐릭터의 움직임들을 출력하기 위해 물리 엔진을 사용하는 것과 같은 캐릭터들의 자연스러운 움직임들 뿐만 아니라 자연 현상들을 애니메이션화하는데 사용되었다. 어떤 면에서, 이는 종종 간단한 문제 ― 많아야 수십 개의 결부된 신체 부위들의 자연스러워 보이는 움직임들을 결정하는 방법 ― 이다. 유연한 개체들, 유체들 등이 있는 것들과 같은 다른 시뮬레이션들의 경우, 개별 유닛들의 자유도의 수는 훨씬 더 크고 통상적으로 컴퓨터 시뮬레이션은 사실성(realism), 해상도, 및 이용 가능한 자원들을 컴퓨팅하는 양 사이의 절충을 요구한다. 이 절충 때문에, 효율적인 컴퓨터 시뮬레이션 기법들은 컴퓨팅 자원들의 상당한 증가를 요구하는 일없이 사실성 및/또는 해상도에서의 증가를 허용할 수 있기 때문에 중요할 수 있다. 유체 표면 특징들 및 다른 유체 상호작용들을 수반하는 시뮬레이션 컴퓨테이션들은 종종 이러한 절충들을 수반한다.
시뮬레이션되는 개체들을 표현하기 위해 생성되는 영상(예컨대, 애니메이션 프레임들, 스틸 이미지들 등)과, 시뮬레이션되는 개체들 자체는, 절차적으로 또는 수동으로 중 어느 하나로, 컴퓨터 판독가능 형태로 생성될 수 있다. 예를 들어, 구체의 이미지가 중심 로케이션, 반경 파라미터, 및 컬러의 사용자 입력으로부터 절차적으로 생성될 수 있다. 다른 예에서, 더 복잡한 개체가 파라미터 세트와 개체 생성을 위한 절차적 규칙 세트로부터 절차적으로 생성될 수 있다. 개체들은 또한 아티스트가 컴퓨터 시스템 안으로 개체의 형상을 그려 넣는 것과 같이 수동으로 생성될 수 있다. 일부 경우들에서, 아티스트가 절차적으로 생성된 개체를 수동으로 조정할 수 있다. 많은 경우들에서, 편집자들이 수동 터치업들보다 절차적 수준에서 조정을 할 더 많은 기회들을 갖도록 영상 생성 프로세스에 대해 개체들의 절차적 표현을 더 유지하는 것이 바람직할 수 있다.
가중 주성분 분석 프로세스가 Koren 등(Koren, Y. and Carmel, L., "Visualization of Labeled Data using Linear Transformations", in Proceedings of IEEE Information Visualization, vol. 00:16, 2003) 본 개시에서는 "[Koren]")에서 제안되었다.
가중 공분산 행렬들은 Yu, J., and Turk, G., "Reconstructing Surfaces of Particle-Based Fluids Using Anisotropic Kernels", ACM Transactions on Graphics (TOG), No. 5 (February 2013)(이후로는 "[Yu]")에서 제안되었다.
적어도 바람직한 실시예들의 목적은 전술한 단점들의 적어도 일부를 해결하고자 하는 것이다. 추가적인 또는 대체 목적은 적어도 대중에게 유용한 선택을 제공하고자 하는 것이다.
본 개시에서 설명되는 바와 같은 시뮬레이션 시스템이 본 개시에서 설명되는 바와 같은 개체 표면들의 표현들을 제공하기 위해 입자들에 의해 시뮬레이션되는 개체들의 절차적 표현들을 프로세싱할 수 있다.
하나의 일반적인 양태는 실행가능 명령어들로 구성되는 하나 이상의 컴퓨터 시스템들의 제어 하에 시뮬레이션되는 개체들의 표면들을 모델링하는 컴퓨터에 의해 구현되는 방법을 포함한다. 그 방법은 제1 개체를 포함하는 복수의 입자들 중 각각의 입자에 대한 위치들 및 사이즈들을 수신하는 단계; 위치들이 제1 개체의 제1 내재 표면(implied surface)에 근접하는 복수의 입자들의 서브세트를 식별하는 단계; 복수의 입자들의 적어도 일부 입자들 중 각각의 입자에 대해 비등방성 행렬(anisotropy matrix) 또는 공분산 행렬(covariance matrix) ― 비등방성 행렬 또는 공분산 행렬은 비선형 함수에 의해 연산되는 대각 스트레치 행렬(diagonal stretch matrix)에 해당하고 대각 스트레치 행렬은 복수의 입자들 중 적어도 일부 입자들에 대한 이웃 입자들의 대각 스트레치 행렬임 ― 을 생성함으로써 변형된 입자들의 세트를 형성하기 위해 복수의 입자들의 서브세트 중의 입자들을 변형하는 단계; 및 변형된 입자들의 세트에 기초하여 제1 개체의 제1 내재 표면의 새로운 형상 또는 위치를 컴퓨팅하는 단계를 포함한다. 이 양태의 다른 실시예들은, 각각이 방법들의 액션들을 수행하도록 구성되는, 대응하는 컴퓨터 시스템들, 장치, 및 하나 이상의 컴퓨터 저장 디바이스들 상에 기록된 컴퓨터 프로그램들을 포함한다.
구현예들은 다음 특징들 중 하나 이상을 포함할 수 있다. 일부 실시예들에서, 비선형 함수는 제곱근을 포함한다. 일부 실시예들에서, 복수의 입자들 중 적어도 일부의 입자들은 구형이다. 일부 실시예들에서, 변형된 입자들의 적어도 일부는 타원체형이다. 일부 실시예들에서, 복수의 입자들의 서브세트의 입자들을 변형하는 단계는 제1 개체의 제1 내재 표면에 평행한 서브세트의 입자들의 축들을 신장시키는 단계를 수반한다. 일부 실시예들에서, 제1 개체는 고체이다. 일부 실시예들에서, 제1 개체는 반고체 또는 유체이다. 일부 실시예들에서, 제1 개체의 제1 내재 표면의 형상 또는 위치가 제1 개체의 제2 개체의 제2 표면과의 상호작용에 기초하여 변경된다. 일부 실시예들에서, 컴퓨터에 의해 구현되는 방법은 제2 개체의 제2 표면의 시각적 표현을 생성하는 단계를 더 포함한다. 일부 실시예들에서, 컴퓨터에 의해 구현되는 방법은 제1 개체를 포함하는 복수의 입자들 중 각각의 입자에 대한 질량을 수신하는 단계를 더 포함한다. 일부 실시예들에서, 컴퓨터에 의해 구현되는 방법은 제1 개체를 포함하는 복수의 입자들 중 적어도 하나의 입자에 작용하는 컴퓨팅된 압력, 밀도, 또는 힘을 컴퓨팅하는 단계를 더 포함한다. 일부 실시예들에서, 컴퓨터에 의해 구현되는 방법은 컴퓨팅된 압력, 밀도, 또는 힘에 기초하여 적어도 하나의 입자의 위치들을 변경하는 단계를 더 포함한다. 일부 실시예들에서, 제1 개체를 포함하는 입자들의 위치들 및 사이즈들은 시뮬레이션으로부터 수신된다. 일부 실시예들에서, 제1 개체를 포함하는 입자들의 위치들 및 사이즈들은 스캐닝 디바이스로부터 수신된다. 일부 실시예들에서, 위치들이 제1 개체의 제1 내재 표면에 근접하는 복수의 입자들의 서브세트를 식별하는 단계는, 사용자 정의된 탐색 반경에 기초하여 복수의 입자들 중 각각의 입자의 가중 평균 및 공분산 행렬을 컴퓨팅하는 단계를 수반한다.
하나의 일반적인 양태는 시뮬레이션되는 개체들의 표면들을 모델링하는 컴퓨터 시스템을 포함하며, 그 시스템은, 적어도 하나의 프로세서; 및 명령어들을 저장하는 컴퓨터 판독가능 매체를 포함하며, 그 명령어들은, 적어도 하나의 프로세서에 의해 실행될 때, 시스템으로 하여금 그 방법을 수행하게 한다. 일부 실시예는 명령어들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 그 명령어들이, 컴퓨터 시스템의 적어도 하나의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금 그 방법을 수행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 실시예들에서, 변형된 입자들에 기초하여 제1 개체의 제1 내재 표면의 새로운 형상 또는 위치를 컴퓨팅하는 단계는 스칼라장(scalar field)의 등가표면(isosurface)을 컴퓨팅하는 단계를 수반한다. 일부 실시예들에서, 컴퓨터에 의해 구현되는 방법은 제1 개체의 제1 내재 표면의 시각적 표현을 생성하는 단계를 더 포함한다. 설명된 기법들의 구현예들은 하드웨어, 방법 또는 프로세스 또는 컴퓨터 액세스가능 매체 상의 컴퓨터 소프트웨어를 포함할 수 있다. 일부 실시예들에서, 컴퓨팅되는 스칼라장이 부호있는 거리 필드(signed distance field) ― 내재 표면으로부터의 거리를 나타내는 장면에서의 로케이션의 값이 반환될 수 있음 ― 이다.
본 명세서에서 사용되는 바와 같은 '포함하는'이란 용어는 ' ~으로 적어도 부분적으로 구성되는'을 의미한다. "포함하는"이란 용어를 포함하는 이 명세서에서의 각각의 진술을 해석하는 경우, 해당 용어에 의해 서두를 여는 것 또는 것들과는 다른 특징들이 또한 존재할 수 있다. '포함한다'와 같은 관련 용어는 동일한 방식으로 해석되어야 한다.
이 발명의 내용은 아래의 상세한 설명에서 추가로 설명되는 단순화된 형태로 개념들의 선택을 소개하기 위해 제공된다. 이 발명의 내용은 청구된 요지의 핵심 특징들 또는 본질적 특징들을 식별하기 위해 의도된 것이 아니며, 청구된 요지의 범위를 제한하도록 의도된 것도 아니다. 청구항들에서 정의된 바와 같이, 표면 컴퓨테이션 방법의 특징들, 세부사항들, 유틸리티들, 및 장점들의 더 광범위한 프레젠테이션이, 본 개시의 다양한 실시예들의 다음의 기재된 설명에 제공되고 첨부 도면들에서 예시된다.
본 개시에 따른 다양한 실시예들이 도면들을 참조하여 설명될 것이며, 도면들 중:
도 1의 (1A)는 시뮬레이션들의 피험체일 수 있는 상호작용하는 개체들의 일 예를 도시한다.
도 1의 (1B)는 시뮬레이션들의 피험체일 수 있는 상호작용하는 개체들의 일 예를 도시한다.
도 1의 (1C)는 시뮬레이션들의 피험체일 수 있는 상호작용하는 개체들의 일 예를 도시한다.
도 2는 개체와 유체의 표면의 상호작용의 2차원 뷰이다.
도 3은 다른 유체 안으로 떨어지는 유체 개체의 입자 표현을 예시한다.
도 4a는 입자들의 움직임을 예시한다.
도 4b는 복수의 입자들의 로케이션들 및 표면들에 기초하여 컴퓨팅될 수 있는 내재 표면을 예시한다.
도 4c는 표면 컴퓨테이션 방법에 의해 생성된 수정된 표면을 도시한다.
도 5는 본 개시의 적어도 하나의 실시예에 따라, 예를 들어 시뮬레이션, 센서, 또는 인간 아티스트의 출력일 수 있는 예시적인 장면을 도시한다.
도 6은 본 개시의 적어도 하나의 실시예에 따라, 포인트 클라우드가 중첩 타원체들의 클라우드로 대체되는 나중의 개발 스테이지에서의 동일한 장면을 예시한다.
도 7은 본 개시의 적어도 하나의 실시예에 따라, 중첩 타원체들의 클라우드 대신 스플랫된(splatted) 또는 래스터화된(rasterized) 표면을 갖는 장면을 예시한다.
도 8은 본 개시의 적어도 하나의 실시예에 따라, 이미지 파라미터가 다른 변수에 의존하는 조건부 포인트 클라우드를 갖는 장면을 예시한다.
도 9는 본 개시의 적어도 하나의 실시예에 따라, 조건부 타원체 클라우드를 갖는 장면을 예시한다.
도 10은 본 개시의 적어도 하나의 실시예에 따라, 도 9의 조건부 타원체 클라우드로부터 컴퓨팅되는 스플랫된 또는 래스터화된 표면을 갖는 장면을 예시한다.
도 11은 본 개시의 적어도 하나의 실시예에 따라, 예시적인 사용자 인터페이스를 도시한다.
도 12는 시뮬레이션 시스템을 통한 데이터 흐름의 도면이다.
도 13은 스틸 이미지들 및/또는 이미지들의 비디오 시퀀스들 형태로 영상을 생성하는데 사용될 수 있을 것 같은 예시적인 시각적 콘텐츠 생성 시스템을 도시한다.
도 14는 도 12 또는 도 13에 예시된 시스템들의 컴퓨터 시스템들이 구현될 수 있는 예시적인 컴퓨터 시스템을 도시하는 블록도이다.
다음의 설명에서, 다양한 실시예들이 설명될 것이다. 설명의 목적으로, 특정 구성들 및 세부사항들이 실시예들의 철저한 이해를 제공하기 위하여 언급된다. 그러나, 실시예들이 특정 세부사항들 없이 실시될 수 있다는 것은 본 기술분야의 통상의 기술자에게 또한 명백할 것이다. 더욱이, 널리 공지된 특징들은 설명되고 있는 실시예를 모호하게 하지 않기 위하여 생략되거나 단순화될 수 있다.
본 개시에서 설명되는 다수의 예들에서, 컴퓨터 시뮬레이션 시스템으로의 입력들은 시뮬레이션되고 있는 가상 재료/개체/유체 등에 관한 파라미터들을 포함하고 컴퓨터 시뮬레이션의 출력은 가상 재료/개체/유체 등의 위치들/질량/움직임 등을 포함한다. 이러한 출력은 애니메이션 시스템에 입력될 수 있으며, 애니메이션 시스템은 가상 공간의 장면에 존재하는 가상 재료/개체/유체 등의 컴퓨터에 의해 생성된 영상을 렌더링하는 것에 대비할 수 있다. 컴퓨터에 의해 생성된 영상은 스틸 이미지들, 스테레오스코픽 이미지들, 비디오 시퀀스들, 및/또는 스테레오스코픽 비디오 시퀀스들일 수 있다.
일부 경우들에서, 가상 엘리먼트들의 컴퓨터 시뮬레이션은 해당 실세계 엘리먼트들로 일어날 것에 일치시키려고 하지만, 다른 경우들에서, 예술적 또는 다른 입력들은 실세계의 무엇, 또는 적어도 가용 물리적 환경들에서의 무엇에 대응하지 않는 효과들을 생성하기 위해 컴퓨터 시뮬레이션에서 사용된다. 예를 들어, 주어진 시뮬레이션에서, 시뮬레이션 엔진의 오퍼레이터가 시뮬레이션될 수 있지만 실세계 일치를 갖지 않는 중력 "꺼짐(turning off)"에 대응하는 입력을 짧은 기간 동안 제공할 수 있다. 다른 예에서, 가상 댐 뒤에 유지되고 있는 물 또는 자신을 해당 형상으로 유지하지 않는 물의 큐브와 같이 초기 순간 전에 특정 형상이 되도록 제약되는 물의 블록이 생성될 수 있고 그 다음에 시뮬레이션은 중력 또는 표면 장력 제약조건들에 따라 움직이는 물로 시작한다.
본 개시는 표면들의 외관을 개선하고 그 표면들을 렌더링하고 저장하기 위해 요구되는 자원들을 감소시킴으로써 개체 표면들의 컴퓨테이션 및 렌더링을 실질적으로 돕는다. 시뮬레이션 시스템 또는 3D 스캐닝 시스템과 연계하여 컴퓨팅 시스템 상에 구현되는 본원에서 개시되는 표면 컴퓨테이션 방법은 입자들의 수집물로서 모델링되는 개체들에 대한 표면들을 컴퓨팅하는 실시 수단을 제공한다. 이 개선된 표면 컴퓨테이션은, 아티스트 또는 애니메이터가 수동 정정을 적용할 보통의 일상적인 필요 없이, 덜 현실적이며, 더 많은 자원 집약적인 모델링 및 렌더링 프로세스를 더 현실적이며, 덜 자원 집약적인 프로세스로 변환한다. 이 파격적인 접근법은 시뮬레이션 및 렌더링 시스템의 기능을 개선한다.
표면 컴퓨테이션 방법은, 소프트웨어 프로그램의 적어도 일부 출력들이 디스플레이 상에서 볼 수 있고, 키보드, 마우스, 또는 터치스크린 인터페이스로부터의 사용자 입력을 받는 프로세서 상에서 실행중인 제어 프로세스에 의해 동작되고 렌더링 프로세스 및 시뮬레이션 또는 3D 스캐닝 프로세스와 통신할 수 있는 그러한 소프트웨어 프로그램으로서 구현될 수 있다. 이와 관련하여, 소프트웨어 프로그램은 상이한 시간들에 이루어진 상이한 입력들 또는 선택에 응답하여 특정한 특정 동작을 수행한다. 프로세서, 디스플레이, 센서, 및 사용자 입력 시스템들의 특정한 구조, 기능들, 및 동작은 해당 기술분야에서 알려져 있지만, 본 개시의 신규한 특징 또는 양태가 톡특함을 갖게 하는 다른 것들은 본 개시에서 언급된다.
이들 설명들은 예시적인 목적만으로 제공되고, 표면 컴퓨테이션 방법의 범위를 제한하는 것으로 간주되지 않아야 한다. 특정한 특징들은 청구된 요지의 정신으로부터 벗어남 없이 추가, 제거, 또는 수정될 수 있다.
도 1의 (1A)는 시뮬레이션들의 피험체일 수 있는 상호작용하는 개체들의 일 예를 도시한다. 이 예에서, 제1 차량(102)이 우측으로 이동하고 있고 제2 차량(104)이 좌측으로 이동하고 있다. 차량들이 결과적으로 충돌할 때 그 차량들이 상호작용하는 방법을 결정하기 위해 시뮬레이션이 수행될 수 있고, 시각화가 표면들이 충돌로 인해 변형됨에 따라 그들 차량들의 표면들의 렌더링을 포함할 수 있다.
도 1의 (1B)는 시뮬레이션들의 피험체일 수 있는 상호작용하는 개체들의 일 예를 도시한다. 이 예에서, 보트(110)가 물(112)의 바디와 상호작용하고 물의 표면 상에서 부유한다. 시뮬레이션이 물(112)의 표면을 따르는 파도의 전파 및 상호작용과, 이들 파도의 영향 하에 보트(110)의 롤링, 피칭, 및 요잉(yawing) 움직임들을 결정하기 위해 수행될 수 있다. 파도가 보트(110)에서 반사하고 주위에서 굴절할 때 시각화가 물(110)의 복잡한 표면의 렌더링을 포함할 수 있다.
도 1의 (1C)는 시뮬레이션들의 피험체일 수 있는 상호작용하는 개체들의 일 예를 도시한다. 특히, 도 1의 (1C)는 표면(124)에서 유체 큐브(122)를 횡단하는 개체(120)를 예시한다. 각각의 경우에, 그들의 표면들을 변경하는 개체들의 상호작용의 대표적인 시각화가 시뮬레이션을 사용하여 상호작용을 결정할 수 있고 그 다음에, 시각화가 상호작용을 시각화하기 위해 결과적인 표면 변경들을 사용할 것이다. 개체(120)는 예를 들어 단일 고체 개체(예컨대, 자동차 몸체 또는 보트 선체)일 수 있거나, 또는 입자들의 수집물로서 표현될 수 있는 유체(예컨대, 물, 모래 등) 또는 반고체(예컨대, 변형가능 금속 등)로 이루어질 수 있다.
도 2는 개체(120)와 유체(122)의 표면(124)의 상호작용의 2차원 뷰이다. 유체(122)가 중력에 의해 제자리에 유지되면, 도 2의 뷰는 유체(122) 안으로 떨어지는 개체(120)를 예시하도록 회전될 수 있다. 어떤 경우라도, 시뮬레이션이 시뮬레이션의 엘리먼트의 상호작용을 고려할 수 있고, 시각화가 결과적인 복잡한 표면들을 정확하게 렌더링할 수 있다.
도 3은 유체(122) 안으로 떨어지는 개체(120)의 입자 표현을 예시한다. 시뮬레이터가 개체(120)의 입자 표현(302)과 유체(122)의 입자 표현(304)과 같이 개체들의 입자 표현을 생성할 수 있다. 이 예에서, 개체(120)는, 예시의 목적으로 도면에서 임의의 형상을 갖는 것으로 보였을지라도, 유체, 예를 들어, 물 안으로 떨어지는 물인 것으로 취급된다. 그 시뮬레이터는 입자들이 이동할 수 있는 방법을 결정하기 위해 입자-입자 상호작용을 컴퓨팅할 수 있다.
도 4a는 도 3의 입자들(302 및 304)의 움직임을 예시한다. 이 예에서, 시뮬레이터는 입자 표현(302) 및 입자 표현(304)의 입자들의 움직임을 충돌 또는 다른 상호작용의 결과로서 시뮬레이션한다. 이동된 입자들로부터, 결과적인 표면들, 이를테면 일단 변형된 개체(120)의 표면(402)과 일단 변형된 유체(122)의 표면(404)을 결정하는 것이 종종 바람직하다. 도 4a는 이들 매끄러운 표면들(402 및 404)이 충돌 동안 특정 순간에 있을 수 있는 곳을 예시하는데, 표면들의 위치들 또는 형상은 충돌 또는 다른 상호작용의 결과로서 변경되었다.
도 4b는 복수의 입자들(406)의 로케이션들 및 표면들에 기초하여 컴퓨팅될 수 있는 내재 표면(408)을 예시한다. 입자들의 표면들은 예를 들어 입자 반경, 또는 입자의 형상, 사이즈, 및 배향에 의해 결정되는 다른 표면들에 기초하여 구면일 수 있다. 예시된 바와 같이, 표면(408)은 입자 표현으로 인해 울퉁불퉁하게 보일 것이고, 시각화가 도 4a에 예시된 바와 같이, 더 매끄러운 표면을 요구할 수 있다. 더 매끄러운 표면이 예를 들어 표면의 렌더링을 더 사실적이며, 더 시각적으로 매력적이며, 그리고/또는 컴퓨테이션적으로 더 단순하게 만들 수 있다.
시뮬레이션에서, 시뮬레이터가 개체들의 입자 표현을 생성할 수 있으며, 각각의 입자는, 다른 파라미터들도 있지만, 위치, 질량, 및 반경을 갖는 고체 개체로서 취급된다. 시뮬레이터는 그 다음에 입자 상호작용의 시뮬레이션을 실행할 수 있다. 많은 작은 입자들로 개체를 나타내는 것이 결과적인 표면들을 더 매끄럽게 만들 수 있지만, 이러한 접근법은 컴퓨테이션 비용이 발생되게 할 수 있다. 더 적은 수의 더 큰 입자들로, 결과적인 컴퓨팅된 표면들은 더 울퉁불퉁할 수 있지만, 본 개시에서 설명되는 바와 같이 입자들의 표현을 변경함으로써 매끄럽게 될 수 있다. 일부 실시예들에서, 이러한 변경들은 시각적 또는 컴퓨테이션 아티팩트들을 도입하지 않는 방식으로 처리된다.
하나의 시뮬레이션 프로세스에서, 입자 표현에서의 입자의 형상들은 그 입자가 표면 근처에 있는지 또는 개체 내에 잘 있는지(예컨대, 이웃 입자들에 의해 잘 둘러싸여 있는지)의 여부에 기초하여 조정된다. 조정 프로세스에서, 입자 형상 및 가능한 위치들은 변경될 수 있고, 내재 표면이 수정된 입자 표현으로부터 결정될 수 있다. 바람직하게는, 결과적인 형상은 시뮬레이션이 입자 시뮬레이션이 아니었다면, 또는 그것이 더욱 많은 입자들에 관여하는 입자 시뮬레이션이었다면 그것들이 무엇인지에 밀접하게 일치한다. 예를 들어, 시뮬레이션으로부터의 결과적인 표면들은 그 표면들이 전체 해상도에서 터치하고 있으면 터치하고 있을 것과, 그 표면들을 매끄럽게 하기 위한 입자 수정들이 개체 형상 또는 볼륨을 바람직하지 않게 수정하지는 않는 것이 바람직할 수 있다. 일단 시뮬레이션되는 표면들 또는 내재 표면들이 결정되면, 그 표면들은 저장되거나 애니메이션 시스템에 제공될 수 있다. 매끄러운 표면들에 대한 예시적인 수정 프로세스의 더 많은 세부사항들이 아래에서 설명된다.
시뮬레이터, 또는 그 부분은 또는 그것에 대한 애드-온(add-on)은, 입자 기반 시뮬레이션들에서 개체들(이는 고체, 반고체, 유체 등일 수 있음)의 표면들을 복원한다. 이는 애니메이션에서 사용될 수 있다. 두 개의 개체들(또는 개체와 유체, 또는 두 개의 유체 등) 사이의 상호작용을 시뮬레이션하기 전에, 시뮬레이터는 각각의 개체의 입자 표현을 결정한 다음 상호작용하는 그들 입자들을 시뮬레이션하고, 입자 움직임들에 기초하여 그들 개체들의 표면들이 있을 곳을 결정한다. 일부 경우들에서, 상호작용은 고체 개체와 유체 사이이고, 그래서 고체 개체의 입자들은 서로에 대해 상대적으로 움직이지 않을 수 있으며, 그 경우 그것의 표면은 복원될 필요가 없고 유체의 입자들은 중력, 유체 자체 및 고체 개체 등에 의해 부과되는 힘에 기초하여 서로에 대해 상대적으로 이동한다. 반경들, 질량들 및 로케이션들과 같은 파라미터들을 갖는 각각의 입자로, 밀도와 압력은 계산될 수 있고 입자들 상의 힘이 결정될 수 있다. 따라서, 표면 컴퓨테이션 방법에 의해 수행될 태스크가 표면(408)이 내포하거나 또는 아니면 컴퓨팅될 수 있는 수정된 입자 표현을 결정하는 것이다.
하나의 이러한 수정된 표현에서, 입자들(406)은 구로서 시뮬레이션되지만, 그 후 이웃 및 커널에 기초하여 변환된다. 이는 0의 경험적 평균과 입자 배향들을 나타내는 고유벡터 세트로, 각각의 입자에 대한 가중 공분산 행렬(C)을 컴퓨팅하기 위한 [Koren]에서 제안된 것과 같은 가중 주성분 분석 프로세스, 및/또는 [Yu]에서 제안된 바와 같은 가중 공분산 행렬(C)을 사용하여 행해질 수 있다.
이 접근법에서, 각각의 입자의 가중 평균 및 공분산 행렬이 컴퓨팅된다. 이는 수학식 1 및 수학식 2에 도시된 바와 같을 수 있으며, 여기서 w ij 는 등방성 가중 함수이고 x i 는 입자 i의 위치이다.
Figure pct00001
(수학식 1)
Figure pct00002
(수학식 2)
함수 w ij 는 수학식 3에서와 같을 수 있으며, r i 는 사용자 정의 탐색 반경이다.
Figure pct00003
(수학식 3)
C i 의 특이 값 분해가 입자 표현의 표면 근처에 있음을 감안하기 위한 구형 입자(i)(예컨대, 입자(406))의 타원체형 입자(40)로의 변환에 해당한다. 이로부터, 직교 회전 행렬(R i )과, 대각 스트레치 행렬(Σ i )이 C i = R i T * Σ i * R i 이 되도록 특이 값 분해를 통해 컴퓨팅될 수 있다.
개선된 비등방성 행렬 또는 공분산 행렬(G i )이 그 다음에 수학식 4에 따라 각각의 입자(i)에 대해 컴퓨팅될 수 있으며, 여기서 Σ i -1/2은 이웃 입자들(예컨대, 입자(i)의 이웃들인 입자들)의 대각 스트레치 행렬의 제곱근 분의 1이다. 비등방성 행렬 또는 공분산 행렬은 예를 들어 행렬의 제곱근이 거리 단위를 산출하도록 거리 제곱의 단위를 포함할 수 있다. 일부 실시예들에서, 다른 비선형 함수들이 비등방성 행렬 또는 공분산 행렬을 컴퓨팅하기 위하여 대각 스트레치 행렬에 대해 연산하도록, 제곱근 대신 또는 제곱근에 추가하여 사용될 수 있다.
Figure pct00004
(수학식 4)
상기한 바를 사용하여, 구형 입자(i)가 개체의 표면(408)을 매끄럽게 하기 위한 타원체를 형성하기 위해 G i 에 의해 선형적으로 변환되며, 따라서 평활화된 표면(410)을 산출한다. 비등방성 커널들인 G i 의 컴퓨팅된 값들로부터, 스칼라(W i )는 수학식 5에 따라 컴퓨팅될 수 있으며, 여기서 P는 양의 스칼라 값 P(x)가 0 ≤ x < 2에 대해 1 - x/2이고 그렇지 않으면 0인 구형 커널이다.
Figure pct00005
(수학식 5)
수정된(예컨대, 평활화된) 표면(410)의 표현이 그 다음에 수학식 6에 따라 스칼라장의 등가표면으로서 컴퓨팅될 수 있다.
Figure pct00006
(수학식 6)
대체 실시예에서, 수정된 표면(410)의 표현이 대신에 수학식 7에 따라 컴퓨팅될 수 있다.
Figure pct00007
(수학식 7)
일부 실시예들에서, 장면의 세부사항들을 나타내는 입력들을 수신하는 모듈이 등가표면과 같은 표면의 표현을 반환할 수 있다. 일부 실시예들에서, 모듈은 장면에서의 위치를 나타내는 입력 인수(input argument)를 수신하고 부호있는 거리 필드 값을 반환할 수 있는데, 부호있는 거리 필드 값은 입력 인수 위치에서부터 컴퓨팅된 표면까지의 거리를 나타낸다. 이러한 실시예들에서, 표면은 직접 컴퓨팅되지 않을 수 있지만, 0의 또는 0에 가까운 부호있는 거리 필드 값을 반환하는 입력 인수 위치들로부터 유추될 수 있다. 일부 예들에서, 부호있는 거리 필드 값이 내재 표면 근처의 점들에 대해 거의 0이며, 내재 표면이 한 표면인 개체 내부에 있는 것으로 간주되는 점들에서는 음수이고, 해당 개체의 표면 바깥에 있는 것으로 간주되는 점들에서는 양수이다.
도 4c는 본 출원의 표면 컴퓨테이션 방법에 의해 생성된 수정된(예컨대, 평활화된) 내재 표면(410)을 도시한다. 위에서 설명된 바와 같이, 개체의 표면 근처에 있는 입자들(406)(예를 들어, 모든 측면들이 이웃들에 의해 둘러싸이지 않은 입자들)이 구들에서 타원체들(407)로 변환된다. 예를 들어, 타원체(407)는 개체의 표면에 평행한 축들(409)을 가질 수 있다. 이들 축들(409)은 표면 컴퓨테이션 방법에 의해 신장될 수 있어서, (a) 표면(410) 근처의 입자들(406)이 표면의 더 큰 부분을 차지하며, (b) 타원체들(407) 사이의 갭들이 비수정된 입자들(406) 사이의 갭들보다 작으며, 그리고/또는 (c) 타원체들의 외부 표면들이 개체 표면에 대해 더 평평하며, 덜 뾰족한 프로파일을 나타낸다. 그 결과, 타원체(407)로부터 도출되는 내재 표면(410)이 비수정된 입자들(406)로부터 도출되는 내재 표면(408)보다 더 매끄러울 수 있다. 더 매끄러운 표면이, 예를 들어, 더 현실적이며, 더 시각적으로 매력적이며, 덜 컴퓨테이션 집약적이거나 또는 메모리/저장 집약적 등임으로써 일부 경우들에서 유리할 수 있다.
스플랫된 또는 래스터화된 표면(예컨대, 도 4b에서 예를 들어 도시된 바와 같은 내재 표면(408) 또는 도 4c에서 예를 들어 도시된 바와 같은 평활화된 표면(410))을 결정하는 프로세스는 시뮬레이션을 참조하여 설명되지만, 이는 또한 표면이 결정될 입자 표현이 시뮬레이션 목적과는 다른 목적을 위해 획득되는 경우일 수 있다. 예를 들어, 개체(유체 또는 다른 것)가 3D 레이저 스캔과 같이 물리적 개체들로부터 포인트 클라우드를 생성하는 스캐닝 디바이스로부터 획득되는 포인트 클라우드에 의해 표현될 수 있고, 본 개시에서 설명되는 방법들은 이러한 개체의 표면을 복원하는데 사용될 수 있다.
도 5는 본 개시의 적어도 하나의 실시예에 따라, 예를 들어 시뮬레이션, 센서(예컨대, 3D 카메라), 또는 인간 아티스트의 출력일 수 있는 예시적인 장면(500)을 도시한다. 이 개발 스테이지에서, 장면(500)은 상이한 세 개의 유체 예시 형상들, 즉, 파도(520), 수직 스파우트(spout)(530), 및 큐브를 기술하는 포인트 클라우드 또는 복수의 입자들을 포함한다. 일반적으로, 수직 스파우트(530)는 콘볼루션된 1D 특징부인 반면, 파도(520)는 콘볼루션된 2D 특징부이고, 큐브(540)는 3D 특징부이다. 장면들이 그래픽 사용자 인터페이스(Graphical User Interface)(GUI) 내에서 가시적이고 조작 가능한 1D, 2D, 및 3D 개체들 또는 특징부들의 임의의 조합을 포함할 수 있다. 이들 특징부들을 포인트 클라우드 또는 복수의 입자들로서 도시함으로써, 시스템은, (1) 포인트 클라우드에서의 각각의 점에 대한 타원체 형상을 컴퓨팅하거나, (2) 타원체에 맞는 표면을 컴퓨팅하거나, 또는 (3) 이미지의 전체 렌더링을 행하는데 필요한 컴퓨팅 시간 없이, 아티스트가 입자들의 형상들, 위치들, 배향들, 및 다른 속성들, 뿐만 아니라 다양한 개체들 또는 특징부들의 상호작용, 또는 시뮬레이션의 복셀 사이즈를 보는 것을 가능하게 한다. 따라서, 개체들의 사이즈, 형상, 위치, 또는 상호작용에 대한 조정이 이 스테이지에서 이루어질 수 있으면, 프로세스는 신속하고 편리할 수 있다. 포인트 클라우드가 점들 또는 입자들로서, 또는 선택 가능한 사이즈의 구, 다면체 또는 다른 형상으로서 디스플레이될 수 있다는 것이 이해된다.
도 6은 본 개시의 적어도 하나의 실시예에 따라, 포인트 클라우드(510)가 중첩 타원체들의 클라우드 또는 복수의 중첩 타원체들(610)로 대체된 나중의 개발 스테이지에서의 동일한 장면(500)을 예시한다. 각각의 타원체의 치수들 및 배향은 (예를 들어 도 4c에서 전술한 바와 같이) 타원체의 주어진 탐색 반경 내의 자신의 이웃들의 수 및 방향에 의존하여서, 예를 들어, 큐브(540)의 에지(642)와 파도(520)의 에지(622)는 큐브 또는 파도의 다른 영역들보다 더 큰 타원체들을 보여주는 반면, 모서리들(644 및 624)은 여전히 더 큰 타원체들을 보여준다. 이 예에서, 수직 스파우트(530)는 매우 큰 타원체로 구성되는데, 스파우트(530)는 각각의 타원체가 단지 1 또는 2개의 이웃들만을 가지면서 단일 1D 구조만을 포함하기 때문이다. 위에서 설명된 바와 같이, 이 비등방성은 더 매끄러운 표면들을 생성하는데 도움이 된다. 이들 타원체들의 위치들, 배향들, 및 사이즈들을 컴퓨팅하는 것에 연관되는 컴퓨팅 시간의 부담이 있다. 그러나, 이 스테이지에서 장면(500)에 대해 이루어지는 편집들(예를 들어, 개체 이동, 재배향, 또는 리사이징, 또는 타원체들의 사이즈들에 관련되는 출력 복셀 사이즈 조정)은 그럼에도 불구하고 아티스트가 타원체에 맞도록 표면을 컴퓨팅하는 컴퓨테이션 부담없이 장면(500)을 조정하거나, 또는 전체 장면 렌더링을 행하는 것을 허용한다.
도 7은 본 개시의 적어도 하나의 실시예에 따라, 중첩 타원체들의 클라우드(610) 대신 스플랫된 또는 래스터화된 표면들(710)을 갖는 장면(500)을 예시한다. 도 7의 예에서, 파라미터들은 스플랫된 또는 래스터화된 표면이 모든 로케이션들에서 매끄럽도록 (예컨대, 도 11의 아래에서 설명되는 바와 같은 사용자 인터페이스를 통해) 선택되었다. 그러나, 이는 항상 바람직하지는 않을 수 있다. 예를 들어, 실세계에서의 파도(520)는 예를 들어 매끄러운 부분뿐만 아니라 거칠며, 포말성의 기포(aerated) 부분을 포함할 수 있다. 그러므로 그래픽 사용자 인터페이스(GUI)가 아티스트가 위치, 또는 다른 인자에 기초하여 장면(500)의 파라미터들을 가변시키는 것을 가능하게 하는 것이 바람직하다. 일단 아티스트가 장면의 외관에 만족하면, 그 장면의 전체 또는 부분 렌더링은 수행될 수 있다.
도 8은 본 개시의 적어도 하나의 실시예에 따라, 이미지 파라미터가 다른 변수에 의존하는 조건부 포인트 클라우드(810)를 갖는 장면(500)을 예시한다. 도 8에 도시된 예에서, 조건부 포인트 클라우드(810)에서의 각각의 점의 컬러는 X-축을 따르는 자신의 위치에 의존하여서, 장면(500)의 우측을 향하는 점들은 더 어둡게 나타나는 반면, 장면(500)의 좌측을 향하는 점들은 더 밝게 나타난다. 다른 예들에서, 다른 파라미터들은 위치에 대해 조건부일 수 있거나, 또는 다른 변수들에 대해 조건부일 수 있다. 예를 들어, 컬러 변수가 X, Y, 또는 Z 위치 변수에 조건부일 수 있고, 복셀 사이즈가 컬러 변수에 따라 달라질 수 있다. 이러한 조건부 효과는 예를 들어 파도의 일부 부분들이 백색이 되는 반면, 다른 부분들이 청색 또는 투명이 되는 것을 허용하는데 사용될 수 있다.
도 9는 본 개시의 적어도 하나의 실시예에 따라, 조건부 타원체 클라우드(910)를 갖는 장면(500)을 예시한다. 도 9에 도시된 예에서, 타원체들의 사이즈들은 X-축을 따르는 자신들의 위치에 의존하여서, 장면(500)의 우측을 향하는 타원체들은 더 작은 반면, 장면(500)의 좌측을 향하는 타원체들은 더 크다. 타원체들의 사이즈가 그들 타원체들로부터 생성되는 임의의 표면의 매끄러움 및 연속성에 영향을 미치므로, 이 스테이지에서 이미지 파라미터들을 편집하는 아티스트가 표면을 컴퓨팅하고 이미지를 렌더링하는 컴퓨테이션 오버헤드 없이, 이미지가 어떻게 보일지를 잘 이해할 수 있다.
도 10은 본 개시의 적어도 하나의 실시예에 따라, 도 9의 조건부 타원체 클라우드(910)로부터 컴퓨팅되는 스플랫된 또는 래스터화된 표면(1010)을 갖는 장면(500)을 예시한다. 도 10의 예에서, 파도(520)의 부분(1022)과 큐브(540)의 부분(1042)은 비교적 거친 표면에 갭이 나타나는 포말성이거나, 거품이 떠 있거나(frothy), 또는 기포성으로 보인다. 마찬가지로, 파도(520)의 부분(1024)과 큐브(540)의 부분(1044)은 각각이 공기에 의해 완전히 둘러싸이고 자신의 이웃 점들에 연결되지 않는 개별 점들, 액적, 또는 분무로서 나타난다. 이 스테이지에서 변경들을 행하는 아티스트가 계산된 표면을 볼 수 있지만, 그 장면을 실제로 렌더링하는 컴퓨테이션 오버헤드는 없다. 따라서, 당해 기술분야의 통상의 기술자가, 본 개시는, 현재 단계의 결과들이 만족스러운 것으로 간주되기까지 후속하는 시각적 단계들을 생성할 필요없이, 다양한 개발 스테이지들에서 장면을 보고 편집하는 능력을 아티스트에게 유리하게 제공한다는 것을 이해할 것이다. 이는 아티스트의 효율을 개선시키고 컴퓨팅 시간에 대한 필요성을 줄인다.
도 11은 본 개시의 적어도 하나의 실시예에 따라, 예시적인 사용자 인터페이스(UI)(1110)를 도시한다. 표면화 노드는 입자들을 받아들이고, 입력 파라미터들에 기초하여 이웃 분석을 수행하는데, 입력 파라미터들은 각각의 입자의 이웃을 분석하기 위해 얼마나 멀리 있는지를 나타낸다. 아티스트 또는 오퍼레이터가 시뮬레이션이 실행된 복셀 사이즈를 알면, 양호한 탐색 반경이 해당 복셀 사이즈, 예컨대, 0.5 내지 3.0배의 복셀 사이즈 정도이다. 아티스트들은 또한 시뮬레이션 점 반경을 종종 가변시킨다(즉, 균일한 입자 사이즈로 시뮬레이션하는 대신 어떤 이유로든 아티스트들은 입자별로 시뮬레이션 점 반경을 변경한다). 때때로 탐색 반경이 입자 사이즈에 비례하게 하는 것이 바람직하며, 그래서 "pscale로 오버라이드" 플래그(1125)가 필요하다. 이는 아티스트 또는 오퍼레이터가 매번 탐색 반경을 재조정할 필요없이 진행하는 것을 편리하게 허용한다.
제어 블록은 사용자가 각각의 입자에 수집되는 이웃 정보를 조작하는 것을 허용한다. 제어 모드는 글로벌 또는 입자별 중 어느 하나일 수 있고, 여기에서 사용자 정의된 마스킹의 편리함이 나온다. 사용자는 특정 형상의 타원체로서 자체를 분명히 나타내는 입자 이웃들의 설명을 바꾸기 위해 입자들에 이전에 배정한 (도 11에 도시된 예에서 "@alpha"와 같은) 사용자정의(custom) 파라미터들을 채용할 수 있다. 각각의 이웃/타원체는 회전 행렬과, 특이값과 같은 입자당 값 세트에 의해 설명된다. 아티스트 또는 오퍼레이터는 그들 값들을 직접 (예컨대, 이웃을 수동으로 선택하거나 정의하기 위한 마스킹 제어와, 이웃 내의 입자들의 하나 이상의 속성을 정의하기 위한 하나 이상의 예술적 제어들 ― 마스킹 및 예술적 제어들은 해당 기술분야에서 공지되어 있을 수 있거나 또는 본원에서 개시되는 시스템에 맞춤화 또는 고유할 수 있음 ― 을 사용함으로써) 조작하거나, 또는 타원체들을 수정하기 위해 내부적으로 알고리즘에 의해 사용되고 도시된 바와 같은 코드 유사 산술 표현식들을 사용하여 영향을 받을 수 있는 속성들, 즉, @maxElongation, @positionSmoothing 등으로서 표현되는 제어들을 사용한다.
그 출력은 고속 타원체 모드로 설정될 수 있으며, 그래서 아티스트 또는 오퍼레이터는 입자 데이터를 유색 타원체의 클라우드(예를 들어 도 6에 보인 바와 같음)로서 직접 볼 수 있어, (예를 들어 도 7에 보인 바와 같이) 표면에 대한 값비싼 스플래팅(splatting)을 피할 수 있다. 일단 사용자가 결과에 만족하면 그들은 최종 렌더링가능 볼륨의 스플랫된 또는 래스터화된 표면들을 획득하고 디스플레이하기 위해 그것을 부호있는 거리로 바꿀 수 있다(그리고 더 비싸기 때문에 더 오래 기다릴 수 있다).
위에서 설명되고 도 5 내지 도 10에 도시된 효과들 및 이미지 개발 스테이지들을 성취하기 위하여, UI(1110)는 입자 시뮬레이션에 의해 채용되는 복셀 사이즈를 선택하기 위한 제1 슬라이더(1110)와, 이웃 입자들이 서로 영향을 미치는 방법을 결정하는데 도움이 되는 "수집 반경" 또는 "탐색 반경"을 선택하기 위한 제2 슬라이더(1120)를 포함한다. UI(1110)는 또한 복셀 유형(구, 타원체 등)을 선택하는 능력을 허용하는 출력 유형 선택기, 뿐만 아니라 이웃 거리에 의해 영향을 받는 경우 출력 복셀 사이즈를 어떻게 결정할지를 결정하기 위한 사이즈 곱셈기 슬라이더를 포함한다. UI(1110)는 또한 아티스트 또는 오퍼레이터가 어떻게 입자들이 (예컨대, 개별 입자들로서, 이웃들로서, 전체 포인트 클라우드에 걸쳐 전역적으로 등으로) 주어진 변수에 의해 영향을 받는지를 선택하는 것을 허용하는 제어 유형 선택기와, 특정한 변수들(예컨대, 타원체의 연신율(elongation), 평탄도, 평활도(smoothing), 볼륨, 및 글로벌 스케일링)이 다른 변수(예컨대, 위치, 컬러 등)에 의존적이도록 만드는 코드 유사 표현식들을 포함하는 표현 윈도우(1150)를 포함한다. 코드 유사 표현식은 예를 들어 변수들, 상수, 또는 산술 연산자를 포함할 수 있다. UI(1110)로, 아티스트 또는 오퍼레이터가 변경이 있을 때마다 타원체를 생성하며, 표면을 생성하고, 장면을 렌더링하기 위해 필요했던 경우보다 훨씬 더 효율적으로 도 5 내지 도 10에 도시된 효과 및 이미지 개발 스테이지들을 생성할 수 있다.
일부 실시예들에서, 장면을 흑백으로만 렌더링하는 능력, 또는 추적되는 광 경로마다 최대 수의 정점들로 장면을 렌더링하는 능력과 같은 다른 옵션들이 이용 가능할 수 있다. 다른 UI 옵션에서와 같이, 이는 아티스트가 초기 개발 스테이지에서의 변경들을, 최종 렌더러에서 어떻게 보일지를 알지만, 훨씬 더 낮은 컴퓨테이션 오버헤드로 행하는 것을 허용한다. 따라서, 유체 표면들의 생성은 더 효율적으로 그리고 더 현실적인 결과들로 수행될 수 있다. 개선된 사실성과 감사된 컴퓨팅 시간의 이 조합은 관련 기술에 비해 실질적인 개선을 나타낸다.
도 12는 시스템(1200)이 본 개시에서 설명되는 것들 중 하나와 같은 프로세스를 수행하고 있을 때 시뮬레이션 시스템(1200)을 통한 데이터 흐름의 도면이다. 시뮬레이션 시스템(1204)에 대한 입력은 컴퓨터(1214)를 통해 입력된 아티스트 또는 사용자(1216)에 의해 아마도 획득되는 개체 표현(1202), 인터페이스 세부사항들(1206), 및 파라미터 값들(1212)이다. 시뮬레이션의 출력(1208)이 메모리에서 표현되고 예를 들어 애니메이션 생성 시스템(1210)에 제공될 수 있다.
도 13은 스틸 이미지들 및/또는 이미지들의 비디오 시퀀스들 형태로 영상을 생성하는데 사용될 수 있을 것 같은 예시적인 시각적 콘텐츠 생성 시스템(1300)을 도시한다. 시각적 콘텐츠 생성 시스템(1300)은 라이브 액션 장면들의 영상, 컴퓨터 생성된 장면들, 또는 그것들의 조합을 생성할 수 있다. 실제 시스템에서, 사용자들에게는 그들에게, 높은 레벨들 및 낮은 레벨들에서, 필요한 경우, 해당 영상에 들어갈 것을 특정하는 것을 허용하는 도구들이 제공된다. 예를 들어, 사용자가 도 12에 예시된 아티스트 또는 사용자(1216)와 같은 애니메이션 아티스트일 수 있고 시각적 콘텐츠 생성 시스템(1300)을 사용하여 사운드 스테이지에서 라이브로 공연하는 두 명의 인간 배우들 사이의 상호작용을 캡처할 수 있고 인간 배우들 중 한 명을 대체된 인간 배우의 움직임들 및 버릇들을 흉내내는 방식으로 행동하는 컴퓨터에 의해 생성된 의인화된 비-인간으로 대체할 수 있고 그 다음에 제3 컴퓨터에 의해 생성된 캐릭터와 원하는 이야기를 전하거나 또는 원하는 영상을 생성하기 위해 컴퓨터에 의해 생성되는 배경 장면 엘리먼트들을 추가할 수 있다.
시각적 콘텐츠 생성 시스템(1300)에 의해 출력되는 스틸 이미지들은 2차원 이미지 어레이에 위치를 갖는 화소에 각각 연관되는 화소 컬러 값들의 2차원 어레이와 같은 화소 어레이들로서 컴퓨터 메모리에서 표현될 수 있다. 화소 컬러 값들은 적색 값, 녹색 값, 및 청색 값(예컨대, RGB 포맷에서임)과 같이 화소당 세 개 이상(또는 이하)의 컬러 값들에 의해 표현될 수 있다. 화소 컬러 값들의 이러한 2차원 어레이의 치수는 바람직한 및/또는 표준 디스플레이 스킴, 이를테면 1920개 화소 열들 × 1280개 화소 행들 또는 4096개 화소 열들 × 2160개 화소 행들, 또는 일부 다른 해상도에 해당할 수 있다. 이미지들은 압축된 포맷으로 저장될 수 있거나 또는 그렇지 않을 수 있지만, 어느 쪽이든, 원하는 이미지는 화소 컬러 값들의 2차원 어레이로서 표현될 수 있다. 다른 변형에서, 이미지들은 3차원 프레젠테이션들을 위한 한 쌍의 스테레오 이미지들에 의해 표현되고 다른 변형들에서, 이미지 출력, 또는 그것의 일부는, 단지 2차원 뷰들 대신 3차원 영상을 표현할 수 있다. 또 다른 실시예들에서, 화소 값들은 데이터 구조들이고 화소 값이 화소에 연관될 수 있고 해당 화소에 연관되는 스칼라 값, 벡터, 또는 다른 데이터 구조일 수 있다. 해당 화소 값은 컬러 값들을 포함하거나 포함하지 않을 수 있고, 깊이 값들, 알파 값들, 가중값 값들, 개체 식별자들 또는 다른 화소 값 성분들을 포함할 수 있다.
저장된 비디오 시퀀스가 위에서 설명된 스틸 이미지들과 같은 복수의 이미지들을 포함할 수 있지만, 복수의 이미지들 중 각각의 이미지가 타이밍 시퀀스에서 위치를 가지고 저장된 비디오 시퀀스는, 각각의 이미지가 순서대로 디스플레이될 때, 타이밍 시퀀스에 의해 나타내어진 시간에, 움직이는 및/또는 변화하는 영상인 것으로 보이는 것을 디스플레이가 표시하도록 배열된다. 하나의 표현에서, 복수의 이미지들 중 각각의 이미지는 비디오 시퀀스가 재생을 시작할 때부터 해당 특정된 프레임이 디스플레되기까지 경과될 시간의 양에 대응하는 특정된 프레임 번호를 갖는 비디오 프레임이다. 프레임 레이트가 저장된 비디오 시퀀스의 얼마나 많은 프레임들이 단위 시간당 디스플레이되는지를 기술하는데 사용될 수 있다. 예시적인 비디오 시퀀스들은 초당 24 개 프레임들(24 FPS), 50 FPS, 140 FPS, 또는 다른 프레임 레이트들을 포함할 수 있다. 일부 실시예들에서, 프레임들은 디스플레이를 위해 인터레이스되거나 또는 달리 표시되지만, 설명의 명료함을 위해, 일부 예들에서, 비디오 프레임은 하나의 특정된 디스플레이 시간을 가지지만, 다른 변형들이 생각될 수 있다고 가정된다.
비디오 시퀀스를 생성하는 하나의 방법은 라이브 액션 장면, 즉, 물리적으로 발생하고 비디오 카메라에 의해 기록될 수 있는 이벤트들을 기록하기 위해 비디오 카메라를 단순히 사용하는 것이다. 기록되고 있는 이벤트들은 보이는 것으로서 해석될 이벤트들(이를테면 두 명의 인간 배우들이 서로 대화하는 것을 보는 것)일 수 있으며 그리고/또는 (배우들이 실제로 유사한 체구임에도 불구하고 한 배우가 다른 배우보다 커 보이도록 배우들을 스테이지에 관해 이동시키는 것, 또는 실물 크기(life-sized) 개체들을 포함하는 장면으로서 해석되기 위해서 다른 미니어처 개체들과 함께 미니어처 개체들을 사용하는 것과 같이) 기발한 카메라 조작들로 인해 상이하게 해석될 이벤트들을 포함할 수 있다.
스토리텔링 또는 다른 목적들을 위해 비디오 시퀀스들을 생성하는 것은 종종 말하는 나무, 의인화된 사물, 우주 전투 등과 같이 라이브 배우들로는 생성될 수 없는 장면들을 필요로 한다. 이러한 비디오 시퀀스들은 라이브 장면들로부터 광을 캡처하는 것이 아니라 컴퓨테이션적으로 생성될 수 있다. 일부 경우들에서, 비디오 시퀀스의 전체가, 컴퓨터에 의해 애니메이션화된 장편 영화의 경우에서와 같이, 컴퓨테이션적으로 생성될 수 있다. 일부 비디오 시퀀스들에서는, 일부 컴퓨터에 의해 생성된 영상 및 일부 라이브 액션을 갖는 것이 바람직하며, 이 둘에는 어떤 조심스러운 병합이 있을 수 있다.
컴퓨터에 의해 생성된 영상이 각각의 프레임에서 각각의 화소에 대해 각각의 컬러 값을 수동으로 특정함으로써 생성 가능할 수 있지만, 이는 너무 지루하여 실용적이지 않을 수 있다. 그 결과, 제작자가 더 높은 레벨에서 영상을 특정하기 위해 다양한 도구들을 사용한다. 일 예로서, 아티스트가 3차원 좌표계와 같은 장면 공간에서 개체들 및/또는 조명의 위치들, 뿐만 아니라 카메라 시점, 및 카메라 뷰 평면을 특정할 수 있다. 그로부터, 렌더링 엔진이 그것들의 모두를 입력들로서 취할 수 있고, 화소 컬러 값들의 각각을 프레임들의 각각에서 컴퓨팅할 수 있다. 다른 예에서, 아티스트가 각각의 프레임에서 유관절 개체를 표현하는 각각의 화소의 컬러를 특정하는 것이 아니라 얼마간의 특정된 텍스처를 갖는 해당 유관절 개체의 위치 및 움직임을 특정한다.
특정 예에서, 화소 컬러 값이 카메라 시점에서 해당 화소에 대응하는 카메라 뷰 평면의 지점 또는 부분을 통해 장면 공간에서 트레이싱되는 레이를 따라 놓이는 개체들을 컴퓨팅함으로써 결정되는 레이 트레이싱(ray tracing)을 렌더링 엔진이 수행한다. 예를 들어, 생성될 궁극적인 이미지의 화소들에 대응하는 그리드로 분할되는 장면 공간에서 위치를 갖는 직사각형으로서 카메라 뷰 평면이 표현될 수 있고, 장면 공간에서 카메라 시점에 의해 정의되는 레이와 해당 그리드에서의 주어진 화소가 먼저 입체의 불투명한 청색 개체와 교차하면, 주어진 해당 화소에는 컬러 청색이 배정된다. 물론, 현대의 컴퓨터에 의해 생성된 영상의 경우, 화소 컬러들을 결정하는 것 ― 과 이로써 영상을 생성하는 것 ― 은 더 복잡할 수 있는데, 조명 문제, 반사, 보간, 및 다른 고려사항들이 있기 때문이다.
도 13에 예시된 바와 같이, 라이브 액션 캡처 시스템(1302)이 스테이지(1304) 상에서 재생되는 라이브 장면을 캡처한다. 라이브 액션 캡처 시스템(1302)은 본 개시에서 더 상세히 설명될 것이지만, 컴퓨터 프로세싱 능력들, 이미지 프로세싱 능력들, 하나 이상의 프로세서들, 하나 이상의 프로세서들에 의해 실행 가능한 프로그램 명령어들을 저장하는 프로그램 코드 스토리지, 뿐만 아니라 사용자 입력 디바이스 및 사용자 출력 디바이스들을 포함할 수 있는데, 그것들의 모두가 도시된 것은 아니다.
특정 라이브 액션 캡처 시스템에서, 카메라들(1306(1) 및 1306(2))은 장면을 캡처하는 한편, 일부 시스템들에서는, 라이브 장면으로부터 정보를 캡처하는 다른 센서(들)(1308)(예컨대, 적외선 카메라들, 적외선 센서들, 모션 캡처("모캡") 검출기들 등)가 있을 수 있다. 스테이지(1304)에서, 인간 배우들, 동물 배우들, 무생물들, 배경 개체들, 및 아마도 컴퓨터에 의해 생성된 영상과 쉽게 중첩되는 방식으로 라이브 장면 기록 시에 캡처되도록 설계되는 녹색 스크린(1310)과 같은 사물이 있을 수 있다. 스테이지(1304)는 또한 캡처 동안 개체가 있었던 곳을 결정하기 위해 캡처 후에 사용될 수 있는 기점들(1312(1)~1312(3))과 같은 기점들로서 역할을 하는 개체들을 포함할 수 있다. 라이브 액션 장면이 하나 이상의 조명등들, 이를테면 오버헤드 조명등(1314)에 의해 조명될 수 있다.
라이브 액션 장면의 캡처 동안 또는 이후에, 라이브 액션 캡처 시스템(1302)은 라이브 액션 푸티지를 라이브 액션 푸티지 스토리지(1320)에 출력할 수 있다. 라이브 액션 프로세싱 시스템(1322)은 라이브 액션 푸티지를 프로세싱하여 해당 라이브 액션 푸티지에 관한 데이터를 생성하고 그 데이터를 라이브 액션 메타데이터 스토리지(1324) 안에 저장할 수 있다. 라이브 액션 프로세싱 시스템(1322)은 컴퓨터 프로세싱 능력들, 이미지 프로세싱 능력들, 하나 이상의 프로세서들, 하나 이상의 프로세서들에 의해 실행 가능한 프로그램 명령어들을 저장하는 프로그램 코드 스토리지, 뿐만 아니라 사용자 입력 디바이스 및 사용자 출력 디바이스들을 포함할 수 있는데, 그것들의 모두가 도시된 것은 아니다. 라이브 액션 프로세싱 시스템(1322)은 라이브 액션 푸티지를 프로세싱하여 한 프레임 또는 다수의 프레임들에서 개체들의 경계들을 결정하며, 라이브 액션 장면에서 개체들의 로케이션들, 일부 액션을 기준으로 카메라가 있었던 곳, 움직이는 개체들과 기점들 사이의 거리 등을 결정할 수 있다. 엘리먼트들이 자신들에게 부착되는 센서들을 갖거나 또는 검출되는 경우, 메타데이터는 오버헤드 조명등(1314)의 로케이션, 컬러, 및 세기를 포함할 수 있는데, 그 메타데이터가 컴퓨터에 의해 생성된 조명을 컴퓨터에 의해 생성되고 라이브 액션 푸티지 상에 오버레이되는 개체들에 일치시키기 위해 포스트 프로세싱에 유용할 수 있기 때문이다. 라이브 액션 프로세싱 시스템(1322)은 아마도 미리 결정된 프로그램 명령어들에 기초하여 자율적으로 동작하여, 라이브 액션 푸티지를 수신하고 입력할 시 라이브 액션 메타데이터를 생성하고 출력할 수 있다. 라이브 액션 푸티지는 카메라에 의해 캡처된 데이터 뿐만 아니라 다른 센서들로부터의 데이터일 수 있다.
애니메이션 생성 시스템(1330)이 시각적 콘텐츠 생성 시스템(1300)의 다른 일부이다. 애니메이션 생성 시스템(1330)은 컴퓨터 프로세싱 능력들, 이미지 프로세싱 능력들, 하나 이상의 프로세서들, 하나 이상의 프로세서들에 의해 실행 가능한 프로그램 명령어들을 저장하는 프로그램 코드 스토리지, 뿐만 아니라 사용자 입력 디바이스 및 사용자 출력 디바이스들을 포함할 수 있는데, 그것들의 모두가 도시된 것은 아니다. 애니메이션 생성 시스템(1330)은 생성될 영상의 세부사항들을 아마도 프로그램적으로 그리고/또는 상호교환적으로 특정하기 위해 애니메이션 아티스트들, 관리자들, 및 다른 자들에 의해 사용될 수 있다. 사용자 입력과 데이터 스토어(1332)로서 표시되는 데이터베이스 또는 다른 데이터 소스로부터의 데이터로부터, 애니메이션 생성 시스템(1330)은 개체들(예컨대, 말, 인간, 공, 찻주전자, 구름, 광원, 텍스처 등)을 나타내는 데이터를 생성하여 개체 스토리지(1334)에 출력하며, 장면을 나타내는 데이터를 생성하여 장면 디스크립션 스토리지(1336)에 출력하며, 그리고/또는 애니메이션 시퀀스들을 나타내는 데이터를 생성하여 애니메이션 시퀀스 스토리지(1338)에 출력할 수 있다.
장면 데이터는 개체들 및 다른 시각적 엘리먼트들의 로케이션들, 그것들의 파라미터들의 값들, 조명, 카메라 로케이션, 카메라 뷰 평면, 및 렌더링 엔진(1350)이 CGI 영상을 렌더링하는데 사용할 수 있는 다른 세부사항들을 나타낼 수 있다. 예를 들어, 장면 데이터는 카메라 시점의 로케이션들 및 영상을 렌더링할 뷰 위치와 함께 2차원 공간, 3차원 공간, 또는 다른 차원의 공간(이를테면 2.5차원 공간, 3/4 차원, 의사-3D 공간들 등)에서 특정되는 여러 유관절 캐릭터들, 배경 개체들, 조명 등의 로케이션들을 포함할 수 있다. 예를 들어, 장면 데이터는 비디오의 우측 절반에는 붉은 솜털 모양의 말하는 개가 있고 그 비디오의 좌측 절반에는 정지한 나무가 있으며, 그것들 모두가 카메라 시점의 위쪽의 뒤에 있는 밝은 점광원에 의해 조명됨을 나타낼 수 있다. 일부 경우들에서, 카메라 시점은 명시적이지 않지만, 응시(viewing) 절두체로부터 결정될 수 있다. 직사각형 뷰로 렌더링될 영상의 경우, 그 절두체는 각뿔대(truncated pyramid)일 수 있다. 렌더링된 뷰를 위한 다른 형상들이 가능하고 카메라 뷰 평면은 상이한 형상들에 대해 상이할 수 있다.
애니메이션 생성 시스템(1330)은 사용자가 애니메이션 시퀀스들, 장면 설명들, 개체 세부사항들 등에서 판독하고 그것들을 편집하고, 아마도 그것들을 스토리지에 반환하여 현존 데이터를 업데이트하거나 대체하는 것을 허용하는 상호작용식일 수 있다. 일 예로서, 오퍼레이터는 개체 스토리지로부터의 개체들을 그들 개체들을 더 단순한 형태들로 변환하고 그것들을 개체 스토리지(1334)에 새로운 또는 상이한 개체들로서 반환하는 베이킹 프로세서(1342) 안으로 읽어들일 수 있다. 예를 들어, 오퍼레이터는 수십 개의 특정된 파라미터들(이동가능 관절들, 컬러 옵션들, 텍스처들 등)을 갖는 개체를 판독하며, 그들 파라미터들에 대한 일부 값들을 선택한 다음 그들 파라미터들에 대해 지금 고정된 값들을 갖는 단순화된 개체인 베이킹된 개체를 저장할 수 있다.
장면의 각각의 세부사항의 사용자 사양을 요구하는 것이 아니라, 데이터 스토어(1332)로부터의 데이터가 개체 프레젠테이션을 구동하는데 사용될 수 있다. 예를 들어, 아티스트가 지구 표면을 통과하는 우주선의 애니메이션을 생성하고 있으면, 해안선을 수동으로 그리거나 또는 특정하는 대신, 아티스트는 애니메이션 생성 시스템(1330)이 지구 해안선들의 좌표들을 포함하는 파일에서 데이터 스토어(1332)로부터의 데이터를 판독하고 해당 해안선 데이터를 사용하여 장면의 배경 엘리먼트들을 생성하는 것을 특정할 수 있다.
애니메이션 시퀀스 데이터는 제어 가능한 속성들을 갖는 개체의 제어 지점들에 대한 데이터의 시계열 형태일 수 있다. 예를 들어, 개체가 전형적인 인간 움직임들과 유사한 방식들로 이동 가능한 팔다리들과 관절들을 갖는 인간형 캐릭터일 수 있다. 아티스트는 애니메이션 시퀀스를 "왼손이 시간 T1 내지 T2"에 걸쳐 로케이션 (X1, Y1, Z1)에서 (X2, Y2, Z2)로 이동하는" 것과 같이 높은 레벨에서, (예컨대, "팔꿈치 관절을 프레임당 2.5도 이동하는") 더 낮은 레벨에서 또는 (예컨대, "캐릭터 A는, P1 지점에서 특정된 경로를 따라 P2 지점으로, 이 장면에 대해 주어진 물리 법칙들에 일치하게 이동해야 하는") 매우 높은 레벨에서도 특정할 수 있다.
애니메이션화된 장면의 애니메이션 시퀀스들은 라이브 액션 장면에서 일어나는 일에 의해 특정될 수 있다. 애니메이션 드라이버 생성기(1344)가 라이브 액션 메타데이터, 이를테면 라이브 액션 장면 동안 라이브 배우의 신체 부위들의 움직임들 및 위치들을 나타내는 데이터를 판독할 수 있다. 애니메이션 드라이버 생성기(1344)는 CGI 개체를 애니메이션함에 있어서 사용하기 위해 애니메이션 시퀀스 스토리지(1338)에 저장될 해당 애니메이션 파라미터들을 생성할 수 있다. 이는 착용 모캡 기점들(예컨대, 배우 의상 겉면의 고대비 마커들, 배우 피부, 얼굴 등 상의 고가시성 페인트) 및 그들 기점들의 움직임이 라이브 액션 프로세싱 시스템(1322)에 의해 결정되는 동안 인간 배우의 라이브 액션 장면이 캡처되는 경우 유용할 수 있다. 애니메이션 드라이버 생성기(1344)는 해당 움직임 데이터를 유관절 CGI 캐릭터의 관절들이 시간이 지남에 따라 어떻게 이동하는지의 사양들로 변환할 수 있다.
렌더링 엔진(1350)은 애니메이션 시퀀스들, 장면 설명들, 및 개체 세부사항들, 뿐만 아니라 렌더링 엔진 제어 입력들, 이를테면 해상도 선택과 렌더링 파라미터 세트를 판독할 수 있다. 얼마간의 상호작용 또는 방향을 테스트하기 위해 영화 마커에 대한 명료도보다 속력이 더 중요할 경우 해상도 선택은 렌더링의 속력과 세부사항의 명료도 사이의 절충을 제어하는데 유용할 수 있는 반면, 배포될 장편 영화들의 최종 인쇄물들에 대해 사용될 데이터를 생성하기 위한 영화 마커에 대해서는 명료도가 속력보다 더 중요할 수 있다. 렌더링 엔진(1350)은 컴퓨터 프로세싱 능력들, 이미지 프로세싱 능력들, 하나 이상의 프로세서들, 하나 이상의 프로세서들에 의해 실행 가능한 프로그램 명령어들을 저장하는 프로그램 코드 스토리지, 뿐만 아니라 사용자 입력 디바이스 및 사용자 출력 디바이스들을 포함할 수 있는데, 그것들의 모두가 도시된 것은 아니다.
시각적 콘텐츠 생성 시스템(1300)은 또한 라이브 푸티지를 애니메이션화된 콘텐츠와 병합하는 병합 시스템(1360)을 포함할 수 있다. 라이브 푸티지는 라이브 액션 푸티지를 획득하기 위해 라이브 액션 푸티지 스토리지(1320)로부터 판독함으로써, 라이브 액션 장면에서의 개체들을 그것들의 배경으로부터 세그먼트화하는 캡처된 이미지들에서의 추정된 세그먼트화와 같은 세부사항들을 획득하기 위해 라이브 액션 메타데이터 스토리지(1324)로부터 판독함(아마도 녹색 스크린(1310)이 라이브 액션 장면의 일부였다는 사실에 의해 도움을 받음)으로써, 그리고 렌더링 엔진(1350)으로부터 CGI 영상을 획득함으로써 획득되고 입력될 수 있다.
병합 시스템(1360)은 또한 병합/결합용 규칙세트 스토리지(1362)로부터 데이터를 판독할 수 있다. 규칙세트에서의 규칙의 매우 간단한 예는 "라이브 푸티지로부터의 2차원 화소 어레이를 포함하는 전체 이미지를 획득하며, 렌더링 엔진(1350)으로부터 2차원 화소 어레이를 포함하는 전체 이미지를 획득하며, 라이브 푸티지에서의 대응하는 화소가 녹색의 특정 컬러일 때 각각의 화소가 렌더링 엔진(1350)으로부터의 대응하는 화소인 경우 이미지를 출력하고, 아니면 라이브 푸티지에서의 대응하는 화소로부터 화소 값을 출력하는 것"일 수 있다.
병합 시스템(1360)은 컴퓨터 프로세싱 능력들, 이미지 프로세싱 능력들, 하나 이상의 프로세서들, 하나 이상의 프로세서들에 의해 실행 가능한 프로그램 명령어들을 저장하는 프로그램 코드 스토리지, 뿐만 아니라 사용자 입력 디바이스 및 사용자 출력 디바이스들을 포함할 수 있는데, 그것들의 모두가 도시된 것은 아니다. 병합 시스템(1360)은 프로그래밍 명령어들을 따라 자율적으로 동작할 수 있거나, 또는 오퍼레이터가 병합 프로세스를 제어할 수 있게 하는 사용자 인터페이스 또는 프로그램 인터페이스를 가질 수 있다. 일부 실시예들에서, 오퍼레이터가 병합 프로세스에서 사용할 파라미터 값들을 특정할 수 있으며 그리고/또는 세그먼트화된 개체들의 경계들을 수정하는 것, 불완전함을 평활화하기 위해 블러들(blurs)을 삽입하는 것, 또는 다른 효과를 추가하는 것과 같이 병합 시스템(1360)의 출력에 대해 이루어질 특정 미조정들(tweaks)을 특정할 수 있다. 자신의 입력들에 기초하여, 병합 시스템(1360)은 정적 이미지 스토리지(1370)에 저장될 이미지 및/또는 이미지들의 시퀀스를 애니메이션화된/결합된 비디오 스토리지(1372)에 저장될 비디오 형태로 출력할 수 있다.
따라서, 설명된 바와 같이, 시각적 콘텐츠 생성 시스템(1300)은 본 개시에서 일부가 더 상세히 설명되는 다양한 컴포넌트들 및 도구들을 사용하여 라이브 액션을 컴퓨터 생성된 애니메이션과 결합하는 비디오를 생성하는데 사용될 수 있다. 시각적 콘텐츠 생성 시스템(1300)이 적합한 세팅들을 이용하여 이러한 조합들에 대해 유용할 수 있지만, 전체 라이브 액션 푸티지 또는 전체 CGI 시퀀스들을 출력하는데 사용될 수 있다. 그 코드는 또한 일시적인 컴퓨터 판독가능 매체, 예컨대, 송신 매체에 의해 이를테면 네트워크를 통해 송신되는 신호 형태로 제공 및/또는 운반될 수 있다.
하나의 실시예에 따르면, 본 명세서에서 설명되는 기법들은 펌웨어, 메모리, 다른 스토리지, 또는 조합에서 프로그램 명령어들에 의하여 기법들을 수행하도록 프로그래밍된 하나 이상의 일반화된 컴퓨팅 시스템들에 의해 구현된다. 그 기법들을 구현하기 위해 하드-와이어드 및/또는 프로그램 로직을 통합하는 데스크톱 컴퓨터 시스템들, 휴대용 컴퓨터 시스템들, 핸드헬드 디바이스들, 네트워킹 디바이스들 또는 임의의 다른 디바이스과 같은 특수 목적 컴퓨팅 디바이스들이 사용될 수 있다.
도 14는 본 개시에서 설명되는 시스템들의 컴퓨터 시스템들 및/또는 시각적 콘텐츠 생성 시스템(1300)(도 13 참조)이 구현될 수 있는 예시적인 컴퓨터 시스템(1400)을 예시하는 블록도이다. 컴퓨터 시스템(1400)은 정보를 통신하기 위한 버스(1402) 또는 다른 통신 메커니즘과, 버스(1402)에 커플링되어 정보를 프로세싱하는 프로세서(1404)를 포함한다. 프로세서(1404)는, 예를 들어, 범용 마이크로프로세서일 수 있다.
컴퓨터 시스템(1400)은 버스(1402)에 커플링되어 프로세서(1404)에 의해 실행될 명령어들과 정보를 저장하는 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스와 같은 메인 메모리(1406)를 또한 포함한다. 메인 메모리(1406)는 또한 프로세서(1404)에 의해 실행될 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는데 사용될 수 있다. 이러한 명령어들은, 프로세서(1404)에 액세스 가능한 비일시적 저장 매체에 저장될 때, 그 명령어들에 특정된 동작들을 수행하도록 커스터마이징된 특수-목적 머신으로 컴퓨터 시스템(1400)을 렌더링한다.
컴퓨터 시스템(1400)은 버스(1402)에 커플링되어 프로세서(1404)를 위한 정적 정보 및 명령어들을 저장하는 판독 전용 메모리(ROM)(1408) 또는 다른 정적 저장 디바이스를 더 포함한다. 저장 디바이스(1410), 이를테면 자기 디스크 또는 광학적 디스크가, 버스(1402)에 제공되고 커플링되어 정보 및 명령어들을 저장한다.
컴퓨터 시스템(1400)은 버스(1402)를 통해 디스플레이(1412), 이를테면 컴퓨터 모니터에 커플링되어, 정보를 컴퓨터 사용자에게 디스플레이할 수 있다. 영숫자 및 다른 키들을 포함하는 입력 디바이스(1414)가, 버스(1402)에 커플링되어 정보 및 커맨드 선택들을 프로세서(1404)에 전달한다. 다른 유형의 사용자 입력 디바이스가 방향 정보 및 커맨드 선택들을 프로세서(1404)에 전달하고 디스플레이(1412) 상의 커서 움직임을 제어하는 커서 컨트롤(1416), 이를테면 마우스, 트랙볼, 또는 커서 방향 키들이다. 이 입력 디바이스는, 디바이스가 평면에서의 위치들을 특정하는 것을 허용하는, 두 개의 축들인 제1 축(예컨대, x) 및 제2 축(예컨대, y)에서의 2의 자유도를 통상적으로 가진다.
컴퓨터 시스템(1400)은 컴퓨터 시스템과 조합하여 컴퓨터 시스템(1400)을 특수 목적 머신이 되도록 하거나 또는 프로그래밍하는 커스터마이징된 하드-와이어드 로직, 하나 이상의 ASIC들 또는 FPGA들, 펌웨어 및/또는 프로그램 로직을 사용하여 본 개시에서 설명되는 기법들을 구현할 수 있다. 하나의 실시예에 따르면, 본 개시의 기법들은 프로세서(1404)가 메인 메모리(1406)에 포함된 하나 이상의 명령어들의 하나 이상의 시퀀스들을 실행하는 것에 응답하여 컴퓨터 시스템(1400)에 의해 수행된다. 이러한 명령어들은 다른 저장 매체, 이를테면 저장 디바이스(1410)로부터 메인 메모리(1406) 안으로 판독될 수 있다. 메인 메모리(1406)에 포함되는 명령어들의 시퀀스들의 실행이 프로세서(1404)로 하여금 본 개시에서 설명되는 프로세스 단계들을 수행하게 한다. 대체 실시예들에서, 하드-와이어드 회로부가 소프트웨어 명령어들 대신 또는 그러한 명령어들과 조합하여 사용될 수 있다.
본 명세서에서 사용되는 바와 같은 "저장 매체"라는 용어는 머신이 특정 방식으로 동작하게 하는 데이터 및/또는 명령어들을 저장하는 임의의 비-일시적 매체를 지칭한다. 이러한 저장 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체는, 예를 들어, 광학적 또는 자기 디스크들, 이를테면 저장 디바이스(1410)를 포함한다. 휘발성 매체는 동적 메모리, 이를테면 메인 메모리(1406)를 포함한다. 공통 형태들의 저장 매체들은, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 고체 상태 드라이브, 자기 테이프, 또는 임의의 다른 자기 데이터 저장 매체, CD-ROM, 임의의 다른 광학적 데이터 저장 매체, 홀들의 패턴들을 갖는 임의의 물리적 매체, RAM, PROM, EPROM, 플래시-EPROM, NVRAM, 임의의 다른 메모리 칩 또는 카트리지를 포함한다.
저장 매체는 송신 매체와는 별개이지만 송신 매체와 연계하여 사용될 수 있다. 송신 매체는 저장 매체 사이에 정보를 전송함에 있어서 참여한다. 예를 들어, 송신 매체는 버스(1402)를 포함하는 와이어들을 포함하여, 동축 케이블들, 구리 와이어, 및 광섬유들을 포함한다. 송신 매체는 또한 라디오파 및 적외선 데이터 통신들 동안 생성된 것들과 같은 음향 또는 광 파들의 형태를 취할 수 있다.
다양한 형태들의 매체들이 하나 이상의 명령어들의 하나 이상의 시퀀스들을 실행을 위해 프로세서(1404)로 운반함에 있어서 관련될 수 있다. 예를 들어, 그 명령어들은 초기에는 원격 컴퓨터의 자기 디스크 또는 고체 상태 드라이브 상에서 운반될 수 있다. 원격 컴퓨터는 그 명령어들을 자신의 동적 메모리에 로딩하고 그 명령어들을 네트워크 연결을 통해 전송할 수 있다. 컴퓨터 시스템(1400)에 로컬인 모뎀 또는 네트워크 인터페이스가 데이터를 수신할 수 있다. 버스(1402)는 데이터를 메인 메모리(1406)로 운반하며, 그 메인 메모리로부터 프로세서(1404)는 명령어들을 취출하고 실행한다. 메인 메모리(1406)에 의해 수신된 명령어들은 프로세서(1404)에 의한 실행 전 또는 후 중 어느 하나에 저장 디바이스(1410) 상에 옵션적으로 저장될 수 있다.
컴퓨터 시스템(1400)은 버스(1402)에 커플링된 통신 인터페이스(1418)를 또한 포함한다. 통신 인터페이스(1418)는 로컬 네트워크(1422)에 연결되는 네트워크 링크(1420)에 커플링되는 양방향 데이터 통신을 제공한다. 예를 들어, 통신 인터페이스(1418)는 데이터 통신 연결을 해당 유형의 전화선 또는 통신선에 제공하기 위한 네트워크 카드, 모뎀, 케이블 모뎀, 또는 위성 모뎀일 수 있다. 무선 링크들이 또한 구현될 수 있다. 임의의 이러한 구현예에서, 통신 인터페이스(1418)는 다양한 유형들의 정보를 표현하는 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광 신호들을 전송하고 수신한다.
네트워크 링크(1420)는 하나 이상의 네트워크들을 통한 다른 데이터 디바이스들로의 데이터 통신을 통상적으로 제공한다. 예를 들어, 네트워크 링크(1420)는 호스트 컴퓨터(1424)에 또는 인터넷 서비스 제공자(ISP)(1426)에 의해 동작되는 데이터 장비에 로컬 네트워크(1422)를 통한 연결을 제공할 수 있다. 결국 ISP(1426)는 이제 "인터넷"(1428)이라고 일반적으로 지칭되는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스들을 제공한다. 로컬 네트워크(1422)와 인터넷(1428) 둘 다는 디지털 데이터 스트림들을 운반하는 전기, 전자기 또는 광학적 신호들을 사용한다. 디지털 데이터를 컴퓨터 시스템(1400)에 대해 운반하는 다양한 네트워크들을 통한 신호들과 네트워크 링크(1420) 상의 그리고 통신 인터페이스(1418)를 통하는 신호들은 예시적인 송신 매체 형태들이다.
컴퓨터 시스템(1400)은 네트워크(들), 네트워크 링크(1420), 및 통신 인터페이스(1418)를 통해 메시지들을 전송하고 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버(1430)는 인터넷(1428), ISP(1426), 로컬 네트워크(1422), 및 통신 인터페이스(1418)를 통해 애플리케이션 프로그램에 대한 요청된 코드를 송신할 수 있다. 수신된 코드는 수신될 때 프로세서(1404)에 의해 실행될 수 있으며, 그리고/또는 저장 디바이스(1410), 또는 다른 비휘발성 스토리지에 나중의 실행을 위해 저장될 수 있다.
본 개시에서 설명되는 프로세스들의 동작들은 본 개시에서 달리 나타내거나 또는 맥락에 의해 분명히 부정하지 않는 한 임의의 적합한 순서로 수행될 수 있다. 본 개시에서 설명되는 프로세스들(또는 변형들 및/또는 그 조합들)은 실행가능 명령어들로 구성되는 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있고, 하나 이상의 프로세서들 상에서, 하드웨어, 또는 그 조합들에 의해 집단적으로 실행하는 코드(예컨대, 실행가능 명령어들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로서 구현될 수 있다. 그 코드는, 예를 들어 하나 이상의 프로세서들에 의해 실행 가능한 복수의 명령어들을 포함하는 컴퓨터 프로그램 형태로, 컴퓨터 판독가능 저장 매체 상에 저장될 수 있다. 컴퓨터 판독가능 저장 매체는 비일시적일 수 있다. 그 코드는 또한 일시적인 컴퓨터 판독가능 매체, 예컨대, 송신 매체에 의해 이를테면 네트워크를 통해 송신되는 신호 형태로 제공 운반될 수 있다.
연결 언어표현, 이를테면 "A, B, 및 C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나" 형태의 문구들은, 구체적으로 달리 명시되지 않는 한 또는 아니면 문맥상 명백하게 모순되지 않는 한, 항목, 용어 등이 A 또는 B 또는 C 중 어느 하나, 또는 A와 B와 C의 세트의 임의의 비어 있지 않은 서브세트일 수 있음을 나타내기 위해 일반적으로 사용되는 바와 같은 맥락으로 이해된다. 예를 들면, 세 개의 구성원들을 갖는 세트의 예시적인 예에서, "A, B, 및 C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나"라는 연결 문구들은 다음 세트들 중 임의의 것을 의미한다: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. 따라서, 이러한 연결 언어표현은 특정한 실시예들이 각기 제시될 적어도 하나의 A, 적어도 하나의 B 및 적어도 하나의 C를 요구함을 의미하도록 일반적으로 의도되지 않는다.
방향 참조들, 예컨대, 상부, 하부, 내부, 외부, 상향, 하향, 좌측, 우측, 전방, 후방, 상단, 하단, 위, 아래, 수직, 및 수평은 독자의 청구된 요지의 이해를 돕는 식별 목적으로 사용되고, 특히 시뮬레이션되는 개체들의 위치 또는 배향, 또는 표면 컴퓨테이션 방법의 사용에 관해, 제한을 만들려고 의도되지는 않았다. 단어 "포함하는"은 다른 엘리먼트들 또는 단계들을 배제하지 않고, 부정관사 "a" 또는 "an"의 사용에 해당한다고 여겨질 국어 표현은 복수형을 배제하지 않는다. 청구항들에서 달리 언급되지 않는 한, 언급된 값들은 예시 목적으로만 해석되어야 하고 제한하는 것으로 간주되지 않아야 한다.
본 개시에서 제공되는 예들의 사용, 또는 예시적인 언어표현(예컨대, "이를테면")은, 본 발명의 실시예들을 더 잘 예시하도록만 의도되고 달리 청구되지 않는 한 발명의 범위에 대한 제한을 제기하지 않는다. 명세서에서의 언어표현은 본 발명의 실시에 필수적인 것으로서 임의의 비-청구된 엘리먼트를 나타내는 것으로서 해석되어서는 안 된다.
전술한 명세서에서, 본 발명의 실시예들은 구현예마다 가변할 수 있는 수많은 특정 세부사항들을 참조하여 설명되었다. 명세서 및 도면들은, 따라서, 제한하는 의미보다는 예시적인 것으로 간주되는 것들이다. 본 발명의 범위의 단독 및 배타적 표시자와, 본 발명의 범위인 것으로 출원인들에 의해 의도된 것은 임의의 후속하는 정정을 포함하는 본 출원서에서 공표한 청구항들의 세트의, 이러한 청구항들이 공표하는 특정 형태의, 문언적 및 동등한 범위이다.
추가의 실시예들은 본 개시내용을 읽은 후 당해 기술분야의 통상의 기술자가 상상할 수 있다. 다른 실시예들에서, 위에서 개시된 본 발명의 조합 또는 하위 조합들은 유리하게 이루어질 수 있다. 컴포넌트들의 예시적인 배열들은 예시의 목적으로 도시되고 조합, 추가, 재배열 등은 본 발명의 대체 실시예들에서 고려된다. 따라서, 본 발명이 예시적인 실시예들에 관해 설명되었지만, 본 기술분야의 통상의 기술자는 수많은 수정들이 가능함을 인식할 것이다.
예를 들어, 본 개시에서 설명되는 프로세스들은 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들, 및/또는 그것들의 임의의 조합을 사용하여 구현될 수 있다. 명세서 및 도면들은, 따라서, 제한하는 의미보다는 예시적인 것으로 간주되는 것들이다. 그러나, 다양한 수정들 및 변경들이 청구항에서 언급된 바와 같은 본 발명의 더 넓은 정신 및 범위로부터 벗어남없이 본 발명에 대해 이루어질 수 있다는 것과 본 발명은 다음의 청구항들의 범위 내의 모든 수정들 및 동등물들을 커버하도록 의도된다는 것이 명백할 것이다.
본 명세서에서 인용되는 공개들, 특허 출원들, 및 특허들을 포함하는 모든 참고문헌들은, 각각의 참고문헌이 개별적으로 그리고 구체적으로 인용에 의해 포함될 것으로 나타내어졌고 그 전부가 본 명세서에서 언급되었던 것처럼 동일한 정도로 참조로 본 명세서에서 포함된다.
특허 출원서들, 다른 외부 문서들, 또는 다른 정보 소스들이 참조되는 이 명세서에서, 이러한 참조는 일반적으로 본 발명의 특징들을 논의하기 위한 맥락을 제공하기 위한 것이다. 구체적으로 달리 명시되지 않는 한, 이러한 외부 문서들 또는 이러한 정보 소스들에 대한 참조가 이러한 문서들 또는 이러한 정보 소스들이, 임의의 관할권에서, 선행 기술이거나 또는 해당 기술분야의 일반 지식의 일부를 형성한다는 것을 인정하는 것으로 해석되지 않아야 한다.

Claims (17)

  1. 시뮬레이션되는 개체들의 표면들을 모델링하는 컴퓨터에 의해 구현되는 방법으로서,
    실행가능 명령어들로 구성되는 하나 이상의 컴퓨터 시스템들의 제어 하에:
    제1 개체를 포함하는 복수의 입자들 중 각각의 입자에 대한 위치들 및 사이즈들을 수신하는 단계;
    위치들이 상기 제1 개체의 제1 내재 표면에 근접하는 상기 복수의 입자들의 서브세트를 식별하는 단계;
    상기 복수의 입자들의 적어도 일부 입자들 중 각각의 입자에 대한 공분산 행렬 ― 상기 공분산 행렬은 비선형 함수에 의해 연산되는 대각 스트레치 행렬에 해당하고 상기 대각 스트레치 행렬은 상기 복수의 입자들 중 적어도 일부 입자들에 대한 이웃 입자들의 대각 스트레치 행렬임 ―을 생성함으로써 변형된 입자들의 세트를 형성하기 위해 상기 복수의 입자들의 상기 서브세트의 입자들을 변형하는 단계; 및
    상기 변형된 입자들의 세트에 기초하여 상기 제1 개체의 상기 제1 내재 표면의 새로운 형상 또는 위치를 컴퓨팅하는 단계
    를 포함하는, 컴퓨터에 의해 구현되는 방법.
  2. 제1항에 있어서, 상기 비선형 함수는 제곱근을 포함하는, 컴퓨터에 의해 구현되는 방법.
  3. 제1항에 있어서, 상기 복수의 입자들 중 상기 적어도 일부의 입자들은 구형인, 컴퓨터에 의해 구현되는 방법.
  4. 제1항에 있어서, 상기 변형된 입자들의 적어도 일부는 타원체형인, 컴퓨터에 의해 구현되는 방법.
  5. 제1항에 있어서, 상기 복수의 입자들의 상기 서브세트의 상기 입자들을 변형하는 단계는 상기 제1 개체의 상기 제1 내재 표면에 평행한 상기 서브세트의 상기 입자들의 축들을 신장시키는 단계를 수반하는, 컴퓨터에 의해 구현되는 방법.
  6. 제1항에 있어서, 상기 제1 개체는 고체인, 컴퓨터에 의해 구현되는 방법.
  7. 제1항에 있어서, 상기 제1 개체는 반고체 또는 유체인, 컴퓨터에 의해 구현되는 방법.
  8. 제1항에 있어서, 상기 제1 개체의 상기 제1 내재 표면의 형상 또는 위치가 상기 제1 개체의 제2 개체의 제2 표면과의 상호작용에 기초하여 변경되는, 컴퓨터에 의해 구현되는 방법.
  9. 제1항에 있어서,
    상기 제1 개체를 포함하는 상기 복수의 입자들 중 각각의 입자에 대한 질량을 수신하는 단계;
    상기 제1 개체를 포함하는 상기 복수의 입자들 중 적어도 하나의 입자에 작용하는 컴퓨팅된 압력, 밀도, 또는 힘을 컴퓨팅하는 단계; 및
    상기 컴퓨팅된 압력, 밀도, 또는 힘에 기초하여 상기 적어도 하나의 입자의 상기 위치들을 변경하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  10. 제1항에 있어서, 상기 제1 개체를 포함하는 상기 입자들의 상기 위치들 및 사이즈들은 시뮬레이션으로부터 수신되는, 컴퓨터에 의해 구현되는 방법.
  11. 제1항에 있어서, 상기 제1 개체를 포함하는 상기 입자들의 상기 위치들 및 사이즈들은 스캐닝 디바이스로부터 수신되는, 컴퓨터에 의해 구현되는 방법.
  12. 제1항에 있어서, 위치들이 상기 제1 개체의 상기 제1 내재 표면에 근접하는 상기 복수의 입자들의 상기 서브세트를 식별하는 단계는, 사용자 정의된 탐색 반경에 기초하여 상기 복수의 입자들 중 각각의 입자의 가중 평균 및 공분산 행렬을 컴퓨팅하는 단계를 수반하는, 컴퓨터에 의해 구현되는 방법.
  13. 제1항에 있어서, 상기 변형된 입자들에 기초하여 상기 제1 개체의 상기 제1 내재 표면의 새로운 형상 또는 위치를 컴퓨팅하는 단계는 스칼라장의 등가표면을 컴퓨팅하는 단계를 수반하는, 컴퓨터에 의해 구현되는 방법.
  14. 제1항에 있어서, 상기 제1 개체의 상기 제1 내재 표면의 시각적 표현을 생성하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  15. 제8항에 있어서, 상기 제2 개체의 상기 제2 표면의 시각적 표현을 생성하는 단계를 더 포함하는, 컴퓨터에 의해 구현되는 방법.
  16. 시뮬레이션되는 개체들의 표면들을 모델링하는 컴퓨터 시스템으로서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 제1항의 방법을 수행하게 하는 명령어들을 저장하는 컴퓨터 판독가능 매체
    를 포함하는 컴퓨터 시스템.
  17. 명령어들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령어들은, 컴퓨터 시스템의 적어도 하나의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 제1항의 방법을 수행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020227000466A 2020-02-28 2021-02-26 애니메이션 생성 및 다른 목적들을 위해 시뮬레이션되는 표면들을 컴퓨팅하는 방법 KR20220103088A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202062983534P 2020-02-28 2020-02-28
US62/983,534 2020-02-28
US17/184,336 US11354878B2 (en) 2020-02-28 2021-02-24 Method of computing simulated surfaces for animation generation and other purposes
US17/184,336 2021-02-24
PCT/NZ2021/050031 WO2021173016A1 (en) 2020-02-28 2021-02-26 Method of computing simulated surfaces for animation generation and other purposes

Publications (1)

Publication Number Publication Date
KR20220103088A true KR20220103088A (ko) 2022-07-21

Family

ID=77463665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227000466A KR20220103088A (ko) 2020-02-28 2021-02-26 애니메이션 생성 및 다른 목적들을 위해 시뮬레이션되는 표면들을 컴퓨팅하는 방법

Country Status (6)

Country Link
US (3) US11455780B2 (ko)
EP (1) EP3966787A1 (ko)
KR (1) KR20220103088A (ko)
CA (1) CA3143520C (ko)
GB (1) GB2599533A (ko)
WO (2) WO2021173016A1 (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8786613B2 (en) 2006-04-08 2014-07-22 Alan Millman Method and system for interactive simulation of materials and models
US8199148B2 (en) 2007-08-06 2012-06-12 Digital Domain Productions, Inc. System and method for surfacing of particle systems
US20110282641A1 (en) * 2010-05-16 2011-11-17 Stefan Bobby Jacob Xenos Method and system for real-time particle simulation
JP5398803B2 (ja) 2011-09-09 2014-01-29 本田技研工業株式会社 色彩分布設計支援システム
US9613449B2 (en) 2013-10-18 2017-04-04 Nvidia Corporation Method and apparatus for simulating stiff stacks
US10410431B2 (en) 2017-07-11 2019-09-10 Nvidia Corporation Skinning a cluster based simulation with a visual mesh using interpolated orientation and position

Also Published As

Publication number Publication date
WO2021173015A1 (en) 2021-09-02
US11354878B2 (en) 2022-06-07
EP3966787A1 (en) 2022-03-16
CA3143520C (en) 2023-03-21
US20210272378A1 (en) 2021-09-02
GB202117890D0 (en) 2022-01-26
CA3143520A1 (en) 2021-09-02
GB2599533A (en) 2022-04-06
WO2021173016A1 (en) 2021-09-02
US20210272343A1 (en) 2021-09-02
US11455780B2 (en) 2022-09-27
US20230072712A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
US11625882B2 (en) Method for simulating fluids interacting with submerged porous materials
US11010952B1 (en) Method and user interface for generating tangent vector fields usable for generating computer-generated imagery
US20230025285A1 (en) Method for Generating Simulations of Fluid Interfaces for Improved Animation of Fluid Interactions
US20220375152A1 (en) Method for Efficiently Computing and Specifying Level Sets for Use in Computer Simulations, Computer Graphics and Other Purposes
US11423613B2 (en) Method for generating splines based on surface intersection constraints in a computer image generation system
US11055911B1 (en) Method of generating surface definitions usable in computer-generated imagery to include procedurally-generated microdetail
CA3143520C (en) Method of computing simulated surfaces for animation generation and other purposes

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application