Một decal: ảnh chiếu lên mọi hình đục nằm trong một hình hộp (tường, sàn, model, địa hình), theo đúng hình của bề mặt. Tiếp...
#include <njin_post3d.h>
Các thuộc tính Public | |
| vec3 | position {0.0f, 0.0f, 0.0f} |
| Tâm hộp. | |
| vec3 | rotation {0.0f, 0.0f, 0.0f} |
| Góc xoay, độ, như njin::transform3d::rotation. | |
| vec3 | size {1.0f, 0.5f, 1.0f} |
| Cỡ hộp: x và z là bề rộng và bề dài của ảnh, y là độ sâu mà decal phủ tới (phủ lên mọi bề mặt trong khoảng đó; mỏng thì không lan sang vật bên cạnh). | |
| texture_handle | texture {} |
| Ảnh. | |
| rect | source {} |
| Vùng trong ảnh, pixel. Kích thước 0 là cả ảnh. | |
| rgba | color {1.0f, 1.0f, 1.0f, 1.0f} |
| Màu nhân vào ảnh; a là độ đậm. | |
| decal3d_blend | blend = decal3d_multiply |
| Cách phủ. | |
| f32 | lifetime = 0.0f |
| Sống bao lâu, giây (thời gian của game, dừng khi pause). 0 là mãi mãi. | |
| f32 | fade = 1.0f |
| Mờ dần trong bấy nhiêu giây cuối của lifetime. | |
| f32 | angle_fade = 0.3f |
| Bề mặt mà pháp tuyến lệch khỏi trục chiếu nhiều hơn mức này không có decal: cos của góc, 0..1. | |
Một decal: ảnh chiếu lên mọi hình đục nằm trong một hình hộp (tường, sàn, model, địa hình), theo đúng hình của bề mặt.
Ảnh nằm trên mặt xz của hộp và chiếu theo trục y của hộp: mặc định (không xoay) là chiếu từ trên xuống sàn. Để dán lên tường, xoay hộp cho trục y chĩa ra khỏi tường (ví dụ rotation = {90, 0, 0} cho tường quay về +z). Bề mặt càng nghiêng so với trục chiếu thì decal càng mờ (xem angle_fade), nên vết không bị kéo dài trên mặt bên.
| texture_handle njin::decal3d_desc::texture {} |
Ảnh.
Không hợp lệ là một vết tròn mềm mép bằng color. Ảnh đã xếp vào atlas bị bỏ qua (như material3d::texture).
| f32 njin::decal3d_desc::angle_fade = 0.3f |
Bề mặt mà pháp tuyến lệch khỏi trục chiếu nhiều hơn mức này không có decal: cos của góc, 0..1.
0.3 (mặc định) là mờ dần từ khoảng 70 độ.