2014-04-10 2 views
0

나는 블렌더에서 obj 파일을 읽고 애니메이션을로드하려고합니다. (많은 정점, 각 프레임 당 1 개의 파일)블렌더 애니메이션을 OpenGL로 가져 오기

성능 향상을 위해 프레임을 저장할 때이 방법을 사용하여 나만의 애니메이션 클래스를 만드는 것이 좋지 않습니까?

vector <vector <float>> frames; 
vector <float> verticesForThisFrame; 
verticesForThisFrame.push_back(readX()); 
verticesForThisFrame.push_back(readY()); 
verticesForThisFrame.push_back(readZ()); 
frames.push_back(verticesForThisFrame); 

매우 비효율적이라면 무엇을 제안합니까?

그런데 저는 SDL을 사용하여 창을 열고 OpenGL을 그래픽으로 사용합니다.

+0

어떤 방향으로 이동해야하는지 이해하는 데 도움이 될 수 있습니다 https://stackoverflow.com/questions/2122684/how-to-import-blender-3d-animation-to -iphone-opengl-es? rq = 1 – SAKrisT

답변

0

Wavefront Obj에는 no animation support이 있습니다. 믹서기 수출이 제안한 것처럼 각 프레임마다 다른 메쉬를 렌더링하는 것은 무거운 모델의 경우 특히 무차별 적 패치입니다.

메시를 obj에 유지하려면 블렌더에서 헬퍼 (더미 포인트, 선, 패시브 등)를 만들고 이름을 지정할 수 있습니다. 하지만 최종 애니메이션은 아마도 그 헬퍼를 사용하여 동일한 메시를 변형시켜야합니다.

애니메이션을 처리하는 내보내기 형식의 경우 collada을 사용합니다.

+0

이제는 obj 파일을 사용하는 것보다 더 나은 방법은 무엇입니까? 또는 선호하는 가장 좋은 방법;) –

+0

나는 당신과 같은 상황에 직면했다. 그리고 내가 설명했던 것을 선택했다. (회전 축에 대해 더미라는 버텍스를 만드는 등등 ..). 고급 내보내기 형식을 검색하지 않았습니다. –

+0

조금 검색, 선험적으로, 나는 [.x] (http://stackoverflow.com/questions/19323192/skeletal-animation-of-directx-files-in-opengl) –

0

프레임 당 하나의 파일입니까? 대기 시간은 io라고 생각합니다. 처음에는 모든 프레임을 읽지 않으시겠습니까? 약 4 * 3 * n (vertices) 바이트, 프레임 당 약 720KB에 대한 charcacter에 대해서만 점을 저장하면 약 6 * 10^4 정점을 가지는데, 그것을 저장하기위한 100 프레임 버퍼 용 72MB 메모리.

마지막으로 .obj? 데이터를 저장하기 위해 이진 파일을 사용해야한다고 생각합니다

+0

각 프레임마다 약 4000 개의 꼭지점이 있습니다. –