njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin::skinned_mesh3d_data Struct Tham chiếu

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ả chi tiết

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ề.

Thông tin về Member Data

◆ texcoords

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.

◆ part_ends

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.

◆ skeleton

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.