<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Geometry on Umbrella Coffee</title><link>https://rubatotree.github.io/blog/tags/geometry/</link><description>Recent content in Geometry on Umbrella Coffee</description><image><title>Umbrella Coffee</title><url>https://rubatotree.github.io/blog/images/og-default.png</url><link>https://rubatotree.github.io/blog/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 29 May 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://rubatotree.github.io/blog/tags/geometry/index.xml" rel="self" type="application/rss+xml"/><item><title>SIGGRAPH 2026 论文笔记 III: Monte Carlo PDE &amp; 几何</title><link>https://rubatotree.github.io/blog/posts/sig26-paper-notes-3/</link><pubDate>Fri, 29 May 2026 00:00:00 +0800</pubDate><guid>https://rubatotree.github.io/blog/posts/sig26-paper-notes-3/</guid><description>&lt;h2 id="loc-1"&gt;1. Monte Carlo PDE&lt;/h2&gt;
&lt;h3 id="loc-2"&gt;Probe-based Walk on Spheres for Efficient Path Reusing [&lt;a href="https://t7imal.github.io/projects/2026wop/" target="_blank" rel="noopener noreferrer"&gt;&lt;span style="color: #59a4ff;"&gt;&lt;span style="text-decoration: underline"&gt;Project&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;]&lt;/h3&gt;
&lt;img src="https://rubatotree.github.io/blog/images/sig26-paper-notes/WoP-teaser.png" alt loading="lazy"&gt;
&lt;p&gt;&lt;em&gt;我自己的文章。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;利用路径信息重用高效优化 Walk on Spheres 系列算法。&lt;/p&gt;
&lt;p&gt;考虑到 Walk on Spheres 的采样过程，每一步都要在球面上均匀采样一个点作为该点解值的一个无偏估计。由 Off-center 形式的平均值公式可以得到实际上在球内的偏心点按 Poisson Kernel 分布在球面上采样一个点得到的结果也是解值的无偏估计。因此 WoS 均匀采样得到的解值可以为球内每个点所重用，在算法上就是得到一条完整路径后将求解值 Splat 回路径上的每个球内。这个算法被我们称为 Naive Path Reuse，不清楚现在 sig 上那篇 Talking to Neighbors 有没有扩展成这样的形式。&lt;/p&gt;
&lt;p class="typst-parbreak"&gt;&lt;/p&gt;
&lt;div style="display: grid; place-items: start center;"&gt;
&lt;figure&gt;
&lt;div style="display: grid; place-items: start center;"&gt;&lt;img src="https://rubatotree.github.io/blog/images/sig26-paper-notes/wop_path_reuse.png" alt loading="lazy"&gt;&lt;/div&gt;
&lt;div style="display: grid; place-items: start center;"&gt;
&lt;figcaption&gt;图 1 我们的 Naive Path Reuse 算法&lt;/figcaption&gt;
&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p class="typst-parbreak"&gt;&lt;/p&gt;
&lt;p&gt;然后考虑到这样 Splat 的开销过于大（球内每个点都需要查询并访存一次），正好 25 年 11 月又出来了 Harmonic Caching 的文章，发现后者正好可以将 Splat 的任务转化为求解几个 Fourier 系数的任务。因此和 HC 类似地在求解域预放置一些探针球，游走时取一个探针球做 Poisson Kernel 采样找到边界，若不存在探针球就 Fallback 到传统的 WoSt 算法，可以验证这个行为仍然是满足布朗运动的。找到 Dirichlet 边界后就将求解到的结果送回探针球中贡献 Fourier 系数。然后就非常快了。&lt;/p&gt;</description></item><item><title>ARAP 曲面参数化算法实现笔记</title><link>https://rubatotree.github.io/blog/posts/arap-note/</link><pubDate>Mon, 20 May 2024 00:00:00 +0800</pubDate><guid>https://rubatotree.github.io/blog/posts/arap-note/</guid><description>&lt;p&gt;同步一下之前（2024春）写过的文章，这是我当时在 &lt;a href="http://staff.ustc.edu.cn/~lgliu/Courses/ComputerGraphics_2024_spring-summer/default.htm" target="_blank" rel="noopener noreferrer"&gt;&lt;span style="color: #59a4ff;"&gt;&lt;span style="text-decoration: underline"&gt;计算机图形学&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; 课上完成的作业报告，作为最难的一次作业，当时写了非常长的报告。&lt;/p&gt;
&lt;p&gt;本次作业要求实现 ARAP，ASAP 与 Hybrid 三种非固定边界的曲面参数化算法。我在理解并实现了这些参数化算法的基础上，对 ASAP 做了迭代方法和单一方程组方法的两种实现，并对这些算法做了进一步研究。&lt;/p&gt;
&lt;p&gt;这次作业在数学方面的知识对我来说还有许多我个人不太能独立理解的部分。感谢 &lt;a href="https://github.com/suchiwz" target="_blank" rel="noopener noreferrer"&gt;&lt;span style="color: #59a4ff;"&gt;&lt;span style="text-decoration: underline"&gt;@suchiwz&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; 助教的耐心解答，让我能够对论文的各种细节做出能让我满意的理解。在本次作业报告中，我也会试着用刚做完 Homework 4 的大一学生也能理解的语言讲解我对这篇论文的理解。&lt;/p&gt;
&lt;h2 id="loc-1"&gt;0. 准备工作&lt;/h2&gt;
&lt;p&gt;本次作业新增了四个模型。它们的共同特点都是有比较好的切割（没有像 Bunny Head 那样过细的瓶颈了），并且都有各自的难点，如下表所示：&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th style="text-align: start; vertical-align: start;"&gt;&lt;strong&gt;模型&lt;/strong&gt;&lt;/th&gt;
&lt;th style="text-align: start; vertical-align: start;"&gt;&lt;strong&gt;特点&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;Cow&lt;/td&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;面数较多；网格较复杂，难以避免重叠；切割后仍保留了较多模型本身的几何特征（头部、眼睛、肢体），易于观察展开算法对形状的处理，确认算法的保形效果。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;Beetle&lt;/td&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;高亏格曲面（即存在多条边界的曲面）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;Isis&lt;/td&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;有较多“细长”的三角形&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;Gargoyle&lt;/td&gt;
&lt;td style="text-align: start; vertical-align: start;"&gt;网格顶点数、面数非常多&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Beetle 模型打破了 “模型只有一个边界” 的假设，因此我们需要对 Homework4 的边界映射算法做出调整，对每个边界都进行一次遍历，并取长度最长的边界作为映射的边界。相应地，对 Tutte 参数化中用到边界相关的代码进行调整，不再视不为主要边界的点位边界。这样，Tutte 参数化的结果就能够较好地处理 Beetle 模型，并将其作为 ARAP 的 Initial Guess 了。下图是 Floater 参数化处理后的 Beetle 模型。&lt;/p&gt;</description></item></channel></rss>