新闻详情

新闻详情

首页 / 资讯中心 / 详情

Spirula Studio 的 SH 旋转符号约定全解:Ivanic-Ruedenberg 递归与 Condon-Shortley 相位

发布时间:2026/9/30 7:29:20来源:尧图网络
Spirula Studio 的 SH 旋转符号约定全解:Ivanic-Ruedenberg 递归与 Condon-Shortley 相位
Spirula Studio 的 SH 旋转符号约定全解Ivanic-Ruedenberg 递归与 Condon-Shortley 相位【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studioSpirula Studio 是一款跨厂商的 3D Gaussian Splatting3D 高斯泼溅训练器能把视频/照片训练成 splat 模型并进一步导出网格支持 Vulkan 与 CUDA 后端。本文深入它的 SH 旋转实现讲清 Ivanic-Ruedenberg 递归闭式解与 Condon-Shortley 相位这两个符号约定是如何咬合在一起的。为什么 SH 系数必须跟着模型一起旋转 3DGS 里每个高斯的颜色分两部分DC 分量零阶球谐固定颜色与视角无关高阶球谐系数l 1..4描述从哪个方向看是什么颜色的视角相关项在高斯处沿相机→高斯的单位方向d求值colour(d) Σ c_lm · Y_lm(d)几何一旋转方向就从d变成R·d。如果只转几何、不动这组系数高光会钉在旧世界里物体在它下面打转。于是旋转后的系数c必须满足对任意d都成立colour(R·d) colour(d)这是整个实现的出发点完整的推导见 docs/notes/sh-rotation.md。频带旋转矩阵 M_l旋转不串频带球谐旋转有一个漂亮的性质不同频带band之间不混合。对每个l存在一个正交的(2l1) × (2l1)矩阵M_l(R)满足Y_l(R·d) M_l(R) · Y_l(d)。代入上式后可以直接解出系数变换c_l M_l(R) · c_l由此带来两个实用结论零阶DC 颜色和透明度在任何摆放变换中都原封不动平移和等比缩放不改变任何方向真正起作用的是旋转R。闭式解Ivanic-Ruedenberg 递归求M_l最直观的办法是采样法在球面上取大量方向分别在d和R·d处求值基函数再解一个最小二乘问题。它显然正确但每次旋转都要解一次线性方程组精度还受限于采样密度。Spirula Studio 采用的是Ivanic-Ruedenberg 递归J. Phys. Chem. 100:6342, 1996含 1998 勘误只用一阶矩阵M_1和上一阶M_(l-1)就能递推出高阶M_l——闭式解无需采样l1..4 全部频带只需几百次乘法。工程上更划算的是一次建矩阵处处复用一次摆放对应整个模型的一次旋转矩阵只建一次之后每个高斯每频带每通道只是一次矩阵-向量乘四阶时共 3 × (9 25 49 81) 次乘法。核心实现在 src/core/ShRotation.cpp由 src/checkpoint/SplatTransform.h 消费。符号约定陷阱Condon-Shortley 相位 ⚠️问题出在递归的原始出处上Ivanic-Ruedenberg 递归是针对不带 Condon-Shortley 相位的实球谐写的。在那个无相位基里一阶频带是(y, z, x)M_1就是行、列同序置换后的R本身。但 Spirula Studio 的着色器 src/shaders/harmonics.slang 的基函数带着相位它的一阶频带是(-y, z, -x)一般地每个Y_lm比无相位版本多一个(-1)^m的因子。设S_l为这些符号构成的对角矩阵则两套基的旋转矩阵相差一次共轭M_l^engine S_l · M_l^plain · S_l也就是说M_l的第(m, n)个元素恰好当m n为奇数时变号。src/core/ShRotation.cpp 先无相位地跑完递归最后再套上这层共轭跳过这一步是经典错误而且是安静的错误一阶和三阶频带会错在符号上随手看一眼渲染画面根本发现不了。项目里是在写任何 C 之前就用原型代码抓住它的——无相位版本每个频带误差达到 1 的量级共轭后的版本与采样拟合一致到 1e-15。双重验证从单元测试到端到端渲染符号约定对不对光靠推导不够Spirula Studio 用了两层防线第一层单元测试对采样拟合。src/core/tests/sh_rotation_test.cpp 把harmonics.slang里 25 个基函数常数对常数地誊抄进测试覆盖随机旋转加每个轴的 90°/180° 旋转检查每个频带矩阵与采样最小二乘拟合一致实测 2.8e-15矩阵正交性、M(R1·R2) M(R1)·M(R2)组合律0~4 阶随机系数经apply()旋转后满足colour(R·d) colour(d)。第二层真实渲染闭环。src/backend/tests/engine/splat_transform_render.cpp 渲染一个视角依赖很强的随机场景用transform_splats把相似变换烘焙进 splat再把相机做同样的变换重新渲染——两张图必须一致实测 3DGS / mip / 3DGUT、针孔 / 鱼眼、SH 3 阶 / 4 阶下平均差异仅 3e-7。对照组只移动几何而不动 SH差异为 0.07~0.13肉眼可辨证明测试确实看得见它要测的东西。核心文件一览 内容路径推导与验证思路设计笔记docs/notes/sh-rotation.mdSH 旋转矩阵与系数变换src/core/ShRotation.h、src/core/ShRotation.cpp引擎实际求值的 25 个实球谐基函数src/shaders/harmonics.slang模型摆放/相似变换入口src/checkpoint/SplatTransform.h符号约定单元测试src/core/tests/sh_rotation_test.cpp端到端渲染验证src/backend/tests/engine/splat_transform_render.cpp一句话总结Ivanic-Ruedenberg 递归给你高效的闭式旋转矩阵Condon-Shortley 相位则要求最后补一次对角共轭——少了它高斯会带着错位的光转起来而这正是 Spirula Studio 用原型和双层测试提前堵死的坑。【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

8300张YOLO头盔检测数据集实战:从训练到部署全流程 2026/10/1 5:01:53

8300张YOLO头盔检测数据集实战:从训练到部署全流程

1. 为什么我盯上了这个8300张的头盔检测数据集智慧交通这个方向,说句实在话,做的人多,但真正能落地跑起来的项目少。大部分团队卡在第一步——数据。算法可以调,模型可以换,但数据不行就是不行。我前后经手过六七个交通…

阅读更多 →
毕业论文AI率过高怎么办?从检测原理到实操工作流全解析 2026/10/1 5:01:53

毕业论文AI率过高怎么办?从检测原理到实操工作流全解析

毕业论文提交系统显示AI率72%,导师在群里一句话没多说,只回了“重写后先自查再交”。在职读研的这几年,最怕的就是这种时刻:白天在公司对着KPI,晚上熬夜改论文,到最后反而被一套“AI检测”判定成机器写的东…

阅读更多 →
Spring Boot 原生 HTTP 客户端直连 OpenAI 接口实战:流式响应与工程化落地 2026/10/1 5:01:53

Spring Boot 原生 HTTP 客户端直连 OpenAI 接口实战:流式响应与工程化落地

1. 为什么要在 Spring Boot 里自己接 OpenAI,而不是直接调现成 SDK很多 Java 后端同学第一次接触大模型集成,第一反应是去找一个封装好的 starter,加个依赖、配个 key 就完事。我一开始也这么干,结果踩了两个坑:一是某…

阅读更多 →
XSLT排序核心解析:xsl:sort属性、多级排序与避坑实践 2026/10/1 5:01:53

XSLT排序核心解析:xsl:sort属性、多级排序与避坑实践

1. 先说清楚:xsl:sort 到底是什么接触XSLT的头一个月,我一直在跟“输出顺序不合预期”搏斗。明明XML里的数据是按录入顺序放的,页面展示却非要反着来,要么数字10排在2前面,要么大小写混作一团。后来才意识到&#xff0…

阅读更多 →
Spring Boot 集成 OpenAI API 实战:构建 AI 对话服务 2026/10/1 5:01:53

Spring Boot 集成 OpenAI API 实战:构建 AI 对话服务

1. 为什么要在 Spring Boot 里集成 AI 对话能力1.1 从业务需求到技术选型的思考过程做过企业级开发的人都有一个共识:需求从来不会等你准备好才来。前阵子我手上有个内部知识库项目,产品那边突然提了个需求,说希望能在系统里直接跟文档对话&a…

阅读更多 →
DMA与磁盘计算:2022年408组成原理44题深度解析 2026/10/1 5:01:46

DMA与磁盘计算:2022年408组成原理44题深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉