diff --git a/css/index-v3.css b/css/index-v3.css index 6715d24..f5da674 100644 --- a/css/index-v3.css +++ b/css/index-v3.css @@ -1,5 +1,8 @@ body { font-family: 'Noto Sans', sans-serif; + background-color: #f8fafc; + color: #0f172a; + line-height: 1.65; } @@ -507,4 +510,432 @@ body { flex-direction: column; /* stack canvases vertically on small screens */ gap: 1.5rem; } -} \ No newline at end of file +} +/* Landing hero styling */ +.hero.is-landing { + background: radial-gradient(120% 120% at 20% 0%, #eef2ff 0%, #ffffff 55%, #f5f3ff 100%); + position: relative; + overflow: hidden; +} + +.hero.is-landing::before, +.hero.is-landing::after { + content: ""; + position: absolute; + border-radius: 999px; + opacity: 0.7; + z-index: 0; +} + +.hero.is-landing::before { + width: 460px; + height: 460px; + top: -160px; + right: -120px; + background: radial-gradient(circle at center, rgba(79, 70, 229, 0.25), rgba(79, 70, 229, 0)); +} + +.hero.is-landing::after { + width: 360px; + height: 360px; + bottom: -160px; + left: -120px; + background: radial-gradient(circle at center, rgba(14, 165, 233, 0.18), rgba(14, 165, 233, 0)); +} + +.hero.is-landing .hero-body { + position: relative; + z-index: 1; + padding: 4.5rem 1.5rem 3.5rem; +} + +.landing-card { + position: relative; + z-index: 1; + background: rgba(255, 255, 255, 0.92); + border-radius: 32px; + padding: 3rem 3rem 2.5rem; + border: 1px solid rgba(99, 102, 241, 0.15); + box-shadow: 0 48px 96px -60px rgba(15, 23, 42, 0.55); + backdrop-filter: blur(10px); +} + +.landing-intro { + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + gap: 1.5rem; +} + +.page-stack { + margin-top: 3.5rem; + display: flex; + flex-direction: column; + gap: 3.5rem; +} + +.conference-badge { + margin: 1.75rem auto 0; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.75rem; + padding: 0.6rem 1.5rem; + border-radius: 999px; + background: rgba(99, 102, 241, 0.12); + color: #312e81; + font-weight: 600; + letter-spacing: 0.08em; + border: 1px solid rgba(99, 102, 241, 0.35); + box-shadow: 0 22px 50px -34px rgba(79, 70, 229, 0.45); +} + +.conference-name { + font-size: 0.85rem; + letter-spacing: 0.12em; +} + +.spotlight-tag { + font-size: 0.85rem; + letter-spacing: 0.12em; + position: relative; + padding-left: 0.9rem; +} + +.spotlight-tag::before { + content: "•"; + position: absolute; + left: 0; + color: rgba(79, 70, 229, 0.65); +} + +.hero-subtitle { + margin: 1rem auto 0; + font-size: 1.2rem; + max-width: 560px; + color: #334155; + font-weight: 500; +} + +.hero-links { + margin-top: 2.2rem; + display: flex; + flex-wrap: wrap; + gap: 0.9rem; + justify-content: center; + text-align: center; +} + +.hero-links .link-block { + margin: 0; +} + +.hero-links .link-block a { + margin: 0; + min-width: 150px; + border: none; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.85rem 1.6rem; + background: linear-gradient(135deg, #4338ca, #6366f1); + color: #fff; + box-shadow: 0 28px 50px -26px rgba(79, 70, 229, 0.85); +} + +.hero-links .link-block a:hover { + transform: translateY(-3px); + box-shadow: 0 30px 56px -26px rgba(79, 70, 229, 0.95); +} + +.hero-links .link-block a:focus-visible { + outline: 2px solid rgba(99, 102, 241, 0.65); + outline-offset: 4px; +} + +.hero-links .link-block a .icon { + color: inherit; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.hero-links .link-block a img { + filter: brightness(0) invert(1); +} + +.authors-block { + text-align: center; + color: #1e293b; +} + +.authors-list { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.65rem 1.5rem; + font-size: 1.08rem; + font-weight: 500; +} + +.authors-list .author a { + color: #3730a3; +} + +.authors-list .author a:hover { + text-decoration: underline; +} + +.authors-block sup { + font-size: 0.75em; + margin-left: 2px; + color: #6366f1; +} + +.authors-affiliations { + margin-top: 0.85rem; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.75rem 1.5rem; + color: #475569; + font-size: 0.95rem; +} + +.authors-equal { + margin-top: 0.65rem; + color: #64748b; + font-size: 0.9rem; +} + +.tldr-card { + margin: 2.5rem auto 0; + max-width: 720px; + background: linear-gradient(120deg, rgba(255, 255, 255, 0.95), rgba(236, 233, 254, 0.95)); + border-radius: 20px; + padding: 1.5rem 2rem; + border: 1px solid rgba(79, 70, 229, 0.18); + box-shadow: 0 38px 70px -48px rgba(79, 70, 229, 0.6); + font-size: 1.05rem; + font-style: italic; + color: #1e293b; +} + +.tldr-card strong { + font-style: normal; + color: #4338ca; + margin-right: 0.5rem; +} + +.soft-section { + background: transparent; + padding-top: 3.5rem; + padding-bottom: 3.5rem; +} + +.content-card { + background: #ffffff; + border-radius: 28px; + padding: 2.5rem 2.75rem; + box-shadow: 0 48px 96px -68px rgba(15, 23, 42, 0.55); + border: 1px solid rgba(148, 163, 184, 0.25); +} + +.narrow-content { + max-width: 90%; + margin: 0 auto; +} + +.framework-lead { + padding-bottom: 1rem; + text-align: center; + color: #334155; +} + +.section-title { + position: relative; + display: inline-flex; + align-items: center; + gap: 0.75rem; + padding-left: 1.4rem; + color: #1e3a8a; +} + +.section-title::before { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 6px; + height: 100%; + border-radius: 999px; + background: linear-gradient(180deg, #6366f1, #a855f7); +} + +.gallery-hero { + background: transparent; +} + +.gallery-hero .hero-body { + padding: 3rem 2.5rem; + background: rgba(255, 255, 255, 0.88); + border-radius: 28px; + border: 1px solid rgba(148, 163, 184, 0.25); + box-shadow: 0 40px 90px -65px rgba(59, 130, 246, 0.35); +} + +.gallery-hero .viewers-container { + background: rgba(255, 255, 255, 0.92); + border-radius: 24px; + padding: 2rem 1.5rem; + border: 1px solid rgba(148, 163, 184, 0.25); + box-shadow: 0 42px 80px -60px rgba(59, 130, 246, 0.35); + min-height: 320px; +} + +.gallery-hero .controls-bar { + margin-top: 1.5rem; + background: rgba(255, 255, 255, 0.94); + border-radius: 18px; + padding: 1rem 1.25rem; + border: 1px solid rgba(148, 163, 184, 0.35); + box-shadow: 0 35px 70px -55px rgba(30, 64, 175, 0.4); + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + justify-content: center; +} + +.gallery-hero .controls-bar button { + background: #eef2ff; + border-radius: 999px; + border: none; + padding: 0.55rem 1.4rem; + font-weight: 600; + color: #3730a3; + transition: all 0.2s ease-in-out; +} + +.gallery-hero .controls-bar button:hover, +.gallery-hero .controls-bar button:focus { + background: #c7d2fe; + color: #1d4ed8; + transform: translateY(-2px); +} + +.gallery-hero .rotate-controls { + display: flex; + gap: 0.6rem; +} + +.framework-hero { + background: transparent; +} + +.framework-hero .hero-body { + background: rgba(255, 255, 255, 0.88); + border-radius: 28px; + padding: 3rem 2.5rem; + border: 1px solid rgba(148, 163, 184, 0.25); + box-shadow: 0 42px 90px -68px rgba(79, 70, 229, 0.28); +} + +.framed-image { + border-radius: 24px; + border: 1px solid rgba(99, 102, 241, 0.18); + box-shadow: 0 45px 90px -65px rgba(30, 58, 138, 0.7); + background-color: #ffffff; +} + +#BibTeX pre code { + display: block; + padding: 1.5rem 1.75rem; + background: #0f172a; + color: #e2e8f0; + border-radius: 18px; + border: 1px solid rgba(148, 163, 184, 0.35); + box-shadow: 0 42px 80px -65px rgba(15, 23, 42, 0.85); + overflow-x: auto; +} + +.link-block a.button.is-dark.disabled { + background-color: #4a4a4a; + opacity: 0.75; + cursor: not-allowed; + pointer-events: none; +} + +@media screen and (max-width: 1215px) { + .landing-card { + padding: 2.8rem 2.5rem 2.2rem; + } +} + +@media screen and (max-width: 1023px) { + .hero.is-landing .hero-body { + padding: 3.5rem 1.5rem 3rem; + } + + .soft-section { + padding-top: 3rem; + padding-bottom: 3rem; + } +} + +@media screen and (max-width: 768px) { + .landing-card { + padding: 2.4rem 1.75rem 2rem; + } + + .page-stack { + gap: 2.5rem; + } + + .hero-subtitle { + font-size: 1.1rem; + } + + .conference-badge { + font-size: 0.78rem; + padding: 0.5rem 1.2rem; + gap: 0.55rem; + } + + .tldr-card { + padding: 1.35rem 1.5rem; + font-size: 1rem; + } + + .content-card { + padding: 2rem 1.75rem; + } + + .gallery-hero .hero-body, + .framework-hero .hero-body { + padding: 2.5rem 1.75rem; + } + + .gallery-hero .viewers-container { + padding: 1.5rem 1.25rem; + } +} + +@media screen and (max-width: 480px) { + .conference-badge { + flex-direction: column; + align-items: center; + text-align: center; + gap: 0.35rem; + } + + .spotlight-tag { + width: auto; + padding-left: 0; + } + + .spotlight-tag::before { + display: none; + } +} diff --git a/index.html b/index.html index 3eff2fe..84ea5ce 100644 --- a/index.html +++ b/index.html @@ -92,103 +92,96 @@ -
+
-
-
- - +
+

- Rectified Point Flow:
Generic Point Cloud Pose Estimation + Rectified Point Flow:
+ Generic Point Cloud Pose Estimation

-
- Tao Sun1,* - Liyuan Zhu1,* - Shengyu Huang2 - - Shuran Song1 - Iro Armeni1 -
- 1Stanford University - 2NVIDIA Research - (*Equal contribution) -
-

- NeurIPS 2025 (Spotlight) -

- -
-
+
+ +
+ 1Stanford University + 2NVIDIA Research +
+
+ *Equal contribution +
+
+
+ NeurIPS 2025 + Spotlight +
+
+ TL;DR: + A point cloud generative model that turns unposed parts into assembled shapes. +
-

- TL;DR: A point cloud generative model that turns unposed parts into assembled shapes. -

-
-
-
+
-
+ -
+
-
+
- -
-

Abstract

-
-

- We introduce Rectified Point Flow, a unified parameterization that formulates pairwise point cloud registration and multi-part shape assembly as a single conditional generative problem. - - Given unposed point clouds, our method learns a continuous point-wise velocity field that transports noisy points toward their target positions, from which part poses are recovered. +

+

Abstract

+
+

+ We introduce Rectified Point Flow, a unified parameterization that formulates pairwise point cloud registration and multi-part shape assembly as a single conditional generative problem. + + Given unposed point clouds, our method learns a continuous point-wise velocity field that transports noisy points toward their target positions, from which part poses are recovered. In contrast to prior work that regresses part-wise poses with ad-hoc symmetry handling, our method intrinsically learns assembly symmetries without symmetry labels.

-Together with a self-supervised encoder focused on overlapping points, our method achieves a new state-of-the-art performance on six benchmarks spanning pairwise registration and shape assembly. +Together with a self-supervised encoder focused on overlapping points, our method achieves a new state-of-the-art performance on six benchmarks spanning pairwise registration and shape assembly. Notably, our unified formulation enables effective joint training on diverse datasets, facilitating the learning of shared geometric priors and consequently boosting accuracy. -

+

+
-
+ -
+
-

Framework

-

+

Framework

+

Rectified Point Flow supports shape assembly and pairwise registration tasks in a single framework. Given a set of unposed part point clouds \(\{\bar {X}_i\}_{i\in\Omega}\), it predicts each part's point cloud at the target assembled state \(\{\hat {X}_i{(0)}\}_{i\in\Omega}\). Subsequently, we solve Procrustes problem via SVD between the condition point cloud \(\bar X_i\) and the estimated point cloud \(\hat X_i(0)\) to recover the rigid transformation \(\hat T_i\) for each non-anchored part.

- ReStyle3D method teaser figure
@@ -290,9 +283,9 @@

Framework

-
+ -
+
@@ -337,9 +330,9 @@

Framework

--> -
+
-

Multi-part Shape Assembly

+

Multi-part Shape Assembly

We evaluate our method on the multi-part shape assembly task, where the goal is to estimate the poses of multiple parts given their unposed point clouds. @@ -357,6 +350,7 @@

Multi-part Shape Assembly

src="./images/result_assembly.png" alt="Comparison with other methods" style="width: 90%; display: block; margin: 0 auto;" + class="framed-image" >
@@ -365,7 +359,7 @@

Multi-part Shape Assembly

-
+
-
+
-

Linear Interpolation in Noise Space

+

Linear Interpolation in Noise Space

We visualize the linear interpolation in the noise space by generating the assembled point cloud from \( Z(s) \), where \( Z(s) \) interpolates linearly between two Gaussian noise vectors \( Z_0 \) and \( Z_1 \). We observe a continuous, semantically meaningful mapping from Gaussian noise to valid assemblies. @@ -467,9 +461,9 @@

Structural Changing

-
+ -
+

Generalization to Unseen Assemblies

@@ -487,6 +481,7 @@

Parts from Same Categories

style="margin: 10px auto;" src="./images/merge_object_same.png" alt="Comparison with other methods" + class="framed-image" >
@@ -507,6 +502,7 @@

Parts from Different Categories

style="margin: 10px auto;" src="./images/merge_object_diff.png" alt="Comparison with other methods" + class="framed-image" > @@ -519,14 +515,14 @@

Parts from Different Categories

-
+ -
+ -
+
-

Concurrent Works

+

Concurrent Works

We are pleased to see several concurrent works that explore flow matching for pose estimation. Check them as well!
@@ -551,12 +547,12 @@

Concurrent Works

- Equivariant Flow Matching for Point Cloud Assembly handles part symmetry like ours, but with a proposed equivariant flow model working on top of an SE(3)-equivariant encoder.

-
+ -
+
-

BibTeX

+

BibTeX

@inproceedings{sun2025_rpf,
       author = {Sun, Tao and Zhu, Liyuan and Huang, Shengyu and Song, Shuran and Armeni, Iro},
       title = {Rectified Point Flow: Generic Point Cloud Pose Estimation},
@@ -564,10 +560,14 @@ 

BibTeX

year = {2025}, }
+
+ + + +
-