+++
title = "GSplat Demo"
date = "2024-02-24"
author = "Brooke"
description = "Messing around with gsplat.js from huggingface.co"
TOC = false
+++

# What is all of this?

I've been interested in [photogrammetry](https://en.wikipedia.org/wiki/Photogrammetry) and projection scanning for quite a while, but I've never really had a good way of capturing things a bit more artistically. GSplatting, or [3D Gaussian Splatting](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/), is a form of capturing scenes in a way that preserves the visual quality but doesn't provide an actual [polygonal](https://en.wikipedia.org/wiki/Polygonal_modeling) model. 

Unlike photogrammetry, GSplatting provides a fairly realistic gaussian of the captured scene that can be viewed using very little computational resources, this is a big reason why Nvidia is investing time into NeRF (actually something completely different but they're similar in output).

Anyways, here's a quick demo that allows you to view models in a browser, I may add a few different gaussians that I've been working on, but currently I'm borrowing `bonsai-7k-mini.splat`. You can check out the code [here](https://git.myco.systems/mycosystems/coop.myco.systems/src/branch/main/content/posts/gsplat.md), and [here](https://git.myco.systems/mycosystems/coop.myco.systems/src/branch/main/static/posts/gsplat).

{{< rawhtml >}}
<head>
    <link rel="stylesheet" href="style.css" />
</head>

<body>
    <div id="container">
      <div id="progress-container">
          <dialog open id="progress-dialog">
              <p>
                  <label for="progress-indicator">Waiting</label>
              </p>
              <progress max="100" id="progress-indicator"></progress>
          </dialog>
      </div>
      <canvas id="canvas"></canvas>
      <script type="module" src="index.js"></script>
    </div>
    <button id="load-button">Load Scene</button>
    <a class="gsplat-js" href="https://github.com/huggingface/gsplat.js/">gsplat.js</a><a class="gsplat-js"> left click <strong>rotate</strong>, right click <strong>pan</strong></a>
</body>
{{< /rawhtml >}}