Skip to content

vve:object 刚体核心

vve:object 提供姿态、局部坐标系、角速度、碰撞点换算与响应应用。它不定义 _new/_del/tick/_class,不能独立实例化;blockbox_objectcublockcuboxvehicle 或你的 MOT 模块组合它。

核心临时状态

字段组精度含义
x/y/z1w质心坐标
vx/vy/vz1w线速度
angular_x/y/z100w世界角速度向量
angular_len100w角速度模长
ivec/jvec/kvec1w局部 u/v/w 轴
quat_x/y/z/w1w当前四元数
quat_start_*, quat_orth_*, quat_phi1w分段旋转状态
receiver多组响应汇总区

姿态与运动接口

_anchor_to

从当前执行位置和朝向建立中心与初始姿态。要求世界实体执行者;内部可能通过实体位置/朝向做坐标换算。常用于创建前的临时对象。

mcfunction
execute as @e[tag=math_marker,limit=1] positioned 0 100 0 rotated 35 -10 run function vve:object/_anchor_to

_rot_to

只按执行朝向重建姿态相关状态,适合保留中心位置时改变方向。调用前确保 object 临时字段已载入。

_iter_motion

按当前线速度推进中心,按角速度推进四元数相位并刷新局部轴。不探测介质、不施力、不自动同步实体。

_set_angular

读取 angular_x/y/z,从当前姿态重建新的旋转段。外部直接修改角速度分量后,应通过此接口保持 angular_len/start/orth/phi 一致,而不是只改三个分数。

_scale_angular

按输入 inp 缩放角速度,并维护派生旋转状态。输入精度以函数头注释为准。

碰撞点接口

_get_cpoint

输入局部 (u,v,w),输出世界碰撞点坐标、瞬时速度 v + ω×r。调用者负责设置 c_mass,再调用介质探测。

接收流水线

text
_clear_receiver
  → 对每个点:探测 → _receive_shift/_receive_impulse/…
  → _receive_over
  → 应用汇总响应

探测后应立即接收,因为响应临时区会被下一点覆盖。

响应应用

接口修改
_apply_shift中心位置
_apply_impulse线速度 + 由偏心作用点引起的角速度
_apply_impulse_f只应用汇总平动冲量
_apply_couple应用力偶矩到角速度
_apply_friction按汇总摩擦响应衰减运动
_dec_impulse将偏心冲量拆成平动冲量和 couple

main_c 系列通常使用 _dec_impulse → _apply_impulse_f + _apply_couple。不要把传统 _apply_impulse 再叠加一次。

同步接口

_motion_data

根据当前中心、姿态/局部轴生成展示同步所需的结构化数据。它是计算数据,不等于已经修改世界实体。

_sync_motion

以实例为执行者,把物理状态写入根实体和 display transformation。模块可覆盖/扩展显示结构,但应保持物理中心、视觉 pivot、scale 与插值字段一致。

调试辅助

接口用途
_poke_here*从执行位置/朝向施加测试冲量
_rotate_here*设置朝向某位置的旋转
_render_uvw*使用 GELib 显示局部轴

这些函数仍要求调用者已经准备质量/惯量以及正确执行上下文,不能把“辅助”理解为无前置条件的一键操作。

VVE 由小豆 8593 开发;本站是面向学习与查阅的增强文档。