저는 2D에서 얼굴 모양이 평면으로 그려지고 애니메이션으로 표현되는 만화 같은 3D 캐릭터를 만들고 싶습니다. Bubble Guppies 캐릭터와 비슷합니다.3D 모델에 2D 프레임 별 애니메이션을 배치하는 방법 (하이브리드 애니메이션)
나는 좋은 방법을 찾는 데 어려움을 겪고 있습니다. 나는 Libgdx를 사용하고 있지만 잠재적 인 방법론이 모든 게임 엔진에 적용될 수 있다고 생각합니다.
여기에 제가 생각한 아이디어가 있지만 각각 단점이 있습니다. 이것이 일반적으로 행해지는 방법이 있습니까? 나는 어린 아이들과 함께 저예산 Wii 게임을하고 있었는데 (Nickelodeon dancing game), 이런 종류의 애니메이션을 얼굴에 사용했습니다.
아이디어 :
UV 애니메이션 - 게임 모델 (FBX 형식) 특정 자외선의 다양한 스킨에 저장되도록 설정하는 방법이 있나요? 그런 다음 UV는 스프라이트 맵의 여러 위치로 점프 할 수 있습니다.
투영 된 얼굴 -이 아이디어는 복잡합니다. 투영 된 텍스처의 UV를 이동시키는 버텍스 쉐이더 유니폼을 사용하여 텍스처를 투영하여 모델에 투영합니다. 기본적으로 얼굴 투영을 모델과 함께 움직이기 위해 설정된 투영 행렬이 필요합니다. 그러나 나머지 모델은 스프라이트 맵의 다른 부분을 깨끗하게 유지하려면면 프레임 스프라이트 주위에 충분한 여백이 필요합니다. 그리고 이것은 모바일 용으로는 좋지 않은 복잡한 조각 셰이더를 만듭니다.
모델로 평면 3D 데칼 이동 - 모델과 정렬 된 3D 데칼을 별도로 표시하고 게임에서 별도의 메쉬로 배치합니다. 데칼은 애니메이션의 각 프레임에서 정점의 UV 속성을 변경하는 쿼드 일 수 있습니다. 그러나이 방법은 얼굴의 곡률을 감싸지 않습니다. 어쩌면 그것은 각 눈과 입을위한 데칼을 분리하기 위해 분해 될 수 있지만 여전히 멋지지는 않을 것이며, 각 모델과 함께 데칼이 어디에 위치하는지 정의하기 위해 별도의 파일을 만들어야 할 수도 있습니다.
애니메이션의 각 프레임에 대해 뼈를 구분합니다. - 애니메이션의 모든 프레임에 대해 메시의 중복 된면을 모델링하고 각각 고유 한 뼈를 제공하십시오. 0에서 1 사이의 뼈대 눈금을 토글하여 얼굴을 애니메이트합니다. 이 아이디어는 애니메이션 프레임이 몇 개 이상있는 경우 빠르게 분해됩니다.
각 프레임의 피부 부분을 업데이트하십시오. - 스킨을 FBO로 복사하십시오. 얼굴이 포함 된 FBO 색상 텍스처 부분에 최신 애니메이션 프레임을 그립니다. 이 방법의 단점은 모델의 모든 인스턴스에 대해 메모리에 별도의 텍스처 복사본이 필요하다는 것입니다. 그리고 FBO는 매 프레임마다 비용이 많이 드는 버퍼를 복원해야하거나 전체를 다시 그려야합니다. FBO 각 프레임으로 스킨 (또한 값 비싼).
나는 이보다 훨씬 어려운 다른 아이디어가 있습니다. 더 쉬운 방법이 있어야하는 것처럼 느껴집니다.
편집 :
한 번 더 생각 ... 통일 UV 오프셋 및 버텍스 컬러 - 그들은 쉽게 모든 게임 엔진과 모델링 패키지에서 지원되기 때문에이 방법은, 색상 정점 사용하는 것이지만, 많은 경우에 사용되지 않습니다. 텍스처에서 애니메이션 프레임 스트립을 만듭니다. 첫 번째 프레임에 대해 얼굴 UV를 설정하십시오.Alpha 0으로 채워지는면 정점을 제외한 모든 정점에 알파를 적용합니다. 그런 다음 UV면 간격 띄우기를 정점 셰이더에 전달하고 UV에 추가하기 전에 정점 색상의 단계 함수로 곱합니다. 이렇게하면 위의 모든 방법의 단점을 피할 수 있습니다. 모든 것이 모델의 모든 인스턴스가 공유하는 하나의 텍스처로 래핑 될 수 있으며 얼굴이있는 경우를 제외하고는 모델에 2 패스 픽셀이 없습니다. 여기서의 단점은 좀 더 무거운 모델입니다 (정점 당 4 개의 추가 속성, 색상은 단일 바이트로 구워 질 수 있음).
가장 쉬운 방법 일 수 있습니다. 하지만 몇 가지 단점이 있습니다 ... 애니메이션 프레임을 하나의 텍스처 위에 배치 할 수 없으므로 화면에 문자의 인스턴스가 너무 많으면 많은 텍스처 바인딩이 진행됩니다. 또한 얼굴에만 시각적으로 두 개가 필요한 경우에도 문자의 모든 픽셀에 대해 두 가지 텍스처 검색이 있습니다. 모바일을위한 비싼 종류. 나는 데칼 아이디어와 나의 뼈 아이디어가 더 성능이 좋지만 구현하기가 더 어렵다고 생각합니다. – Tenfour04