dylanebert HF staff commited on
Commit
7e2471a
·
1 Parent(s): e7b5357

added about page

Browse files
src/routes/+page.svelte CHANGED
@@ -3,6 +3,7 @@
3
  import ModelDetails from "./ModelDetails.svelte";
4
  import Viewer from "./Viewer.svelte";
5
  import Vote from "./Vote.svelte";
 
6
 
7
  interface Scene {
8
  name: string;
@@ -10,7 +11,7 @@
10
  thumbnail: string;
11
  }
12
 
13
- let currentView: "Leaderboard" | "Vote" | "ModelDetails" | "Viewer" = "Vote";
14
  let selectedEntry: { name: string; path: string } | null = null;
15
  let selectedScene: Scene | null = null;
16
 
@@ -35,12 +36,15 @@
35
  <p>Generative 3D Leaderboard</p>
36
  </div>
37
 
38
- {#if currentView === "Leaderboard" || currentView === "Vote"}
39
  <div class="tabs">
40
  <button on:click={() => (currentView = "Vote")} class={currentView === "Vote" ? "active" : ""}>Vote</button>
41
  <button on:click={() => (currentView = "Leaderboard")} class={currentView === "Leaderboard" ? "active" : ""}
42
  >Leaderboard</button
43
  >
 
 
 
44
  </div>
45
  {/if}
46
 
@@ -57,5 +61,7 @@
57
  />
58
  {:else if currentView === "Viewer" && selectedScene && selectedEntry}
59
  <Viewer modelName={selectedEntry.name} scene={selectedScene} onBack={() => (currentView = "ModelDetails")} />
 
 
60
  {/if}
61
  </div>
 
3
  import ModelDetails from "./ModelDetails.svelte";
4
  import Viewer from "./Viewer.svelte";
5
  import Vote from "./Vote.svelte";
6
+ import About from "./About.svelte";
7
 
8
  interface Scene {
9
  name: string;
 
11
  thumbnail: string;
12
  }
13
 
14
+ let currentView: "Leaderboard" | "Vote" | "ModelDetails" | "Viewer" | "About" = "Vote";
15
  let selectedEntry: { name: string; path: string } | null = null;
16
  let selectedScene: Scene | null = null;
17
 
 
36
  <p>Generative 3D Leaderboard</p>
37
  </div>
38
 
39
+ {#if currentView === "Leaderboard" || currentView === "Vote" || currentView === "About"}
40
  <div class="tabs">
41
  <button on:click={() => (currentView = "Vote")} class={currentView === "Vote" ? "active" : ""}>Vote</button>
42
  <button on:click={() => (currentView = "Leaderboard")} class={currentView === "Leaderboard" ? "active" : ""}
43
  >Leaderboard</button
44
  >
45
+ <button on:click={() => (currentView = "About")} class={currentView === "About" ? "active" : ""}
46
+ >About</button
47
+ >
48
  </div>
49
  {/if}
50
 
 
61
  />
62
  {:else if currentView === "Viewer" && selectedScene && selectedEntry}
63
  <Viewer modelName={selectedEntry.name} scene={selectedScene} onBack={() => (currentView = "ModelDetails")} />
64
+ {:else if currentView === "About"}
65
+ <About />
66
  {/if}
67
  </div>
src/routes/About.svelte ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="about">
2
+ <div class="section" style="padding: 10px 0;">
3
+ <p class="muted">
4
+ The <span class="emphasis">IGF</span> (In-Game Footage) leaderboard evaluates leading generative 3D models.
5
+ It is inspired by
6
+ <a class="emphasis" target="_blank" href="https://huggingface.co/spaces/TTS-AGI/TTS-Arena">TTS-Arena</a>
7
+ and
8
+ <a class="emphasis" target="_blank" href="https://chat.lmsys.org/">Chatbot Arena</a>.
9
+ </p>
10
+ </div>
11
+ <div class="section">
12
+ <h3 class="emphasis">Motivation</h3>
13
+ <p class="muted">
14
+ Evaluating generated 3D quality quantitatively is challenging, and there is no standard practice for
15
+ reporting critical factors like mesh topology in real-world applications.
16
+ </p>
17
+ <p class="muted">This leaderboard displays usable, final results side-by-side for the community to rank.</p>
18
+ </div>
19
+ <div class="section">
20
+ <h3 class="emphasis">Criteria</h3>
21
+ <p class="muted">
22
+ Models must handle <span class="emphasis">image</span> (.png, .jpg) inputs and produce
23
+ <span class="emphasis">mesh</span>
24
+ (.obj, .glb) or <span class="emphasis">splat</span> (.splat, .ply) outputs. They should run end-to-end without
25
+ human intervention, including UV unwrapping, texture mapping, and other post-processing.
26
+ </p>
27
+ <p class="muted">
28
+ To preview how your results will look in the leaderboard, upload them to any <a
29
+ class="emphasis"
30
+ target="_blank"
31
+ href="https://huggingface.co/spaces/gradio/model3D">gradio/model3d</a
32
+ > viewer.
33
+ </p>
34
+ </div>
35
+ <div class="section">
36
+ <h3 class="emphasis">Contributing</h3>
37
+ <p class="muted">
38
+ All inputs and outputs are publicly available <a
39
+ class="emphasis"
40
+ target="_blank"
41
+ href="https://huggingface.co/datasets/dylanebert/3d-arena">here</a
42
+ >.
43
+ </p>
44
+ <p class="muted">
45
+ To contribute a model, run your model on all input images and create a pull request with your model's
46
+ output. Refer to other examples in the dataset to understand the expected format.
47
+ </p>
48
+ </div>
49
+ <div class="section">
50
+ <h3 class="emphasis">Citing</h3>
51
+ <pre>
52
+ <code>
53
+ @misc&lbrace;igf-leaderboard,
54
+ author = &lbrace;Dylan Ebert&rbrace;
55
+ title = &lbrace;IGF Leaderboard&rbrace;
56
+ year = &lbrace;2024&rbrace;
57
+ publisher = &lbrace;Hugging Face&rbrace;
58
+ howpublished = &lbrace;https://huggingface.co/spaces/dylanebert/igf&rbrace;
59
+ &rbrace;
60
+ </code>
61
+ </pre>
62
+ </div>
63
+ </div>
static/global.css CHANGED
@@ -36,6 +36,16 @@ body {
36
  color: #aaa;
37
  }
38
 
 
 
 
 
 
 
 
 
 
 
39
  .loading-container {
40
  display: flex;
41
  flex-direction: column;
 
36
  color: #aaa;
37
  }
38
 
39
+ .emphasis {
40
+ color: #ddd;
41
+ font-weight: bold;
42
+ }
43
+
44
+ .about {
45
+ overflow: auto;
46
+ max-height: 100%;
47
+ }
48
+
49
  .loading-container {
50
  display: flex;
51
  flex-direction: column;