Một lưới có xương do game tự ghép lúc chạy, cho model_create_skinned(): nhân vật ghép từ nhiều mảnh (đầu, thân, tay, tóc...) theo một bộ gen, mà không xuất sẵn một file cho mỗi tổ hợp. Tiếp...
#include <njin_3d.h>
Các thuộc tính Public | |
| const vec3 * | positions = nullptr |
| Vị trí vertex_count đỉnh, ở tư thế gốc của skeleton. | |
| const vec3 * | normals = nullptr |
| Pháp tuyến từng đỉnh (độ dài 1). nullptr thì engine tự tính như model_create(). | |
| const vec2 * | texcoords = nullptr |
| Toạ độ ảnh (UV) từng đỉnh, cho ảnh của vật liệu (model_material_set()): nhân vật có texture riêng vẫn dùng chung thư viện clip. | |
| u32 | vertex_count = 0 |
| Số đỉnh. | |
| const u8 * | joints = nullptr |
| Bốn xương mỗi đỉnh: chỉ số xương của skeleton (model_bone_find()), nên tối đa 255 xương. | |
| const f32 * | weights = nullptr |
| Bốn trọng số mỗi đỉnh, cùng thứ tự joints, cộng lại bằng 1. | |
| const u32 * | indices = nullptr |
| Ba chỉ số một tam giác, ngược chiều kim đồng hồ khi nhìn từ mặt trước. | |
| u32 | index_count = 0 |
| Số chỉ số, bội của 3. | |
| const u32 * | part_ends = nullptr |
| Chia tam giác thành các phần, mỗi phần một vật liệu (vật liệu k là phần k, màu trắng): chỉ số kết thúc của từng phần trong indices, tăng dần, phần cuối kết thúc ở index_count. | |
| u32 | part_count = 0 |
| Số phần trong part_ends. | |
| model_handle | skeleton {} |
| Model có xương đã nạp bằng model_load(): model mới chép bộ xương và tư thế gốc của nó, và dùng chung các animation của nó (không chép), nên model_anim_find(), draw_model_anim() và model_bone_pose() trên model mới chạy các clip của model này. | |
Một lưới có xương do game tự ghép lúc chạy, cho model_create_skinned(): nhân vật ghép từ nhiều mảnh (đầu, thân, tay, tóc...) theo một bộ gen, mà không xuất sẵn một file cho mỗi tổ hợp.
Các con trỏ chỉ cần sống đến khi model_create_skinned() trả về.
| const vec2* njin::skinned_mesh3d_data::texcoords = nullptr |
Toạ độ ảnh (UV) từng đỉnh, cho ảnh của vật liệu (model_material_set()): nhân vật có texture riêng vẫn dùng chung thư viện clip.
nullptr là (0, 0) mọi đỉnh, tức chỉ có màu.
| const u32* njin::skinned_mesh3d_data::part_ends = nullptr |
Chia tam giác thành các phần, mỗi phần một vật liệu (vật liệu k là phần k, màu trắng): chỉ số kết thúc của từng phần trong indices, tăng dần, phần cuối kết thúc ở index_count.
nullptr là một phần. Mỗi phần tối đa 65535 đỉnh.
| model_handle njin::skinned_mesh3d_data::skeleton {} |
Model có xương đã nạp bằng model_load(): model mới chép bộ xương và tư thế gốc của nó, và dùng chung các animation của nó (không chép), nên model_anim_find(), draw_model_anim() và model_bone_pose() trên model mới chạy các clip của model này.
Giải phóng model này trước thì model mới chỉ còn tư thế gốc.