E6 验收记录#
Learning home · PhysX contents
Course text is primarily Chinese, with English terminology and summaries. The original content is preserved.
任务:PhysX Atlas #7。交付:原生扩展与能力边界、原生 C++ row-prep 片段、中英文入口、guide/课程/roadmap、源码地图和身份清单。
开始时已 fetch 核实 main 为 82bf97aec1927161db0b6cfb9919c8e0a8e459ef,E3 的 01b60166300ce7adbf575dca6df8eceb71ab972f 是实际祖先,工作树干净;#7 OPEN,无在途 PR。从该基线创建 docs/e6-extensions-boundaries,中断后在同分支保留来源清单/缓存恢复。本记录对应包含它的本地提交;远端发布和最终主审状态以实际读回为准。
对照验收#
要求 |
对应交付 |
结论 |
|---|---|---|
原生特色与扩展层次 |
第 1 节 constraint/geometry/callback、CCT、Vehicle sequence、Immediate Mode |
native 接缝和应用责任分开;没有跨引擎包装 |
自定义几何 |
第 2 节指针/lifetime、bounds/contact/query/mass/PCM、cylinder 公式、convex core 与 GPU fallback |
固定 API/源码课程完成;无几何运行验收 |
自定义约束 |
第 3 节 Jacobian、行参数单位、spring/force/impulse、connector/dirty/release 和 Direct GPU 限制 |
原生 row-prep 片段完成 syntax/type 检查;不是完整可加载插件 |
B7 综合追踪 |
第 4 节 DistanceJoint config→constant copy→row-prep→CPU PGS preparation/iteration→writeback/getForce |
限定普通刚体、CPU 标量准备/求解路径,区分 SIMD/TGS/GPU;公式保留初始速度项和参考点 |
GPU 后端与边界 |
第 5 节 scene/context 分支、公开 CUDA、CPU fallback、build targets/loader |
公开实现与外部 CUDA driver/toolchain/运行 binary 分开,不沿用旧“GPU 一概闭源”说法 |
FEM volume/surface |
第 6 节两种 mesh/state、材料/量纲、Lamé/ARAP/volume 更新、膜/弯曲、attachment/events |
代表性 kernel 和设备 buffer 契约已核对;未构建/运行软体 |
PBD 粒子 |
第 7 节 phase/group/dirty/capacity、offset、密度工作数组、stream/fetch 和 deprecation |
原生粒子与 FEM/rigid filter 分开;未将内部数组直接标为物理传感器 |
回调/可微/多物理归属 |
第 8 节 callback 阶段、Jacobian 与 step backward、特定耦合与宿主职责 |
不虚构通用 autograd/任意多物理;不把宿主 renderer/RL 归到 core |
教学与状态同步 |
10 条易错点、13 道附答案练习、双语入口、课程与 guide |
B6/B7 源码专题交付;A0 安装和 E7 全路线审校仍待办 |
作者自审与主审预读用于发现问题,不等于已批准发布。提交前已逐项核对以下易误读处:
custom geometry 仅借用 callback 指针;
isValid()不验证几何算法。cylinder 无 margin 的质量与 margin 非零分支区别明确。Px1DConstraint的 J 内置 body 1 负号,COM-local/world frames 与 force report 参考点分开;示例只约束固定 world 轴上的一个标量关系。eHAS_DRIVE_LIMIT短注释的 unless 与实际 helper 条件相反:只有它和driveLimitsAreForces均真才乘 simDt。以实现为准,保留公开 flag 的 deprecated 身份。PGS spring 先得 xb,最终 constant 还包含初始速度 bias;迭代使用速度增量,公式已把二者还原为当前总行速度,避免重复计入初速。
appliedForce是累计冲量;writeback 只收集 eOUTPUT_FORCE 行,再平移角冲量参考点;getForce 用 Scene oneOverDt 转换,不能称完整 actor wrench。GPU 的 PCM/contact-modification/pair 表决定是否回退;Direct GPU 对不兼容 constraint 的拒绝及内部 eGPU_COMPATIBLE 禁止设置都保留。
本版本有公开 GPU PGS/TGS、articulation、FEM/PBD CUDA 源码;外部 driver/toolchain、实际加载 binary 与宿主运行没有被验证。
FEM co-rotational 的无阻尼式明确未触发 abs(denom)<1e-15 保护,乘子与刚体冲量量纲不同;Poisson 端点、TGS/non-TGS multiplier 分支分别说明。
particle
mDensity的所引写者存缩放后的约束量;phase 不等于 rigid env_id;deprecated particle-cloth/rigids 等不混同原生 FEM 或普通粒子–刚体接触。deformable/particle device buffer 的 lifetime、dirty 和同步不同;post-solve startEvent 不自动等于 CPU 快照或引擎等待用户任意额外 stream。
实际静态检查#
环境:Linux、Python 3.12.12、g++ 11.4.0。固定提交 da950a3537927784951853c66618036f332ca0ce,SDK 头文件 5.11.0。manifest 累计 184 个源码文件,本项新增 58 个;缓存按 Git blob 算法核对,并逐项独立匹配官方同提交的完整、未截断 Git tree。新片段公开头文件依赖闭包 25 个,同样核对官方 blob;条件平台 include 中的未公开 Switch 头不进入 Linux 预处理,不声称 25 是 Linux 实际展开数量。
来源工具初次准备时发现一个猜测的 softBodyUtil.cuh 路径不存在于官方 tree,停止下载批次;随后从 tree 定位实际 deformableUtils.cuh 并重新核验登记。第一次全文源码链接检查还发现 PxMassProperties.h 仅在头文件缓存、未登记 manifest,补登记后全部通过。没有通过跳过错误或放宽检查脚本使验收变绿。
仓库根目录检查(PHYSX_SOURCE 指向核验后的固定源码树/缓存,内含 physx/include):
git diff --check
git diff --cached --check
python scripts/check_docs.py
python scripts/check_source_links.py --source-root "$PHYSX_SOURCE"
g++ -std=c++17 -DNDEBUG -fsyntax-only -Wall -Wextra \
-I "$PHYSX_SOURCE/physx/include" examples/e6_constraint_row.cpp
结果:本地 Markdown 文件链接、184 个源码 blob 和 625 处源码链接路径/行号检查通过;staged 新文件空白检查通过。C++ 语法/类型检查退出码 0、无诊断;只使用公开头文件,未链接或生成/执行 SDK 程序。块公式用 $$,没有将静态文档检查写成浏览器视觉验收。既有可变 Isaac Lab 职责参考及其日期/用途保持不变,没有把它当本项固定版本证据。
源码工具只验证身份、路径和行存在,语义由实际阅读核对。静态检查无法证明 callback 并发安全、完整 connector 生命周期、约束收敛/力/稳定性、GPU compatibility、设备复制/event 依赖、FEM/粒子结果或可微正确性。示例不含 initializer、connector、Scene 或 main;调用方还需实现配置验证、资源/dirty/COM 管理、正确场景选择及完整运行验收。
未决与下一步#
没有构建/链接/运行 native SDK,没有 native import、模型编译、CUDA 编译/JIT、物理步、渲染、训练、实验或 benchmark。没有 CPU/GPU 数值一致、性能、多物理精度、材料标定、端到端 autograd 或 sim-to-real 效果结论。GPU 章节提供执行边界和代表性实现阅读,不是全内核形式验证。
历史 Isaac Sim 5.1 / UniSim 1.7.10 的 PhysX binary 和配置仍由 DexLab #126 的原批次证据决定,当前头文件/default/source 不能填补。后续实验复用 DexLab,不新建评分体系。
下一项 E7 需先核实 E2–E6 实际合入,再展开 A0 安装专题与课程总审校/证据入口;说明文档可以静态交付,不能借机自动安装/运行引擎。本项本地提交后停止待独立主审,未推送、未改 Issue/Project/其他仓,也不自动开始 E7。