Kết xuất các ký tự, với các chi bị cắt (Các mô hình Blender trong Java / OpenGL)


10

Những khía cạnh nào tôi nên xem xét để tạo hoạt hình nhân vật và các lớp kết xuất nếu tôi muốn có thể có các chi có thể tháo rời? Tôi đã phát triển một hệ thống cơ thể chi tiết có thể có mọi thứ theo hệ thống thần kinh được xác định. Tôi đang nhắm đến một cái gì đó tương tự như mức độ chi tiết thiệt hại được tìm thấy trong Pháo đài Lùn. Ví dụ, khi một nhân vật gây sát thương lên cánh tay trên của họ, có khả năng tổn thương thần kinh có thể vô hiệu hóa toàn bộ cánh tay. Hoặc họ có thể mất cánh tay hoàn toàn.

Tôi có một hệ thống được viết để xử lý phần dữ liệu này. Mỗi nhân vật có một thân cây, có phần phụ và các phần bên trong. Mỗi phần phụ cũng có thể có phần phụ và phần bên trong. Các phần phụ con bị vô hiệu hóa / loại bỏ nếu phần phụ huynh bị vô hiệu hóa / loại bỏ. Nếu bất kỳ phần phụ bị vô hiệu hóa / loại bỏ hoặc phần bên trong được yêu cầu cho cuộc sống, nhân vật sẽ sớm chết.

Những gì tôi đang làm bây giờ là phần vẽ / hoạt hình của cái này. Làm cách nào để xác định hình ảnh động để biết cái nào được phép đưa ra trạng thái hiện tại của cơ thể (thiếu cánh tay / chân và vân vân)? Làm thế nào để tôi thiết lập hệ thống vẽ để không vẽ các chi bị thiếu? Có phải mỗi chi / phần phụ phải là mô hình riêng của nó (tôi muốn rút ra phần phụ lục trên mặt đất)?

Hệ thống đơn giản mà tôi đang chuyển đổi (tôi vừa viết nó để thử nghiệm) nhập tất cả các khung chính của hoạt hình dưới dạng mô hình đầy đủ vào VBO (cùng với số lượng đỉnh cho nơi bắt đầu / dừng khung chính). Nó không nhập hoặc sử dụng các xương được xác định trong Blender và nó không nội suy giữa các khung.

Đây có thể là một câu hỏi khá lớn, vì vậy tôi cũng đang tìm kiếm các tài nguyên có thể đưa tôi đến nơi tôi cần đến.

BIÊN TẬP

Tôi hỏi về hoạt hình biết chân tay nào đang hoạt hình bởi vì tôi muốn nó được thiết lập để thực hiện một hoạt hình thay thế nếu thiếu một chi bắt buộc. Sau khi nghĩ về điều đó, tôi tưởng tượng mình sẽ thực hiện kiểm tra đó trước khi kích hoạt một hình ảnh động và kích hoạt hình ảnh động phù hợp tại thời điểm đó.

Câu trả lời:


7

Tôi hiện đang làm việc trên một hệ thống tương tự. Thủ tục hoạt hình + phân chia, vv

Làm cách nào để xác định hình ảnh động để biết cái nào được phép đưa ra trạng thái hiện tại của cơ thể (thiếu cánh tay / chân và vân vân)?

Tôi không hoàn toàn theo dõi điều này, nếu các chi không có ở đó, thì ai quan tâm nó có hoạt hình hay không, bởi vì nó không thể được nhìn thấy.

Có phải mỗi chi / phần phụ phải là mô hình riêng của nó (tôi muốn rút ra phần phụ lục trên mặt đất)?

Tôi tự động xây dựng những thứ này từ việc sử dụng trọng lượng xương đỉnh. Chất lượng có thể thấp hơn một chút so với làm mọi chi bằng tay, nhưng sẽ ít nỗ lực hơn một khi tôi đã thực hiện một lần, vì sau đó tôi có thể áp dụng nó cho mọi mô hình.

Với cách tiếp cận lành mạnh từ phần sau, vâng, mỗi chi sẽ có mô hình riêng.

Tôi có khả năng có một mô hình hoàn chỉnh trong tay của toàn bộ thực thể và mỗi chi bị cắt ra.

Làm thế nào để tôi thiết lập hệ thống vẽ để không vẽ các chi bị thiếu?

Hai lựa chọn chính, cách đơn giản nhất là chỉ cần vẽ các chi riêng biệt và nơi các chi tham gia có các mặt bổ sung thường được ẩn với kết cấu "thịt sống" sẽ được nhìn thấy khi các chi bị loại bỏ.

Lựa chọn thứ hai là thực hiện nó một cách linh hoạt khi đang bay, điều này sẽ chỉ hoạt động với các mô hình tương đối đơn giản. Cách tiếp cận là lấy mô hình cơ sở và tìm các đỉnh có trọng số đến chi bạn muốn tháo dỡ. Xóa các đỉnh đó, lưu ý những gì chúng kết nối với để bạn biết phần mở. Sau đó, bạn tự động đóng lại trên phần mở với các hình tam giác với kết cấu "thịt sống". Từ quan điểm của một nhà phát triển phần mềm lành mạnh, cách tiếp cận này không phải là một phương pháp tốt (biến dạng mô hình thời gian chạy) và các đặc tính hiệu suất "phẳng" ít hơn, nhưng tôi khá thích nó.

Mặc dù phương thức đầu tiên sẽ tạo ra nhiều lệnh gọi rút thăm hơn, nhưng nó cũng dễ tiếp cận hơn một chút.

Cá nhân tôi đang đi với lần thứ hai, với thành công tương đối, nhưng tất cả các mô hình của tôi đều rất thấp, do đó, việc tự động cắt một mô hình và tải lại VBO trong khung là có thể thực hiện được.

Nó không nhập hoặc sử dụng các xương được xác định trong Blender và nó không nội suy giữa các khung.

Điều này làm cho nó thực sự khó thực hiện phân chia theo cách thủ tục, bởi vì làm thế nào để bạn biết những đỉnh thuộc về khớp gì? Trọng lượng xương Vertex và sự phân chia đi đôi với nhau rất độc đáo, tôi đề nghị bạn nên suy nghĩ lại về bit này.

Tôi cũng đề nghị bạn đầu tư vào nội suy. Không có nó, bạn không thể tăng tốc / làm chậm hoạt hình của mình và bạn được kết hợp với tốc độ khung hình. Điều này có nghĩa là bạn sẽ có thể nhận được ít hơn từ hoạt hình của bạn. ví dụ: bạn không thể làm chậm hoạt hình đi bộ khi ai đó sắp dừng lại, v.v.


Cảm ơn @Michael. Tôi đã đưa ra nội suy và nhập xương vì tôi biết cuối cùng tôi sẽ cần chúng, nhưng tôi chưa có chúng. Từ những gì bạn đã nói, có vẻ như tôi sẽ biết phải làm gì khi tôi đạt đến điểm đó. Có khả năng tôi sẽ chỉ liên kết một phần phụ hoặc nhóm các phần phụ với xương. Tôi sẽ hỏi một câu hỏi riêng về nhập khẩu xương.
MichaelHouse

Vì bạn đang làm việc trên một cái gì đó tương tự, có lẽ bạn có thêm thông tin về câu hỏi liên quan này? gamedev.stackexchange.com/q/20931/7191
MichaelHouse

5

Lựa chọn tốt nhất của bạn là cắt đứt chân tay và sử dụng nhiều mô hình con tùy theo tình trạng hiện tại của vết thương. Cách tiếp cận của bạn về việc sử dụng VBO cho mỗi khung hình chính là quá mức cần thiết; sử dụng hệ thống hoạt hình xương và chơi các hình ảnh động khác nhau tùy thuộc vào thiệt hại nhận được (khập khiễng bằng một chân, bò mà không có hai chân, v.v.).

Valve đã xuất bản một bộ slide tốt về các vết thương và tháo dỡ trong L4D2. Tôi thực sự thích cách tiếp cận sử dụng một mô hình cho các cơ quan và xương, và cắt mô hình "da" dựa trên các phép chiếu kết cấu của vết cắt, tiếng súng, v.v.


Hấp dẫn. Những slide trông tốt. Điều này có vẻ như nó sẽ hoạt động đối với thiệt hại không ảnh hưởng đến toàn bộ phần phụ.
MichaelHouse
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.