模型选择与接口
运动/介质能力矩阵
| 模型 | 平动 | 转动 | 惯量 | 碰撞点 | 实体介质 | 可直接作为成品 |
|---|---|---|---|---|---|---|
vve:point | ✓ | — | — | 中心 1 点 | — | 需 vve_point_1.0 补全 |
vve:block | ✓ | ✓ | 标量 | 8 顶点 | — | 需 vve_block_1.0 补全 |
vve:box_object | ✓ | ✓ | 张量 | 8 顶点 | — | 可参考内置,业务仍需显示/调度 |
vve:cube | 外部控制 | 外部控制 | — | 被查询 | ✓ 盒体 | 是介质组件,不是主动刚体 |
vve:cublock | ✓ | ✓ | 标量 | 8 顶点 | ✓ 盒体 | 内置完整模型 |
vve:cubox | ✓ | ✓ | 张量 | 8 顶点 | ✓ 盒体 | 内置组合模型 |
vve:vehicle | ✓ | ✓ | 张量 | 底盘点 | ✓ 盒体 | 需 vehicle 模板补全业务控制 |
vve:point
状态只有 center + velocity,介质探测时使用单位等效质量。
| 接口 | 契约 |
|---|---|
_anchor_to | 从执行位置/朝向,以 inp 设置初速度 |
_get_cpoint | 当前临时状态 → 单个 cpoint |
_iter_motion | p += v |
_receive_shift/_impulse/_friction | 将单点响应应用到平动 |
_sync_motion | 同步非玩家实例位置 |
main/main_l/main_force/main_sync/main_slow_* | 不同环境/分段调度入口 |
适合弹丸和大量简单对象;视觉体积不参与碰撞。
vve:block
在 object 上增加:a(半边长)、mass、inertia。_iter_cpoints_c 遍历八顶点;_regular 根据接触法线稳定姿态。它不会被其他物体当作实体介质。
常用主程序优先 main_c。尺寸变化后同步修改 a、display scale 和惯量。
vve:box_object
用 scale_u/v/w 与 tensor 表达长方体不同轴的转动性质:
| 接口 | 用途 |
|---|---|
_calc_tensor | 从质量和三轴尺寸计算惯性张量 |
_calc_tensor_i | 带输入缩放/变体的张量计算 |
_apply_impulse/_apply_couple | 通过张量求方向相关角响应 |
_poke_here_i | 以 inp 大小在当前位置施加冲量 |
调整质量/尺寸后重新计算 tensor,不能沿用立方体的标量惯量经验值。
vve:cube
盒体实体介质。外部 cpoint 会被变换到 cube 局部坐标,判断进入深度并返回法向/响应。_detect_1/_4/_8/_16 表示不同候选搜索尺寸,_c 变体配合当前力偶矩拆分方案。
它默认不主动执行刚体运动。移动平台可由业务系统更新 cube 的中心与姿态,再让运动体查询它。
vve:cublock / vve:cubox
把主动刚体和 cube 介质组合起来。除自身体碰撞点探测,还能接收其他物体的反向冲量到 impulse_receiver。
| 选择 | 适合 |
|---|---|
cublock | 近似立方、标量惯量足够、追求较低成本 |
cubox | 长宽高差异明显,需要张量角响应 |
双向碰撞要求双方调度顺序和外部冲量队列语义一致;不能认为一次探测会立刻、递归地完整推进被撞物体。
vve:vehicle
在 cubox 类状态上增加发动机与底盘支撑点列表:
| 接口 | 输入/作用 |
|---|---|
_set_rotation | r 转弯半径 + sign(-1/0/1),设置水平角速度 |
engine/_set_power | inp 目标动力 |
engine/main | 根据阻尼、速度限制推进动力 |
_iter_cpoints_c | 输出 shift/not-shift 底盘点及来源 |
_regular | 根据支撑分布规整底盘姿态 |
_render_shift | GELib 可视化支撑点 |
玩家输入、外观、乘客层次和控制曲线属于具体载具模块,不是基础 vve:vehicle 自动提供的完整驾驶系统。