Mô tả một vật mềm cho softbody3d_create(). Tiếp...
#include <njin_physics3d.h>
Các thuộc tính Public | |
| softbody3d_kind | kind = softbody3d_sphere |
| Hình. | |
| vec3 | position {0.0f, 0.0f, 0.0f} |
| Tâm. | |
| vec3 | rotation {0.0f, 0.0f, 0.0f} |
| Góc xoay, độ, cùng thứ tự với njin::transform3d. | |
| vec3 | size {1.0f, 1.0f, 1.0f} |
| Kích thước của hộp theo x, y, z. | |
| f32 | radius = 0.5f |
| Bán kính của mặt cầu. | |
| i32 | detail = 0 |
| Độ mịn. | |
| mesh3d_data | mesh {} |
| Lưới cho softbody3d_mesh, trong hệ trục riêng của vật (đặt ở position, xoay rotation). | |
| model_handle | model {} |
| Lấy lưới từ model này (model_load()) cho softbody3d_mesh, thay cho mesh, đặt như draw_model() vẽ nó với cùng position, rotation và scale. | |
| vec3 | scale {1.0f, 1.0f, 1.0f} |
| Tỉ lệ của model. | |
| f32 | mass = 1.0f |
| Khối lượng cả vật, kg, chia đều cho các đỉnh. | |
| f32 | stiffness = 0.9f |
| Độ cứng của các cạnh, 0 (dãn như cao su non) .. 1 (không dãn). | |
| f32 | bend = 0.5f |
| Độ cứng khi uốn, 0 (gập tự do) .. 1 (giữ dáng cong lúc tạo). Hộp không dùng. | |
| f32 | pressure = 0.0f |
| Áp suất bên trong khi vật ở đúng hình lúc tạo, Pa (N/m²). | |
| f32 | friction = 0.5f |
| Ma sát, 0..1. | |
| f32 | restitution = 0.0f |
| Độ nảy, 0..1. | |
| f32 | damping = 0.1f |
| Cản chuyển động: vận tốc giảm theo tỉ lệ này mỗi giây. | |
| f32 | drag = 1.0f |
| Hệ số cản của không khí trên mặt của vật (gió, softbody3d_set_wind()). | |
| const u32 * | pinned = nullptr |
| Các đỉnh bị ghim: đứng yên, hoặc theo softbody3d_move_pinned(). | |
| u32 | pinned_count = 0 |
| Số phần tử của pinned. | |
| u64 | user = 0 |
| Số của game, đọc lại bằng softbody3d_user(). | |
| bool | collide_soft = true |
| Va chạm với các vật mềm khác cũng bật cờ này: hai tấm vải chồng lên nhau, bóng rơi lên nệm. | |
| bool | walkable = true |
| Nhân vật đứng được trên mặt trên của nó (nệm, bạt nhún, khối thạch), lún xuống theo sức nặng của nhân vật (njin::character3d_desc::mass). | |
Mô tả một vật mềm cho softbody3d_create().
Vật mềm là một đám điểm nối bằng lò xo, mỗi bước vật lý biến dạng theo trọng lực, va chạm và áp suất bên trong.
Đỉnh của vật mềm đánh số theo thứ tự engine dựng: với softbody3d_mesh là thứ tự đỉnh của lưới (lưới không có đỉnh trùng vị trí thì giữ nguyên chỉ số), còn với hộp và cầu thì tìm bằng softbody3d_nearest().
| i32 njin::softbody3d_desc::detail = 0 |
Độ mịn.
Hộp: số điểm trên cạnh dài nhất (2..16), các cạnh khác theo cùng khoảng cách. Cầu: số lần chia nhỏ khối 20 mặt (1..4: 42, 162, 642, 2562 đỉnh). 0 là mặc định: hộp 5 điểm, cầu chia 2 lần.
| mesh3d_data njin::softbody3d_desc::mesh {} |
Lưới cho softbody3d_mesh, trong hệ trục riêng của vật (đặt ở position, xoay rotation).
Tam giác ngược chiều kim đồng hồ nhìn từ ngoài vào.
| f32 njin::softbody3d_desc::pressure = 0.0f |
Áp suất bên trong khi vật ở đúng hình lúc tạo, Pa (N/m²).
Bóp nhỏ lại thì áp suất tăng, như bóng bay. 0 là không có (vật rỗng xẹp dần). Quả bóng 1 kg bán kính 0.5: khoảng 50 (mềm, lún khi chạm đất) đến 300 (căng); lớn hơn nữa thì các cạnh dãn ra và vật phồng to hơn lúc tạo. Cần một mặt kín.
| f32 njin::softbody3d_desc::drag = 1.0f |
Hệ số cản của không khí trên mặt của vật (gió, softbody3d_set_wind()).
0 là không khí không tác động.
| const u32* njin::softbody3d_desc::pinned = nullptr |
Các đỉnh bị ghim: đứng yên, hoặc theo softbody3d_move_pinned().
Ghim và bỏ ghim lúc chạy bằng softbody3d_pin().
| bool njin::softbody3d_desc::collide_soft = true |
Va chạm với các vật mềm khác cũng bật cờ này: hai tấm vải chồng lên nhau, bóng rơi lên nệm.
Mỗi đỉnh giữ cách mặt của vật kia một khoảng bằng độ dày của hai vật. false là đi xuyên qua vật mềm khác (rẻ hơn, khi chúng không bao giờ gặp nhau).
| bool njin::softbody3d_desc::walkable = true |
Nhân vật đứng được trên mặt trên của nó (nệm, bạt nhún, khối thạch), lún xuống theo sức nặng của nhân vật (njin::character3d_desc::mass).
Mặt dựng đứng (rèm) thì nhân vật vẫn đi xuyên, đẩy các đỉnh sang bên. false là nhân vật không bao giờ đứng lên nó.