Chapter 216 · 3D 图形

直接光照

方向光、点光、聚光灯各三行描述——单位是物理的:lux 与坎德拉,距离衰减是平方反比。

216

三种灯型

xge3d_light_desc_t tSun = xge3dLightDefault(XGE3D_LIGHT_DIRECTIONAL);
tSun.direction = (xge3d_vec3_t){ -0.4f, -0.75f, 0.5f };  // 光行进方向
tSun.intensity = 3.2f;   // lux

xge3d_node_t tLamp;
xge3dNodeCreate(pScene, (xge3d_node_t){0}, &tLamp);
xge3dNodeSetLight(pScene, tLamp, &tSun);

点光与聚光灯用 XGE3D_LIGHT_POINT / XGE3D_LIGHT_SPOT:intensity 单位是坎德拉,平方反比衰减;range 为 0 表示无界,聚光角的 inner/outer 满足 0 ≤ inner < outer < π/2(弧度)。颜色是线性 RGB。最多 8 盏灯(XGE3D_MAX_LIGHTS)。

灯在节点上:位置与朝向来自节点变换——把灯节点挂到角色手里,它就跟着手走。direction 是"光的行进方向",不是"指向光源的方向",别弄反。

本章 API 速查

函数 / 宏说明
xge3dLightDefault(type)按灯型返回默认描述
xge3dNodeSetLight(scene, node, desc)把灯挂到节点;替换即换灯
XGE3D_LIGHT_DIRECTIONAL / POINT / SPOT三种灯型
casts_shadow(描述字段)方向/聚光可投影;点光阴影不支持