KR20240055025A - 실용 3d 에셋을 위한 추론된 골격 구조 - Google Patents

실용 3d 에셋을 위한 추론된 골격 구조 Download PDF

Info

Publication number
KR20240055025A
KR20240055025A KR1020247010066A KR20247010066A KR20240055025A KR 20240055025 A KR20240055025 A KR 20240055025A KR 1020247010066 A KR1020247010066 A KR 1020247010066A KR 20247010066 A KR20247010066 A KR 20247010066A KR 20240055025 A KR20240055025 A KR 20240055025A
Authority
KR
South Korea
Prior art keywords
joint
data model
avatar data
avatar
model
Prior art date
Application number
KR1020247010066A
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 KR20240055025A publication Critical patent/KR20240055025A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20036Morphological image processing
    • G06T2207/20044Skeletonization; Medial axis transform

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Geometry (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)

Abstract

일부 구현은 실용 3D 에셋을 생성하기 위해 골격 구조를 추론하기 위한 방법, 시스템 및 컴퓨터 판독 가능 매체와 관련된다. 사용자는 서로 다른 부모 모델의 서로 다른 부분을 사용하여 아바타를 생성할 수 있다. 생성 시 아바타의 데이터 모델을 검사하여 관절 배치를 결정하고 전체 골격 구조를 추론한다. 그 후, 관절 배치 및 움직임을 기반으로 애니메이션 중 아바타 스킨을 변형하기 위해 다양한 스키닝 기술이 사용될 수 있다.

Description

실용 3D 에셋을 위한 추론된 골격 구조
본 출원은 35 U.S.C. § 119(e)에 따라 2021년 10월 14일에 출원된 미국 특허 가출원 번호 제63/255,489호 및 2022년 9월 8일에 출원된 미국 특허 가출원 번호 제63/404,871호에 대해 우선권을 주장하는 국제 출원이며, 두 출원 모두 그 전체 내용이 참조로 여기에 포함된다.
실시예는 일반적으로 온라인 가상 경험 플랫폼에 관한 것이며, 특히 실용 3D 에셋(practical 3D asset)을 위한 추론된 골격 구조를 생성하기 위한 방법, 시스템 및 컴퓨터 판독 가능 매체에 관한 것이다.
가상 경험 플랫폼 및 온라인 게이밍 플랫폼과 같은 온라인 플랫폼에는 사용자와 개발자가 사용할 수 있는 아바타 및 아바타 편집 제품군(editing suite)이 포함될 수 있다.
여기에서 제공된 배경 설명은 본 개시의 맥락을 제시하는 목적을 위한 것이다. 출원 당시 선행 기술로 달리 자격이 없을 수 있는 설명의 양태뿐만 아니라, 이 배경 섹션에 설명된 범위 내에서 현재 명명된 발명가의 작업은 명시적으로나 묵시적으로 본 개시에 대한 선행 기술로 인정되지 않는다.
본 개시의 양상은 실용 3D 에셋을 위한 추론된 골격 구조를 생성하기 위한 방법, 시스템 및 컴퓨터 판독 가능 매체에 관한 것이다.
한 양상에서, 컴퓨터 구현 방법이 설명된다. 컴퓨터 구현 방법은 3차원(3D) 아바타에 대한 아바타 데이터 모델을 수신하는 단계 - 상기 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위 및 제2 부모 모델로부터의 제2 신체 부위를 포함하며, 상기 제1 부모 모델 및 상기 제2 부모 모델은 서로 다른 3D 모델임 -; 상기 아바타 데이터 모델에 대한 그래프 표현을 생성하는 단계 - 상기 그래프 표현은 상기 아바타 데이터 모델에 대한 선택된 루트 포인트에서 시작하여 상기 아바타 데이터 모델의 단말 부분까지 연장됨 -; 복수의 관절 위치를 결정하기 위해 상기 그래프 표현을 통과하는(traversing) 단계 - 상기 관절 위치는 각각 관절이 배치될 각각의 위치를 나타내고, 상기 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위의 설명, 또는 서로 다른 신체 부위 사이의 연결에 기초하여 결정됨 -; 모든 관절에 대해 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고, 그 골격 부분은 상기 제1 관절과 상기 제2 관절 중 하나 또는 둘 모두의 운동에 의해 회전하도록 상기 복수의 관절 위치 사이의 골격 구조를 추론하는 단계; 및 실용 3D 에셋을 생성하기 위해 상기 복수의 관절 위치 각각에서의 관절, 상기 추론된 골격 구조, 및 상기 아바타 데이터 모델을 결합하는 단계를 포함할 수 있다.
컴퓨터 구현 방법의 다양한 구현이 설명된다.
일부 구현에서, 컴퓨터 구현 방법은 가상 경험의 가상 환경에서 실용 3D 에셋을 애니메이션화하는 단계를 더 포함한다.
일부 구현에서, 실용 3D 에셋을 애니메이션화하는 단계는 실용 3D 에셋의 애니메이션 중 스킨 변형을 위해 추론된 골격 구조를 활용하는 단계를 포함한다.
일부 구현에서, 그래프 표현은 아바타 데이터 모델의 개별 신체 부위를 나타내는 복수의 노드를 포함한다.
일부 구현에서, 그래프 표현은 복수의 에지를 더 포함하고, 복수의 에지의 각각의 에지는 적어도 2개의 노드 사이에서 연장되고, 복수의 에지의 각각의 에지는 관절 위치를 나타낸다.
일부 구현에서, 복수의 관절 위치에서 결합된 각각의 관절은 애니메이션화된 관절 또는 고정 관절을 포함한다.
일부 구현에서, 컴퓨터 구현 방법은 적어도 추론된 골격 구조에 기초하여 실용 3D 에셋을 스키닝하는 단계를 더 포함한다.
일부 구현에서, 그래프 표현을 통과하는 단계는: 깊이 우선 탐색 또는 너비 우선 탐색 중 하나 이상을 포함한다.
일부 구현에서, 그래프 표현은 아바타 데이터 모델의 개별 신체 부위의 스케일에 기초하여 에지에 할당된 가중치를 갖는 가중치 그래프를 포함한다.
일부 구현에서, 제1 부모 모델 또는 제2 부모 모델 중 하나 이상은 가상 경험 플랫폼의 사용자 생성 콘텐츠이다.
다른 양상에서, 시스템이 설명된다. 시스템은 명령어가 저장된 메모리; 및 상기 메모리에 연결되고 상기 메모리에 액세스하도록 동작 가능한 처리 장치를 포함하며, 상기 명령어는 상기 처리 장치에 의해 실행될 때 상기 처리 장치가: 3차원(3D) 아바타에 대한 아바타 데이터 모델을 수신하는 것 - 상기 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위 및 제2 부모 모델로부터의 제2 신체 부위를 포함하며, 상기 제1 부모 모델 및 상기 제2 부모 모델은 서로 다른 3D 모델임 -; 상기 아바타 데이터 모델에 대한 그래프 표현을 생성하는 것 - 상기 그래프 표현은 상기 아바타 데이터 모델에 대한 선택된 루트 포인트에서 시작하여 상기 아바타 데이터 모델의 단말 부분까지 연장됨 -; 복수의 관절 위치를 결정하기 위해 상기 그래프 표현을 통과하는 것 - 상기 관절 위치는 각각 관절이 배치될 각각의 위치를 나타내고, 상기 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위의 설명, 또는 서로 다른 신체 부위 사이의 연결에 기초하여 결정됨 -; 모든 관절에 대해 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고, 그 골격 부분은 상기 제1 관절과 상기 제2 관절 중 하나 또는 둘 모두의 운동에 의해 회전하도록 상기 복수의 관절 위치 사이의 골격 구조를 추론하는 것; 및 실용 3D 에셋을 생성하기 위해 상기 복수의 관절 위치 각각에서의 관절, 상기 추론된 골격 구조, 및 상기 아바타 데이터 모델을 결합하는 것을 포함하는 동작을 수행하게 한다.
시스템의 다양한 구현이 설명된다.
일부 구현에서, 동작은 가상 경험의 가상 환경에서 실용 3D 에셋을 애니메이션화하는 것을 더 포함한다.
일부 구현에서, 실용 3D 에셋을 애니메이션화하는 것은 실용 3D 에셋의 애니메이션 중 스킨 변형을 위해 추론된 골격 구조를 활용하는 것을 포함한다.
일부 구현에서, 그래프 표현은 아바타 데이터 모델의 개별 신체 부위를 나타내는 복수의 노드를 포함한다.
일부 구현에서, 그래프 표현은 복수의 에지를 더 포함하고, 복수의 에지의 각각의 에지는 적어도 2개의 노드 사이에서 연장되고, 복수의 에지의 각각의 에지는 관절 위치를 나타낸다.
일부 구현예에서, 복수의 관절 위치에서 결합된 각각의 관절은 애니메이션화된 관절 또는 고정 관절을 포함한다.
일부 구현에서, 동작은 적어도 추론된 골격 구조에 기초하여 실용 3D 에셋을 스키닝하는 것을 더 포함한다.
일부 구현에서, 그래프 표현을 통과하는 것은: 깊이 우선 탐색 또는 너비 우선 탐색 중 하나 이상을 포함한다.
일부 구현에서, 그래프 표현은 아바타 데이터 모델의 개별 신체 부위의 스케일에 기초하여 에지에 할당된 가중치를 갖는 가중치 그래프를 포함한다.
다른 양상에서, 비일시적 컴퓨터 판독 가능 매체가 설명된다. 비일시적 컴퓨터 판독 가능 매체는 처리 장치에 의한 실행에 응답하여 처리 장치가: 3차원(3D) 아바타에 대한 아바타 데이터 모델을 수신하는 것 - 상기 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위 및 제2 부모 모델로부터의 제2 신체 부위를 포함하며, 상기 제1 부모 모델 및 상기 제2 부모 모델은 서로 다른 3D 모델임 -; 상기 아바타 데이터 모델에 대한 그래프 표현을 생성하는 것 - 상기 그래프 표현은 상기 아바타 데이터 모델에 대한 선택된 루트 포인트에서 시작하여 상기 아바타 데이터 모델의 단말 부분까지 연장됨 -; 복수의 관절 위치를 결정하기 위해 상기 그래프 표현을 통과하는 것 - 상기 관절 위치는 각각 관절이 배치될 각각의 위치를 나타내고, 상기 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위의 설명, 또는 서로 다른 신체 부위 사이의 연결에 기초하여 결정됨 -; 모든 관절에 대해 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고, 그 골격 부분은 상기 제1 관절과 상기 제2 관절 중 하나 또는 둘 모두의 운동에 의해 회전하도록 상기 복수의 관절 위치 사이의 골격 구조를 추론하는 것; 및 실용 3D 에셋을 생성하기 위해 상기 복수의 관절 위치 각각에서의 관절, 상기 추론된 골격 구조, 및 상기 아바타 데이터 모델을 결합하는 것을 포함하는 동작을 수행하도록 한다.
비일시적 컴퓨터 판독 가능 매체의 다양한 구현이 설명된다.
또 다른 양상에 따르면, 시스템, 방법 및 비일시적 컴퓨터 판독 가능 매체의 부분, 특징 및 구현 세부사항이 결합되어 개별 컴포넌트 또는 특징의 일부 또는 부분을 생략 및/또는 수정, 추가 컴포넌트나 특징 및/또는 기타 수정을 포함하는 일부 양상을 포함하는 추가적인 양상을 형성할 수 있으며; 그러한 모든 수정은 본 개시의 범위 내에 있다.
도 1은 일부 구현에 따른 예시적인 네트워크 환경의 다이어그램이다.
도 2는 일부 구현에 따른 입력된 아바타 데이터 모델에서 실용 3D 에셋으로의 예시적인 진행을 도시한다.
도 3은 일부 구현에 따른 입력된 아바타 데이터 모델로부터 실용 3D 에셋을 생성하는 예시적인 방법의 흐름도이다.
도 4는 일부 구현에 따른 기본 아바타 데이터 모델의 예시적인 시각화의 개략도이다.
도 5는 일부 구현에 따른 예시적인 맞춤형 아바타 데이터 모델의 개략도이다.
도 6은 일부 구현에 따른 아바타 데이터 모델의 예시적인 그래프 표현의 다이어그램이다.
도 7은 일부 구현에 따른 입력된 맞춤형 아바타 데이터 모델에 기초한 예시적인 추론된 골격 구조의 개략도이다.
도 8은 일부 구현예에 따른 입력된 맞춤형 아바타 데이터 모델로부터 실용 3D 에셋을 생성하는 방법의 흐름도이다.
도 9는 일부 구현에 따른 예시적인 컴퓨팅 장치를 도시하는 블록도이다.
다음의 상세한 설명에서, 여기의 일부를 형성하는 첨부 도면에 대한 참조가 이루어진다. 도면에서, 유사한 기호는 문맥상 달리 지시하지 않는 한, 전형적으로 유사한 컴포넌트를 나타낸다. 상세한 설명, 도면 및 청구범위에 설명된 예시적인 구현은 제한되도록 의도되지 않는다. 여기에서 제시된 대상의 정신 또는 범위를 벗어나지 않고, 다른 구현이 활용될 수 있으며, 다른 변경이 이루어질 수 있다. 여기에서 일반적으로 설명되고 도면에 예시된 바와 같이, 본 개시의 양태는 매우 다양한 상이한 구성으로 배열, 대체, 조합, 분리 및 설계될 수 있으며, 이들 모두는 여기에서 고려된다.
본 명세서에서 "일부 구현", "구현", "예시 구현" 등에 대한 참조는 설명된 구현이 특정 특징, 구조 또는 특성을 포함할 수 있지만, 모든 구현이 반드시 특정 특징, 구조 또는 특성을 포함할 필요는 없음을 나타낸다. 더욱이, 그러한 구절이 반드시 동일한 구현을 언급하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성이 구현과 관련하여 설명될 때, 그러한 특징, 구조 또는 특성은 명시적으로 설명되었는지 여부에 관계없이 다른 구현과 관련하여 영향을 받을 수 있다.
3D 가상 경험 또는 환경에서 사용되는 3D 아바타의 맥락에서 다양한 실시예가 여기에서 설명된다. 여기에서 설명된 기법의 일부 구현은 가상 현실(VR) 회의, 3D 세션(예컨대, 온라인 강의 또는 3D 아바타를 포함하는 다른 유형의 프리젠테이션), 가상 콘서트, 증강 현실(AR) 세션, 또는 하나 이상의 3D 아바타에 의해 3D 환경에서 표현되는 하나 이상의 사용자를 포함할 수 있는 다른 유형의 3D 환경과 같은, 다양한 유형의 3D 환경에 적용될 수 있다.
일부 측면에서는 3D 에셋을 조작하고 새로운 실용 에셋을 생성하기 위한 시스템 및 방법이 제공된다. 예컨대, 실용 3D 에셋(practical 3D asset)은 다음 중 하나 이상의 3D 에셋이다: 낮은 계산 부하로 애니메이션화하기 쉬움, 모든 유형의 클라이언트 장치의 가상 환경에서 시각적 프레젠테이션에 적합함, 다양한 형태의 애니메이션에 적합함, 서로 다른 스키닝(skinning) 방법론에 적합함, 서로 다른 스키닝 변형에 적합함, 및/또는 다양한 클라이언트 장치의 애니메이션에 적합함. 온라인 가상 경험 플랫폼과 같은 온라인 플랫폼은 일반적으로 가상 경험에 사용할 가상 아이템, 가상 아바타 및 기타 실용 3D 에셋을 생성, 편집, 저장 혹은 조작하는 기능을 제공한다.
예컨대, 가상 경험 플랫폼에는 사용자 생성 콘텐츠 또는 개발자 생성 콘텐츠(여기서는 각각 "UGC"라고 함)가 포함될 수 있다. UGC는 예컨대, 사용자가 아바타 및 기타 아이템을 생성하기 위해 다양한 가상 요소를 검색하고 인터랙팅할 수 있도록 함으로써 가상 경험 플랫폼을 통해 저장되고 구현될 수 있다. 사용자는 다양한 가상 아바타와 3D 모델 중 다양한 가상 요소를 선택하고 재배열하여 새로운 모델과 아바타를 만들 수 있다. 아바타 신체 크리에이터는 원하는/맞춤형 모양과 크기의 기하학적 구조를 가진 신체를 만들고 가상 경험 플랫폼에서 호스팅하는 신체 라이브러리에 신체를 게시할 수 있다.
가상 경험 또는 기타 3D 세션 중 런타임에, 사용자는 신체 라이브러리에 액세스하여 특정 신체(머리, 몸통, 팔다리 등 다양한 부분 포함)를 선택하고 신체(또는 신체 일부)를 재배열한다. 여기에 설명된 구현에 따르면, 가상 경험 플랫폼은 신체(또는 그 일부)의 전체 모델을 입력으로 취하고 적절한 모션(예컨대, 관절 움직임, 회전 등)을 허용하는 골격 구조를 추론할 수 있다. 이러한 방식으로, 많은 서로 다른 아바타 신체 부분이 사용자 경험을 손상시키지 않고 새로운 아바타 신체를 생성하기 위해 재배열될 수 있다.
예컨대, 사용자 생성 콘텐츠는 제1 데이터 모델과 제2 데이터 모델을 포함할 수 있다. 사용자는 제1 데이터 모델과 제2 데이터 모델로부터 하나 이상의 신체 부위를 혼합하여(제1 및 제2 데이터 모델로부터, 또 선택적으로 추가 데이터 모델로부터 서로 다른 신체 부위를 취함) 새로운 아바타 데이터 모델을 생성할 수 있다. 따라서 아바타에 대한 다양한 데이터 모델은 신체 부위의 상이한 유형, 스케일, 사이즈 및 구조를 가질 수 있으므로 새로운 아바타 데이터 모델은 새로운 아바타 데이터 모델을 사용하는 실용 3D 애니메이션을 위한 적절히 정렬되어 있는 관절, 이음새, 연결점, 연결 및/또는 기타 부분이 없을 수 있다.
예컨대, 새로운 아바타 데이터 모델은 사용자 경험을 저하시키는 애니메이션 도중 부적절한 스키닝 변형을 일으키는 잘못 정렬된 이음새를 가질 수 있다. 또 다른 예에서, 새로운 아바타 데이터 모델은 골격 구조가 사용자 경험을 손상시키는 스키닝 변형을 부적절하게 인포밍하는 잘못 정렬된 애니메이션화된 관절(animated joint)을 가질 수 있다. 또 다른 예에서, 새로운 아바타 데이터 모델은 매력적인 경험(engaging experience)에 바람직한 애니메이션 모션을 구현하기에는 너무 많거나 너무 적은 애니메이션 관절을 가질 수 있다. 더욱이, 새로운 아바타 데이터 모델은 잘못 정렬되거나 부적절하거나 또는 매력적인 사용자 경험과 원활한 애니메이션을 손상시키는 기타 요소를 가질 수 있다. 다른 예에서, 전술한 결함 중 2개 이상이 새로운 아바타 데이터 모델에 존재할 수 있다.
일부 구현예에 따르면, 새로운 아바타 데이터 모델은 분석되어 서로 다른 신체 부위를 결정할 수 있으며, 분석에 기초하여 서로 다른 신체 부위를 나타내기 위해 그래프 표현이 생성될 수 있다. 그래프 표현은 서로 다른 혼합된 신체 부위 및/또는 요소와 더 밀접하게 일치하는 새로운 관절 위치를 정확하게 결정하기 위해 검색 알고리즘으로 통과될(traversed) 수 있다. 애니메이션 관절 또는 고정 관절(부모 신체 부위 모델에 따라 다름)은 결정된 관절 위치에 배치될 수 있다. 골격 구조는 각 관절이 적어도 하나의 연결된 골격 부재를 포함하도록 관절 사이에 존재하는 것으로 추론될 수 있다. 새로운 관절과 추론된 골격 구조는 새로운 아바타 데이터 모델과 결합되어 애니메이션이 매력적이고 유동적일(engaging and fluid) 수 있도록 올바른 수의 관절과 적절하게 정렬된 요소를 포함하는 실용 3D 에셋을 생성할 수 있다.
이러한 방식으로 구현은 3D 아바타 모델에서 새로운 관절과 골격 구조를 수동으로 정렬하려는 사용자와 연관된 계산 리소스를 줄이는 이점을 제공한다. 구현은 또한 사용자가 난해한 컴퓨터 애니메이션 종속성보다는 고유한 아바타 생성에 집중할 수 있도록 3D 모델 생성 프로세스의 대부분을 자동화하는 기술적 이점을 제공한다. 구현은 또한 사용자 경험 개선, 새로운 아바타 모델의 플랫폼 간 호환성 향상, 여러 가상 경험 전반에 걸친 새로운 아바타 모델의 호환성 향상, 경험이 없는 사용자를 위한 3D 모델링 진입 장벽 낮추기, 사용자 참여 지표 개선의 기술적 이점, 및 기타 기술적 이점을 제공한다.
도 1: 시스템 아키텍처
도 1은 본 개시의 일부 구현에 따른, 예시적인 네트워크 환경(100)을 도시한다. 도 1 및 다른 도면에서 유사한 요소를 식별하기 위해 유사한 참조 번호를 사용한다. "110a"와 같이 참조 번호 뒤의 문자는 텍스트가 특정 참조 번호를 갖는 요소를 구체적으로 지칭한다는 것을 나타낸다. "110"과 같이 다음 문자가 없는 텍스트의 참조 번호는 해당 참조 번호가 있는 도면의 요소 중 일부 또는 전부를 지칭한다 (예컨대, 텍스트의 "110"은 도면의 참조 번호 "110a", "110b" 및/또는 "110n"을 나타냄).
네트워크 환경(100)(여기에서 "플랫폼"이라고도 함)은 온라인 가상 경험 서버(102), 데이터 저장소(108) 및 클라이언트 장치(110a-n)(클라이언트 장치(110)라고 함)를 포함하며, 모두 네트워크(122)를 통해 연결된다.
온라인 가상 경험 서버(102)는 그 중에서도 가상 경험 엔진(104), 하나 이상의 가상 경험(105) 및 모델링 컴포넌트(130)를 포함할 수 있다. 온라인 가상 경험 서버(102)는 하나 이상의 클라이언트 장치(110)에 가상 경험(105)을 제공하고, 일부 구현에서 모델링 컴포넌트(130)를 통해 추론된 골격 구조의 자동 생성을 제공하도록 구성될 수 있다.
데이터 저장소(108)는 온라인 가상 경험 서버(102)에 연결된 것으로 도시되지만, 일부 구현에서는 온라인 가상 경험 서버(102)의 일부로서 제공될 수 있다. 데이터 저장소는 일부 구현에서 모델링 컴포넌트(130)와 연관하여, 광고 데이터, 사용자 데이터, 참여 데이터 및/또는 기타 컨텍스트 데이터를 저장하도록 구성될 수 있다. 모든 데이터는 특정 사용자 허가와 함께 적용 가능한 규정을 준수하여 저장된다.
클라이언트 장치(110)(예컨대, 110a, 110b, 110n)는 가상 경험 애플리케이션(112)(예컨대, 112a, 112b, 112n) 및 I/O 인터페이스(114)(예컨대, 114a, 114b, 114n)를 포함하여, 온라인 가상 경험 서버(102)와 인터랙팅하고, 예컨대, 컴퓨터 모니터, 텔레비전, 태블릿/노트북 스크린 또는 기타 디스플레이(예컨대, 가상 현실 고글과 같은 웨어러블 디스플레이 또는 기타 웨어러블 장치)(도시되지 않음)를 통해, 그래픽 사용자 인터페이스(GUI)를 볼 수 있다. 일부 구현에서, 클라이언트 장치(110)는 여기에서 설명된 바와 같이 커스터마이이징된 아바타 데이터 모델 및 실용 3D 에셋을 포함할 수 있는 가상 경험을 실행하고 디스플레이하도록 구성될 수 있다.
네트워크 환경(100)은 예시를 위해 제공된다. 일부 구현에서, 네트워크 환경(100)은 도 1에 도시된 것과 동일하거나 상이한 방식으로 구성된 동일하거나, 더 적거나, 더 많거나, 상이한 요소를 포함할 수 있다.
일부 구현에서, 네트워크(122)는 공중 네트워크(예컨대, 인터넷), 사설 네트워크(예컨대, LAN(local area network) 또는 WAN(wide area network)), 유선 네트워크(예컨대, 이더넷 네트워크), 무선 네트워크(예컨대, 802.11 네트워크, Wi-Fi® 네트워크 또는 WLAN(wireless LAN)), 셀룰러 네트워크(예컨대, LTE(Long Term Evolution) 네트워크), 라우터, 허브, 스위치, 서버 컴퓨터 또는 이들의 조합을 포함할 수 있다.
일부 구현에서, 데이터 저장소(108)는 비일시적 컴퓨터 판독 가능 메모리(예컨대, 랜덤 액세스 메모리), 캐시, 드라이브(예컨대, 하드 드라이브), 플래시 드라이브, 데이터베이스 시스템, 또는 데이터를 저장할 수 있는 다른 유형의 컴포넌트 또는 장치일 수 있다. 데이터 저장소(108)는 또한 다중 컴퓨팅 장치(예컨대, 다중 서버 컴퓨터)에 걸쳐 있을 수도 있는 다중 저장 컴포넌트(예컨대, 다중 드라이브 또는 다중 데이터베이스)를 포함할 수 있다.
일부 구현에서, 온라인 가상 경험 서버(102)는 하나 이상의 컴퓨팅 장치(예컨대, 클라우드 컴퓨팅 시스템, 랙마운트 서버, 서버 컴퓨터, 물리적 서버의 클러스터, 가상 서버 등)를 갖는 서버를 포함할 수 있다. 일부 구현에서, 서버는 온라인 가상 경험 서버(102)에 포함될 수 있거나, 독립 시스템일 수 있거나, 다른 시스템 또는 플랫폼의 일부일 수 있다. 일부 구현에서, 온라인 가상 경험 서버(102)는 단일 서버, 또는 복수의 서버, 로드 밸런서, 네트워크 장치 및 기타 컴포넌트의 임의의 조합일 수 있다. 온라인 가상 경험 서버(102)는 물리적 서버에서도 구현될 수 있지만, 일부 구현에서는 가상화 기술을 활용할 수도 있다. 온라인 가상 경험 서버(102)의 다른 변형도 적용 가능하다.
일부 구현에서, 온라인 가상 경험 서버(102)는 하나 이상의 컴퓨팅 장치(예컨대, 랙마운트 서버, 라우터 컴퓨터, 서버 컴퓨터, 개인용 컴퓨터, 메인프레임 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터 등), 데이터 저장소(예컨대, 하드 디스크, 메모리, 데이터베이스), 네트워크, 소프트웨어 컴포넌트 및/또는 온라인 가상 경험 서버(102)에서 동작을 수행하고 사용자에게 (예컨대, 클라이언트 장치(110)를 통해) 온라인 가상 경험 서버(102)에 대한 접근을 제공하는 데 사용될 수 있는 하드웨어 컴포넌트를 포함할 수 있다.
온라인 가상 경험 서버(102)는 또한 온라인 가상 경험 서버(102)에 의해 제공되는 콘텐츠에 대한 접근을 사용자에게 제공하는 데 사용될 수 있는 웹사이트(예컨대, 하나 이상의 웹페이지) 또는 애플리케이션 백엔드 소프트웨어를 포함할 수 있다. 예컨대, 사용자(또는 개발자)는 각각 클라이언트 장치(110) 상의 가상 경험 애플리케이션(112)을 사용하여, 온라인 가상 경험 서버(102)에 접근할 수 있다.
일부 구현에서, 온라인 가상 경험 서버(102)는 디지털 에셋 및 디지털 가상 경험 생성 조항을 포함할 수 있다. 예컨대, 플랫폼은 설계, 수정, 개인에 대한 고유한 조정 및 기타 수정 기능을 허용하는 관리자 인터페이스를 제공할 수 있다. 일부 구현에서, 가상 경험은 예컨대, 2차원(2D) 게임, 3차원(3D) 게임, 가상 현실(VR) 게임, 또는 증강 현실(AR) 게임을 포함할 수 있다. 일부 구현에서, 가상 경험 생성자 및/또는 개발자는 가상 경험을 검색하고, 가상 경험의 일부를 결합하고, 특정 활동(예컨대, 그룹 가상 경험)에 대한 가상 경험을 조정하고, 가상 경험 서버(102)를 통해 기타 기능을 제공할 수 있다.
일부 구현에서, 온라인 가상 경험 서버(102) 또는 클라이언트 장치(110)는 가상 경험 엔진(104) 또는 가상 경험 애플리케이션(112)을 포함할 수 있다. 일부 구현에서, 가상 경험 엔진(104)은 가상 경험(105)의 개발 또는 실행을 위해 사용될 수 있다. 예컨대, 가상 경험 엔진(104)은 다른 특징 중에서, 2D, 3D, VR 또는 AR 그래픽을 위한 렌더링 엔진("렌더러"), 물리 엔진, 충돌 감지 엔진(및 충돌 응답), 사운드 엔진, 스크립팅 기능, 햅틱 엔진, 인공 지능 엔진, 네트워킹 기능, 스트리밍 기능, 메모리 관리 기능, 스레딩 기능, 장면 그래프 기능 또는 시네마틱에 대한 비디오 지원을 포함할 수 있다. 가상 경험 엔진(104)의 컴포넌트는 가상 경험을 컴퓨팅하고 렌더링하는 데 도움이 되는 명령(예컨대, 렌더링 명령, 충돌 명령, 물리 명령 등)을 생성할 수 있다.
가상 경험 엔진(104)을 사용하는 온라인 가상 경험 서버(102)는 가상 경험 엔진 기능의 일부 또는 전부를 수행하거나(예컨대, 물리 명령 생성, 명령 렌더링 등), 가상 경험 엔진 기능의 일부 또는 전부를 클라이언트 장치(110)(도시되지 않음)의 가상 경험 엔진(104)에 오프로드할 수 있다. 일부 구현에서, 각각의 가상 경험(105)은 온라인 가상 경험 서버(102)에서 수행되는 가상 경험 엔진 기능과 클라이언트 장치(110)에서 수행되는 가상 경험 엔진 기능 사이에 상이한 비율을 가질 수 있다.
일부 구현에서, 가상 경험 명령은 클라이언트 장치(110)가 게임플레이, 그래픽, 및 가상 경험의 다른 특징을 렌더링하도록 허용하는 명령을 지칭할 수 있다. 명령은 사용자 입력(예컨대, 물리적 객체 포지셔닝), 캐릭터 위치 및 속도 정보, 또는 명령(예컨대, 물리적 명령, 렌더링 명령, 충돌 명령 등) 중 하나 이상을 포함할 수 있다.
일부 구현에서, 클라이언트 장치(들)(110)는 각각 개인용 컴퓨터(PC), 모바일 장치(예컨대, 랩탑, 모바일 폰, 스마트 폰, 태블릿 컴퓨터 또는 넷북 컴퓨터), 네트워크-연결된 텔레비전, 게이밍 콘솔 등과 같은 컴퓨팅 장치를 포함할 수 있다. 일부 구현에서, 클라이언트 장치(110)는 또한 "사용자 장치"로 지칭될 수 있다. 일부 구현에서, 하나 이상의 클라이언트 장치(110)는 임의의 주어진 순간에 온라인 가상 경험 서버(102)에 연결할 수 있다. 클라이언트 장치(110)의 수는 제한이 아니라 예시로서 제공된다는 점에 유의할 수 있다. 일부 구현에서, 임의의 수의 클라이언트 장치(110)가 사용될 수 있다.
일부 구현에서, 클라이언트 장치(110) 중 하나 이상은 가상 경험 애플리케이션(112)의 인스턴스를 포함할 수 있다. 가상 경험 애플리케이션(112)은 클라이언트 장치(110)에서의 인터랙션을 위해 렌더링될 수 있다. 온라인 플랫폼(100)의 가상 경험 또는 다른 GUI 내에서의 사용자 인터랙션 중, 사용자는 다른 라이브러리, 다른 부모 모델, 및/또는 다른 사용자 생성 콘텐츠로부터 서로 다른 신체 부위를 포함하는 아바타를 생성할 수 있다. 모델링 컴포넌트(130)는 새로 생성된 아바타를 나타내는 데이터 모델을 입력으로 취하고, 모든 개별 부위 정보를 판독하고, 가상 경험 내에서 애니메이션이 가능한 내부 골격 구조를 갖는 실용 3D 에셋을 생성하는 데 사용될 수 있는 골격 구조를 추론할 수 있다.
일부 구현에서, 추론된 골격 구조는 관절 사이에 매달린 가상 뼈대에 관련된다. 관절은 가상 뼈대가 관절에서 회전, 이동 또는 피봇(pivot)하도록 가상 뼈대의 모션을 인포밍한다(inform).
일부 구현에서, 관절은 고정 관절(fixed joint)과 애니메이션화된 관절을 모두 포함할 수 있다. 다른 형태의 관절도 적용될 수 있다. 일부 구현은 단일 축에서 피봇팅하는 관절, 하나 이상의 축에서 피봇팅하는 관절, 둘 이상의 축에서 피봇팅하는 관절, 복수의 축에서 피봇팅하는 관절, 단일 모션 평면 내에서만 피봇팅하는 관절, 하나 이상의 모션 평면 내에서 피봇팅하는 관절, 두 개 이상의 모션 평면 내에서 피봇팅하는 관절 및/또는 모든 평면에서 고정된 상태로 유지되지만 단일 회전축을 따라 회전하는 관절을 포함한다.
일부 구현에서, 관절은 동적이고 물리적으로 시뮬레이션될 수도 있다. 예컨대, 관절은: 볼 소켓, 힌지 및/또는 로드를 기초로 시뮬레이션된 시뮬레이션 관절일 수 있다. 이러한 관절과 기타 시뮬레이션 관절을 사용하면 암묵적으로 결합된 스킨 처리된 캐릭터 모델이 완전히 또는 부분적으로 물리적으로 시뮬레이션될 수 있으며, 신체 부분은 물리 시뮬레이션에 반응하여 독립적으로 움직일 수 있다(예컨대, 캐릭터는 단일의 강체(rigid body) 또는 복수의 강체일 수 있음). 추가적으로, 일부 구현에서, 플랫폼(100) 및 모델링 컴포넌트(130)는 부드럽고 변형 가능한 신체로서 시뮬레이션되는 전체 신체 또는 신체의 일부를 암묵적으로 지원한다. 예컨대, 스키닝 노드가 있는 골격 구조가 있는 한, 공유 노드는 시뮬레이터에서 사용되는 물리적 관절을 기반으로 추론되는 단일의 결합된 스킨처리된 엔티티로 별도의 부분에서 함께 연결되거나 또는 사용자가 명시적으로 지정한 여러 골격 노드를 함께 결합하는 명시적 골격 그래프 링크를 가지고 보다 직접적이고 명시적으로 연결될 수도 있다.
추론된 골격 구조는 각 관절이 이에 연결된 적어도 하나의 골격 구조 및/또는 그 일부(예컨대, 개별 가상 뼈대)를 포함하도록 관절과 통합될 수 있다. 일부 구현에서 관절은 이에 연결된 하나 이상의 가상 뼈대를 포함할 수 있다. 일부 구현에서 관절은 이에 연결된 두 개 이상의 가상 뼈대를 포함할 수 있다. 일부 구현에서, 관절은 다른 관절 및 적어도 하나의 가상 뼈대에 연결될 수 있다. 일부 구현에서, 관절은 하나 이상의 관절 및 적어도 하나의 가상 뼈대에 연결될 수 있다.
추론된 골격 구조(예컨대, 모든 가상 뼈대)와 관절은 아바타 데이터 모델과 결합되어 실용 3D 에셋을 생성할 수 있다. 결합은 모델링 컴포넌트(130) 또는 다른 소프트웨어 컴포넌트에 의해 달성될 수 있다. 일부 구현에서, 결합은 클라이언트 장치(110)에서(예컨대, VE 애플리케이션(112) 또는 모델링 컴포넌트(130)의 로컬 인스턴스를 통해) 수행될 수 있다.
플랫폼(100)을 통해 생성된 실용 3D 에셋은 분산 저장 장치, 하드웨어 저장 장치, 논리적 저장 장치 등을 포함하는 임의의 적절한 저장 장치에 저장될 수 있으며 일부 구현에서는 클라이언트 장치(110)로 전송될 수 있다. 데이터 저장소(108)는 클라이언트 장치(110)가 실용 3D 에셋을 쉽게 검색하고 획득할 수 있도록 플랫폼(100)의 사용을 통해 생성된 서로 다른 실용 3D 에셋을 저장하고 색인화할 수 있다. 획득된 실용 3D 에셋은 새롭고 독특한 아바타를 생성하기 위해 추가로 조작될 수 있으며, 후속적으로 여기에 설명된 방법론을 통해 처리되어 애니메이션, 게임플레이에서의 사용 또는 플랫폼(100)이나 다른 플랫폼에서의 기타 용도를 위해 새롭고 고유한 3D 에셋을 생성할 수 있다.
도 2: 3D 에셋 생성 예시
도 2는 일부 구현에 따른 입력된 아바타 데이터 모델에서 실용 3D 에셋으로의 예시적인 진행을 묘사한다. 도시된 바와 같이, 맞춤형 아바타 데이터 모델(210)은 모델의 외관을 정의하는 바디 케이지 또는 메시(212)를 포함할 수 있다.
맞춤형 아바타 데이터 모델은 둘 이상의 서로 다른 부모 모델로부터 온라인 가상 경험 플랫폼(100)의 사용자에 의해 생성될 수 있다. 예컨대, 사용자는 서로 다른 모델로부터 팔, 다리, 머리, 몸통 등을 선택하고 이를 함께 추가하여 맞춤형 아바타 데이터 모델(210)에 도달할 수 있다.
온라인 가상 경험 플랫폼(100)은 맞춤형 아바타 데이터 모델(210)을 수신하고 제1 시퀀스 동작(202)을 수행하여 추론된 골격 구조(220)를 생성할 수 있다. 추론된 골격 구조(220)는 복수의 관절(222)(도 2에서는 하위 집합만 표시됨) 및 복수의 가상 뼈대(224)(도 2에서는 하위 집합만 표시됨)를 포함할 수 있다. 일부 구현에서, 모델링 컴포넌트(130)는 제1 시퀀스 동작(202)을 수행한다. 제1 시퀀스 동작(202)은 또한 모델링 컴포넌트(130) 및/또는 온라인 가상 경험 플랫폼(100)의 다른 소프트웨어 컴포넌트의 여러 다른 인스턴스들 사이에 분산될 수도 있다.
온라인 가상 경험 플랫폼은 실용 3D 에셋(230)을 획득하기 위해 복수의 관절(222), 복수의 가상 뼈대(224) 및 맞춤형 아바타 데이터 모델(210)을 결합하는 제2 시퀀스 동작(204)을 수행할 수 있다.
실용 3D 에셋(230)은 정의된 골격 구조를 갖는 3D 에셋일 수 있으며, 이로써 모델링 컴포넌트(130)(또는 다른 소프트웨어 컴포넌트)는 정의된 골격 구조에 기초하여 애니메이션 시퀀스에 대한 스키닝 변형을 수행할 수 있다. 예컨대, 컷어웨이(232)는 실용 3D 에셋(230)에 배열된 대로 기본 골격 구조 및 관절을 볼 수 있도록 신체 케이지 또는 메시(212) 밑의 뷰(view)를 허용한다.
이하에서는 도 3을 참조하여 실용 3D 에셋을 생성하는 방법에 대한 보다 구체적인 논의를 제시한다.
도 3: 추론된 골격 구조로 3D 에셋을 생성하는 예시적인 방법
도 3은 일부 구현에 따른 입력된 아바타 데이터 모델로부터 실용 3D 에셋을 생성하는 예시적인 방법(300)의 흐름도이다.
일부 구현에서, 방법(300)은 예컨대, 도 1을 참조하여 설명된 서버(102)에서 구현될 수 있다. 일부 구현에서, 방법(300)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 장치(110), 하나 이상의 개발자 장치(도시되지 않음), 또는 하나 이상의 서버 장치(들)(102), 및/또는 개발자 장치(들), 서버 장치(들) 및 클라이언트 장치(들)의 조합에서 구현될 수 있다. 설명된 예시에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 처리 회로("프로세서"), 및 하나 이상의 저장 장치(예컨대, 데이터 저장소(108) 또는 다른 스토리지)를 포함한다. 일부 구현에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(300)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예시에서, 제1 장치는 방법(300)의 블록을 수행하는 것으로 설명된다. 일부 구현은 결과 또는 데이터를 제1 장치로 전송할 수 있는 하나 이상의 다른 장치(예컨대, 다른 클라이언트 장치 또는 서버 장치)에 의해 수행되는 방법(300)의 하나 이상의 블록을 가질 수 있다.
일부 구현에서, 방법(300) 또는 방법의 일부는 시스템에 의해 자동으로 시작될 수 있다. 일부 구현에서는 구현 시스템은 제1 장치이다. 예컨대, 방법(또는 그 일부)은 주기적으로 수행될 수 있거나, 하나 이상의 특정 이벤트 또는 조건에 기초하여, 예컨대, 사용자 요청 시, 아바타 크기 변경 시, 아바타 신체 부위 변경 시, 특정 아바타 모델 또는 사용자에 대한 방법(300)의 마지막 수행 이후 만료된 사전 결정된 기간 및/또는 방법에 의해 판독된 설정에서 지정될 수 있는 하나 이상의 다른 조건이 발생하는 경우에 수행될 수 있다.
방법(300)은 블록(302)에서 시작할 수 있다. 블록(302)에서, 신체 메시가 예컨대, 중립 바인드 포즈(neutral bind pose)로 구성된다. 중립 바인드 포즈는 아바타의 기본(또는 휴식) 포즈이다. 예컨대, 스키닝 후 아바타의 뼈대가 움직일 때 뼈대의 동작은 스킨을 변형시킨다. 스킨에 변형을 주지 않는 포즈가 중립 바인드 포즈이다. 따라서 일부 구현에서 신체 메시는 나중 동작을 단순화할 수 있는 중립 바인드 포즈로 먼저 구축된다.
일부 구현에서 신체 메시는 감소된 또는 최소한의 변형을 가진 중립적인 휴식 자세와 교대로 구축될 수 있다. 이러한 구현 및 다른 구현에서, 중립 포즈는 아바타의 스킨 처리된 버전(skinned version)이 이 포즈에서 최소한의 변형을 가질 가능성에 기초하여 선택될 수 있다. 예컨대, 도 4는 대안적인 중립 자세를 도시하는 반면 도 5는 중립 바인드 자세를 도시한다. 블록(302) 다음에는 블록(304)이 이어질 수 있다.
블록(304)에서, 관절이 배치될 수 있고 관절 배치에 기초하여 골격이 추론되어 골격화된 메시를 얻을 수 있다. 예컨대, 관절은: 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위에 대한 설명 또는 서로 다른 신체 부위 사이의 연결 중 하나 이상을 기초로 배치될 수 있다.
서로 다른 신체 부분의 교차점은 제1 신체 부분(예컨대, 윗팔)과 제2 신체 부분(예컨대, 아랫팔) 사이의 교차점을 포함할 수 있으며, 관절은 이 교차점에 또는 그 근처에 배치된다.
서로 다른 신체 부위에 대한 설명은 제1 신체 부위(예컨대, 위쪽 다리) 및 제2 신체 부위(예컨대, 아래쪽 다리)에 대한 텍스트 또는 컴퓨터 코딩된 설명을 포함할 수 있으며, 관절은 설명을 기초로 제1 신체 부위 및 제2 신체 부위 사이에 위치한다. 예컨대, 설명은 관절 배치가 적절한 각 신체 부위의 원위 단부(distal ends)도 포함할 수 있다.
서로 다른 신체 부위 사이의 연결은 관절로 대체될 수 있는 하드 코딩된(hard-coded) 연결 설명을 포함할 수 있다.
골격화된 구조(skeletized structure)는 관절 위치에 따라 추론될 수 있다. 예컨대, 관절이 위쪽 팔과 아래쪽 팔 사이에 배치될 수 있으므로 이 관절에서 다른 신체 부위로 연장되는 가상 뼈대를 추론할 수 있다. 추론은 확립된 신체 구조를 기반으로 한 지능적인 추론이다. 예컨대, 확립된 구조를 갖는 기본 신체는 약 15개의 부위를 갖는 휴머노이드 형태일 수 있다. 예컨대, 도 4는 기본 신체와 이러한 예시적인 15개의 신체 부위를 도시한다. 블록(304) 다음에는 블록(306)이 이어질 수 있다.
블록(306)에서, 관절 및 이와 연관된 가상 뼈대를 갖는 골격화된 신체 메시는 스킨 처리되어 3D 모델 또는 실용 3D 에셋을 얻을 수 있다. 스키닝은 임의의 적절한 스키닝 방법론을 포함할 수 있다. 예컨대, 스키닝 방법론은 선형 블렌드 스키닝, 역선형 블렌드 스키닝, 골격-하위공간(skeleton-subspace) 변형 또는 기타 방법을 포함할 수 있지만 이에 국한되지는 않는다.
일부 구현에서는 배치된 개별 관절에 대해 가중치 맵이 생성될 수 있다. 가중치 맵은 기본 골격 구조에 기초하여 각 정점(vertex)이 얼마나 이동할지를 제어할 수 있다.
일부 구현에서, 스키닝은 CPU 스키닝 또는 GPU(그래픽 처리 장치) 스키닝 프로세스를 기반으로 수행될 수 있다. 예컨대, CPU 스키닝은 스키닝 변환을 위해 일반적으로 사용 가능한 하드웨어 프로세서에 의존할 수 있다. 예컨대, GPU 스키닝은 스키닝 변환에 일반적으로 사용 가능한 GPU에 의존할 수 있다. 블록(306) 다음에 블록(308)이 이어질 수 있다.
블록(308)에서, 3D 모델 또는 실용 3D 에셋은 애니메이션화될 수 있으며, 예컨대, 3D 모델은 애니메이션화된 아바타를 렌더링하는 데 활용될 수 있다. 예컨대, 애니메이션은 일부 구현에서 가상 경험 플랫폼(100)에서 호스팅되는 가상 경험 내의 가상 환경 내에서 렌더링될 수 있다. 애니메이션은 추론된 골격 구조에 의해 인포밍될 수 있으므로 스키닝 변형은 예컨대, 잘못 정렬된 골격과 비교하여 부드럽고 매력적이며 아티팩트가 줄어든다.
이하, 도 4를 참조하여 기본 아바타 데이터 모델 및 신체 부위에 대해 설명한다.
도 4: 기본 아바타 데이터 모델
도 4는 일부 구현에 따른 기본 아바타 데이터 모델의 예시적인 시각화의 개략도이다. 예시적인 시각화는 신체 케이지(400)와 여러 개의 라벨이 붙은 신체 부위를 포함한다.
보다 구체적으로, 도 4에 도시된 15개의 신체 부위는 (휴머노이드 마네킹에 대해): 머리, 몸통, 고관절, 오른발, 왼발, 아래쪽 왼 다리, 아래쪽 오른 다리, 위쪽 왼 다리, 위쪽 오른 다리, 왼손, 오른손, 아래쪽 왼팔, 아래쪽 오른팔, 위쪽 왼팔, 및 위쪽 오른팔이다. 임의의 신체 형상의 부위 수는 도시된 15개 신체 부위보다 많거나 적을 수 있다. 예컨대, "외팔" 아바타 캐릭터는 손, 아래쪽 팔, 위쪽 팔의 생략으로 인해, 신체 부위가 12개(15개가 아님)일 수 있다. 또한, 다른 신체 형상은 신체 지오메트리, 원하는 해상도, 처리 능력, 아바타 캐릭터의 유형(예컨대, 동물, 외계인, 괴물 등) 등과 같은 요인에 의존하여, 더 적거나 더 많은 수의 신체 부위를 포함할 수 있다.
도 4의 15개 그룹/부위 각각은 아바타 신체의 해당 부분을 정의하는 특징점을 포함한다. 이러한 특징점 그룹은 추론을 위해 해당 기본 골격 구조에 매핑될 수 있다. 예컨대, 좌우 아래쪽 팔 및 좌우 위쪽 팔을 정의하는 신체 케이지(400)의 특징점은 팔꿈치와 연관된 관절의 위치를 인포밍하는 데 사용될 수 있다. 마찬가지로, 왼쪽/오른쪽 위쪽 다리와 왼쪽/오른쪽 아래쪽 다리는 무릎과 연관된 관절의 위치를 인포밍하는 데 사용될 수 있다.
더욱이, 이러한 다중 그룹(도 4에 도시된 것처럼)으로의 분리는 3D 모델을 정확하게 스킨화하고 애니메이션화하는 데 사용될 수 있는 골격 구조의 추론을 가능하게 한다.
이하, 도 5를 참조하여 서로 다른 둘 이상의 부모 모델을 기반으로 한 맞춤형 아바타 데이터 모델을 설명한다.
도 5: 맞춤형 아바타 데이터 모델
도 5는 일부 구현에 따른 맞춤형 아바타 데이터 모델의 예시적인 시각화의 개략도이다. 예시적인 시각화는 제1 부모 모델로부터의 머리(502), 목(506), 몸통 및 다리(504)와 제2 부모 모델로부터의 팔(508, 510), 손(509, 511)을 갖춘 신체 케이지(500)를 포함한다.
도시된 팔(508, 510) 각각은 머리, 목, 몸통, 다리와는 다른 부모 모델에서 나온 것이기 때문에 모델의 기존 골격 구조는 적절한 스키닝을 가능하게 하지 않는다. 따라서, 이러한 불일치 부분에 따른 스키닝 변형은 사용자에게 낯설거나 부자연스러워 보일 수 있다. 그러나 여기에 설명된 기술을 기반으로, 먼저 서로 다른 신체 부위의 그래프 표현을 생성함으로써 새로운 골격 구조가 추론될 수 있다. 도 6은 예시적인 그래프 표현의 다이어그램을 예시한다.
도 6: 맞춤형 아바타 데이터 모델의 예시적인 그래프 표현
도 6은 일부 구현에 따른 아바타 데이터 모델의 예시적인 그래프 표현(600)의 다이어그램이다. 도시된 바와 같이, 그래프(600)는 해당 신체 부위에 따라 라벨링된 복수의 노드를 포함한다. 일부 구현에서 각 그래프 표현은 신체 부위 수와 동일한 수의 노드를 가질 것이다. 본 예시에서는 맞춤형 모델(500)로부터 15개의 신체 부위가 분석된다.
각각의 신체 부위는 다른 신체 부위로 연장되는 적어도 하나의 연관된 에지(edge)를 가질 수 있다. 그래프 표현(600)에서 에지는 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 624, 626 및 628로 라벨링되어 있다. 이 예에서, 각 에지는 특정 관절 배치에 대응한다. 따라서, 각각의 에지(602-628)는 이와 연관된 관절을 가질 수 있다. 마찬가지로, 두 개 이상의 에지를 포함하는 각 노드는 그 사이에서 추론되는 하나 이상의 가상 뼈대를 가질 수 있다. 이러한 방식으로, 관절은 에지(602-628)에 배치될 수 있고 가상 뼈대는 원위가 아닌(non-distal) 노드와 대략적으로 조화되도록 배치될 수 있다. 나아가, 가상 뼈대는 맞춤형 아바타 데이터 모델 및 연관된 신체 부위에 기초하여 크기가 조정될 수 있다. 예컨대, 도 7은 맞춤형 데이터 모델(500)에 기초한 예시적인 추론된 골격 구조를 도시한다.
도 7: 예시적인 추론된 골격 구조
도 7은 일부 구현에 따라, 입력된 맞춤형 아바타 데이터 모델에 기초한 예시적인 추론된 골격 구조의 개략도이다. 추론된 골격 구조(700)는 아바타 데이터 모델(500)의 말단 부분과 연관된 하나 이상의 원위 관절(702), 및 아바타 데이터 모델(500)의 비말단 부분(non-terminal portion)과 연관된 하나 이상의 내부 관절(704)을 포함할 수 있다.
추가로 도시된 바와 같이, 긴 목뼈(706)는 이 예에서 입력 모델(500)의 긴 목 부분(506)에 대응하는 것으로 추론될 수 있다(명확성을 위해 인접 도면에 도시됨). 또한, 이 예에서는 길쭉한 아래팔 뼈대(708, 710)가 제2 부모 모델로부터의 길다란 아래팔(508, 510)에 대응하는 것으로 추론될 수 있다.
따라서, 아바타 데이터 모델(500)은 서로 다른 부모 모델의 서로 다른 신체 부위를 이용하여 생성되지만, 추론된 골격 구조(700)는 애니메이션 중 정확한 스키닝 및 스키닝 변형에 의해 원활한 애니메이션을 구현하는 데 적합한 골격 구조일 수 있다.
이하, 입력된 맞춤형 아바타 데이터 모델로부터 실용 3D 에셋을 생성하는 예시적인 방법의 상세한 설명이 도 8을 참조하여 제시된다.
도 8: 맞춤형 입력 모델로부터 실용 3D 에셋을 생성하는 방법
도 8은 일부 구현에 따른 입력된 맞춤형 아바타 데이터 모델로부터 실용 3D 에셋을 생성하는 예시적인 방법(800)의 흐름도이다.
일부 구현에서, 방법(800)은 예컨대, 도 1을 참조하여 설명된 서버(102)에서 구현될 수 있다. 일부 구현에서, 방법(800)의 일부 또는 전부는 도 1에 도시된 바와 같이 하나 이상의 클라이언트 장치(110), 하나 이상의 개발자 장치(도시되지 않음) 또는 하나 이상의 서버 장치(들)(102) 및/또는 개발자 장치(들), 서버 장치(들) 및 클라이언트 장치(들)의 조합에서 구현될 수 있다. 설명된 예시에서, 구현 시스템은 하나 이상의 디지털 프로세서 또는 처리 회로("프로세서") 및 하나 이상의 저장 장치(예컨대, 데이터 저장소(108) 또는 다른 스토리지)를 포함한다. 일부 구현에서, 하나 이상의 서버 및/또는 클라이언트의 상이한 컴포넌트는 방법(800)의 상이한 블록 또는 다른 부분을 수행할 수 있다. 일부 예시에서, 제1 장치는 방법(800)의 블록을 수행하는 것으로 설명된다. 일부 구현은 결과 또는 데이터를 제1 장치로 전송할 수 있는 하나 이상의 다른 장치(예컨대, 다른 클라이언트 장치 또는 서버 장치)에 의해 수행되는 방법(800)의 하나 이상의 블록을 가질 수 있다.
일부 구현에서, 방법(800) 또는 방법의 일부는 시스템에 의해 자동으로 개시될 수 있다. 일부 구현에서는 구현 시스템이 제1 장치이다. 예컨대, 방법(또는 그 일부)은 주기적으로 수행될 수 있거나, 또는 하나 이상의 특정 이벤트 또는 조건, 예컨대, 사용자 요청 시, 아바타 크기 변경 시, 아바타 신체 부위 변경 시, 특정 아바타 모델 또는 사용자에 대한 방법(800)의 마지막 수행 이후 만료된 사전 결정된 기간 및/또는 방법에 의해 판독된 설정에서 지정될 수 있는 하나 이상의 다른 조건이 발생하는 경우에 기초하여 수행될 수 있다.
방법(800)은 블록(802)에서 시작할 수 있다. 블록(802)에서, 3차원(3D) 아바타에 대한 아바타 데이터 모델이 수신될 수 있다. 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위와 제2 부모 모델로부터의 제2 신체 부위를 포함할 수 있다.
이 예에서 제1 부모 모델과 제2 부모 모델은 서로 다른 3D 모델이다. 일부 구현에서, 제1 부모 모델과 제2 부모 모델은 서로 다른 스케일(예컨대, 더 큰 팔 또는 더 긴 목이지만 동일한 모델로부터 나온)을 갖는 동일한 3D 모델일 수 있다는 점에 유의한다. 일부 구현에서, 아바타 데이터 모델은 몇가지 서로 다른 3D 모델로부터의 부위를 가질 수 있다.
서로 다른 모델 수에 대한 상한선은 구현에 따라 고르거나 선택될 수 있다. 예컨대, 휴머노이드형 외모를 갖는 아바타를 사용하는 경우, 15개의 서로 다른 부모 모델의 상한선이 선택될 수 있다. 서로 다른 모습의 아바타(예컨대, 외계인, 로봇, 동물 등)는 신체 부위 수에 대한 서로 다른 상한선을 가질 수 있다. 블록(802) 다음에 블록(804)이 이어질 수 있다.
블록(804)에서, 아바타 데이터 모델에 대한 그래프 표현이 생성될 수 있다. 예컨대, 그래프 표현은 아바타 데이터 모델에 대해 선택된 루트 포인트(예컨대, 머리, 왼발, 오른손 등)에서 시작하여 아바타 데이터 모델의 단말 부분(예컨대, 왼발/오른발, 왼손/오른손, 머리 등)으로 확장될 수 있다.
일부 구현에서, 그래프 표현은 아바타 데이터 모델의 개별 신체 부분의 스케일에 기초하여 에지에 할당된 가중치를 갖는 가중치 그래프이다. 이 예에서 개별 신체 부위의 스케일은 기본 골격 구조의 추론을 인포밍하는 데 도움이 될 수 있다. 블록(804) 다음에 블록(806)이 이어질 수 있다.
블록(806)에서, 그래프 표현은 복수의 관절 위치를 결정하기 위해 통과될(traversed) 수 있다. 일부 구현에서, 그래프 표현을 통과하는 것은 깊이 우선 탐색(depth first search) 또는 너비 우선 탐색(breadth first search) 중 하나 이상을 포함한다. 다른 검색이나 트리 통과 방법도 적용될 수 있다.
일부 구현에서, 관절 위치는 관절이 배치될 위치를 나타낸다. 또한, 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위에 대한 설명, 서로 다른 신체 부위 간의 연결을 기반으로 결정될 수 있다. 블록(806) 다음에 블록(808)이 이어질 수 있다.
블록(808)에서, 복수의 관절 위치 사이의 골격 구조가 추론될 수 있다. 추론은 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고 골격 부분(skeletal portion)이 다른 관절에 대해 운동에 의해 또는 제1 관절과 제2 관절 중 하나 또는 둘 다에 의해 회전한다는 것일 수 있다. 일부 구현에서, 골격 부분은 적어도 두 개의 관절 사이에서 연장되는 가상 뼈대이다. 블록(808) 다음에 블록(810)이 이어질 수 있다.
블록(810)에서, 복수의 관절 위치 각각에서의 관절, 추론된 골격 구조 및 아바타 데이터 모델이 결합되어 실용 3D 에셋을 생성한다. 예컨대, 추론된 골격 구조 및 관절의 데이터 표현은 전체 모델이 애니메이션에 사용될 수 있도록 아바타 데이터 모델과 결합될 수 있다. 블록(810) 다음에 블록(812)이 이어질 수 있다.
블록(812)에서 실용 3D 에셋은 가상 환경에서 렌더링될 수 있다. 실용 3D 에셋은 가상 환경 내에서 애니메이션화될 수 있다. 예컨대, 아바타는 움직일 수 있다(예컨대, 걷기, 뛰기, 점프 등); 아바타 신체의 일부가 움직일 수 있다(예컨대, 손 흔들기, 발 차기, 팔 올리기, 목 회전 등). 또한, 실용 3D 에셋은 일부 구현에서 복수의 사용자에 의해 사용되기 위해 온라인 플랫폼(100)에 저장될 수 있다.
위에서 설명된 바와 같이, 구현은 실용 3D 에셋을 생성하기 위해 골격 구조를 추론하기 위한 방법, 시스템 및 컴퓨터 판독 가능 매체에 관한 것이다. 사용자는 서로 다른 부모 모델의 서로 다른 부위를 사용하여 아바타를 만들 수 있다. 생성 시 아바타의 데이터 모델을 검사하여 관절 배치를 결정하고 전체 골격 구조를 추론한다. 그 후, 관절 배치 및 움직임을 기반으로 애니메이션 중 아바타 스킨을 변형하기 위해 서로 다른 스키닝 기법이 사용될 수 있다. 실용 3D 에셋은 다수의 사용자가 접속할 수 있는 온라인 가상 경험 플랫폼을 통해 저장, 제시, 렌더링될 수 있다.
도 9: 컴퓨팅 장치
이하에서는, 도 9를 참조하여, 도 1에 예시된 상이한 장치 및/또는 컴포넌트를 구현하는 데 사용될 수 있는 다양한 컴퓨팅 장치에 대한 보다 상세한 설명이 제공된다.
도 9는 일부 구현에 따른, 여기에서 설명된 하나 이상의 특징을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 장치(900)의 블록도이다. 일 예시에서, 장치(900)는 컴퓨터 장치(예컨대, 도 1의 102, 110)를 구현하고, 여기에서 설명된 적절한 동작을 수행하는 데 사용될 수 있다. 컴퓨팅 장치(900)는 임의의 적절한 컴퓨터 시스템, 서버, 또는 다른 전자 또는 하드웨어 장치일 수 있다. 예컨대, 컴퓨팅 장치(900)는 메인프레임 컴퓨터, 데스크톱 컴퓨터, 워크스테이션, 휴대용 컴퓨터 또는 전자 장치(휴대용 장치, 모바일 장치, 휴대폰, 스마트 폰, 태블릿 컴퓨터, 텔레비전, TV 셋톱 박스, PDA(personal digital assistant), 미디어 플레이어, 게임 장치, 웨어러블 장치 등)일 수 있다. 일부 구현에서, 장치(900)는 프로세서(902), 메모리(904), 입력/출력(I/O) 인터페이스(906) 및 오디오/비디오 입력/출력 장치(914)(예컨대, 디스플레이 스크린, 터치스크린, 디스플레이 고글 또는 안경, 오디오 스피커, 헤드폰, 마이크로폰 등)를 포함한다.
프로세서(902)는 프로그램 코드를 실행하고 장치(900)의 기본 동작을 제어하기 위한 하나 이상의 프로세서 및/또는 처리 회로일 수 있다. "프로세서"는 데이터, 신호 또는 기타 정보를 처리하는 임의의 적절한 하드웨어 및/또는 소프트웨어 시스템, 메커니즘 또는 컴포넌트를 포함한다. 프로세서는 범용 중앙 처리 장치(CPU), 다중 처리 장치, 기능을 달성하기 위한 전용 회로 또는 기타 시스템이 있는 시스템을 포함할 수 있다. 처리는 특정 지리적 위치로 제한되거나 일시적인 제한을 가질 필요가 없다. 예컨대, 프로세서는 "실시간", "오프라인", "배치 모드(batch mode)" 등의 기능을 수행할 수 있다. 처리의 일부는 상이한 (또는 동일한) 처리 시스템에 의해 다른 시간과 다른 위치에서 수행될 수 있다. 컴퓨터는 메모리와 통신하는 임의의 프로세서일 수 있다.
메모리(904)는 전형적으로 프로세서(902)에 의한 액세스를 위해 장치(900)에 제공되고, 프로세서에 의한 실행을 위한 명령을 저장하는 데 적합하고 프로세서(902)와 분리되어 위치 및/또는 통합되는, 임의의 적절한 프로세서 판독가능 저장 매체, 예컨대, RAM(random access memory), ROM(read-only memory), EEPROM(Electrical Erasable Read-only Memory), 플래시 메모리 등일 수 있다. 메모리(904)는 운영 체제(908), 소프트웨어 애플리케이션(910) 및 연관 데이터(912)를 포함하는, 프로세서(902)에 의해 서버 장치(900) 상에서 동작하는 소프트웨어를 저장할 수 있다. 일부 구현에서, 애플리케이션(910)은 프로세서(902)가 여기에서 설명된 기능, 예컨대, 도 6 및 7의 방법의 일부 또는 전부를 수행하도록 하는 명령어를 포함할 수 있다. 소프트웨어 애플리케이션(910)은 컴포넌트를 모델링하고 실용 3D 에셋에 대한 3D 골격 구조를 추론하는 데 요구되는 기능 중 일부 또는 전부를 포함할 수 있다. 일부 구현에서, 소프트웨어 애플리케이션(910)의 하나 이상의 부분은 ASIC(application-specific integrated circuit), PLD(programmable logic device), FPGA(field-programmable gate array), 머신 러닝 프로세서 등과 같은, 전용 하드웨어로 구현될 수 있다. 일부 구현에서, 소프트웨어 애플리케이션(910)의 하나 이상의 부분은 CPU(central processing unit) 또는 GPU(graphics processing unit)와 같은, 범용 프로세서에서 구현될 수 있다. 다양한 구현에서, 전용 및/또는 범용 처리 하드웨어의 적절한 조합이 소프트웨어 애플리케이션(910)을 구현하는 데 사용될 수 있다.
예컨대, 메모리(904)에 저장된 소프트웨어 애플리케이션(910)은 사용자 데이터를 검색하고, 추론된 골격 구조를 갖는 아바타를 디스플레이/제시하기 위한 명령어 및/또는 모델링 컴포넌트(130), VE 엔진(104) 및/또는 VE 애플리케이션(112)과 같은, 다른 기능 또는 소프트웨어를 포함할 수 있다. 메모리(904)에서 소프트웨어 중 임의의 것은 대안적으로 임의의 다른 적절한 저장 위치 또는 컴퓨터 판독가능 매체에 저장될 수 있다. 또한, 메모리(904)(및/또는 다른 연결된 저장 장치(들))는 여기에서 설명된 특징에서 사용되는 명령어 및 데이터를 저장할 수 있다. 메모리(904) 및 임의의 다른 유형의 스토리지(자기 디스크, 광 디스크, 자기 테이프 또는 기타 유형의 매체)는 "스토리지” 또는 "저장 장치"로 간주될 수 있다.
I/O 인터페이스(906)는 서버 장치(900)가 다른 시스템 및 장치와 인터페이스할 수 있도록 하는 기능을 제공할 수 있다. 예컨대, 네트워크 통신 장치, 저장 장치(예컨대, 메모리 및/또는 데이터 저장소(106)) 및 입력/출력 장치는 인터페이스(906)를 통해 통신할 수 있다. 일부 구현에서, I/O 인터페이스는 입력 장치(키보드, 포인팅 장치, 터치 스크린, 마이크로폰, 카메라, 스캐너 등) 및/또는 출력 장치(디스플레이 장치, 스피커 장치, 프린터, 모터 등)를 포함하는 인터페이스 장치에 연결될 수 있다.
설명의 편의를 위해, 도 9은 프로세서(902), 메모리(904), I/O 인터페이스(906), 소프트웨어 블록(908 및 910) 및 데이터베이스(912) 각각에 대한 하나의 블록을 도시한다. 이들 블록은 하나 이상의 프로세서 또는 처리 회로, 운영 체제, 메모리, I/O 인터페이스, 애플리케이션 및/또는 소프트웨어 모듈을 나타낸다. 다른 구현에서, 장치(900)는 도시된 컴포넌트 전부를 갖지 않을 수 있고, 그리고/또는 여기에서 도시된 것 대신에 또는 이에 추가하여 다른 유형의 요소를 포함하는 다른 요소를 가질 수 있다. 온라인 서버(102)가 여기에서 일부 구현에 설명된 동작을 수행하는 것으로 설명되지만, 온라인 서버(102) 또는 유사한 시스템의 임의의 적절한 컴포넌트 또는 컴포넌트의 조합, 또는 이러한 시스템과 관련된 임의의 적절한 프로세서 또는 프로세서들이 설명된 동작을 수행할 수 있다.
사용자 장치는 또한 여기에서 설명된 특징을 구현 및/또는 사용할 수 있다. 예시적인 사용자 장치는 장치(900), 예컨대, 프로세서(들)(902), 메모리(904) 및 I/O 인터페이스(906)와 같은 일부 유사한 컴포넌트를 포함하는 컴퓨터 장치일 수 있다. 클라이언트 장치에 적합한 운영 체제, 소프트웨어 및 애플리케이션이 메모리에 제공되고 프로세서에 의해 사용될 수 있다. 클라이언트 장치를 위한 I/O 인터페이스는 입력 및 출력 장치, 예컨대, 사운드를 포착하기 위한 마이크로폰, 이미지 또는 비디오를 포착하기 위한 카메라, 사운드를 출력하기 위한 오디오 스피커 장치, 이미지 또는 비디오를 출력하기 위한 디스플레이 장치 또는 기타 출력 장치뿐만 아니라 네트워크 통신 장치에 연결될 수 있다. 예컨대, 오디오/비디오 입력/출력 장치(914) 내의 디스플레이 장치는 장치(900)에 연결(또는 포함)되어 여기에서 설명된 바와 같이 이미지 전처리 및 후처리를 디스플레이할 수 있으며, 이러한 디스플레이 장치는 임의의 적절한 디스플레이 장치, 예컨대, LCD, LED 또는 플라즈마 디스플레이 스크린, CRT, 텔레비전, 모니터, 터치 스크린, 3D 디스플레이 스크린, 프로젝터 또는 기타 시각적 디스플레이 장치를 포함할 수 있다. 일부 구현은 오디오 출력 장치, 예컨대, 음성 출력 또는 텍스트를 말하는 합성을 제공할 수 있다.
여기에 설명된 방법, 블록 및/또는 동작은 도시되거나 설명된 것과 다른 순서로 수행될 수 있고 및/또는 적절한 경우 다른 블록 또는 동작과 동시에(부분적으로 또는 완전히) 수행될 수 있다. 일부 블록 또는 작업은 데이터의 한 부분에 대해 수행되고 나중에 예컨대, 데이터의 다른 부분에 대해 다시 수행될 수 있다. 설명된 모든 블록 및 작업이 다양한 구현에서 수행될 필요는 없다. 일부 구현에서 블록 및 작업은 메서드에서 다른 순서로 및/또는 다른 시간에 여러 번 수행될 수 있다.
일부 구현에서, 방법의 일부 또는 전부는 하나 이상의 클라이언트 장치와 같은 시스템에서 구현될 수 있다. 일부 구현에서, 여기에 설명된 하나 이상의 방법은 예컨대, 서버 시스템에서 및/또는 서버 시스템과 클라이언트 시스템 모두에서 구현될 수 있다. 일부 구현에서, 하나 이상의 서버 및/또는 클라이언트의 서로 다른 컴포넌트는 메서드의 다른 블록, 작업 또는 다른 부분을 수행할 수 있다.
여기에서 설명된 하나 이상의 방법(예컨대, 방법(300 및/또는 800))은 컴퓨터에서 실행될 수 있는, 컴퓨터 프로그램 명령어 또는 코드에 의해 구현될 수 있다. 예컨대, 코드는 하나 이상의 디지털 프로세서(예컨대, 마이크로프로세서 또는 기타 처리 회로)에 의해 구현될 수 있으며, 비일시적 컴퓨터 판독가능 매체(예컨대, 저장 매체), 예컨대, 반도체 또는 솔리드 스테이트 메모리, 자기 테이프, 이동식 컴퓨터 디스켓(removable computer diskette), RAM(random access memory), ROM(read-only memory), 플래시 메모리, 강성 자기 디스크(rigid magnetic disk), 광 디스크, 솔리드 스테이트 메모리 드라이브 등을 포함한 자기, 광학, 전자기 또는 반도체 저장 매체를 포함하는 컴퓨터 프로그램 제품에 저장될 수 있다. 프로그램 명령어는 서버(예컨대, 분산 시스템 및/또는 클라우드 컴퓨팅 시스템)로부터 전달된 예컨대, SaaS(software as a service)의 형태로 전자 신호에 포함되고 제공될 수 있다. 대안적으로, 하나 이상의 방법은 하드웨어(로직 게이트 등) 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 하드웨어의 예시는 프로그래밍 가능 프로세서(예컨대, FPGA(Field-Programmable Gate Array), 복합 프로그래밍 가능 논리 소자(complex programmable logic device), 범용 프로세서, 그래픽 프로세서, ASIC(Application Specific Integrated Circuit) 등)일 수 있다. 하나 이상의 방법은 시스템에서 실행되는 애플리케이션의 일부 또는 컴포넌트로서, 또는 다른 애플리케이션 및 운영 체제와 함께 실행되는 애플리케이션이 또는 소프트웨어로서 수행될 수 있다.
여기에서 설명된 하나 이상의 방법은 임의의 유형의 컴퓨팅 장치에서 실행될 수 있는 자립형 프로그램(standalone program), 웹 브라우저에서 실행되는 프로그램, 모바일 컴퓨팅 장치(예컨대, 휴대폰, 스마트 폰, 태블릿 컴퓨터, 웨어러블 장치(손목 시계, 암밴드, 장신구, 헤드웨어, 고글, 안경 등), 랩톱 컴퓨터 등)에서 실행하는 모바일 애플리케이션(“앱")에서 실행될 수 있다. 일 예시에서, 클라이언트/서버 아키텍처가 사용될 수 있고, 예컨대, (클라이언트 장치로서) 모바일 컴퓨팅 장치가 사용자 입력 데이터를 서버 장치로 전송하고 서버로부터 출력(예컨대, 디스플레이)을 위한 라이브 피드백 데이터를 수신한다. 다른 예시에서, 계산은 모바일 컴퓨팅 장치와 하나 이상의 서버 장치 간에 분할될 수 있다.
여기에서 논의된 특정 구현이 사용자 데이터(예컨대, 사용자 인구통계, 사용자 행동 데이터, 사용자 컨텍스트 데이터, 광고를 위한 사용자 설정 등)를 획득하거나 사용할 수 있는 상황에서. 사용자에게는 이러한 정보의 수집, 저장 또는 사용 여부와 방법을 제어할 수 있는 옵션이 제공된다. 즉, 여기에서 논의된 구현은 명시적인 사용자 인가(user authorization)를 수신하고, 적용 가능한 규정에 따라 사용자 정보를 수집, 저장 및/또는 사용한다.
사용자는 프로그램 또는 특징이 특정 사용자 또는 프로그램 또는 특징과 관련된 다른 사용자에 대한 사용자 정보를 수집하는지 여부에 대한 제어가 제공될 수 있다. 정보를 수집할 각 사용자에게는 사용자가 해당 사용자와 관련된 정보 수집에 대한 제어를 행사하고, 정보가 수집되는지 그리고 정보의 어느 부분을 수집할 것인지에 대한 허가 또는 인가를 제공하도록 허용할 수 있는 옵션(예컨대, 사용자 인터페이스를 통해)이 제시된다. 또한, 특정 데이터는 저장 또는 사용 전에 하나 이상의 방식으로 수정되어, 개인 식별 정보가 제거될 수 있다. 일 예시로서, 개인 식별 정보가 결정될 수 없도록 사용자의 신원이 수정될 수 있다(예컨대, 가명(pseudonym), 숫자 값 등을 사용한 대체). 다른 예시에서, 사용자의 지리적 위치는 더 큰 지역(예컨대, 도시, 우편 번호, 주, 국가 등)으로 일반화될 수 있다.
설명이 그 특정 구현과 관련하여 설명되었지만, 이러한 특정 구현은 단지 예시적인 것이며, 제한적이지 않다. 예시에 설명된 개념은 다른 예시 및 구현에 적용될 수 있다.
본 개시에서 설명된 기능 블록, 동작, 특징, 방법, 장치 및 시스템은 당업자에게 알려진 바와 같이 시스템, 장치 및 기능 블록의 상이한 조합으로 통합되거나 분할될 수 있다는 점에 유의한다. 임의의 적절한 프로그래밍 언어 및 프로그래밍 기술이 특정 구현의 루틴을 구현하는 데 사용될 수 있다. 다른 프로그래밍 기술이, 예컨대, 절차적 또는 객체 지향적으로 이용될 수 있다. 루틴은 단일 처리 장치 또는 다중 프로세서 상에서 실행할 수 있다. 단계, 동작 또는 계산이 특정 순서로 제시될 수 있지만, 순서는 다른 특정 구현에서 변경될 수 있다. 일부 구현에서, 본 명세서에서 순차적으로 도시된 복수의 단계 또는 동작이 동시에 수행될 수 있다.

Claims (20)

  1. 컴퓨터 구현 방법으로서,
    3차원(3D) 아바타에 대한 아바타 데이터 모델을 수신하는 단계 - 상기 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위 및 제2 부모 모델로부터의 제2 신체 부위를 포함하며, 상기 제1 부모 모델 및 상기 제2 부모 모델은 서로 다른 3D 모델임 -;
    상기 아바타 데이터 모델에 대한 그래프 표현을 생성하는 단계 - 상기 그래프 표현은 상기 아바타 데이터 모델에 대한 선택된 루트 포인트에서 시작하여, 상기 아바타 데이터 모델의 단말 부분까지 연장됨 -
    복수의 관절 위치를 결정하기 위해 상기 그래프 표현을 통과하는(traversing) 단계 - 상기 관절 위치는 각각 관절이 배치될 각각의 위치를 나타내고, 상기 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위의 설명, 또는 서로 다른 신체 부위 사이의 연결에 기초하여 결정됨 -;
    모든 관절에 대해 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고, 그 골격 부분은 상기 제1 관절과 상기 제2 관절 중 하나 또는 둘 모두의 운동에 의해 회전하도록 상기 복수의 관절 위치 사이의 골격 구조를 추론하는 단계; 및
    실용 3D 에셋(practical 3D asset)을 생성하기 위해 상기 복수의 관절 위치 각각에서의 관절, 상기 추론된 골격 구조, 및 상기 아바타 데이터 모델을 결합하는 단계를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    가상 경험의 가상 환경에서 상기 실용 3D 에셋을 애니메이션화하는 단계를 더 포함하는 컴퓨터 구현 방법.
  3. 제2항에 있어서,
    상기 실용 3D 에셋을 애니메이션화하는 단계는 상기 실용 3D 에셋의 애니메이션 중 스킨 변형을 위해 상기 추론된 골격 구조를 활용하는 단계를 포함하는, 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 그래프 표현은 상기 아바타 데이터 모델의 개별 신체 부위를 나타내는 복수의 노드를 포함하는 것인, 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 그래프 표현은 복수의 에지를 더 포함하고, 상기 복수의 에지의 각각의 에지는 적어도 2개의 노드 사이에서 연장되고, 상기 복수의 에지의 각각의 에지는 관절 위치를 나타내는 것인, 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 복수의 관절 위치에서 결합된 각각의 관절은 애니메이션화된 관절 또는 고정 관절 중 어느 하나를 포함하는 것인, 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    적어도 상기 추론된 골격 구조에 기초하여 상기 실용 3D 에셋을 스키닝하는 단계를 더 포함하는 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 그래프 표현을 통과하는 단계는 깊이 우선 탐색 또는 너비 우선 탐색 중 하나 이상을 포함하는 것인, 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 그래프 표현은 상기 아바타 데이터 모델의 개별 신체 부위의 스케일에 기초하여 에지에 할당된 가중치를 갖는 가중치 그래프(weighted graph)를 포함하는 것인, 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 제1 부모 모델 또는 상기 제2 부모 모델 중 하나 이상은 가상 경험 플랫폼의 사용자 생성 콘텐츠인, 컴퓨터 구현 방법.
  11. 시스템으로서:
    명령어가 저장된 메모리; 및
    상기 메모리에 연결되고 상기 메모리에 액세스하도록 동작 가능한 처리 장치를 포함하며, 상기 명령어는 상기 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금 동작을 수행하도록 하고, 상기 동작은:
    3차원(3D) 아바타에 대한 아바타 데이터 모델을 수신하는 것 - 상기 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위 및 제2 부모 모델로부터의 제2 신체 부위를 포함하며, 상기 제1 부모 모델 및 상기 제2 부모 모델은 서로 다른 3D 모델임 -;
    상기 아바타 데이터 모델에 대한 그래프 표현을 생성하는 것 - 상기 그래프 표현은 상기 아바타 데이터 모델에 대한 선택된 루트 포인트에서 시작하여, 상기 아바타 데이터 모델의 단말 부분까지 연장됨 -;
    복수의 관절 위치를 결정하기 위해 상기 그래프 표현을 통과하는 것 - 상기 관절 위치는 각각 관절이 배치될 각각의 위치를 나타내고, 상기 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위의 설명, 또는 서로 다른 신체 부위 사이의 연결에 기초하여 결정됨 -;
    모든 관절에 대해 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고, 그 골격 부분은 상기 제1 관절과 상기 제2 관절 중 하나 또는 둘 모두의 운동에 의해 회전하도록 상기 복수의 관절 위치 사이의 골격 구조를 추론하는 것; 및
    실용 3D 에셋을 생성하기 위해 상기 복수의 관절 위치 각각에서의 관절, 상기 추론된 골격 구조, 및 상기 아바타 데이터 모델을 결합하는 것을 포함하는, 시스템.
  12. 제11항에 있어서,
    상기 동작은 가상 경험의 가상 환경에서 상기 실용 3D 에셋을 애니메이션화하는 것을 더 포함하는, 시스템.
  13. 제12항에 있어서,
    상기 실용 3D 에셋을 애니메이션화하는 것은 상기 실용 3D 에셋의 애니메이션 중 스킨 변형을 위해 상기 추론된 골격 구조를 활용하는 것을 포함하는, 시스템.
  14. 제11항에 있어서,
    상기 그래프 표현은 상기 아바타 데이터 모델의 개별 신체 부위를 나타내는 복수의 노드를 포함하는 것인, 시스템.
  15. 제14항에 있어서,
    상기 그래프 표현은 복수의 에지를 더 포함하고, 상기 복수의 에지의 각각의 에지는 적어도 2개의 노드 사이에서 연장되고, 상기 복수의 에지의 각각의 에지는 관절 위치를 나타내는 것인, 시스템.
  16. 제11항에 있어서,
    상기 복수의 관절 위치에서 결합된 각각의 관절은 애니메이션화된 관절 또는 고정 관절 중 어느 하나를 포함하는 것인, 시스템.
  17. 제11항에 있어서,
    상기 동작은 적어도 상기 추론된 골격 구조에 기초하여 상기 실용 3D 에셋을 스키닝하는 것을 더 포함하는, 시스템.
  18. 제11항에 있어서,
    상기 그래프 표현을 통과하는 것은 깊이 우선 탐색 또는 너비 우선 탐색 중 하나 이상을 포함하는 것인, 시스템.
  19. 제11항에 있어서,
    상기 그래프 표현은 상기 아바타 데이터 모델의 개별 신체 부위의 스케일에 기초하여 에지에 할당된 가중치를 갖는 가중치 그래프를 포함하는 것인, 시스템.
  20. 명령어가 저장된 비일시적 컴퓨터 판독 가능 매체로서, 처리 장치에 의한 실행에 응답하여 상기 처리 장치로 하여금 동작을 수행하도록 하고, 상기 동작은:
    3차원(3D) 아바타에 대한 아바타 데이터 모델을 수신하는 것 - 상기 아바타 데이터 모델은 적어도 제1 부모 모델로부터의 제1 신체 부위 및 제2 부모 모델로부터의 제2 신체 부위를 포함하며, 상기 제1 부모 모델 및 상기 제2 부모 모델은 서로 다른 3D 모델임 -;
    상기 아바타 데이터 모델에 대한 그래프 표현을 생성하는 것 - 상기 그래프 표현은 상기 아바타 데이터 모델에 대한 선택된 루트 포인트에서 시작하여, 상기 아바타 데이터 모델의 단말 부분까지 연장됨 -;
    복수의 관절 위치를 결정하기 위해 상기 그래프 표현을 통과하는 것 - 상기 관절 위치는 각각 관절이 배치될 각각의 위치를 나타내고, 상기 관절 위치는 서로 다른 신체 부위의 교차점, 서로 다른 신체 부위의 설명, 또는 서로 다른 신체 부위 사이의 연결에 기초하여 결정됨 -;
    모든 관절에 대해 골격 부분이 제1 관절과 제2 관절 사이에서 연장되고, 그 골격 부분은 상기 제1 관절과 상기 제2 관절 중 하나 또는 둘 모두의 운동에 의해 회전하도록 상기 복수의 관절 위치 사이의 골격 구조를 추론하는 것; 및
    실용 3D 에셋을 생성하기 위해 상기 복수의 관절 위치 각각에서의 관절, 상기 추론된 골격 구조, 및 상기 아바타 데이터 모델을 결합하는 것을 포함하는, 비일시적 컴퓨터 판독 가능 매체.
KR1020247010066A 2021-10-14 2022-10-13 실용 3d 에셋을 위한 추론된 골격 구조 KR20240055025A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163255489P 2021-10-14 2021-10-14
US63/255,489 2021-10-14
US202263404871P 2022-09-08 2022-09-08
US63/404,871 2022-09-08
PCT/US2022/046528 WO2023064441A1 (en) 2021-10-14 2022-10-13 Inferred skeletal structure for practical 3d assets

Publications (1)

Publication Number Publication Date
KR20240055025A true KR20240055025A (ko) 2024-04-26

Family

ID=85981051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247010066A KR20240055025A (ko) 2021-10-14 2022-10-13 실용 3d 에셋을 위한 추론된 골격 구조

Country Status (3)

Country Link
US (1) US20230120883A1 (ko)
KR (1) KR20240055025A (ko)
WO (1) WO2023064441A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017137948A1 (en) * 2016-02-10 2017-08-17 Vats Nitin Producing realistic body movement using body images

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928663B2 (en) * 2015-07-27 2018-03-27 Technische Universiteit Delft Skeletal joint optimization for linear blend skinning deformations utilizing skeletal pose sampling
US10789754B2 (en) * 2018-07-27 2020-09-29 Adobe Inc. Generating target-character-animation sequences based on style-aware puppets patterned after source-character-animation sequences
WO2021094537A1 (en) * 2019-11-15 2021-05-20 Ariel Ai Ltd 3d body model generation

Also Published As

Publication number Publication date
WO2023064441A1 (en) 2023-04-20
US20230120883A1 (en) 2023-04-20

Similar Documents

Publication Publication Date Title
US10546408B2 (en) Retargeting skeleton motion sequences through cycle consistency adversarial training of a motion synthesis neural network with a forward kinematics layer
CN113785330B (zh) 使用相异的目标动画数据来训练人物的强化学习
US11741668B2 (en) Template based generation of 3D object meshes from 2D images
KR102103939B1 (ko) 머리 회전을 갖는 아바타 얼굴 표정 애니메이션
US11992768B2 (en) Enhanced pose generation based on generative modeling
US20090091563A1 (en) Character animation framework
CN111714880B (zh) 画面的显示方法和装置、存储介质、电子装置
US11514638B2 (en) 3D asset generation from 2D images
KR102374307B1 (ko) 애니메이팅된 캐릭터의 수정
US20230267668A1 (en) Joint twist generation for animation
US20230120883A1 (en) Inferred skeletal structure for practical 3d assets
CN111739134B (zh) 虚拟角色的模型处理方法、装置及可读存储介质
US10099135B2 (en) Relative inverse kinematics graphical user interface tool
JP7364702B2 (ja) テクスチャ操作を使用するアニメーション化された顔
CN115526967A (zh) 虚拟模型的动画生成方法、装置、计算机设备及存储介质
US20220172431A1 (en) Simulated face generation for rendering 3-d models of people that do not exist
Skulimowski et al. Design and optimisation methods for interactive mobile VR visualisation
Stamoulias et al. Enhancing X3DOM declarative 3D with rigid body physics support
Montusiewicz et al. The concept of low-cost interactive and gamified virtual exposition
CN118160008A (zh) 实用3d资产的推断的骨骼结构
US11957976B2 (en) Predicting the appearance of deformable objects in video games
Coppens Integrating Immersive Technologies for Algorithmic Design in Architecture
US11769297B2 (en) Simulation of rigid bodies
US20240135616A1 (en) Automated system for generation of facial animation rigs
Van Nguyen et al. A Solution for Building a V-Museum Based on Virtual Reality Application