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),仅供参考

相关新闻

基于Dify工作流的标书智能生成助手:从部署到避坑的工程实践

基于Dify工作流的标书智能生成助手:从部署到避坑的工程实践

简介:这是一份面向售前团队、商务与法务人员的 Dify 工作流示例资源,围绕「标书智能生成」场景,把写标书拆解为输入招标需求与公司信息、分模块生成章节、自动风险校验、输出完整 Markdown 标书与独立风险审查结果等可控步骤,适用…

2026/9/30 7:29:20 阅读更多 →
3D缺陷检测实战:ply与pcd点云配准、滤波及缺陷判定全解析

3D缺陷检测实战:ply与pcd点云配准、滤波及缺陷判定全解析

简介:本资源面向工业质检、三维视觉方向的开发者与研究者,提供一套基于点云数据的3D缺陷检测项目实战代码,帮助读者理解从点云采集到缺陷识别的完整技术链路。包内共27个文件,以cpp与h源码为主体,辅以cc实现、yml参数配…

2026/9/30 7:29:20 阅读更多 →
如何用 awesome-macOS 快速找到合适的 macOS 工具:完整上手指南

如何用 awesome-macOS 快速找到合适的 macOS 工具:完整上手指南

如何用 awesome-macOS 快速找到合适的 macOS 工具:完整上手指南 【免费下载链接】awesome-macOS  A curated list of awesome applications, softwares, tools and shiny things for macOS. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-macOS …

2026/9/30 7:29:20 阅读更多 →

最新新闻

147、Semantic Kernel入门:微软Agent框架

147、Semantic Kernel入门:微软Agent框架

147、Semantic Kernel入门:微软Agent框架 昨天凌晨两点,我盯着屏幕上那个诡异的异常,FunctionInvocationException: A plugin function was not found,明明前一天还在正常跑,今天只是把插件目录从skills改成了plugins,就全线崩溃。后来发现是Semantic Kernel升级到1.x之…

2026/9/30 9:48:46 阅读更多 →
Unity UI与Sprite遮挡关系详解:从Sorting Layer到Canvas层级控制

Unity UI与Sprite遮挡关系详解:从Sorting Layer到Canvas层级控制

1. 为什么UI和Sprite的遮挡关系会乱 做Unity开发的朋友,几乎都会碰到一个让人抓狂的问题:明明某个界面或者图片应该显示在最上面,运行起来却被其他东西盖住了,或者反过来——一个应该藏在后面的Sprite跑到了UI上面,把整…

2026/9/30 9:48:46 阅读更多 →
基于LSTM的短期电力负荷预测:论文复现与调参避坑指南

基于LSTM的短期电力负荷预测:论文复现与调参避坑指南

简介:这份PDF文献面向电力系统调度、电力市场交易及新能源并网领域的研究人员与工程技术人员,聚焦短期电力负荷预测这一关键课题。针对传统统计学方法对负荷序列平稳性要求高、难以兼顾负荷自身时序依赖与多因素非线性影响的问题,文献提出基于…

2026/9/30 9:48:46 阅读更多 →
2026年中国食品级壳寡糖行业发展现状与市场占有率及排名研究分析报告

2026年中国食品级壳寡糖行业发展现状与市场占有率及排名研究分析报告

食品级壳寡糖选购避坑指南:你可能正在踩的4大核心痛点对于食品生产企业、研发机构而言,食品级壳寡糖作为天然健康原料,在肠道养护、食品保鲜、营养强化等场景中的应用越来越广泛,但市面上的产品质量参差不齐,很多企业在…

2026/9/30 9:48:46 阅读更多 →
Qt TCP通信核心原理与工业级实践指南

Qt TCP通信核心原理与工业级实践指南

1. 为什么Qt的TCP通信不是“写个socket就完事”——从一个被忽略的底层事实讲起 很多人第一次在Qt里尝试TCP通信,心里想的是:“不就是调用QTcpServer监听、QTcpSocket连接、write()发数据、readyRead()收数据?照着文档抄几行代码,…

2026/9/30 9:48:46 阅读更多 →
开源版Jev登顶热榜:本地部署Agent工具调用全解析

开源版Jev登顶热榜:本地部署Agent工具调用全解析

Hugging Face 热榜第一,这个位置从来都不是白给的。最近有个叫「开源版 Jev」的项目,不声不响冲到了这个位置,热度甚至超过了不少刚发布的官方模型。注意,它不是一个一模一样的 Jev,而是一个社区开发者主导的开源复刻实…

2026/9/30 9:47:46 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →