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::model_pose Struct Tham chiếu

Tư thế của một model có xương khi vẽ: animation nào, ở giây thứ mấy, và (tùy chọn) trộn với animation thứ hai để chuyển mượt giữa hai động tác. Tiếp...

#include <njin_3d.h>

Các thuộc tính Public

i32 anim = -1
 Animation (model_anim_find()). -1 là tư thế gốc trong file.
f32 time = 0.0f
 Thời điểm trong animation, giây.
bool loop = true
 Lặp lại; không thì dừng ở khung cuối.
i32 blend_anim = -1
 Animation thứ hai để trộn vào. -1 là không trộn.
f32 blend_time = 0.0f
 Thời điểm trong animation thứ hai, giây.
bool blend_loop = true
 Lặp animation thứ hai.
f32 blend = 0.0f
 Tỉ lệ trộn: 0 chỉ có anim, 1 chỉ có blend_anim.
const bone_pose3d * bones = nullptr
 Tư thế do game đặt: model_bone_count() xương, trong không gian của model như model_bone_pose() trả về (ragdoll3d_bones() điền mảng này).
const f32 * morph_weights = nullptr
 Trọng số morph target (blend shape) do game đặt, theo chỉ số model_morph_find(): cộng thêm vào trọng số mặc định của file và của animation đang chạy (anim, blend_anim), nên game nháy mắt trong khi animation cử động miệng.
i32 morph_count = 0
 Số phần tử của morph_weights.

Mô tả chi tiết

Tư thế của một model có xương khi vẽ: animation nào, ở giây thứ mấy, và (tùy chọn) trộn với animation thứ hai để chuyển mượt giữa hai động tác.

Hoặc game tự đặt từng xương bằng bones (ragdoll3d_bones()).

Thông tin về Member Data

◆ bones

const bone_pose3d* njin::model_pose::bones = nullptr

Tư thế do game đặt: model_bone_count() xương, trong không gian của model như model_bone_pose() trả về (ragdoll3d_bones() điền mảng này).

Khác nullptr thì các trường animation ở trên bị bỏ qua khi đặt xương (chúng vẫn điều khiển trọng số morph, xem morph_weights). Engine đọc mảng ngay lúc vẽ (draw_model_anim(), hay khi vẽ entity có njin::model3d), không giữ lại.

◆ morph_weights

const f32* njin::model_pose::morph_weights = nullptr

Trọng số morph target (blend shape) do game đặt, theo chỉ số model_morph_find(): cộng thêm vào trọng số mặc định của file và của animation đang chạy (anim, blend_anim), nên game nháy mắt trong khi animation cử động miệng.

nullptr là không thêm gì. Engine đọc mảng ngay lúc vẽ, không giữ lại.