2013-08-22 115 views
11

Tôi muốn tạo hoạt ảnh cho một mô hình (ví dụ như con người, đi bộ) trong OpenGL. Tôi biết có những thứ như bộ xương-hoạt hình (với toán học phức tạp), nhưng những gì về vấn đề này ....Làm cách nào để tạo hoạt ảnh cho mô hình 3D (lưới) trong OpenGL?

  1. Tạo một mô hình trong Blender
  2. Tạo khung cho rằng mô hình trong Blender
  3. Bây giờ làm một hình ảnh động đi bộ trong Blender với mô hình và bộ xương
  4. Hãy một số "khung hình" của phim hoạt hình đó và xuất khẩu tất cả các "keyframe" như một mô hình đơn (ví dụ như obj file)
  5. Thực hiện một bộ nạp file oBJ cho OpenGL (để có được đỉnh, kết cấu, dữ liệu bình thường và khuôn mặt)
  6. Sử dụng một VBO để vẽ mô hình hoạt hình trong OpenGL (và nhận được một số ý tưởng phức tạp làm thế nào để thay đổi "keyframe" hiện tại/mô hình trong VBO ... có lẽ cái gì đó với glMapBufferRange

Ok, tôi biết ý tưởng này chỉ là một kịch bản nhỏ, nhưng liệu nó có đáng xem xét hơn nữa không? Khái niệm tốt để thay đổi "keyFrame"/mô hình trong VBO là gì?

Tôi biết rằng vấn đề bộ nhớ, nhưng với các mô hình nhỏ (và không quá nhiều hình động) nó có thể được thực hiện, tôi nghĩ.

Trả lời

8

Có, phương pháp bạn đang đề cập đến rất phổ biến trong các trò chơi video 3D sớm (trận động đất, v.v.).

Tôi khuyên bạn nên triển khai hơi khác một chút sau đó bạn mô tả. Thay vì xuất khung hình chính cho mọi khung hình hoạt ảnh có thể có. Xuất nhiều phím mở rộng hơn và nội suy các vị trí đỉnh. Điều này sẽ cho phép phát lại mượt mà hơn với mức sử dụng bộ nhớ ít hơn đáng kể.

Điều này sẽ yêu cầu chỉ một VBO (truyền trực tuyến hoặc động). Mỗi khung hình bạn sẽ tìm thấy các khung hình chính trước đó và tiếp theo, nội suy các đỉnh và tải kết quả lên VBO.

Bạn thực sự có thể thiết lập máy xay để xuất mọi khung của một cảnh dưới dạng OBJ. Sau đó, công cụ tùy chỉnh có thể biên dịch các tệp này thành định dạng hoạt ảnh đẹp.

đọc đây:

+3

Thành thật mà nói, thực hiện tweening keyframe này về mặt kĩ đỉnh có lẽ là rất nhiều nỗ lực nhiều hơn là imple đề cập đến một hệ thống hoạt hình xương. Hoạt hình của xương không được thực hiện trong những ngày "cũ", bởi vì CPU thiếu sức mạnh để thực hiện tất cả những biến đổi đỉnh bổ sung đó. Nhưng hiện nay, GPU đang làm khủng khiếp thêm ma trận và nội suy cho bữa ăn sáng và nó cũng ít mã hơn nhiều trong GLSL. – datenwolf

+0

@datenwolf Tôi đồng ý với bạn về nội dung hoạt động, nhưng tôi không đồng ý về việc dễ dàng triển khai hoạt ảnh trên xương. Vertex tweening là 'for i verts [i] = lerp (t, trước [i], tiếp theo [i])}' So sánh với slerping một hệ thống phân cấp của quaternions, với các mối quan hệ và độ dài, (phần đó không xấu) nhưng sau đó bạn phải kết hợp các đỉnh với trọng lượng xương. Nó chỉ là rất nhiều dữ liệu hơn để quản lý. –

+1

thx để có câu trả lời nhanh! – user2602528