2013-08-22 4 views
11

OpenGL에서 모델 (예 : 인간, 걷기)에 애니메이션을 적용하려고합니다. 나는 OpenGL에서 3D 모델 (메쉬)에 애니메이션을 적용하는 방법은 무엇입니까?

  1. 지금 블렌더
  2. 에서 해당 모델에 대한 골격을 만들기
  3. 블렌더
  4. 의 모델을 만들기 .... 이것에 대해 (까다로운 수학 포함) 골격 애니메이션,하지만 같은 물건이 알고 그 모델과 골격
  5. 와 블렌더에서 산책 애니메이션 (
  6. 는 OpenGL을위한 OBJ 파일 로더를 만드는 것이 애니메이션의 일부 "키 프레임"을 가지고 (OBJ 파일로 예를 들면) 단일 모델 으로 모든 "키 프레임을"수출 버텍스, 텍스쳐, 노멀, 페이스 데이터를 얻으려고)
  7. 사용하십시오 VBO에서 OpenGL에서 해당 애니메이션 모델을 그릴 (어떻게 현재의 "키 프레임"를 VBO에서/모델 ... glMapBufferRange

확인과 아마 뭔가를 변경하는 몇 가지 까다로운 아이디어를 얻을, 나는이 생각을 알고 약간의 스크립트 일 뿐이지 만 더 살펴볼 가치가 있습니까? VBO에서 "keyFrame"/ 모델을 변경하는 좋은 개념은 무엇입니까?

나는 그 메모리 문제를 안다. 그러나 작은 모델 (그리고 너무 많은 애니메이션은 아니다)으로 할 수 있다고 생각한다.

답변

8

예, 당신이 말하는 방법은 초기 3D 비디오 게임 (지진 등)에서 매우 인기가있었습니다.

설명을 약간 다르게 구현하는 것이 좋습니다. 가능한 모든 애니메이션 프레임에 대해 키 프레임을 내보내는 대신 펼쳐진 키를 더 내보내고 꼭지점 위치를 보간합니다. 이렇게하면 훨씬 적은 메모리 사용량으로 훨씬 부드럽게 재생할 수 있습니다.

이렇게하면 단일 (스트리밍 또는 동적) VBO 만 있으면됩니다. 각 프레임에서 이전 및 다음 키 프레임을 찾고 정점을 보간하고 결과를 VBO에 업로드합니다.

실제로 블렌더를 설정하여 장면의 모든 프레임을 OBJ로 내보낼 수 있습니다. 그런 다음 사용자 정의 도구를 사용하여 이러한 파일을 멋진 애니메이션 형식으로 컴파일 할 수 있습니다.

는 여기에 읽기 :

+3

는 솔직히 말해서, 정점 수준에서이 키 프레임 트위닝을 구현하는 것은 많은 아마입니다 구현보다 많은 노력 골격 애니메이션 시스템 멘토링. CPU는 모든 추가적인 버텍스 변환을 수행 할 수있는 힘이 없었기 때문에 "오래된"시대에 스켈 레탈 애니메이션이 수행되지 않았습니다. 그러나 오늘날의 GPU는 아침 식사에 대한 추가 행렬 및 보간법을 처리하고 GLSL의 코드가 훨씬 적습니다. – datenwolf

+0

@datenwolf 성능에 관해서는 당신의 의견에 동의하지만, 골격 애니메이션 구현의 용이성에 대해서는 동의하지 않습니다. 버텍스 트위닝은 관계와 길이가있는 쿼터니언의 계층 구조를 slerping하는 것과 비교하면 (그 부분(), 그 부분 나쁘지는 않음)하지만 꼭지점을 뼈 가중치와 연결해야합니다. 관리 할 데이터가 훨씬 많습니다. –

+1

빠른 답변을위한 thx! – user2602528

관련 문제