Spaces:
Running
Running
Code4Scene project page: leaderboard, takeaways, cases in 3D
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +62 -0
- README.md +11 -4
- _headers +9 -0
- assets/paper.css +197 -0
- assets/paper.js +48 -0
- cases.html +287 -0
- data/site.js +1 -0
- img/judge_egyptian-temple_sol_s3f_000025.jpg +3 -0
- img/simworld-logo.png +0 -0
- index.html +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/astra.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/astra_full.jpg +3 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/deepseek.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/fable.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemini.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemma-off.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemma-on.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/glm.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/grok.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gt.jpg +3 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/inkling.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/inkling_full.jpg +3 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/muse.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/opus.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/qwen-off.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/qwen-on.jpg +0 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/ref-1.jpg +3 -0
- media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/sol.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/astra.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/deepseek.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/deepseek_full.jpg +3 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/fable.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemini.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemma-off.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemma-on.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/glm.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/grok.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gt.jpg +3 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/inkling.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/muse.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/opus.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/opus_full.jpg +3 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/qwen-off.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/qwen-on.jpg +0 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/ref-1.jpg +3 -0
- media/i2s/comp-61-new-york-mailbox-pair-repair-v2/sol.jpg +0 -0
- media/t2s/bazaar/astra-v0.jpg +0 -0
- media/t2s/bazaar/astra-v1.jpg +0 -0
- media/t2s/bazaar/astra-v2.jpg +0 -0
- media/t2s/bazaar/astra-v3.jpg +0 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,65 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
img/judge_egyptian-temple_sol_s3f_000025.jpg filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/astra_full.jpg filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gt.jpg filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/inkling_full.jpg filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/ref-1.jpg filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/deepseek_full.jpg filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gt.jpg filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/opus_full.jpg filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/ref-1.jpg filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
media/t2s/bazaar/astra.jpg filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
media/t2s/bazaar/deepseek.jpg filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
media/t2s/bazaar/fable.jpg filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
media/t2s/bazaar/gemini.jpg filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
media/t2s/bazaar/gemma-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
media/t2s/bazaar/grok.jpg filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
media/t2s/bazaar/inkling.jpg filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
media/t2s/bazaar/muse.jpg filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
media/t2s/bazaar/opus.jpg filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
media/t2s/bazaar/qwen-off.jpg filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
media/t2s/bazaar/qwen-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
media/t2s/bazaar/sol.jpg filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
media/t2s/egyptian-temple/astra.jpg filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
media/t2s/egyptian-temple/deepseek.jpg filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
media/t2s/egyptian-temple/fable.jpg filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
media/t2s/egyptian-temple/gemini.jpg filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
media/t2s/egyptian-temple/gemma-off.jpg filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
media/t2s/egyptian-temple/gemma-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
media/t2s/egyptian-temple/glm.jpg filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
media/t2s/egyptian-temple/grok.jpg filter=lfs diff=lfs merge=lfs -text
|
| 65 |
+
media/t2s/egyptian-temple/muse.jpg filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
media/t2s/egyptian-temple/opus.jpg filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
media/t2s/egyptian-temple/qwen-off.jpg filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
media/t2s/egyptian-temple/qwen-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
media/t2s/egyptian-temple/sol.jpg filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
media/t2s/medieval-big-farm-town/astra.jpg filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
media/t2s/medieval-big-farm-town/deepseek.jpg filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
media/t2s/medieval-big-farm-town/fable.jpg filter=lfs diff=lfs merge=lfs -text
|
| 73 |
+
media/t2s/medieval-big-farm-town/gemini.jpg filter=lfs diff=lfs merge=lfs -text
|
| 74 |
+
media/t2s/medieval-big-farm-town/gemma-off.jpg filter=lfs diff=lfs merge=lfs -text
|
| 75 |
+
media/t2s/medieval-big-farm-town/gemma-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 76 |
+
media/t2s/medieval-big-farm-town/glm.jpg filter=lfs diff=lfs merge=lfs -text
|
| 77 |
+
media/t2s/medieval-big-farm-town/grok.jpg filter=lfs diff=lfs merge=lfs -text
|
| 78 |
+
media/t2s/medieval-big-farm-town/inkling.jpg filter=lfs diff=lfs merge=lfs -text
|
| 79 |
+
media/t2s/medieval-big-farm-town/muse.jpg filter=lfs diff=lfs merge=lfs -text
|
| 80 |
+
media/t2s/medieval-big-farm-town/opus.jpg filter=lfs diff=lfs merge=lfs -text
|
| 81 |
+
media/t2s/medieval-big-farm-town/qwen-off.jpg filter=lfs diff=lfs merge=lfs -text
|
| 82 |
+
media/t2s/medieval-big-farm-town/qwen-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 83 |
+
media/t2s/medieval-big-farm-town/sol.jpg filter=lfs diff=lfs merge=lfs -text
|
| 84 |
+
media/t2s/nordic-harbour/astra.jpg filter=lfs diff=lfs merge=lfs -text
|
| 85 |
+
media/t2s/nordic-harbour/fable.jpg filter=lfs diff=lfs merge=lfs -text
|
| 86 |
+
media/t2s/nordic-harbour/gemini.jpg filter=lfs diff=lfs merge=lfs -text
|
| 87 |
+
media/t2s/nordic-harbour/gemma-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 88 |
+
media/t2s/nordic-harbour/glm.jpg filter=lfs diff=lfs merge=lfs -text
|
| 89 |
+
media/t2s/nordic-harbour/grok.jpg filter=lfs diff=lfs merge=lfs -text
|
| 90 |
+
media/t2s/nordic-harbour/inkling.jpg filter=lfs diff=lfs merge=lfs -text
|
| 91 |
+
media/t2s/nordic-harbour/muse.jpg filter=lfs diff=lfs merge=lfs -text
|
| 92 |
+
media/t2s/nordic-harbour/opus.jpg filter=lfs diff=lfs merge=lfs -text
|
| 93 |
+
media/t2s/nordic-harbour/qwen-off.jpg filter=lfs diff=lfs merge=lfs -text
|
| 94 |
+
media/t2s/nordic-harbour/qwen-on.jpg filter=lfs diff=lfs merge=lfs -text
|
| 95 |
+
media/t2s/nordic-harbour/sol.jpg filter=lfs diff=lfs merge=lfs -text
|
| 96 |
+
media/teaser-poster.jpg filter=lfs diff=lfs merge=lfs -text
|
| 97 |
+
media/teaser.mp4 filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,10 +1,17 @@
|
|
| 1 |
---
|
| 2 |
title: Code4Scene
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
|
|
|
| 7 |
pinned: false
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
title: Code4Scene
|
| 3 |
+
emoji: 🏗️
|
| 4 |
+
colorFrom: yellow
|
| 5 |
+
colorTo: gray
|
| 6 |
sdk: static
|
| 7 |
+
app_file: index.html
|
| 8 |
pinned: false
|
| 9 |
+
short_description: Benchmarking coding agents that build and edit 3D scenes
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Code4Scene
|
| 13 |
+
|
| 14 |
+
Project page for *Code4Scene: Benchmarking Coding Agents for Constructing and Editing 3D Scenes*: the leaderboard on the
|
| 15 |
+
95-case public set, the paper's takeaways, and selected cases whose saved Unreal Engine scenes can be viewed in 3D.
|
| 16 |
+
|
| 17 |
+
Part of the [SimWorld](https://simworld.org) project.
|
_headers
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/models/*
|
| 2 |
+
Cache-Control: public, max-age=31536000, immutable
|
| 3 |
+
Content-Type: application/octet-stream
|
| 4 |
+
X-Robots-Tag: noindex
|
| 5 |
+
/media/*
|
| 6 |
+
Cache-Control: public, max-age=86400
|
| 7 |
+
/*
|
| 8 |
+
X-Content-Type-Options: nosniff
|
| 9 |
+
Referrer-Policy: strict-origin-when-cross-origin
|
assets/paper.css
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* Code4Scene project page. The layout and tokens follow the SimWorld Studio project page (simworld.org/simworld-studio/):
|
| 2 |
+
a warm hero with a gradient title, a dark teaser, alternating light sections with pill labels, a dark citation block. */
|
| 3 |
+
:root {
|
| 4 |
+
--primary: #667eea; --primary-dark: #4f63d2; --text-h: #1a1f36; --text-p: #374151; --text-muted: #6b7280; --text-light: #9ca3af;
|
| 5 |
+
--bg-page: #f8faff; --bg-card: #ffffff; --bg-alt: #f0f4ff; --border: #e5e7eb; --dark: #15130f;
|
| 6 |
+
--shadow-sm: 0 2px 8px rgba(102,126,234,.08); --shadow-md: 0 8px 28px rgba(102,126,234,.14);
|
| 7 |
+
--radius-sm: 8px; --radius-md: 16px; --max-w: 1100px; --nav-h: 64px;
|
| 8 |
+
/* names the case explorer and the charts use */
|
| 9 |
+
--text-primary: var(--text-h); --text-secondary: var(--text-p); --text-faint: var(--text-light);
|
| 10 |
+
--surface-0: var(--bg-page); --surface-1: #fff; --surface-2: var(--bg-alt); --surface-3: #e6ebf7;
|
| 11 |
+
--line: var(--border); --line-soft: #eef0f5; --line-strong: #cfd5e2;
|
| 12 |
+
--accent: var(--primary); --accent-bright: var(--primary-dark); --accent-wash: rgba(102,126,234,.08);
|
| 13 |
+
--good: #0f9f6e; --bad: #dc4a2d; --warn: #d97706;
|
| 14 |
+
}
|
| 15 |
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
| 16 |
+
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 12px); }
|
| 17 |
+
body { font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--text-p); background: var(--bg-page); line-height: 1.7; overflow-x: hidden; }
|
| 18 |
+
a { color: var(--primary-dark); text-decoration: none; } a:hover { text-decoration: underline; }
|
| 19 |
+
img, video { max-width: 100%; display: block; }
|
| 20 |
+
code { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .86em; }
|
| 21 |
+
|
| 22 |
+
.navbar { position: fixed; top: 0; left: 0; right: 0; height: var(--nav-h); background: rgba(255,255,255,.92); backdrop-filter: blur(12px);
|
| 23 |
+
border-bottom: 1px solid rgba(229,231,235,.6); display: flex; align-items: center; justify-content: space-between; padding: 0 2rem; z-index: 1000; box-shadow: 0 1px 16px rgba(0,0,0,.06); }
|
| 24 |
+
.navbar-brand { display: flex; align-items: center; gap: .6rem; font-weight: 700; font-size: 1.05rem; color: var(--text-h); }
|
| 25 |
+
.navbar-brand:hover { text-decoration: none; }
|
| 26 |
+
.navbar-brand svg { height: 30px; width: 30px; }
|
| 27 |
+
.navbar-links { display: flex; align-items: center; gap: .25rem; list-style: none; }
|
| 28 |
+
.navbar-links a { display: inline-flex; align-items: center; gap: .35rem; padding: .4rem .85rem; border-radius: var(--radius-sm); font-size: .88rem; font-weight: 500; color: var(--text-p); }
|
| 29 |
+
.navbar-links a:hover { background: var(--bg-alt); color: var(--primary-dark); text-decoration: none; }
|
| 30 |
+
.navbar-links a.on { color: var(--primary-dark); font-weight: 700; }
|
| 31 |
+
.navbar-links a.btn-nav-primary { background: var(--primary); color: #fff; padding-left: .5rem; padding-right: .7rem; }
|
| 32 |
+
.navbar-links a.btn-nav-primary:hover { background: var(--primary-dark); }
|
| 33 |
+
.navbar-links a.btn-nav-primary img { height: 26px; width: auto; }
|
| 34 |
+
|
| 35 |
+
.hero { padding: calc(var(--nav-h) + 4.5rem) 2rem 4.5rem; text-align: center; position: relative; overflow: hidden;
|
| 36 |
+
background: linear-gradient(150deg, #fffdf5 0%, #fef8e8 45%, #fffbf0 100%); }
|
| 37 |
+
.hero::before { content: ""; position: absolute; inset: 0; pointer-events: none;
|
| 38 |
+
background-image: radial-gradient(70% 55% at 15% 20%, rgba(217,119,6,.13) 0%, transparent 60%), radial-gradient(55% 45% at 85% 75%, rgba(180,83,9,.09) 0%, transparent 55%),
|
| 39 |
+
radial-gradient(45% 40% at 70% 15%, rgba(245,158,11,.11) 0%, transparent 50%); }
|
| 40 |
+
.hero-inner { position: relative; max-width: 920px; margin: 0 auto; animation: fadeUp .9s ease both; }
|
| 41 |
+
.hero-title { font-size: clamp(1.7rem, 4vw, 2.8rem); font-weight: 800; line-height: 1.25; color: #27180a; margin-bottom: 1rem; letter-spacing: -.02em; }
|
| 42 |
+
.hero-title svg { height: 1.05em; width: 1.05em; vertical-align: -0.16em; margin-right: .22em; }
|
| 43 |
+
.highlight { background: linear-gradient(90deg, #92400e, #d97706); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
|
| 44 |
+
.hero-subtitle { font-size: 1.05rem; color: #57534e; max-width: 700px; margin: 0 auto 2rem; }
|
| 45 |
+
.hero-authors { font-size: .92rem; color: var(--text-p); margin-bottom: .5rem; line-height: 1.9; }
|
| 46 |
+
.hero-authors .author { font-weight: 600; }
|
| 47 |
+
.hero-affiliations { font-size: .82rem; color: var(--text-muted); margin-bottom: 2.4rem; }
|
| 48 |
+
.hero-buttons { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: center; margin-bottom: 3rem; }
|
| 49 |
+
.btn { display: inline-flex; align-items: center; gap: .45rem; padding: .65rem 1.4rem; border-radius: var(--radius-sm); font-size: .9rem; font-weight: 600; cursor: pointer;
|
| 50 |
+
transition: transform .15s, box-shadow .15s, background .15s; border: 0; font-family: inherit; }
|
| 51 |
+
.btn:hover { transform: translateY(-2px); text-decoration: none; }
|
| 52 |
+
.btn svg { width: 15px; height: 15px; }
|
| 53 |
+
.btn-primary { background: linear-gradient(135deg, #92400e, #d97706); color: #fff; box-shadow: 0 4px 18px rgba(180,83,9,.3); }
|
| 54 |
+
.btn-primary:hover { color: #fff; box-shadow: 0 8px 26px rgba(180,83,9,.42); }
|
| 55 |
+
.btn-outline { background: rgba(255,255,255,.7); border: 1.5px solid rgba(161,98,7,.28); color: #78350f; }
|
| 56 |
+
.btn-outline:hover { background: #fff; border-color: rgba(161,98,7,.55); }
|
| 57 |
+
.btn-dark { background: rgba(255,255,255,.6); border: 1.5px solid rgba(161,98,7,.22); color: #92400e; }
|
| 58 |
+
.btn-dark:hover { background: #fff; }
|
| 59 |
+
.btn.off { opacity: .55; cursor: default; } .btn.off:hover { transform: none; }
|
| 60 |
+
.hero-stats { display: flex; justify-content: center; gap: 3rem; flex-wrap: wrap; }
|
| 61 |
+
.hero-stat { text-align: center; }
|
| 62 |
+
.hero-stat .stat-num { font-size: 1.9rem; font-weight: 800; line-height: 1; }
|
| 63 |
+
.hero-stat .stat-num span { background: linear-gradient(90deg, #92400e, #d97706); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
|
| 64 |
+
.hero-stat .stat-label { font-size: .75rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: .06em; margin-top: .3rem; }
|
| 65 |
+
.hero-stat .stat-note { font-size: .72rem; color: #a8937a; margin-top: .15rem; }
|
| 66 |
+
|
| 67 |
+
section { padding: 5rem 2rem; }
|
| 68 |
+
section.alt { background: var(--bg-alt); }
|
| 69 |
+
/* the dark sections take the film's own background, so the teaser sits in it without a seam */
|
| 70 |
+
section.dark { background: radial-gradient(90% 70% at 50% 0%, #2a2217 0%, var(--dark) 60%); color: rgba(255,255,255,.85); }
|
| 71 |
+
.container { max-width: var(--max-w); margin: 0 auto; }
|
| 72 |
+
.section-label { display: inline-flex; align-items: center; gap: .4rem; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--primary);
|
| 73 |
+
background: rgba(102,126,234,.08); border: 1px solid rgba(102,126,234,.2); padding: .28rem .8rem; border-radius: 999px; margin-bottom: .9rem; }
|
| 74 |
+
section.dark .section-label { background: rgba(217,119,6,.14); border-color: rgba(240,163,94,.35); color: #f0a35e; }
|
| 75 |
+
.section-title { font-size: clamp(1.5rem, 3.5vw, 2.1rem); font-weight: 800; color: var(--text-h); line-height: 1.2; letter-spacing: -.02em; margin-bottom: .9rem; }
|
| 76 |
+
section.dark .section-title { color: #f2eee6; }
|
| 77 |
+
.section-desc { font-size: 1.05rem; color: var(--text-muted); max-width: 720px; line-height: 1.75; }
|
| 78 |
+
section.dark .section-desc { color: rgba(242,238,230,.6); }
|
| 79 |
+
.section-header { margin-bottom: 2.6rem; }
|
| 80 |
+
.section-header.centered { text-align: center; } .section-header.centered .section-desc { margin: 0 auto; }
|
| 81 |
+
.sub-title { font-size: 1.2rem; font-weight: 800; color: var(--text-h); letter-spacing: -.01em; margin: 0 0 .35rem; }
|
| 82 |
+
.sub-desc { color: var(--text-muted); font-size: .95rem; margin-bottom: 1.1rem; max-width: 820px; }
|
| 83 |
+
|
| 84 |
+
.teaser-frame { border-radius: var(--radius-md); overflow: hidden; box-shadow: 0 30px 80px rgba(0,0,0,.5); background: #000; border: 1px solid rgba(240,163,94,.18); }
|
| 85 |
+
.teaser-frame video { width: 100%; aspect-ratio: 16 / 9; background: #000; }
|
| 86 |
+
.teaser-note { text-align: center; font-size: .82rem; color: rgba(255,255,255,.45); margin-top: 1rem; }
|
| 87 |
+
|
| 88 |
+
.card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 1.8rem 2rem; box-shadow: var(--shadow-sm); }
|
| 89 |
+
.card + .card { margin-top: 1.5rem; }
|
| 90 |
+
.grid2 > .card + .card { margin-top: 0; } /* side by side, not stacked */
|
| 91 |
+
.grid2 > .card { display: flex; flex-direction: column; }
|
| 92 |
+
.setting-card .formula { margin-top: auto; }
|
| 93 |
+
.setting-card p { margin-bottom: .9rem; }
|
| 94 |
+
.abstract-card { font-family: "DM Sans", Inter, sans-serif; font-size: 1.05rem; line-height: 1.85; padding: 2.4rem 3rem; }
|
| 95 |
+
.abstract-card p + p { margin-top: 1rem; }
|
| 96 |
+
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
|
| 97 |
+
.setting-card h3 { font-size: 1.05rem; font-weight: 800; color: var(--text-h); margin-bottom: .2rem; }
|
| 98 |
+
.setting-card .kicker { font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--primary); }
|
| 99 |
+
.setting-card p { font-size: .92rem; color: var(--text-muted); margin-top: .5rem; }
|
| 100 |
+
.setting-card .formula { font-size: .86rem; background: var(--bg-alt); border-radius: var(--radius-sm); padding: .6rem .8rem; color: var(--text-h); }
|
| 101 |
+
|
| 102 |
+
/* the pipeline: prompt -> agent -> code -> scene -> evaluator */
|
| 103 |
+
.flow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; margin-top: 2rem; align-items: stretch; }
|
| 104 |
+
.flow .step { position: relative; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 1rem 1rem 1.1rem; box-shadow: var(--shadow-sm); margin: 0 14px; }
|
| 105 |
+
.flow .step:not(:last-child)::after { content: ""; position: absolute; right: -24px; top: 50%; width: 20px; height: 2px; background: var(--line-strong); }
|
| 106 |
+
.flow .step:not(:last-child)::before { content: ""; position: absolute; right: -25px; top: calc(50% - 4px); border: 5px solid transparent; border-left: 7px solid var(--line-strong); border-right: 0; }
|
| 107 |
+
.flow .step b { display: block; color: var(--text-h); font-size: .92rem; } .flow .step span { display: block; font-size: .8rem; color: var(--text-muted); line-height: 1.5; margin-top: .25rem; }
|
| 108 |
+
.flow .step .n { font-size: .68rem; font-weight: 800; letter-spacing: .08em; color: var(--primary); text-transform: uppercase; }
|
| 109 |
+
.flow .step.eval { border-color: rgba(217,119,6,.45); background: #fffaf0; } .flow .step.eval .n { color: #b45309; }
|
| 110 |
+
|
| 111 |
+
/* charts, tooltips */
|
| 112 |
+
.chart-card { padding: 1.6rem 1.8rem 1.4rem; }
|
| 113 |
+
.chart-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin-bottom: .6rem; }
|
| 114 |
+
.seg { display: inline-flex; background: var(--bg-alt); border-radius: 999px; padding: 3px; border: 1px solid var(--border); }
|
| 115 |
+
.seg button { border: 0; background: transparent; padding: .35rem .9rem; border-radius: 999px; font: 600 .84rem Inter, sans-serif; color: var(--text-muted); cursor: pointer; }
|
| 116 |
+
.seg button.on { background: #fff; color: var(--text-h); box-shadow: var(--shadow-sm); }
|
| 117 |
+
.note { font-size: .82rem; color: var(--text-muted); margin-top: .8rem; line-height: 1.6; }
|
| 118 |
+
.tip { position: fixed; z-index: 2000; pointer-events: none; background: #1a1f36; color: #fff; font-size: .8rem; line-height: 1.45; padding: .5rem .7rem; border-radius: 8px;
|
| 119 |
+
box-shadow: 0 8px 24px rgba(0,0,0,.25); max-width: 300px; opacity: 0; transform: translate(-50%, calc(-100% - 12px)); transition: opacity .12s; }
|
| 120 |
+
.tip.on { opacity: 1; } .tip b { display: block; font-size: .84rem; }
|
| 121 |
+
svg.ch [data-tip] { cursor: default; }
|
| 122 |
+
svg.pareto .pt circle { transition: r .12s; } svg.pareto .pt:hover circle { r: 8; }
|
| 123 |
+
svg.pareto .frontier { fill: none; stroke: var(--primary); stroke-width: 2.2; }
|
| 124 |
+
svg.pareto .band { fill: rgba(102,126,234,.07); }
|
| 125 |
+
.frontier-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; margin-top: 1.2rem; }
|
| 126 |
+
.frontier-list h4 { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--text-muted); margin-bottom: .3rem; }
|
| 127 |
+
.frontier-list div.r { display: flex; justify-content: space-between; font-size: .86rem; padding: .3rem 0; border-bottom: 1px solid var(--line-soft); }
|
| 128 |
+
.frontier-list div.r span { color: var(--text-muted); font-variant-numeric: tabular-nums; }
|
| 129 |
+
|
| 130 |
+
/* leaderboards */
|
| 131 |
+
.board { width: 100%; border-collapse: collapse; font-size: .88rem; font-variant-numeric: tabular-nums; }
|
| 132 |
+
.board-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius-md); background: #fff; box-shadow: var(--shadow-sm); }
|
| 133 |
+
.board th { text-align: left; font-size: .7rem; letter-spacing: .07em; text-transform: uppercase; color: var(--text-muted); font-weight: 700; padding: .8rem .75rem; border-bottom: 1px solid var(--border);
|
| 134 |
+
white-space: nowrap; cursor: pointer; user-select: none; background: #fbfcff; }
|
| 135 |
+
.board th:hover { color: var(--text-h); } .board th.sorted { color: var(--primary-dark); } .board th.sorted::after { content: " ↓"; } .board th.sorted.asc::after { content: " ↑"; }
|
| 136 |
+
.board th.nosort { cursor: default; }
|
| 137 |
+
.board td { padding: .65rem .75rem; border-bottom: 1px solid var(--line-soft); white-space: nowrap; }
|
| 138 |
+
.board tr:last-child td { border-bottom: 0; }
|
| 139 |
+
.board tr:hover td { background: #fafbff; }
|
| 140 |
+
.board td.rk { color: var(--text-light); width: 36px; }
|
| 141 |
+
.board td.nm { font-weight: 600; color: var(--text-h); }
|
| 142 |
+
.board td.nm .org { display: block; font-weight: 500; font-size: .75rem; color: var(--text-muted); margin-left: 26px; margin-top: -2px; }
|
| 143 |
+
.board .logo { width: 18px; height: 18px; display: inline-flex; vertical-align: -3px; margin-right: 8px; } .board .logo svg { width: 100%; height: 100%; }
|
| 144 |
+
.tag { display: inline-block; font-size: .66rem; font-weight: 700; letter-spacing: .03em; border-radius: 999px; padding: 0 .5rem; margin-left: .45rem; vertical-align: 1px; }
|
| 145 |
+
.tag.open { color: #0f766e; background: rgba(15,159,110,.1); border: 1px solid rgba(15,159,110,.25); }
|
| 146 |
+
.tag.front { color: var(--primary-dark); background: rgba(102,126,234,.1); border: 1px solid rgba(102,126,234,.25); }
|
| 147 |
+
.cellbar { display: flex; align-items: center; gap: .5rem; min-width: 128px; }
|
| 148 |
+
.cellbar i { display: block; height: 8px; border-radius: 0 4px 4px 0; background: var(--bar, var(--primary)); max-width: 110px; }
|
| 149 |
+
.cellbar b { color: var(--text-h); }
|
| 150 |
+
.board td.dim { color: var(--text-muted); }
|
| 151 |
+
.board-note { font-size: .8rem; color: var(--text-muted); margin: .7rem .2rem 0; }
|
| 152 |
+
|
| 153 |
+
/* takeaways */
|
| 154 |
+
.tk { background: #fff; border: 1px solid var(--border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 2rem 2.2rem; }
|
| 155 |
+
.tk + .tk { margin-top: 1.6rem; }
|
| 156 |
+
.tk .n { display: inline-block; font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: #b45309; background: rgba(217,119,6,.08);
|
| 157 |
+
border: 1px solid rgba(217,119,6,.22); border-radius: 999px; padding: .15rem .7rem; }
|
| 158 |
+
.tk h3 { font-size: 1.3rem; line-height: 1.35; font-weight: 800; color: var(--text-h); letter-spacing: -.01em; margin: .7rem 0 .3rem; }
|
| 159 |
+
.tk .s { color: var(--text-muted); font-size: .95rem; }
|
| 160 |
+
.tk .figs { margin-top: 1.4rem; display: grid; gap: 1.6rem; }
|
| 161 |
+
.tk .figs.two { grid-template-columns: 1.15fr 1fr; align-items: start; }
|
| 162 |
+
.tk figure figcaption { font-size: .8rem; color: var(--text-muted); margin-top: .6rem; line-height: 1.5; }
|
| 163 |
+
.tk figure .fh { font-size: .8rem; font-weight: 700; color: var(--text-h); margin-bottom: .5rem; }
|
| 164 |
+
|
| 165 |
+
/* case cards on the home page */
|
| 166 |
+
.case-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.4rem; }
|
| 167 |
+
.case-card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-sm); transition: transform .2s, box-shadow .2s; color: inherit; }
|
| 168 |
+
.case-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); text-decoration: none; }
|
| 169 |
+
.case-card .th { aspect-ratio: 16 / 9; background: #222 center / cover no-repeat; position: relative; }
|
| 170 |
+
.case-card .th i { position: absolute; left: 10px; top: 10px; font: 700 .7rem Inter, sans-serif; font-style: normal; color: #fff; background: rgba(15,12,41,.72); padding: .15rem .55rem; border-radius: 999px; }
|
| 171 |
+
.case-card .meta { padding: 1rem 1.2rem 1.15rem; }
|
| 172 |
+
.case-card .meta h4 { font-size: .98rem; font-weight: 700; color: var(--text-h); }
|
| 173 |
+
.case-card .meta p { font-size: .8rem; color: var(--text-muted); margin-top: .15rem; }
|
| 174 |
+
|
| 175 |
+
/* citation */
|
| 176 |
+
.cite-box { position: relative; background: rgba(255,255,255,.04); border: 1px solid rgba(240,163,94,.2); border-radius: var(--radius-md); padding: 1.6rem 1.8rem; max-width: 860px; margin: 0 auto; }
|
| 177 |
+
.cite-box pre { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .83rem; color: rgba(255,255,255,.72); white-space: pre-wrap; line-height: 1.7; }
|
| 178 |
+
.cite-copy-btn { position: absolute; top: 1rem; right: 1rem; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); border-radius: var(--radius-sm); color: rgba(255,255,255,.75);
|
| 179 |
+
padding: .3rem .7rem; font: .78rem Inter, sans-serif; cursor: pointer; }
|
| 180 |
+
.cite-copy-btn.copied { background: rgba(217,119,6,.25); border-color: rgba(240,163,94,.5); color: #f0a35e; }
|
| 181 |
+
section.dark .btn-outline { background: transparent; border-color: rgba(255,255,255,.25); color: rgba(255,255,255,.85); }
|
| 182 |
+
footer { background: #0d0b09; color: rgba(255,255,255,.45); text-align: center; padding: 2rem; font-size: .82rem; }
|
| 183 |
+
footer a { color: rgba(255,255,255,.62); }
|
| 184 |
+
|
| 185 |
+
@keyframes fadeUp { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
|
| 186 |
+
@media (max-width: 900px) {
|
| 187 |
+
.grid2, .tk .figs.two, .frontier-list { grid-template-columns: 1fr; }
|
| 188 |
+
.case-grid { grid-template-columns: 1fr 1fr; }
|
| 189 |
+
.flow { grid-template-columns: 1fr; gap: 12px; } .flow .step { margin: 0; } .flow .step::after, .flow .step::before { display: none; }
|
| 190 |
+
}
|
| 191 |
+
@media (max-width: 768px) {
|
| 192 |
+
section { padding: 3.5rem 1rem; }
|
| 193 |
+
.hero { padding: calc(var(--nav-h) + 2.5rem) 1rem 3.5rem; }
|
| 194 |
+
.navbar { padding: 0 1rem; } .navbar-links a { padding: .35rem .5rem; font-size: .8rem; } .navbar-links .hide-sm { display: none; }
|
| 195 |
+
.abstract-card { padding: 1.6rem; } .tk { padding: 1.4rem 1.2rem; } .card { padding: 1.3rem 1.1rem; }
|
| 196 |
+
.case-grid { grid-template-columns: 1fr; } .hero-stats { gap: 1.6rem; }
|
| 197 |
+
}
|
assets/paper.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Code4Scene page behaviour: chart tooltips, the Pareto view toggle, sortable leaderboards, copying the BibTeX.
|
| 2 |
+
(function () {
|
| 3 |
+
// tooltips: any element with data-tip='{"t": title, "r": [[label, value], ...]}' or plain text
|
| 4 |
+
var tip = document.createElement("div"); tip.className = "tip"; document.body.appendChild(tip);
|
| 5 |
+
function show(el, e) {
|
| 6 |
+
var raw = el.getAttribute("data-tip"), html;
|
| 7 |
+
try { var d = JSON.parse(raw); html = "<b>" + d.t + "</b>" + (d.r || []).map(function (r) { return r[0] + ": " + r[1]; }).join("<br>"); }
|
| 8 |
+
catch (err) { html = raw; }
|
| 9 |
+
tip.innerHTML = html; tip.classList.add("on"); move(e);
|
| 10 |
+
}
|
| 11 |
+
function move(e) { tip.style.left = Math.min(innerWidth - 160, Math.max(160, e.clientX)) + "px"; tip.style.top = e.clientY + "px"; }
|
| 12 |
+
document.addEventListener("mouseover", function (e) { var el = e.target.closest("[data-tip]"); if (el) show(el, e); });
|
| 13 |
+
document.addEventListener("mousemove", function (e) { if (tip.classList.contains("on")) move(e); });
|
| 14 |
+
document.addEventListener("mouseout", function (e) { var el = e.target.closest("[data-tip]"); if (el && !el.contains(e.relatedTarget)) tip.classList.remove("on"); });
|
| 15 |
+
|
| 16 |
+
// chart view toggles: <div class="seg" data-for="id"><button data-view="x">; the chart's groups carry data-view="x"
|
| 17 |
+
document.querySelectorAll(".seg[data-for]").forEach(function (seg) {
|
| 18 |
+
var chart = document.getElementById(seg.getAttribute("data-for"));
|
| 19 |
+
seg.querySelectorAll("button").forEach(function (b) {
|
| 20 |
+
b.addEventListener("click", function () {
|
| 21 |
+
seg.querySelectorAll("button").forEach(function (x) { x.classList.toggle("on", x === b); });
|
| 22 |
+
chart.querySelectorAll("[data-view]").forEach(function (g) { g.style.display = g.getAttribute("data-view") === b.getAttribute("data-view") ? "" : "none"; });
|
| 23 |
+
});
|
| 24 |
+
});
|
| 25 |
+
});
|
| 26 |
+
|
| 27 |
+
// sortable leaderboards: th[data-k] sorts rows by td[data-v] in that column; the rank column follows the order
|
| 28 |
+
document.querySelectorAll("table.board").forEach(function (tb) {
|
| 29 |
+
var ths = [].slice.call(tb.querySelectorAll("th"));
|
| 30 |
+
ths.forEach(function (th, ci) {
|
| 31 |
+
if (!th.hasAttribute("data-k")) { th.classList.add("nosort"); return; }
|
| 32 |
+
th.addEventListener("click", function () {
|
| 33 |
+
var asc = th.classList.contains("sorted") ? !th.classList.contains("asc") : th.getAttribute("data-best") === "low";
|
| 34 |
+
ths.forEach(function (x) { x.classList.remove("sorted", "asc"); }); th.classList.add("sorted"); if (asc) th.classList.add("asc");
|
| 35 |
+
var body = tb.tBodies[0], rows = [].slice.call(body.rows);
|
| 36 |
+
rows.sort(function (a, b) { var x = +a.cells[ci].getAttribute("data-v"), y = +b.cells[ci].getAttribute("data-v"); return asc ? x - y : y - x; });
|
| 37 |
+
rows.forEach(function (r, i) { r.cells[0].textContent = i + 1; body.appendChild(r); });
|
| 38 |
+
});
|
| 39 |
+
});
|
| 40 |
+
});
|
| 41 |
+
|
| 42 |
+
var cb = document.getElementById("copy-btn");
|
| 43 |
+
if (cb) cb.addEventListener("click", function () {
|
| 44 |
+
navigator.clipboard.writeText(document.getElementById("bibtex-text").textContent).then(function () {
|
| 45 |
+
cb.textContent = "Copied"; cb.classList.add("copied"); setTimeout(function () { cb.textContent = "Copy"; cb.classList.remove("copied"); }, 1600);
|
| 46 |
+
});
|
| 47 |
+
});
|
| 48 |
+
})();
|
cases.html
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en"><head>
|
| 3 |
+
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
| 4 |
+
<title>Code4Scene · Cases in 3D</title><meta name="description" content="Selected Code4Scene cases: every agent's saved scene in 3D and the evaluator's scores.">
|
| 5 |
+
<link rel="icon" href="data:image/svg+xml,<svg viewBox='0 0 32 32' aria-hidden='true'><defs><linearGradient id='gi' x1='0' y1='0' x2='1' y2='1'><stop offset='0' stop-color='%2392400e'/><stop offset='1' stop-color='%23d97706'/></linearGradient></defs><rect x='1' y='1' width='30' height='30' rx='8' fill='url(%23gi)'/><path d='M16 6.5 25 11.5v9L16 25.5 7 20.5v-9z' fill='none' stroke='%23fff' stroke-width='2' stroke-linejoin='round'/><path d='M7 11.5 16 16.5 25 11.5M16 16.5v9' fill='none' stroke='%23fff' stroke-width='2' stroke-linejoin='round'/></svg>">
|
| 6 |
+
<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 7 |
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=DM+Sans:wght@400;500&family=JetBrains+Mono:wght@400;500&display=swap">
|
| 8 |
+
<link rel="stylesheet" href="assets/paper.css?v=a4037058">
|
| 9 |
+
<style>
|
| 10 |
+
:root{--c4s-a:#5a67d8;--c4s-b:#d97706;--c4s-hot:#dc4a2d;--c4s-ok:#0f9f6e;--c4s-g1:#8b93a7;--c4s-g2:#aab1c2;--c4s-g3:#cdd2de;--c4s-seq:#5a67d8;--c4s-unit:#e3e7f0}
|
| 11 |
+
svg.ch{width:100%;height:auto;display:block;font-family:Inter,system-ui,sans-serif;overflow:visible}
|
| 12 |
+
svg.ch text{fill:var(--text-secondary);font-size:13px}svg.ch .b{fill:var(--text-primary);font-weight:700}svg.ch .m{fill:var(--text-muted);font-size:12px}
|
| 13 |
+
svg.ch .num{font-variant-numeric:tabular-nums}svg.ch .grid{stroke:var(--line-soft);stroke-width:1}svg.ch .axis{stroke:var(--line-strong);stroke-width:1}
|
| 14 |
+
svg.ch .dim{opacity:.42}svg.ch g.row:hover{opacity:1}svg.ch .hot{fill:var(--c4s-hot)!important;font-weight:700}
|
| 15 |
+
.ch-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 10px;font-size:13px;color:var(--text-secondary)}
|
| 16 |
+
.ch-legend span{display:inline-flex;align-items:center;gap:7px}.ch-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
|
| 17 |
+
.ev{position:relative;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line-soft)}.ev img{display:block;width:100%}
|
| 18 |
+
.ev svg{position:absolute;inset:0;width:100%;height:100%}
|
| 19 |
+
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip{font-size:13px;font-weight:600;padding:4px 10px;border-radius:999px;border:1px solid var(--line)}
|
| 20 |
+
.chip.ok{color:var(--c4s-ok);border-color:currentColor}.chip.no{color:var(--c4s-hot);border-color:currentColor}.chip small{font-weight:500;color:var(--text-muted);margin-left:4px}
|
| 21 |
+
.bigstats{display:flex;flex-wrap:wrap;gap:12px 34px;margin:0 0 12px}.bigstats b{display:block;font-size:30px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
|
| 22 |
+
.bigstats span{font-size:13px;color:var(--text-secondary)}
|
| 23 |
+
</style><style>.casebar{display:grid;gap:10px;margin:0 0 18px}
|
| 24 |
+
.cb-row{display:grid;grid-template-columns:140px 1fr;gap:16px;align-items:start}
|
| 25 |
+
.cb-row .grp{display:flex;flex-direction:column;line-height:1.25;padding-top:9px}.cb-row .grp b{font-size:13px;color:var(--text-h)}.cb-row .grp span{font-size:12px;color:var(--text-muted)}
|
| 26 |
+
.cb-btns{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
|
| 27 |
+
.casebar button{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;border:1px solid var(--line);background:var(--surface-1);border-radius:10px;padding:8px 13px;font:600 14px Inter,sans-serif;cursor:pointer;color:var(--text-h);text-align:left;min-width:0}
|
| 28 |
+
.casebar button span{line-height:1.3}
|
| 29 |
+
.casebar button:hover{border-color:var(--line-strong)}
|
| 30 |
+
.casebar button small{font-weight:500;font-size:12px;color:var(--text-muted);white-space:nowrap}
|
| 31 |
+
.casebar button.on{background:var(--text-h);color:#fff;border-color:var(--text-h)}.casebar button.on small{color:rgba(255,255,255,.7)}
|
| 32 |
+
@media(max-width:900px){.cb-btns{grid-template-columns:repeat(2,minmax(0,1fr))}}
|
| 33 |
+
@media(max-width:600px){.cb-row{grid-template-columns:1fr;gap:6px}.cb-row .grp{flex-direction:row;gap:6px;padding-top:0}}
|
| 34 |
+
.casegrid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(300px,1fr);gap:18px;align-items:start}
|
| 35 |
+
.viewer{position:relative;aspect-ratio:16/9;background:#15130f;border-radius:var(--radius-sm);overflow:hidden}
|
| 36 |
+
.viewer img,.viewer canvas{width:100%;height:100%;object-fit:cover;display:block}.viewer canvas{cursor:grab}
|
| 37 |
+
.viewer .hint{position:absolute;left:12px;bottom:10px;font-size:12px;color:#eee;background:rgba(0,0,0,.5);padding:4px 9px;border-radius:6px;pointer-events:none}
|
| 38 |
+
.viewer .load{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#ddd;font-size:14px}
|
| 39 |
+
.vtabs{display:flex;gap:6px;margin:10px 0 0;flex-wrap:wrap}
|
| 40 |
+
.vtabs button{border:1px solid var(--line);background:var(--surface-1);border-radius:8px;padding:5px 10px;font:600 13px Inter,sans-serif;cursor:pointer;color:var(--text-secondary)}
|
| 41 |
+
.vtabs button.on{border-color:var(--text-primary);color:var(--text-primary)}
|
| 42 |
+
.agents{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-top:12px}
|
| 43 |
+
.agents .ag{all:unset;cursor:pointer;border-radius:8px;overflow:hidden;outline:2px solid transparent;background:var(--surface-1);border:1px solid var(--line-soft)}
|
| 44 |
+
.agents .ag.on{outline-color:var(--accent)}.agents .ag:focus-visible{outline-color:var(--accent-bright)}
|
| 45 |
+
.agents .ag .th{aspect-ratio:16/9;background:#222 center/cover no-repeat;position:relative}
|
| 46 |
+
.agents .ag .th i{position:absolute;right:4px;top:4px;font:700 10px Inter,sans-serif;background:var(--accent);color:#fff;border-radius:4px;padding:1px 5px;font-style:normal}
|
| 47 |
+
.agents .ag .cap{font-size:11px;line-height:1.25;padding:4px 6px 5px;color:var(--text-secondary)}.agents .ag .cap b{font-size:13px;color:var(--text-primary)}
|
| 48 |
+
.panel{border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:12px;background:var(--surface-1)}
|
| 49 |
+
.panel h4{margin:0;font-size:15px;display:flex;align-items:center;gap:7px}.panel .rk{margin:.15rem 0 .4rem;color:var(--text-muted);font-size:13px}
|
| 50 |
+
.logo{width:18px;height:18px;display:inline-flex;vertical-align:middle}.logo svg{width:100%;height:100%}
|
| 51 |
+
.sc-big{font-size:46px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.05}
|
| 52 |
+
.sc-row{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(60px,1fr) 44px;gap:10px;align-items:center;margin-top:9px;font-size:14px}
|
| 53 |
+
.sc-row .tr{height:9px;background:var(--surface-3);border-radius:5px;overflow:hidden}.sc-row .fi{height:100%;background:var(--accent);border-radius:0 4px 4px 0}
|
| 54 |
+
.sc-row .v{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.sc-row .w{color:var(--text-muted);font-size:12px}
|
| 55 |
+
.formula{font-size:13px;color:var(--text-muted);margin-top:10px;font-variant-numeric:tabular-nums}
|
| 56 |
+
.find{font-size:14px;margin:7px 0;display:flex;gap:8px}.find .m{font-weight:800;width:16px;flex:none}
|
| 57 |
+
.find.match .m{color:var(--good)}.find.mismatch .m{color:var(--bad)}.find.physics .m{color:var(--warn)}
|
| 58 |
+
.prompt{font-size:14px;max-height:220px;overflow:auto;color:var(--text-secondary);margin-top:6px}
|
| 59 |
+
table.cs{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
|
| 60 |
+
table.cs th{text-align:left;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line)}
|
| 61 |
+
table.cs td{padding:8px 10px;border-bottom:1px solid var(--line-soft)}table.cs tr[data-i]{cursor:pointer}table.cs tr[data-i]:hover{background:var(--surface-2)}
|
| 62 |
+
table.cs tr.on{background:var(--accent-wash)}table.cs td.n{color:var(--text-muted);width:32px}table.cs td.nm{font-weight:600;white-space:nowrap}
|
| 63 |
+
.cellbar{position:relative;display:flex;align-items:center;gap:8px;min-width:150px}.cellbar div{height:9px;border-radius:0 4px 4px 0;background:var(--accent);max-width:110px;flex:none}
|
| 64 |
+
.cellbar b{font-weight:700}
|
| 65 |
+
@media(max-width:900px){.casegrid{grid-template-columns:1fr}.agents{grid-template-columns:repeat(4,1fr)}}
|
| 66 |
+
.case-head h3{font-size:1.25rem;font-weight:800;color:var(--text-h);letter-spacing:-.01em}.case-head p{font-size:.88rem;color:var(--text-muted);margin:.1rem 0 1rem}
|
| 67 |
+
.case-head b{color:var(--primary-dark)}
|
| 68 |
+
table.cs td,table.cs th{white-space:nowrap}.panel code{font-size:.82em;background:var(--bg-alt);padding:0 .3em;border-radius:4px}
|
| 69 |
+
.viewer .hint b{font-weight:700}
|
| 70 |
+
|
| 71 |
+
</style><script type="importmap">{"imports":{"three":"https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.module.js","three/addons/":"https://cdn.jsdelivr.net/npm/three@0.160.0/examples/jsm/"}}</script></head><body>
|
| 72 |
+
<nav class="navbar"><a class="navbar-brand" href="index.html"><svg viewBox="0 0 32 32" aria-hidden="true"><defs><linearGradient id="gi" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#92400e"/><stop offset="1" stop-color="#d97706"/></linearGradient></defs><rect x="1" y="1" width="30" height="30" rx="8" fill="url(#gi)"/><path d="M16 6.5 25 11.5v9L16 25.5 7 20.5v-9z" fill="none" stroke="#fff" stroke-width="2" stroke-linejoin="round"/><path d="M7 11.5 16 16.5 25 11.5M16 16.5v9" fill="none" stroke="#fff" stroke-width="2" stroke-linejoin="round"/></svg>Code4Scene</a><ul class="navbar-links"><li class=""><a href="index.html#leaderboard">Leaderboard</a></li><li class="hide-sm"><a href="index.html#takeaways">Takeaways</a></li><li class=""><a href="cases.html" class=on>Cases in 3D</a></li><li class="hide-sm"><a href="https://github.com/SimWorld-AI/Code4Scene" target="_blank" rel="noopener"><svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg> Code</a></li><li><a class="btn-nav-primary" href="https://simworld.org/" target="_blank" rel="noopener"><img src="img/simworld-logo.png" alt="">SimWorld Home</a></li></ul></nav>
|
| 73 |
+
<section class="alt" style="padding-top:calc(var(--nav-h) + 3rem);padding-bottom:3rem"><div class="container">
|
| 74 |
+
<div class="section-header" style="margin-bottom:1.6rem"><span class="section-label">Cases</span><h2 class="section-title">Every scene in 3D, with its scores</h2>
|
| 75 |
+
<p class="section-desc">Each agent's result is the engine-native scene it saved, exported from Unreal Engine so you can turn it in the browser. Beside it, how the
|
| 76 |
+
evaluator scored that scene. 6 cases, 41 scenes in 3D. Pick a case, then an agent.</p></div>
|
| 77 |
+
<div class="casebar" id="casebar"></div>
|
| 78 |
+
<div class="card" style="padding:1.4rem 1.5rem"><div class="case-head"><h3 id="ctitle"></h3><p><b id="ctrack"></b> · <span id="cnote"></span></p></div>
|
| 79 |
+
<div class="casegrid"><div><div class="viewer" id="viewer"></div><div class="vtabs" id="vtabs"></div><div class="agents" id="agents"></div></div><div id="side"></div></div></div>
|
| 80 |
+
<div class="card" style="margin-top:1.5rem;padding:1.4rem 1.5rem"><div class="sub-title">Every agent on this case</div>
|
| 81 |
+
<div class="sub-desc">The evaluator's scores for all 14 agents on the selected case. Click a row to open that agent's scene.</div><div class="board-wrap" id="ctable"></div></div>
|
| 82 |
+
</div></section>
|
| 83 |
+
<footer><p>Code4Scene · UC San Diego & UC Berkeley · <a href="https://github.com/SimWorld-AI/Code4Scene" target="_blank" rel="noopener">GitHub</a> ·
|
| 84 |
+
<a href="https://simworld.org/" target="_blank" rel="noopener">SimWorld Home</a></p>
|
| 85 |
+
<p style="margin-top:.5rem;font-size:.75rem;color:rgba(255,255,255,.25)">Part of the SimWorld project.</p></footer>
|
| 86 |
+
<script src="assets/paper.js?v=a4037058"></script><script src="data/site.js?v=0b09af46"></script><script type="module">import * as THREE from "three";
|
| 87 |
+
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
| 88 |
+
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
|
| 89 |
+
import { MeshoptDecoder } from "three/addons/libs/meshopt_decoder.module.js";
|
| 90 |
+
import { Sky } from "three/addons/objects/Sky.js";
|
| 91 |
+
const S = window.SITE, $ = id => document.getElementById(id), f3 = v => (v == null ? "–" : v.toFixed(3));
|
| 92 |
+
const name = k => S.agents[k].name, short = k => name(k).replace(/ \(.*\)/, ""), logo = k => `<span class="logo">${S.logos[S.agents[k].logo] || ""}</span>`;
|
| 93 |
+
let cur = null, agent = null, view = null, three = null;
|
| 94 |
+
|
| 95 |
+
// three.js: one renderer, moved between loads; each GLB's scene is cached. want3d is the url the viewer should show now.
|
| 96 |
+
const glbCache = {}, pending = {};
|
| 97 |
+
let want3d = null, framedFor = null;
|
| 98 |
+
function viewer3d(url, label) {
|
| 99 |
+
const el = $("viewer"); want3d = url; el.innerHTML = '<div class="load">Loading the 3D scene…</div>';
|
| 100 |
+
if (!three) {
|
| 101 |
+
const r = new THREE.WebGLRenderer({ antialias: true }); r.setPixelRatio(Math.min(2, devicePixelRatio)); r.outputColorSpace = THREE.SRGBColorSpace;
|
| 102 |
+
r.toneMapping = THREE.ACESFilmicToneMapping; r.toneMappingExposure = 1.0;
|
| 103 |
+
r.shadowMap.enabled = true; r.shadowMap.type = THREE.PCFSoftShadowMap;
|
| 104 |
+
const cam = new THREE.PerspectiveCamera(45, 16 / 9, .05, 200000), ctl = new OrbitControls(cam, r.domElement);
|
| 105 |
+
ctl.enableDamping = true; ctl.autoRotate = true; ctl.autoRotateSpeed = .6;
|
| 106 |
+
ctl.addEventListener("start", () => { ctl.autoRotate = false; });
|
| 107 |
+
// daylight for every scene: a physical sky, prefiltered once into an environment map (image-based light and background)
|
| 108 |
+
const SUN = new THREE.Vector3().setFromSphericalCoords(1, THREE.MathUtils.degToRad(90 - 38), THREE.MathUtils.degToRad(215));
|
| 109 |
+
const sky = new Sky(); sky.scale.setScalar(1000);
|
| 110 |
+
Object.assign(sky.material.uniforms, {}); sky.material.uniforms.turbidity.value = 4; sky.material.uniforms.rayleigh.value = 1.4;
|
| 111 |
+
sky.material.uniforms.mieCoefficient.value = .004; sky.material.uniforms.mieDirectionalG.value = .8; sky.material.uniforms.sunPosition.value.copy(SUN);
|
| 112 |
+
const skyScene = new THREE.Scene(); skyScene.add(sky);
|
| 113 |
+
const env = new THREE.PMREMGenerator(r).fromScene(skyScene, 0, .1, 2000).texture;
|
| 114 |
+
three = { r, cam, ctl, scene: null, env, SUN };
|
| 115 |
+
const loop = () => { requestAnimationFrame(loop); if (three.scene && r.domElement.isConnected) { ctl.update(); r.render(three.scene, cam); } }; loop();
|
| 116 |
+
new ResizeObserver(() => { const w = el.clientWidth, h = el.clientHeight; if (!w) return; r.setSize(w, h, false); cam.aspect = w / h; cam.updateProjectionMatrix(); }).observe(el);
|
| 117 |
+
}
|
| 118 |
+
const show = sc => {
|
| 119 |
+
if (want3d !== url || !(view || "").startsWith("3d")) return;
|
| 120 |
+
el.innerHTML = ""; el.appendChild(three.r.domElement); three.r.domElement.style.width = "100%"; three.r.domElement.style.height = "100%";
|
| 121 |
+
three.r.setSize(el.clientWidth, el.clientHeight, false); three.cam.aspect = el.clientWidth / el.clientHeight;
|
| 122 |
+
three.scene = sc.scene;
|
| 123 |
+
// Image-to-Scene: the repair, the ground truth and the corrupted input share one map, so the camera stays put between them
|
| 124 |
+
// and the three can be compared from the same place; it starts on the target actors.
|
| 125 |
+
const key = cur.track === "i2s" ? cur.id : url;
|
| 126 |
+
if (framedFor !== key && cur.track === "i2s" && cur.ref_cam) {
|
| 127 |
+
// open where the reference image was taken: its camera, its horizontal field of view
|
| 128 |
+
const rc = cur.ref_cam, asp = el.clientWidth / el.clientHeight;
|
| 129 |
+
three.cam.fov = 2 * Math.atan(Math.tan(rc.hfov * Math.PI / 360) / asp) * 180 / Math.PI;
|
| 130 |
+
three.cam.near = .05; three.cam.far = sc.box.getSize(new THREE.Vector3()).length() * 12 + 1000;
|
| 131 |
+
three.cam.position.set(...rc.pos); three.ctl.target.set(...rc.target); three.ctl.autoRotate = false; framedFor = key;
|
| 132 |
+
} else if (framedFor !== key) {
|
| 133 |
+
three.cam.fov = 45;
|
| 134 |
+
const f = sc.focus || sc.box, c = f.getCenter(new THREE.Vector3());
|
| 135 |
+
const s = sc.focus ? Math.max(9, f.getSize(new THREE.Vector3()).length() * 3.2) : sc.box.getSize(new THREE.Vector3()).length() * 1.2;
|
| 136 |
+
three.cam.near = s / 800; three.cam.far = Math.max(s, sc.box.getSize(new THREE.Vector3()).length()) * 12;
|
| 137 |
+
three.cam.position.copy(c).add(new THREE.Vector3(-.45, .62, .64).normalize().multiplyScalar(s));
|
| 138 |
+
three.ctl.target.copy(c); three.ctl.autoRotate = !sc.focus; framedFor = key;
|
| 139 |
+
}
|
| 140 |
+
three.cam.updateProjectionMatrix(); three.ctl.update();
|
| 141 |
+
const legend = sc.marks ? ' · <b style="color:#5ee08a">green</b> target · <b style="color:#ff6b5e">red</b> duplicate to delete' : "";
|
| 142 |
+
el.insertAdjacentHTML("beforeend", `<div class="hint">3D · ${label}${legend} · drag, scroll, right-drag</div>`);
|
| 143 |
+
};
|
| 144 |
+
if (glbCache[url]) return show(glbCache[url]);
|
| 145 |
+
if (pending[url]) return;
|
| 146 |
+
pending[url] = true;
|
| 147 |
+
const targets = cur.track === "i2s" ? (cur.targets || []) : [], dups = cur.track === "i2s" ? (cur.duplicates || []) : [];
|
| 148 |
+
const onLoad = g => {
|
| 149 |
+
const sc = new THREE.Scene(); sc.background = three.env; sc.environment = three.env; sc.environmentIntensity = .8;
|
| 150 |
+
sc.add(g.scene);
|
| 151 |
+
// UE's specular (KHR_materials_specular up to ~2) makes sky-lit surfaces read as white; keep it at most glTF's default
|
| 152 |
+
g.scene.traverse(o => { if (!o.isMesh) return; o.castShadow = o.receiveShadow = true;
|
| 153 |
+
for (const m of [].concat(o.material)) if (m && m.specularIntensity !== undefined) m.specularIntensity = Math.min(m.specularIntensity, .5); });
|
| 154 |
+
// the box of the scene's bulk, not of a stray far-away actor (sky spheres, fog volumes)
|
| 155 |
+
const box = new THREE.Box3(), pts = [];
|
| 156 |
+
g.scene.traverse(o => { if (o.isMesh) { const b = new THREE.Box3().setFromObject(o); if (!b.isEmpty()) pts.push(b); } });
|
| 157 |
+
const q = (arr, t) => arr.slice().sort((a, b) => a - b)[Math.floor(t * (arr.length - 1))];
|
| 158 |
+
if (pts.length > 8) {
|
| 159 |
+
const cx = pts.map(b => (b.min.x + b.max.x) / 2), cy = pts.map(b => (b.min.y + b.max.y) / 2), cz = pts.map(b => (b.min.z + b.max.z) / 2);
|
| 160 |
+
box.set(new THREE.Vector3(q(cx, .03), q(cy, .03), q(cz, .03)), new THREE.Vector3(q(cx, .97), q(cy, .97), q(cz, .97)));
|
| 161 |
+
} else box.setFromObject(g.scene);
|
| 162 |
+
// the actors the task is about, boxed: the target (green) and the duplicate the corruption added (red, should be gone)
|
| 163 |
+
let focus = null, marks = 0;
|
| 164 |
+
if (targets.length) {
|
| 165 |
+
g.scene.updateMatrixWorld(true);
|
| 166 |
+
g.scene.traverse(o => {
|
| 167 |
+
const dup = dups.includes(o.name);
|
| 168 |
+
if (!dup && !targets.includes(o.name)) return;
|
| 169 |
+
const b = new THREE.Box3().setFromObject(o); if (b.isEmpty()) return;
|
| 170 |
+
// drawn over everything, so a box behind a tree or a fence still shows where the actor is
|
| 171 |
+
const h = new THREE.Box3Helper(b.clone().expandByScalar(.08), dup ? 0xff6b5e : 0x5ee08a);
|
| 172 |
+
h.material.depthTest = false; h.material.transparent = true; h.renderOrder = 999; sc.add(h); marks++;
|
| 173 |
+
if (!dup) focus = focus ? focus.union(b) : b.clone();
|
| 174 |
+
else if (!focus) focus = b.clone();
|
| 175 |
+
});
|
| 176 |
+
}
|
| 177 |
+
const ctr = box.getCenter(new THREE.Vector3()), rad = Math.max(8, box.getSize(new THREE.Vector3()).length() / 2);
|
| 178 |
+
const sun = new THREE.DirectionalLight(0xfff1dc, 3.2); sun.position.copy(ctr).addScaledVector(three.SUN, rad * 2); sun.target.position.copy(ctr);
|
| 179 |
+
sun.castShadow = true; sun.shadow.mapSize.set(4096, 4096); sun.shadow.bias = -.0004; sun.shadow.normalBias = .02;
|
| 180 |
+
Object.assign(sun.shadow.camera, { left: -rad, right: rad, top: rad, bottom: -rad, near: rad * .5, far: rad * 4 }); sun.shadow.camera.updateProjectionMatrix();
|
| 181 |
+
sc.add(sun, sun.target);
|
| 182 |
+
glbCache[url] = { scene: sc, box, focus, marks }; delete pending[url]; show(glbCache[url]);
|
| 183 |
+
};
|
| 184 |
+
const fail = () => { delete pending[url]; if (want3d === url) el.innerHTML = '<div class="load">Could not load the 3D scene.</div>'; };
|
| 185 |
+
const progress = f => { const l = el.querySelector(".load"); if (l && want3d === url) l.textContent = `Loading the 3D scene… ${Math.round(f * 100)}%`; };
|
| 186 |
+
fetchPacked(url, progress).then(buf => new GLTFLoader().setMeshoptDecoder(MeshoptDecoder).parse(buf, "", onLoad, fail)).catch(fail);
|
| 187 |
+
}
|
| 188 |
+
// The served scenes are packed (pack_models.py): the GLB XORed against this keystream, so a saved file is not a usable model.
|
| 189 |
+
const KEY = Uint8Array.from("5c2f9e71d3a84b06e1f7c29a38d05b64a7193ce8f2046db95e81c73a2df6904b".match(/../g), h => parseInt(h, 16));
|
| 190 |
+
function unpack(a) { for (let i = 0; i < a.length; i++) a[i] ^= KEY[i & 31] ^ (((i >>> 5) * 131) & 255); return a.buffer; }
|
| 191 |
+
async function fetchPacked(url, progress) {
|
| 192 |
+
const r = await fetch(url); if (!r.ok) throw new Error(r.status);
|
| 193 |
+
const total = +r.headers.get("content-length") || 0, reader = r.body.getReader(), parts = []; let got = 0;
|
| 194 |
+
for (;;) { const { done, value } = await reader.read(); if (done) break; parts.push(value); got += value.length; if (total) progress(got / total); }
|
| 195 |
+
const a = new Uint8Array(got); let o = 0; for (const p of parts) { a.set(p, o); o += p.length; }
|
| 196 |
+
return unpack(a);
|
| 197 |
+
}
|
| 198 |
+
function showImage(src, hint) { $("viewer").innerHTML = src ? `<img src="${src}" alt=""><div class="hint">${hint}</div>` : '<div class="load">This run saved no render.</div>'; }
|
| 199 |
+
|
| 200 |
+
function drawViewer() {
|
| 201 |
+
const a = agent, tabs = [];
|
| 202 |
+
want3d = null;
|
| 203 |
+
if (a.glb) tabs.push(["3d", cur.track === "t2s" ? "3D scene" : "3D · repair"]);
|
| 204 |
+
if (cur.track === "i2s") { if (cur.gt_glb) tabs.push(["3dgt", "3D · ground truth"]); if (cur.input_glb) tabs.push(["3din", "3D · corrupted input"]); }
|
| 205 |
+
if (cur.track === "t2s") {
|
| 206 |
+
a.views.forEach((v, i) => tabs.push(["v" + i, `Judge view ${i + 1}`]));
|
| 207 |
+
if (!a.views.length && a.img) tabs.push(["img", "Judge view"]);
|
| 208 |
+
if (a.judge) tabs.push(["judge", "Judge's evidence"]);
|
| 209 |
+
} else {
|
| 210 |
+
tabs.push(["res", "Repair, target view"]); if (cur.gt) tabs.push(["gt", "Ground truth"]); if (cur.input) tabs.push(["in", "Corrupted input"]);
|
| 211 |
+
cur.refs.forEach((r, i) => tabs.push(["ref" + i, `Reference ${i + 1}`]));
|
| 212 |
+
}
|
| 213 |
+
if (!tabs.find(t => t[0] === view)) view = tabs.length ? tabs[0][0] : null;
|
| 214 |
+
$("vtabs").innerHTML = tabs.map(([k, l]) => `<button data-v="${k}" class="${k === view ? "on" : ""}">${l}</button>`).join("");
|
| 215 |
+
$("vtabs").querySelectorAll("button").forEach(b => b.onclick = () => { view = b.dataset.v; drawViewer(); });
|
| 216 |
+
if (view === "3d") return viewer3d(a.glb, cur.track === "t2s" ? `${short(a.key)}'s saved scene` : `${short(a.key)}'s repair, from the reference camera`);
|
| 217 |
+
if (view === "3dgt") return viewer3d(cur.gt_glb, "ground truth");
|
| 218 |
+
if (view === "3din") return viewer3d(cur.input_glb, "corrupted input");
|
| 219 |
+
if (!view) return showImage(null);
|
| 220 |
+
if (/^v\d/.test(view)) return showImage(a.views[+view.slice(1)], "One of the four overview views the judge scores (Overview Alignment)");
|
| 221 |
+
if (view === "img") return showImage(a.img, "The judge's overview view");
|
| 222 |
+
if (view === "judge") return showImage(a.judge, "The judge's own evidence frame for one requirement");
|
| 223 |
+
if (view === "res") return showImage(a.img, "The agent's repaired scene, rendered from the target view");
|
| 224 |
+
if (view === "gt") return showImage(cur.gt, "The withheld ground truth, same view");
|
| 225 |
+
if (view === "in") return showImage(cur.input, "The corrupted scene the agent starts from");
|
| 226 |
+
if (view.startsWith("ref")) return showImage(cur.refs[+view.slice(3)], "A reference image given to the agent");
|
| 227 |
+
}
|
| 228 |
+
const bar = (label, v, w) => `<div class="sc-row"><span>${label}${w ? ` <span class="w">× ${w}</span>` : ""}</span><div class="tr"><div class="fi" style="width:${((v || 0) * 100).toFixed(1)}%"></div></div><span class="v">${f3(v)}</span></div>`;
|
| 229 |
+
function drawSide() {
|
| 230 |
+
const a = agent, rank = cur.agents.indexOf(a) + 1;
|
| 231 |
+
let h = `<div class="panel"><h4>${logo(a.key)} ${name(a.key)}</h4><p class="rk">Rank ${rank} of ${cur.agents.length} on this case</p>
|
| 232 |
+
<div class="sc-big">${f3(a.s)}</div><p class="rk" style="margin-top:-4px">case score</p>`;
|
| 233 |
+
if (cur.track === "t2s") h += bar("Detailed Alignment", a.detailed) + bar("Overview Alignment", a.overview) + bar("Physical Safety", a.phys)
|
| 234 |
+
+ `<div class="formula">0.2 × ${f3(a.detailed)} + 0.6 × ${f3(a.overview)} + 0.2 × ${f3(a.phys)} = ${f3(.2 * a.detailed + .6 * a.overview + .2 * a.phys)}</div>`;
|
| 235 |
+
else h += bar("Repair F1", a.f1) + bar("Physical Safety", a.phys)
|
| 236 |
+
+ `<div class="formula">Target actors: ${a.tp} recovered · ${a.fp} wrong or extra · ${a.fn} missed.<br>0.8 × ${f3(a.f1)} + 0.2 × ${f3(a.phys)} = ${f3(.8 * a.f1 + .2 * a.phys)}</div>`;
|
| 237 |
+
h += `</div>`;
|
| 238 |
+
if (a.findings) h += `<div class="panel"><h4>What the evaluator found</h4>${a.findings.map(([k, t]) => `<div class="find ${k}"><span class="m">${k === "match" ? "✓" : k === "mismatch" ? "✗" : "!"}</span><span>${t}</span></div>`).join("")}</div>`;
|
| 239 |
+
if (cur.track === "i2s" && cur.corruption && cur.corruption.length) {
|
| 240 |
+
const m = v => Math.hypot(v[0], v[1]) / 100;
|
| 241 |
+
const say = o => o.type === "duplication" ? `added a copy of <code>${o.label}</code>, ${m(o.delta_cm).toFixed(1)} m away (it should be deleted)`
|
| 242 |
+
: o.type === "translation" ? `moved <code>${o.label}</code> ${m(o.delta_cm).toFixed(1)} m`
|
| 243 |
+
: o.type === "rotation" ? `turned <code>${o.label}</code> ${Math.abs(o.yaw_deg)}°`
|
| 244 |
+
: o.type === "scaling" ? `rescaled <code>${o.label}</code> (${[].concat(o.factor).map(x => "×" + x).join(", ")})` : `${o.type} on <code>${o.label}</code>`;
|
| 245 |
+
h += `<div class="panel"><h4>What the corruption did</h4>${cur.corruption.map(o => `<div class="find mismatch"><span class="m">·</span><span>${say(o)}</span></div>`).join("")}
|
| 246 |
+
<p class="rk" style="margin-top:8px">The agent sees only the corrupted scene and the reference image. Repair F1 counts the target actors it restores to the ground truth; changes to anything else count against it.</p></div>`;
|
| 247 |
+
}
|
| 248 |
+
h += `<div class="panel"><h4>${cur.track === "t2s" ? "Prompt" : "Task"}</h4><div class="prompt">${cur.prompt}</div></div>`;
|
| 249 |
+
$("side").innerHTML = h;
|
| 250 |
+
}
|
| 251 |
+
function drawAgents() {
|
| 252 |
+
$("agents").innerHTML = cur.agents.map((a, i) => `<button class="ag ${a === agent ? "on" : ""}" data-i="${i}" title="${name(a.key)}"><div class="th" style="background-image:url('${a.img || ""}')">${a.glb ? "<i>3D</i>" : ""}</div>
|
| 253 |
+
<div class="cap"><b>${f3(a.s)}</b><br>${short(a.key)}</div></button>`).join("");
|
| 254 |
+
$("agents").querySelectorAll(".ag").forEach(el => el.onclick = () => select(cur.agents[+el.dataset.i]));
|
| 255 |
+
}
|
| 256 |
+
// every agent on this case, as the evaluator scored it
|
| 257 |
+
function drawTable() {
|
| 258 |
+
const t2s = cur.track === "t2s";
|
| 259 |
+
const cols = t2s ? [["s", "Case score"], ["detailed", "Detailed"], ["overview", "Overview"], ["phys", "Physical"]] : [["s", "Case score"], ["f1", "Repair F1"], ["phys", "Physical"]];
|
| 260 |
+
const head = `<tr><th>#</th><th>Agent</th>${cols.map(([, l]) => `<th>${l}</th>`).join("")}${t2s ? "" : "<th>Recovered · wrong · missed</th>"}<th>3D</th></tr>`;
|
| 261 |
+
const body = cur.agents.map((a, i) => `<tr class="${a === agent ? "on" : ""}" data-i="${i}"><td class="n">${i + 1}</td><td class="nm">${logo(a.key)} ${name(a.key)}</td>`
|
| 262 |
+
+ cols.map(([k], j) => j === 0 ? `<td><div class="cellbar"><div style="width:${(a[k] * 100).toFixed(1)}%"></div><b>${f3(a[k])}</b></div></td>` : `<td>${f3(a[k])}</td>`).join("")
|
| 263 |
+
+ (t2s ? "" : `<td>${a.tp} · ${a.fp} · ${a.fn}</td>`) + `<td>${a.glb ? "●" : ""}</td></tr>`).join("");
|
| 264 |
+
$("ctable").innerHTML = `<table class="cs">${head}${body}</table>`;
|
| 265 |
+
$("ctable").querySelectorAll("tr[data-i]").forEach(el => el.onclick = () => { select(cur.agents[+el.dataset.i]); $("viewer").scrollIntoView({ behavior: "smooth", block: "center" }); });
|
| 266 |
+
}
|
| 267 |
+
function select(a) { agent = a; if (!a.glb && view === "3d") view = null; drawAgents(); drawViewer(); drawSide(); drawTable(); }
|
| 268 |
+
function pick(id) {
|
| 269 |
+
cur = S.cases.find(c => c.id === id); view = null;
|
| 270 |
+
$("ctitle").textContent = cur.title; $("ctrack").textContent = cur.track === "t2s" ? "Text-to-Scene · construction" : "Image-to-Scene · editing";
|
| 271 |
+
$("cnote").textContent = cur.note;
|
| 272 |
+
document.querySelectorAll("#casebar button").forEach(b => b.classList.toggle("on", b.dataset.id === id));
|
| 273 |
+
history.replaceState(null, "", `#${id}`);
|
| 274 |
+
select(cur.agents.find(a => a.glb) || cur.agents[0]);
|
| 275 |
+
}
|
| 276 |
+
// one row per setting: its name, then its cases; each case says how many of its scenes open in 3D
|
| 277 |
+
const btn = c => { const n = c.agents.filter(a => a.glb).length + (c.gt_glb ? 1 : 0) + (c.input_glb ? 1 : 0);
|
| 278 |
+
return `<button data-id="${c.id}"><span>${c.title}</span><small>${n} scenes</small></button>`; };
|
| 279 |
+
const row = (track, name, kind) => `<div class="cb-row"><div class="grp"><b>${name}</b><span>${kind}</span></div><div class="cb-btns">`
|
| 280 |
+
+ S.cases.filter(c => c.track === track).map(btn).join("") + `</div></div>`;
|
| 281 |
+
$("casebar").innerHTML = row("t2s", "Text-to-Scene", "construction") + row("i2s", "Image-to-Scene", "editing");
|
| 282 |
+
$("casebar").querySelectorAll("button").forEach(b => b.onclick = () => pick(b.dataset.id));
|
| 283 |
+
const h = location.hash.slice(1);
|
| 284 |
+
pick(S.cases.find(c => c.id === h) ? h : S.cases[0].id);
|
| 285 |
+
addEventListener("hashchange", () => { const id = location.hash.slice(1); if (S.cases.find(c => c.id === id) && (!cur || cur.id !== id)) pick(id); });
|
| 286 |
+
</script>
|
| 287 |
+
</body></html>
|
data/site.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
window.SITE = {"github": "https://github.com/SimWorld-AI/Code4Scene", "agents": {"astra": {"name": "GPT-6 Astra (max)", "logo": "openai"}, "gemini": {"name": "Gemini 3.8 Flash (high)", "logo": "gemini"}, "fable": {"name": "Claude Fable 5.1 (max)", "logo": "claude"}, "opus": {"name": "Claude Opus 5 (max)", "logo": "claude"}, "sol": {"name": "GPT-5.6 Sol (high)", "logo": "openai"}, "muse": {"name": "Muse Spark 1.3 (medium)", "logo": "meta"}, "glm": {"name": "GLM-5.3 Flash (max)", "logo": "zai"}, "qwen-off": {"name": "Qwen 3.8 27B (thinking off)", "logo": "qwen"}, "grok": {"name": "Grok 4.6 (high)", "logo": "grok"}, "qwen-on": {"name": "Qwen 3.8 27B (thinking on)", "logo": "qwen"}, "inkling": {"name": "Inkling (high)", "logo": "thinkingmachines"}, "gemma-on": {"name": "Gemma 4 31B (thinking on)", "logo": "gemini"}, "gemma-off": {"name": "Gemma 4 31B (thinking off)", "logo": "gemini"}, "deepseek": {"name": "DeepSeek V4.1 Flash (high)", "logo": "deepseek"}}, "board": [{"key": "astra", "name": "GPT-6 Astra (max)", "logo": "openai", "open": false, "overall": 0.6193352866666667, "t2s": 0.72382, "i2s": 0.5148505733333334, "indoor": 0.78546656, "outdoor": 0.37954258}, {"key": "gemini", "name": "Gemini 3.8 Flash (high)", "logo": "gemini", "open": false, "overall": 0.6189750266666667, "t2s": 0.65689, "i2s": 0.5810600533333334, "indoor": 0.71653332, "outdoor": 0.5133234200000001}, {"key": "fable", "name": "Claude Fable 5.1 (max)", "logo": "claude", "open": false, "overall": 0.60604898, "t2s": 0.78775, "i2s": 0.4243479600000001, "indoor": 0.53523332, "outdoor": 0.36890528000000006}, {"key": "opus", "name": "Claude Opus 5 (max)", "logo": "claude", "open": false, "overall": 0.5931299933333334, "t2s": 0.7181599999999999, "i2s": 0.46809998666666675, "indoor": 0.61843384, "outdoor": 0.39293306}, {"key": "sol", "name": "GPT-5.6 Sol (high)", "logo": "openai", "open": false, "overall": 0.5499994666666667, "t2s": 0.70704, "i2s": 0.3929589333333333, "indoor": 0.49742972, "outdoor": 0.34072354}, {"key": "muse", "name": "Muse Spark 1.3 (medium)", "logo": "meta", "open": false, "overall": 0.5022053666666666, "t2s": 0.646195, "i2s": 0.35821573333333334, "indoor": 0.63253332, "outdoor": 0.22105694}, {"key": "glm", "name": "GLM-5.3 Flash (max)", "logo": "zai", "open": true, "overall": 0.4147088666666666, "t2s": 0.5094299999999999, "i2s": 0.3199877333333333, "indoor": 0.46533411999999996, "outdoor": 0.24731454}, {"key": "qwen-off", "name": "Qwen 3.8 27B (thinking off)", "logo": "qwen", "open": true, "overall": 0.37818169333333335, "t2s": 0.55666, "i2s": 0.19970338666666668, "indoor": 0.26629816, "outdoor": 0.166406}, {"key": "grok", "name": "Grok 4.6 (high)", "logo": "grok", "open": false, "overall": 0.37567506, "t2s": 0.56721, "i2s": 0.18414012, "indoor": 0.1968008, "outdoor": 0.17780978}, {"key": "qwen-on", "name": "Qwen 3.8 27B (thinking on)", "logo": "qwen", "open": true, "overall": 0.37094399333333333, "t2s": 0.51571, "i2s": 0.2261779866666667, "indoor": 0.29651112, "outdoor": 0.19101142}, {"key": "inkling", "name": "Inkling (high)", "logo": "thinkingmachines", "open": false, "overall": 0.31150237333333336, "t2s": 0.42498500000000006, "i2s": 0.19801974666666666, "indoor": 0.1690288, "outdoor": 0.21251522}, {"key": "gemma-on", "name": "Gemma 4 31B (thinking on)", "logo": "gemini", "open": true, "overall": 0.29812257999999997, "t2s": 0.470705, "i2s": 0.12554015999999998, "indoor": 0.12704028, "outdoor": 0.1247901}, {"key": "gemma-off", "name": "Gemma 4 31B (thinking off)", "logo": "gemini", "open": true, "overall": 0.28498897333333334, "t2s": 0.45494, "i2s": 0.11503794666666667, "indoor": 0.11239600000000001, "outdoor": 0.11635892}, {"key": "deepseek", "name": "DeepSeek V4.1 Flash (high)", "logo": "deepseek", "open": true, "overall": 0.22658958, "t2s": 0.24269, "i2s": 0.21048916, "indoor": 0.18933412, "outdoor": 0.22106668}], "cases": [{"id": "nordic-harbour", "track": "t2s", "title": "Nordic Harbour", "note": "Paper Figure 7.", "prompt": "Build me a compact, sunlit Copenhagen-style canal district with narrow cobblestone streets and rectangular waterways enclosing dense urban blocks. Arrange roughly thirty attached four- to six-storey townhouses in continuous street and canal-front rows, using slender fa\u00e7ades, repetitive white-framed windows, arched doors and carriage entrances, modest cornices, and steep tiled roofs packed with dormers and brick chimneys. Include occasional exposed party walls between staggered building rows. Finish the fa\u00e7ades in weathered muted red, mustard yellow, dusty blue, warm grey, beige, and exposed brick, with red, orange, and charcoal roof tiles. Run a principal waterfront street along a stone quay, crossed by smaller streets and linked across the canals by short, gently arched stone-and-metal bridges, including one opening onto a broad paved promenade with rounded landings. Form the canal edges from stepped pale stone, dark timber retaining walls, and iron railings around reflective rippling water. Add regularly spaced leafy trees, ornate black lamps, stone bollards, benches, European road signs, zebra crossings, puddles, grime, and sparse weeds.", "agents": [{"key": "astra", "s": 0.8772, "detailed": 0.7572, "overview": 0.9095, "phys": 0.9005, "img": "media/t2s/nordic-harbour/astra.jpg?v=1790542380", "views": ["media/t2s/nordic-harbour/astra-v0.jpg?v=1790542380", "media/t2s/nordic-harbour/astra-v1.jpg?v=1790542380", "media/t2s/nordic-harbour/astra-v2.jpg?v=1790542380", "media/t2s/nordic-harbour/astra-v3.jpg?v=1790542380"], "glb": "models/cc1bdce0533a50e81385.bin?v=1790737099", "findings": null, "judge": null}, {"key": "fable", "s": 0.8654, "detailed": 0.6656, "overview": 0.8937, "phys": 0.9802, "img": "media/t2s/nordic-harbour/fable.jpg?v=1790542381", "views": ["media/t2s/nordic-harbour/fable-v0.jpg?v=1790542381", "media/t2s/nordic-harbour/fable-v1.jpg?v=1790542381", "media/t2s/nordic-harbour/fable-v2.jpg?v=1790542381", "media/t2s/nordic-harbour/fable-v3.jpg?v=1790542381"], "glb": "models/305d6884b1cc4c9048df.bin?v=1790737100", "findings": [["match", "rectangular waterways"], ["mismatch", "gently arched stone-and-metal bridges"], ["physics", "a floating traffic light"], ["physics", "a stop sign inside a building (31.6 cm)"], ["physics", "a lamp post through a bin (37.6 cm)"]], "judge": null}, {"key": "opus", "s": 0.8614, "detailed": 0.6608, "overview": 0.8883, "phys": 0.9811, "img": "media/t2s/nordic-harbour/opus.jpg?v=1790542380", "views": ["media/t2s/nordic-harbour/opus-v0.jpg?v=1790542380", "media/t2s/nordic-harbour/opus-v1.jpg?v=1790542380", "media/t2s/nordic-harbour/opus-v2.jpg?v=1790542381", "media/t2s/nordic-harbour/opus-v3.jpg?v=1790542381"], "glb": "models/40645cd01253100aee25.bin?v=1790737100", "findings": null, "judge": null}, {"key": "gemini", "s": 0.8275, "detailed": 0.7142, "overview": 0.9011, "phys": 0.7201, "img": "media/t2s/nordic-harbour/gemini.jpg?v=1790542375", "views": ["media/t2s/nordic-harbour/gemini-v0.jpg?v=1790542375", "media/t2s/nordic-harbour/gemini-v1.jpg?v=1790542376", "media/t2s/nordic-harbour/gemini-v2.jpg?v=1790542376", "media/t2s/nordic-harbour/gemini-v3.jpg?v=1790542376"], "glb": "models/4272e0e2ac456adff9d0.bin?v=1790737100", "findings": null, "judge": null}, {"key": "sol", "s": 0.7623, "detailed": 0.7301, "overview": 0.7169, "phys": 0.9308, "img": "media/t2s/nordic-harbour/sol.jpg?v=1790542374", "views": ["media/t2s/nordic-harbour/sol-v0.jpg?v=1790542374", "media/t2s/nordic-harbour/sol-v1.jpg?v=1790542375", "media/t2s/nordic-harbour/sol-v2.jpg?v=1790542375", "media/t2s/nordic-harbour/sol-v3.jpg?v=1790542375"], "glb": "models/05c7f8c668731523df21.bin?v=1790737100", "findings": null, "judge": null}, {"key": "qwen-off", "s": 0.7565, "detailed": 0.6211, "overview": 0.7574, "phys": 0.8891, "img": "media/t2s/nordic-harbour/qwen-off.jpg?v=1790542378", "views": ["media/t2s/nordic-harbour/qwen-off-v0.jpg?v=1790542378", "media/t2s/nordic-harbour/qwen-off-v1.jpg?v=1790542378", "media/t2s/nordic-harbour/qwen-off-v2.jpg?v=1790542378", "media/t2s/nordic-harbour/qwen-off-v3.jpg?v=1790542379"], "glb": "models/4990472fcbccb3f72b1e.bin?v=1790737100", "findings": null, "judge": null}, {"key": "glm", "s": 0.7322, "detailed": 0.5975, "overview": 0.7614, "phys": 0.7792, "img": "media/t2s/nordic-harbour/glm.jpg?v=1790542374", "views": ["media/t2s/nordic-harbour/glm-v0.jpg?v=1790542374", "media/t2s/nordic-harbour/glm-v1.jpg?v=1790542374", "media/t2s/nordic-harbour/glm-v2.jpg?v=1790542374", "media/t2s/nordic-harbour/glm-v3.jpg?v=1790542374"], "glb": "models/d9b8e3eea8340d79590c.bin?v=1790737100", "findings": null, "judge": null}, {"key": "muse", "s": 0.7137, "detailed": 0.5487, "overview": 0.7683, "phys": 0.715, "img": "media/t2s/nordic-harbour/muse.jpg?v=1790542380", "views": ["media/t2s/nordic-harbour/muse-v0.jpg?v=1790542380", "media/t2s/nordic-harbour/muse-v1.jpg?v=1790542380", "media/t2s/nordic-harbour/muse-v2.jpg?v=1790542380", "media/t2s/nordic-harbour/muse-v3.jpg?v=1790542380"], "glb": "models/86b88715dfdfa5370839.bin?v=1790737100", "findings": null, "judge": null}, {"key": "grok", "s": 0.6501, "detailed": 0.4262, "overview": 0.7189, "phys": 0.6677, "img": "media/t2s/nordic-harbour/grok.jpg?v=1790542380", "views": ["media/t2s/nordic-harbour/grok-v0.jpg?v=1790542380", "media/t2s/nordic-harbour/grok-v1.jpg?v=1790542380", "media/t2s/nordic-harbour/grok-v2.jpg?v=1790542380", "media/t2s/nordic-harbour/grok-v3.jpg?v=1790542380"], "glb": "models/863a0e5ea5a4d27e80b8.bin?v=1790737100", "findings": null, "judge": null}, {"key": "gemma-off", "s": 0.5588, "detailed": 0.4798, "overview": 0.474, "phys": 0.8921, "img": "media/t2s/nordic-harbour/gemma-off.jpg?v=1790542376", "views": ["media/t2s/nordic-harbour/gemma-off-v0.jpg?v=1790542376", "media/t2s/nordic-harbour/gemma-off-v1.jpg?v=1790542376", "media/t2s/nordic-harbour/gemma-off-v2.jpg?v=1790542376", "media/t2s/nordic-harbour/gemma-off-v3.jpg?v=1790542376"], "glb": null, "findings": null, "judge": null}, {"key": "inkling", "s": 0.3964, "detailed": 0.0208, "overview": 0.3734, "phys": 0.8409, "img": "media/t2s/nordic-harbour/inkling.jpg?v=1790542378", "views": ["media/t2s/nordic-harbour/inkling-v0.jpg?v=1790542378", "media/t2s/nordic-harbour/inkling-v1.jpg?v=1790542378", "media/t2s/nordic-harbour/inkling-v2.jpg?v=1790542378", "media/t2s/nordic-harbour/inkling-v3.jpg?v=1790542378"], "glb": "models/ab9c9e18691a778f7162.bin?v=1790737100", "findings": null, "judge": null}, {"key": "gemma-on", "s": 0.2962, "detailed": 0.1471, "overview": 0.2779, "phys": 0.5002, "img": "media/t2s/nordic-harbour/gemma-on.jpg?v=1790542377", "views": ["media/t2s/nordic-harbour/gemma-on-v0.jpg?v=1790542377", "media/t2s/nordic-harbour/gemma-on-v1.jpg?v=1790542377", "media/t2s/nordic-harbour/gemma-on-v2.jpg?v=1790542377", "media/t2s/nordic-harbour/gemma-on-v3.jpg?v=1790542378"], "glb": "models/3f48c96f6a8699b40ecd.bin?v=1790737100", "findings": null, "judge": null}, {"key": "qwen-on", "s": 0.2514, "detailed": 0.1397, "overview": 0.2039, "phys": 0.5055, "img": "media/t2s/nordic-harbour/qwen-on.jpg?v=1790542379", "views": ["media/t2s/nordic-harbour/qwen-on-v0.jpg?v=1790542379", "media/t2s/nordic-harbour/qwen-on-v1.jpg?v=1790542379", "media/t2s/nordic-harbour/qwen-on-v2.jpg?v=1790542380", "media/t2s/nordic-harbour/qwen-on-v3.jpg?v=1790542380"], "glb": null, "findings": null, "judge": null}, {"key": "deepseek", "s": 0.0, "detailed": 0.0, "overview": 0.0, "phys": 0.0, "img": "media/t2s/nordic-harbour/deepseek.jpg?v=1790542381", "views": ["media/t2s/nordic-harbour/deepseek-v0.jpg?v=1790542381", "media/t2s/nordic-harbour/deepseek-v1.jpg?v=1790542381", "media/t2s/nordic-harbour/deepseek-v2.jpg?v=1790542381", "media/t2s/nordic-harbour/deepseek-v3.jpg?v=1790542381"], "glb": null, "findings": null, "judge": null}]}, {"id": "medieval-big-farm-town", "track": "t2s", "title": "Medieval Big Farm Town", "note": "Paper Figure 8.", "prompt": "Build me a sprawling medieval farm town set in a rugged, enclosed mountain basin, with a dense fortified settlement occupying the rocky northern half and broad, open farmland spreading southward. Ring the scene with massive irregular gray boulders, steep mossy outcrops, scattered grassy plateaus, and narrow turquoise streams that descend through gaps in the rocks, including several small white waterfalls. Place roughly sixty to eighty compact timber-and-stone buildings inside and around a rectangular walled town: mostly one- and two-story houses with dark wooden framing, pale infill or masonry walls, and steep orange-brown tiled roofs. Arrange them tightly and organically along narrow dirt lanes, small courtyards, canals, and bridges, with taller square gate towers and watchtowers punctuating the long timber-and-stone walls. Outside the walls, transition to a much sparser patchwork of fenced fields, orchards, livestock enclosures, winding dirt tracks, isolated cottages, sheds, tents, carts, stacked materials, and scattered rocks. Distribute several tall wooden windmills across the fields, some attached to heavy stone or timber tower bases, and place additional lookout buildings on remote rocky peaks and grassy ledges. Let streams skirt both sides of the settlement, feed small turquoise pools within the town, and pass beneath simple wooden footbridges. Use uneven grassy ground with worn pale paths, low fences, shrubs, tall grass, and thin, irregularly spaced trees, keeping the town center crowded and layered while the agricultural outskirts remain open, loosely ordered, and visibly bounded by cliffs and boulder formations.", "agents": [{"key": "fable", "s": 0.8298, "detailed": 0.782, "overview": 0.8379, "phys": 0.8535, "img": "media/t2s/medieval-big-farm-town/fable.jpg?v=1790542357", "views": ["media/t2s/medieval-big-farm-town/fable-v0.jpg?v=1790542357", "media/t2s/medieval-big-farm-town/fable-v1.jpg?v=1790542357", "media/t2s/medieval-big-farm-town/fable-v2.jpg?v=1790542357", "media/t2s/medieval-big-farm-town/fable-v3.jpg?v=1790542357"], "glb": "models/cb082e689f15e654daab.bin?v=1790737099", "findings": null, "judge": null}, {"key": "opus", "s": 0.8088, "detailed": 0.6326, "overview": 0.8073, "phys": 0.9896, "img": "media/t2s/medieval-big-farm-town/opus.jpg?v=1790542356", "views": ["media/t2s/medieval-big-farm-town/opus-v0.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/opus-v1.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/opus-v2.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/opus-v3.jpg?v=1790542357"], "glb": "models/beab1fec7afcef0b28fe.bin?v=1790737099", "findings": null, "judge": null}, {"key": "astra", "s": 0.7674, "detailed": 0.7468, "overview": 0.7604, "phys": 0.8092, "img": "media/t2s/medieval-big-farm-town/astra.jpg?v=1790542356", "views": ["media/t2s/medieval-big-farm-town/astra-v0.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/astra-v1.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/astra-v2.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/astra-v3.jpg?v=1790542356"], "glb": "models/9ecb3ffe72ed857bbb9d.bin?v=1790737099", "findings": null, "judge": null}, {"key": "sol", "s": 0.7436, "detailed": 0.6679, "overview": 0.7248, "phys": 0.8756, "img": "media/t2s/medieval-big-farm-town/sol.jpg?v=1790542349", "views": ["media/t2s/medieval-big-farm-town/sol-v0.jpg?v=1790542349", "media/t2s/medieval-big-farm-town/sol-v1.jpg?v=1790542349", "media/t2s/medieval-big-farm-town/sol-v2.jpg?v=1790542349", "media/t2s/medieval-big-farm-town/sol-v3.jpg?v=1790542349"], "glb": "models/b4c592d83ee997c4ada2.bin?v=1790737099", "findings": null, "judge": null}, {"key": "gemini", "s": 0.7294, "detailed": 0.7672, "overview": 0.6971, "phys": 0.7883, "img": "media/t2s/medieval-big-farm-town/gemini.jpg?v=1790542350", "views": ["media/t2s/medieval-big-farm-town/gemini-v0.jpg?v=1790542350", "media/t2s/medieval-big-farm-town/gemini-v1.jpg?v=1790542351", "media/t2s/medieval-big-farm-town/gemini-v2.jpg?v=1790542351", "media/t2s/medieval-big-farm-town/gemini-v3.jpg?v=1790542351"], "glb": null, "findings": null, "judge": null}, {"key": "muse", "s": 0.6821, "detailed": 0.7118, "overview": 0.6679, "phys": 0.695, "img": "media/t2s/medieval-big-farm-town/muse.jpg?v=1790542356", "views": ["media/t2s/medieval-big-farm-town/muse-v0.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/muse-v1.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/muse-v2.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/muse-v3.jpg?v=1790542356"], "glb": null, "findings": null, "judge": null}, {"key": "glm", "s": 0.6094, "detailed": 0.4465, "overview": 0.6468, "phys": 0.6603, "img": "media/t2s/medieval-big-farm-town/glm.jpg?v=1790542349", "views": ["media/t2s/medieval-big-farm-town/glm-v0.jpg?v=1790542349", "media/t2s/medieval-big-farm-town/glm-v1.jpg?v=1790542349", "media/t2s/medieval-big-farm-town/glm-v2.jpg?v=1790542349", "media/t2s/medieval-big-farm-town/glm-v3.jpg?v=1790542349"], "glb": null, "findings": null, "judge": null}, {"key": "qwen-on", "s": 0.4894, "detailed": 0.6827, "overview": 0.3062, "phys": 0.8459, "img": "media/t2s/medieval-big-farm-town/qwen-on.jpg?v=1790542354", "views": ["media/t2s/medieval-big-farm-town/qwen-on-v0.jpg?v=1790542354", "media/t2s/medieval-big-farm-town/qwen-on-v1.jpg?v=1790542354", "media/t2s/medieval-big-farm-town/qwen-on-v2.jpg?v=1790542355", "media/t2s/medieval-big-farm-town/qwen-on-v3.jpg?v=1790542356"], "glb": null, "findings": null, "judge": null}, {"key": "qwen-off", "s": 0.4856, "detailed": 0.5403, "overview": 0.4461, "phys": 0.5495, "img": "media/t2s/medieval-big-farm-town/qwen-off.jpg?v=1790542353", "views": ["media/t2s/medieval-big-farm-town/qwen-off-v0.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/qwen-off-v1.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/qwen-off-v2.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/qwen-off-v3.jpg?v=1790542354"], "glb": null, "findings": null, "judge": null}, {"key": "grok", "s": 0.3872, "detailed": 0.3752, "overview": 0.3407, "phys": 0.5387, "img": "media/t2s/medieval-big-farm-town/grok.jpg?v=1790542356", "views": ["media/t2s/medieval-big-farm-town/grok-v0.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/grok-v1.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/grok-v2.jpg?v=1790542356", "media/t2s/medieval-big-farm-town/grok-v3.jpg?v=1790542356"], "glb": "models/98a6c0f6ea5de03bff84.bin?v=1790737099", "findings": null, "judge": null}, {"key": "gemma-off", "s": 0.3625, "detailed": 0.3388, "overview": 0.2414, "phys": 0.7496, "img": "media/t2s/medieval-big-farm-town/gemma-off.jpg?v=1790542351", "views": ["media/t2s/medieval-big-farm-town/gemma-off-v0.jpg?v=1790542351", "media/t2s/medieval-big-farm-town/gemma-off-v1.jpg?v=1790542351", "media/t2s/medieval-big-farm-town/gemma-off-v2.jpg?v=1790542352", "media/t2s/medieval-big-farm-town/gemma-off-v3.jpg?v=1790542352"], "glb": null, "findings": null, "judge": null}, {"key": "gemma-on", "s": 0.3352, "detailed": 0.2235, "overview": 0.218, "phys": 0.7985, "img": "media/t2s/medieval-big-farm-town/gemma-on.jpg?v=1790542352", "views": ["media/t2s/medieval-big-farm-town/gemma-on-v0.jpg?v=1790542352", "media/t2s/medieval-big-farm-town/gemma-on-v1.jpg?v=1790542352", "media/t2s/medieval-big-farm-town/gemma-on-v2.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/gemma-on-v3.jpg?v=1790542353"], "glb": null, "findings": null, "judge": null}, {"key": "inkling", "s": 0.2882, "detailed": 0.2343, "overview": 0.1945, "phys": 0.623, "img": "media/t2s/medieval-big-farm-town/inkling.jpg?v=1790542353", "views": ["media/t2s/medieval-big-farm-town/inkling-v0.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/inkling-v1.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/inkling-v2.jpg?v=1790542353", "media/t2s/medieval-big-farm-town/inkling-v3.jpg?v=1790542353"], "glb": null, "findings": null, "judge": null}, {"key": "deepseek", "s": 0.2577, "detailed": 0.1419, "overview": 0.0488, "phys": 1.0, "img": "media/t2s/medieval-big-farm-town/deepseek.jpg?v=1790542357", "views": ["media/t2s/medieval-big-farm-town/deepseek-v0.jpg?v=1790542357", "media/t2s/medieval-big-farm-town/deepseek-v1.jpg?v=1790542357", "media/t2s/medieval-big-farm-town/deepseek-v2.jpg?v=1790542357", "media/t2s/medieval-big-farm-town/deepseek-v3.jpg?v=1790542357"], "glb": "models/48fbbd845f575c2007ef.bin?v=1790737099", "findings": null, "judge": null}]}, {"id": "egyptian-temple", "track": "t2s", "title": "Egyptian Temple", "note": "The relation example of Takeaway 2.", "prompt": "Build me a Egyptian temple ruin isolated in a vast, softly rolling orange desert. Place one compact rectangular temple as the dominant structure, its massive pale sandstone walls slightly battered and articulated with shallow projecting sections, engraved panels, faded figures and hieroglyphic bands, thin gold accents, and turquoise, yellow, red, and blue painted friezes. Give it a flat, nearly complete slab roof enclosed by an uneven pale stone coping. Orient the decorated entrance toward an open forecourt: the fa\u00e7ade should have a broad shadowed central opening, several closely spaced papyrus-style columns with colorful flared capitals, shorter square supports, and low painted railings, revealing a dark columned interior and a faintly illuminated passage beyond. Keep the other three elevations mostly solid and monumental, with repeated rectangular relief panels and horizontal ornamental courses. In front and slightly to one side, arrange the remains of a detached colonnade: four tall, slender painted columns set in a loose line beneath two incomplete, offset sandstone lintel beams, leaving obvious gaps and broken continuity. Scatter an irregular trail of cracked paving slabs and small fragments around their bases, partly swallowed by sand.", "agents": [{"key": "opus", "s": 0.7767, "detailed": 0.8268, "overview": 0.7189, "phys": 0.9002, "img": "media/t2s/egyptian-temple/opus.jpg?v=1790542327", "views": ["media/t2s/egyptian-temple/opus-v0.jpg?v=1790542327", "media/t2s/egyptian-temple/opus-v1.jpg?v=1790542327", "media/t2s/egyptian-temple/opus-v2.jpg?v=1790542327", "media/t2s/egyptian-temple/opus-v3.jpg?v=1790542327"], "glb": "models/fa367ea5d33ed24f577a.bin?v=1790737099", "findings": null, "judge": null}, {"key": "fable", "s": 0.7511, "detailed": 0.8623, "overview": 0.6347, "phys": 0.9892, "img": "media/t2s/egyptian-temple/fable.jpg?v=1790542327", "views": ["media/t2s/egyptian-temple/fable-v0.jpg?v=1790542327", "media/t2s/egyptian-temple/fable-v1.jpg?v=1790542327", "media/t2s/egyptian-temple/fable-v2.jpg?v=1790542327", "media/t2s/egyptian-temple/fable-v3.jpg?v=1790542327"], "glb": "models/ebc3784290e5680598df.bin?v=1790737099", "findings": null, "judge": null}, {"key": "deepseek", "s": 0.7262, "detailed": 0.7842, "overview": 0.8048, "phys": 0.4322, "img": "media/t2s/egyptian-temple/deepseek.jpg?v=1790542327", "views": ["media/t2s/egyptian-temple/deepseek-v0.jpg?v=1790542327", "media/t2s/egyptian-temple/deepseek-v1.jpg?v=1790542328", "media/t2s/egyptian-temple/deepseek-v2.jpg?v=1790542328", "media/t2s/egyptian-temple/deepseek-v3.jpg?v=1790542328"], "glb": "models/f60251f57fc8501d7f33.bin?v=1790737099", "findings": null, "judge": null}, {"key": "astra", "s": 0.7191, "detailed": 0.8235, "overview": 0.7902, "phys": 0.4015, "img": "media/t2s/egyptian-temple/astra.jpg?v=1790542327", "views": ["media/t2s/egyptian-temple/astra-v0.jpg?v=1790542327", "media/t2s/egyptian-temple/astra-v1.jpg?v=1790542327", "media/t2s/egyptian-temple/astra-v2.jpg?v=1790542327", "media/t2s/egyptian-temple/astra-v3.jpg?v=1790542327"], "glb": "models/8791504402de356ccfb6.bin?v=1790737099", "findings": null, "judge": null}, {"key": "gemini", "s": 0.7171, "detailed": 0.711, "overview": 0.8214, "phys": 0.4104, "img": "media/t2s/egyptian-temple/gemini.jpg?v=1790542322", "views": ["media/t2s/egyptian-temple/gemini-v0.jpg?v=1790542322", "media/t2s/egyptian-temple/gemini-v1.jpg?v=1790542322", "media/t2s/egyptian-temple/gemini-v2.jpg?v=1790542323", "media/t2s/egyptian-temple/gemini-v3.jpg?v=1790542323"], "glb": null, "findings": null, "judge": null}, {"key": "sol", "s": 0.6972, "detailed": 0.7004, "overview": 0.742, "phys": 0.5595, "img": "media/t2s/egyptian-temple/sol.jpg?v=1790542321", "views": ["media/t2s/egyptian-temple/sol-v0.jpg?v=1790542321", "media/t2s/egyptian-temple/sol-v1.jpg?v=1790542321", "media/t2s/egyptian-temple/sol-v2.jpg?v=1790542322", "media/t2s/egyptian-temple/sol-v3.jpg?v=1790542322"], "glb": "models/a32fa4ebc640e2278635.bin?v=1790737099", "findings": [["match", "slab roof (0.95)"], ["match", "stone coping (0.82)"], ["mismatch", "slab roof enclosed by an uneven pale stone coping (0.78): separate low wall segments with visible gaps"]], "judge": "img/takeaway2_objects_present_example.jpg"}, {"key": "grok", "s": 0.5787, "detailed": 0.5642, "overview": 0.6211, "phys": 0.4658, "img": "media/t2s/egyptian-temple/grok.jpg?v=1790542327", "views": ["media/t2s/egyptian-temple/grok-v0.jpg?v=1790542327", "media/t2s/egyptian-temple/grok-v1.jpg?v=1790542327", "media/t2s/egyptian-temple/grok-v2.jpg?v=1790542327", "media/t2s/egyptian-temple/grok-v3.jpg?v=1790542327"], "glb": "models/751b90ea75f2358e2cf3.bin?v=1790737099", "findings": null, "judge": null}, {"key": "qwen-off", "s": 0.5659, "detailed": 0.6632, "overview": 0.5289, "phys": 0.5794, "img": "media/t2s/egyptian-temple/qwen-off.jpg?v=1790542325", "views": ["media/t2s/egyptian-temple/qwen-off-v0.jpg?v=1790542325", "media/t2s/egyptian-temple/qwen-off-v1.jpg?v=1790542325", "media/t2s/egyptian-temple/qwen-off-v2.jpg?v=1790542326", "media/t2s/egyptian-temple/qwen-off-v3.jpg?v=1790542326"], "glb": null, "findings": null, "judge": null}, {"key": "gemma-on", "s": 0.5563, "detailed": 0.5673, "overview": 0.5086, "phys": 0.6885, "img": "media/t2s/egyptian-temple/gemma-on.jpg?v=1790542325", "views": ["media/t2s/egyptian-temple/gemma-on-v0.jpg?v=1790542325", "media/t2s/egyptian-temple/gemma-on-v1.jpg?v=1790542325", "media/t2s/egyptian-temple/gemma-on-v2.jpg?v=1790542325", "media/t2s/egyptian-temple/gemma-on-v3.jpg?v=1790542325"], "glb": null, "findings": null, "judge": null}, {"key": "inkling", "s": 0.5255, "detailed": 0.6511, "overview": 0.6123, "phys": 0.1397, "img": "media/t2s/egyptian-temple/inkling.jpg?v=1790542325", "views": ["media/t2s/egyptian-temple/inkling-v0.jpg?v=1790542325", "media/t2s/egyptian-temple/inkling-v1.jpg?v=1790542325", "media/t2s/egyptian-temple/inkling-v2.jpg?v=1790542325", "media/t2s/egyptian-temple/inkling-v3.jpg?v=1790542325"], "glb": null, "findings": null, "judge": null}, {"key": "glm", "s": 0.5155, "detailed": 0.0, "overview": 0.6913, "phys": 0.5035, "img": "media/t2s/egyptian-temple/glm.jpg?v=1790542321", "views": ["media/t2s/egyptian-temple/glm-v0.jpg?v=1790542321", "media/t2s/egyptian-temple/glm-v1.jpg?v=1790542321", "media/t2s/egyptian-temple/glm-v2.jpg?v=1790542321", "media/t2s/egyptian-temple/glm-v3.jpg?v=1790542321"], "glb": null, "findings": null, "judge": null}, {"key": "qwen-on", "s": 0.4759, "detailed": 0.6633, "overview": 0.4047, "phys": 0.5023, "img": "media/t2s/egyptian-temple/qwen-on.jpg?v=1790542326", "views": ["media/t2s/egyptian-temple/qwen-on-v0.jpg?v=1790542326", "media/t2s/egyptian-temple/qwen-on-v1.jpg?v=1790542326", "media/t2s/egyptian-temple/qwen-on-v2.jpg?v=1790542326", "media/t2s/egyptian-temple/qwen-on-v3.jpg?v=1790542327"], "glb": null, "findings": null, "judge": null}, {"key": "muse", "s": 0.4715, "detailed": 0.6242, "overview": 0.5387, "phys": 0.1173, "img": "media/t2s/egyptian-temple/muse.jpg?v=1790542327", "views": ["media/t2s/egyptian-temple/muse-v0.jpg?v=1790542327", "media/t2s/egyptian-temple/muse-v1.jpg?v=1790542327", "media/t2s/egyptian-temple/muse-v2.jpg?v=1790542327", "media/t2s/egyptian-temple/muse-v3.jpg?v=1790542327"], "glb": null, "findings": null, "judge": null}, {"key": "gemma-off", "s": 0.3076, "detailed": 0.274, "overview": 0.2584, "phys": 0.4888, "img": "media/t2s/egyptian-temple/gemma-off.jpg?v=1790542323", "views": ["media/t2s/egyptian-temple/gemma-off-v0.jpg?v=1790542323", "media/t2s/egyptian-temple/gemma-off-v1.jpg?v=1790542324", "media/t2s/egyptian-temple/gemma-off-v2.jpg?v=1790542324", "media/t2s/egyptian-temple/gemma-off-v3.jpg?v=1790542324"], "glb": null, "findings": null, "judge": null}]}, {"id": "bazaar", "track": "t2s", "title": "Bazaar", "note": "Paper Figure 11.", "prompt": "Build me a monumental, fortress-like stone bazaar or palace complex with a stark, dramatic mood, rendered against a black empty background. Enclose the scene with a broad irregular ring of very tall pale sandstone walls, regularly reinforced by square crenellated towers and occasional massive gate-like openings. Inside, cluster roughly a dozen flat-roofed, blocky buildings tightly around narrow passages, small courtyards, terraces, and a compact market area with scattered colorful awnings and stalls. Place a large square domed pavilion slightly apart from the central cluster, linked by elevated platforms and broad paved walkways. Add several slender cylindrical minaret-like towers capped with bright gold onion domes, concentrated around the inner buildings and along the enclosing walls, plus arcaded balconies, parapets, stairways, and smaller rooftop domes. Use pale tiled or stone ground for the few open plazas, while leaving large gaps between structures as featureless black voids. Keep the core dense, layered, and irregular, but surround it with comparatively sparse open space and an ordered defensive perimeter.", "agents": [{"key": "fable", "s": 0.9296, "detailed": 0.924, "overview": 0.9085, "phys": 0.9987, "img": "media/t2s/bazaar/fable.jpg?v=1790542281", "views": ["media/t2s/bazaar/fable-v0.jpg?v=1790542281", "media/t2s/bazaar/fable-v1.jpg?v=1790542281", "media/t2s/bazaar/fable-v2.jpg?v=1790542281", "media/t2s/bazaar/fable-v3.jpg?v=1790542281"], "glb": "models/feb923d4f4f257315904.bin?v=1790737098", "findings": null, "judge": null}, {"key": "astra", "s": 0.8828, "detailed": 0.875, "overview": 0.9011, "phys": 0.8355, "img": "media/t2s/bazaar/astra.jpg?v=1790542280", "views": ["media/t2s/bazaar/astra-v0.jpg?v=1790542280", "media/t2s/bazaar/astra-v1.jpg?v=1790542280", "media/t2s/bazaar/astra-v2.jpg?v=1790542280", "media/t2s/bazaar/astra-v3.jpg?v=1790542280"], "glb": "models/d46f4510a1aa3ef0aa0f.bin?v=1790737098", "findings": null, "judge": null}, {"key": "opus", "s": 0.8265, "detailed": 0.8207, "overview": 0.8418, "phys": 0.7862, "img": "media/t2s/bazaar/opus.jpg?v=1790542280", "views": ["media/t2s/bazaar/opus-v0.jpg?v=1790542280", "media/t2s/bazaar/opus-v1.jpg?v=1790542281", "media/t2s/bazaar/opus-v2.jpg?v=1790542281", "media/t2s/bazaar/opus-v3.jpg?v=1790542281"], "glb": "models/de5c5bbccf5da7d1844f.bin?v=1790737098", "findings": null, "judge": null}, {"key": "gemma-off", "s": 0.7069, "detailed": 0.5037, "overview": 0.7505, "phys": 0.7793, "img": "media/t2s/bazaar/gemma-off.jpg?v=1790542276", "views": ["media/t2s/bazaar/gemma-off-v0.jpg?v=1790542276", "media/t2s/bazaar/gemma-off-v1.jpg?v=1790542276", "media/t2s/bazaar/gemma-off-v2.jpg?v=1790542276", "media/t2s/bazaar/gemma-off-v3.jpg?v=1790542276"], "glb": null, "findings": null, "judge": null}, {"key": "sol", "s": 0.6989, "detailed": 0.5753, "overview": 0.7878, "phys": 0.5559, "img": "media/t2s/bazaar/sol.jpg?v=1790542273", "views": ["media/t2s/bazaar/sol-v0.jpg?v=1790542273", "media/t2s/bazaar/sol-v1.jpg?v=1790542274", "media/t2s/bazaar/sol-v2.jpg?v=1790542274", "media/t2s/bazaar/sol-v3.jpg?v=1790542274"], "glb": "models/8508848ab12a018c6c5c.bin?v=1790737098", "findings": null, "judge": null}, {"key": "gemini", "s": 0.6397, "detailed": 0.573, "overview": 0.6962, "phys": 0.537, "img": "media/t2s/bazaar/gemini.jpg?v=1790542274", "views": ["media/t2s/bazaar/gemini-v0.jpg?v=1790542274", "media/t2s/bazaar/gemini-v1.jpg?v=1790542274", "media/t2s/bazaar/gemini-v2.jpg?v=1790542275", "media/t2s/bazaar/gemini-v3.jpg?v=1790542275"], "glb": null, "findings": null, "judge": null}, {"key": "grok", "s": 0.6174, "detailed": 0.4203, "overview": 0.74, "phys": 0.4466, "img": "media/t2s/bazaar/grok.jpg?v=1790542280", "views": ["media/t2s/bazaar/grok-v0.jpg?v=1790542280", "media/t2s/bazaar/grok-v1.jpg?v=1790542280", "media/t2s/bazaar/grok-v2.jpg?v=1790542280", "media/t2s/bazaar/grok-v3.jpg?v=1790542280"], "glb": "models/01dd1b7c49eab3eb7a3f.bin?v=1790737098", "findings": null, "judge": null}, {"key": "qwen-off", "s": 0.5963, "detailed": 0.598, "overview": 0.6776, "phys": 0.3508, "img": "media/t2s/bazaar/qwen-off.jpg?v=1790542278", "views": ["media/t2s/bazaar/qwen-off-v0.jpg?v=1790542278", "media/t2s/bazaar/qwen-off-v1.jpg?v=1790542278", "media/t2s/bazaar/qwen-off-v2.jpg?v=1790542278", "media/t2s/bazaar/qwen-off-v3.jpg?v=1790542278"], "glb": null, "findings": null, "judge": null}, {"key": "muse", "s": 0.5686, "detailed": 0.4973, "overview": 0.6074, "phys": 0.5237, "img": "media/t2s/bazaar/muse.jpg?v=1790542279", "views": ["media/t2s/bazaar/muse-v0.jpg?v=1790542279", "media/t2s/bazaar/muse-v1.jpg?v=1790542280", "media/t2s/bazaar/muse-v2.jpg?v=1790542280", "media/t2s/bazaar/muse-v3.jpg?v=1790542280"], "glb": null, "findings": null, "judge": null}, {"key": "qwen-on", "s": 0.5152, "detailed": 0.4297, "overview": 0.5602, "phys": 0.4656, "img": "media/t2s/bazaar/qwen-on.jpg?v=1790542279", "views": ["media/t2s/bazaar/qwen-on-v0.jpg?v=1790542279", "media/t2s/bazaar/qwen-on-v1.jpg?v=1790542279", "media/t2s/bazaar/qwen-on-v2.jpg?v=1790542279", "media/t2s/bazaar/qwen-on-v3.jpg?v=1790542279"], "glb": null, "findings": null, "judge": null}, {"key": "gemma-on", "s": 0.4886, "detailed": 0.4313, "overview": 0.4734, "phys": 0.5914, "img": "media/t2s/bazaar/gemma-on.jpg?v=1790542277", "views": ["media/t2s/bazaar/gemma-on-v0.jpg?v=1790542277", "media/t2s/bazaar/gemma-on-v1.jpg?v=1790542277", "media/t2s/bazaar/gemma-on-v2.jpg?v=1790542277", "media/t2s/bazaar/gemma-on-v3.jpg?v=1790542278"], "glb": null, "findings": null, "judge": null}, {"key": "inkling", "s": 0.2223, "detailed": 0.1667, "overview": 0.1275, "phys": 0.5625, "img": "media/t2s/bazaar/inkling.jpg?v=1790542278", "views": ["media/t2s/bazaar/inkling-v0.jpg?v=1790542278", "media/t2s/bazaar/inkling-v1.jpg?v=1790542278", "media/t2s/bazaar/inkling-v2.jpg?v=1790542278", "media/t2s/bazaar/inkling-v3.jpg?v=1790542278"], "glb": null, "findings": null, "judge": null}, {"key": "deepseek", "s": 0.0, "detailed": 0.0, "overview": 0.0, "phys": 0.0, "img": "media/t2s/bazaar/deepseek.jpg?v=1790542281", "views": ["media/t2s/bazaar/deepseek-v0.jpg?v=1790542281", "media/t2s/bazaar/deepseek-v1.jpg?v=1790542281", "media/t2s/bazaar/deepseek-v2.jpg?v=1790542281", "media/t2s/bazaar/deepseek-v3.jpg?v=1790542281"], "glb": "models/7fd4f7eaeef254606343.bin?v=1790737098", "findings": null, "judge": null}, {"key": "glm", "s": 0.0, "detailed": 0.0, "overview": 0.0, "phys": 0.0, "img": null, "views": [], "glb": null, "findings": null, "judge": null}]}, {"id": "comp-31-old-industrial-pallet-bay-repair-v2", "track": "i2s", "title": "Old Industrial Pallet Bay", "note": "Paper Figure 10.", "prompt": "Repair the current outdoor scene so it matches the provided reference image. Make only the minimum changes needed, and preserve all unrelated actors and properties.", "targets": ["Pallets_Stacked"], "duplicates": ["Pallets_Stacked_65_CorruptDuplicate"], "corruption": [{"type": "duplication", "label": "Pallets_Stacked_65", "new_label": "Pallets_Stacked_65_CorruptDuplicate", "delta_cm": [-230.0, 160.0, 0.0], "yaw_deg": -28.0, "factor": 1.15}, {"type": "translation", "label": "Pallets_Stacked_65", "delta_cm": [160.0, -120.0, 0.0]}, {"type": "rotation", "label": "Pallets_Stacked_65", "yaw_deg": 35.0}], "gt_glb": "models/46734878f740aae816d8.bin?v=1790737099", "input_glb": "models/e6a6333939ccfe57d584.bin?v=1790737099", "ref_cam": {"pos": [24.538635393998792, 40.3, 14.038221685593474], "target": [16.381865310668946, 38.437110614776614, 17.841786041259766], "hfov": 50.0}, "gt": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gt.jpg?v=1790731228", "input": null, "refs": ["media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/ref-1.jpg?v=1790549706"], "ops": ["duplication", "translation", "rotation"], "agents": [{"key": "astra", "s": 1.0, "f1": 1.0, "phys": 1.0, "tp": 2.0, "fp": 0.0, "fn": 0.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/astra.jpg?v=1790731230", "glb": "models/db5c0c5d2b78f9e47bb7.bin?v=1790737099"}, {"key": "fable", "s": 0.6, "f1": 0.5, "phys": 1.0, "tp": 1.0, "fp": 1.0, "fn": 1.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/fable.jpg?v=1790731231", "glb": null}, {"key": "sol", "s": 0.3, "f1": 0.25, "phys": 0.5, "tp": 1.0, "fp": 5.0, "fn": 1.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/sol.jpg?v=1790731228", "glb": "models/f2b2b285e27a26ee6780.bin?v=1790737099"}, {"key": "glm", "s": 0.2, "f1": 0.0, "phys": 1.0, "tp": 0.0, "fp": 1.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/glm.jpg?v=1790731228", "glb": null}, {"key": "muse", "s": 0.2, "f1": 0.0, "phys": 1.0, "tp": 0.0, "fp": 2.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/muse.jpg?v=1790731230", "glb": null}, {"key": "opus", "s": 0.2, "f1": 0.0, "phys": 1.0, "tp": 0.0, "fp": 0.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/opus.jpg?v=1790731231", "glb": "models/f3648a5ad9887ac0937d.bin?v=1790737099"}, {"key": "qwen-on", "s": 0.1842, "f1": 0.10526315789473684, "phys": 0.5, "tp": 1.0, "fp": 16.0, "fn": 1.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/qwen-on.jpg?v=1790731230", "glb": null}, {"key": "gemini", "s": 0.1353, "f1": 0.004576659038901602, "phys": 0.6584, "tp": 1.0, "fp": 434.0, "fn": 1.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemini.jpg?v=1790731229", "glb": null}, {"key": "qwen-off", "s": 0.12, "f1": 0.0, "phys": 0.6, "tp": 0.0, "fp": 6.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/qwen-off.jpg?v=1790731230", "glb": null}, {"key": "gemma-off", "s": 0.1034, "f1": 0.004219409282700422, "phys": 0.5, "tp": 1.0, "fp": 471.0, "fn": 1.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemma-off.jpg?v=1790731229", "glb": null}, {"key": "gemma-on", "s": 0.1034, "f1": 0.004210526315789474, "phys": 0.5, "tp": 1.0, "fp": 472.0, "fn": 1.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemma-on.jpg?v=1790731229", "glb": null}, {"key": "deepseek", "s": 0.1, "f1": 0.0, "phys": 0.5, "tp": 0.0, "fp": 5.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/deepseek.jpg?v=1790731228", "glb": null}, {"key": "grok", "s": 0.1, "f1": 0.0, "phys": 0.5, "tp": 0.0, "fp": 5.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/grok.jpg?v=1790731230", "glb": "models/7daf8107bb630cffdc18.bin?v=1790737099"}, {"key": "inkling", "s": 0.0838, "f1": 0.0, "phys": 0.4189, "tp": 0.0, "fp": 468.0, "fn": 2.0, "img": "media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/inkling.jpg?v=1790731229", "glb": null}]}, {"id": "comp-61-new-york-mailbox-pair-repair-v2", "track": "i2s", "title": "New York Mailbox Pair", "note": "The ground-truth verifier example.", "prompt": "Repair the current outdoor scene so it matches the provided reference image. Make only the minimum changes needed, and preserve all unrelated actors and properties.", "targets": ["Mailbox2"], "duplicates": ["Mailbox2_CorruptDuplicate"], "corruption": [{"type": "duplication", "label": "Mailbox2", "new_label": "Mailbox2_CorruptDuplicate", "delta_cm": [180.0, 140.0, 0.0], "yaw_deg": 25.0, "factor": 1.15}, {"type": "rotation", "label": "Mailbox2", "yaw_deg": -45.0}, {"type": "scaling", "label": "Mailbox2", "factor": [1.3, 0.8, 1.2]}], "gt_glb": "models/6afbbaec6b7a4271b21f.bin?v=1790737099", "input_glb": "models/66da6868d20ebb100197.bin?v=1790737099", "ref_cam": {"pos": [4.92174560546875, 1.8041938568115234, 4.722680339813234], "target": [13.76174560546875, 0.5665938568115234, 4.722680339813232], "hfov": 40.0}, "gt": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gt.jpg?v=1790550039", "input": null, "refs": ["media/i2s/comp-61-new-york-mailbox-pair-repair-v2/ref-1.jpg?v=1790550041"], "ops": ["duplication", "rotation", "scaling"], "agents": [{"key": "deepseek", "s": 1.0, "f1": 1.0, "phys": 1.0, "tp": 2.0, "fp": 0.0, "fn": 0.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/deepseek.jpg?v=1790550039", "glb": null}, {"key": "fable", "s": 1.0, "f1": 1.0, "phys": 1.0, "tp": 2.0, "fp": 0.0, "fn": 0.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/fable.jpg?v=1790550041", "glb": "models/38071c69a86d174dc55f.bin?v=1790737099"}, {"key": "gemini", "s": 0.6571, "f1": 0.5714285714285714, "phys": 1.0, "tp": 2.0, "fp": 3.0, "fn": 0.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemini.jpg?v=1790550040", "glb": null}, {"key": "inkling", "s": 0.6571, "f1": 0.5714285714285714, "phys": 1.0, "tp": 2.0, "fp": 3.0, "fn": 0.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/inkling.jpg?v=1790550040", "glb": null}, {"key": "qwen-off", "s": 0.3286, "f1": 0.2857142857142857, "phys": 0.5, "tp": 1.0, "fp": 4.0, "fn": 1.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/qwen-off.jpg?v=1790550040", "glb": null}, {"key": "grok", "s": 0.3286, "f1": 0.2857142857142857, "phys": 0.5, "tp": 1.0, "fp": 4.0, "fn": 1.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/grok.jpg?v=1790550041", "glb": "models/c79715b9e6967c4f6c90.bin?v=1790737099"}, {"key": "glm", "s": 0.2, "f1": 0.0, "phys": 1.0, "tp": 0.0, "fp": 1.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/glm.jpg?v=1790550040", "glb": null}, {"key": "muse", "s": 0.2, "f1": 0.0, "phys": 1.0, "tp": 0.0, "fp": 1.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/muse.jpg?v=1790550040", "glb": null}, {"key": "astra", "s": 0.2, "f1": 0.0, "phys": 1.0, "tp": 0.0, "fp": 1.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/astra.jpg?v=1790550040", "glb": null}, {"key": "qwen-on", "s": 0.15, "f1": 0.0, "phys": 0.75, "tp": 0.0, "fp": 6.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/qwen-on.jpg?v=1790550040", "glb": null}, {"key": "sol", "s": 0.1, "f1": 0.0, "phys": 0.5, "tp": 0.0, "fp": 5.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/sol.jpg?v=1790550040", "glb": "models/e9177d0cbf727df88100.bin?v=1790737099"}, {"key": "gemma-off", "s": 0.1, "f1": 0.0, "phys": 0.5, "tp": 0.0, "fp": 4.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemma-off.jpg?v=1790550040", "glb": null}, {"key": "gemma-on", "s": 0.1, "f1": 0.0, "phys": 0.5, "tp": 0.0, "fp": 4.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemma-on.jpg?v=1790550040", "glb": null}, {"key": "opus", "s": 0.1, "f1": 0.0, "phys": 0.5, "tp": 0.0, "fp": 2.0, "fn": 2.0, "img": "media/i2s/comp-61-new-york-mailbox-pair-repair-v2/opus.jpg?v=1790550041", "glb": "models/486b4742affe835723a3.bin?v=1790737099"}]}], "logos": {"openai": "<svg fill=\"currentColor\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>OpenAI</title><path d=\"M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z\"></path></svg>", "zai": "<svg fill=\"currentColor\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Z.ai</title><path d=\"M12.105 2L9.927 4.953H.653L2.83 2h9.276zM23.254 19.048L21.078 22h-9.242l2.174-2.952h9.244zM24 2L9.264 22H0L14.736 2H24z\"></path></svg>", "thinkingmachines": "<svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Thinking Machines</title><rect x=\"4.2\" y=\"4.2\" width=\"15.6\" height=\"15.6\" rx=\"3.6\"/></svg>\n", "qwen": "<svg fill=\"#615CED\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Qwen</title><path d=\"M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z\"></path></svg>", "claude": "<svg fill=\"#D97757\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Claude</title><path d=\"M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z\"></path></svg>", "gemini": "<svg fill=\"url(#c4sGem)\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><defs><linearGradient id=\"c4sGem\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#4796E3\"/><stop offset=\".55\" stop-color=\"#9168C0\"/><stop offset=\"1\" stop-color=\"#D96570\"/></linearGradient></defs><title>Gemini</title><path d=\"M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z\"></path></svg>", "grok": "<svg fill=\"currentColor\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Grok</title><path d=\"M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815\"></path></svg>", "deepseek": "<svg fill=\"#4D6BFE\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>DeepSeek</title><path d=\"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z\"></path></svg>", "meta": "<svg fill=\"#0081FB\" fill-rule=\"evenodd\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><title>Meta</title><path d=\"M6.897 4c1.915 0 3.516.932 5.43 3.376l.282-.373c.19-.246.383-.484.58-.71l.313-.35C14.588 4.788 15.792 4 17.225 4c1.273 0 2.469.557 3.491 1.516l.218.213c1.73 1.765 2.917 4.71 3.053 8.026l.011.392.002.25c0 1.501-.28 2.759-.818 3.7l-.14.23-.108.153c-.301.42-.664.758-1.086 1.009l-.265.142-.087.04a3.493 3.493 0 01-.302.118 4.117 4.117 0 01-1.33.208c-.524 0-.996-.067-1.438-.215-.614-.204-1.163-.56-1.726-1.116l-.227-.235c-.753-.812-1.534-1.976-2.493-3.586l-1.43-2.41-.544-.895-1.766 3.13-.343.592C7.597 19.156 6.227 20 4.356 20c-1.21 0-2.205-.42-2.936-1.182l-.168-.184c-.484-.573-.837-1.311-1.043-2.189l-.067-.32a8.69 8.69 0 01-.136-1.288L0 14.468c.002-.745.06-1.49.174-2.23l.1-.573c.298-1.53.828-2.958 1.536-4.157l.209-.34c1.177-1.83 2.789-3.053 4.615-3.16L6.897 4zm-.033 2.615l-.201.01c-.83.083-1.606.673-2.252 1.577l-.138.199-.01.018c-.67 1.017-1.185 2.378-1.456 3.845l-.004.022a12.591 12.591 0 00-.207 2.254l.002.188c.004.18.017.36.04.54l.043.291c.092.503.257.908.486 1.208l.117.137c.303.323.698.492 1.17.492 1.1 0 1.796-.676 3.696-3.641l2.175-3.4.454-.701-.139-.198C9.11 7.3 8.084 6.616 6.864 6.616zm10.196-.552l-.176.007c-.635.048-1.223.359-1.82.933l-.196.198c-.439.462-.887 1.064-1.367 1.807l.266.398c.18.274.362.56.55.858l.293.475 1.396 2.335.695 1.114c.583.926 1.03 1.6 1.408 2.082l.213.262c.282.326.529.54.777.673l.102.05c.227.1.457.138.718.138.176.002.35-.023.518-.073.338-.104.61-.32.813-.637l.095-.163.077-.162c.194-.459.29-1.06.29-1.785l-.006-.449c-.08-2.871-.938-5.372-2.2-6.798l-.176-.189c-.67-.683-1.444-1.074-2.27-1.074z\"></path></svg>"}};
|
img/judge_egyptian-temple_sol_s3f_000025.jpg
ADDED
|
Git LFS Details
|
img/simworld-logo.png
ADDED
|
index.html
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/astra.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/astra_full.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/deepseek.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/fable.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemini.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemma-off.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gemma-on.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/glm.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/grok.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/gt.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/inkling.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/inkling_full.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/muse.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/opus.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/qwen-off.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/qwen-on.jpg
ADDED
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/ref-1.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-31-old-industrial-pallet-bay-repair-v2/sol.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/astra.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/deepseek.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/deepseek_full.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/fable.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemini.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemma-off.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gemma-on.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/glm.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/grok.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/gt.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/inkling.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/muse.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/opus.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/opus_full.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/qwen-off.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/qwen-on.jpg
ADDED
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/ref-1.jpg
ADDED
|
Git LFS Details
|
media/i2s/comp-61-new-york-mailbox-pair-repair-v2/sol.jpg
ADDED
|
media/t2s/bazaar/astra-v0.jpg
ADDED
|
media/t2s/bazaar/astra-v1.jpg
ADDED
|
media/t2s/bazaar/astra-v2.jpg
ADDED
|
media/t2s/bazaar/astra-v3.jpg
ADDED
|