HCI

Lab 2 · 3D Gaussian Splatting in Unity

Unity import and rendering completed · class dataset requirements unconfirmed
On this page

Executed on 29 October 2026. I imported a public pretrained Gaussian model, created a Unity GaussianSplatAsset, built the viewer and captured three viewpoints from its actual Windows execution. I did not capture photographs or train this model. Whether the class requires a particular dataset or a reconstruction from my own photographs is still unconfirmed.

中文解释与实际结果 → · Paired lecture work: HW2 →

What this HCI exercise does#

The supplied HCI lecture overview, page 4, lists Unity and 3DGS under programming. The separately supplied 19-slide 3D Gaussian splatting in unity deck by Mohamed ABDUL GAFOOR covers model creation and then Unity display. This experiment follows its display stage. No files or photographs from the separate ACV3D course were used.

A Gaussian model describes many small coloured, partly transparent ellipsoids. Rendering them from a viewpoint creates a scene image. Model production from photographs and displaying an existing model are distinct operations. A realistic image does not automatically supply solid collision surfaces or usable interaction targets.

Background: what 3DGS is#

3DGS stands for 3D Gaussian Splatting. Imagine many coloured, partially transparent ellipsoids in space. Projecting and blending them onto a screen can form a detailed view of a scene. They are not ordinary solid balls or a conventional triangle mesh.

The slides explain four properties: position; shape and orientation; opacity; and colour. View-dependent colour can use spherical harmonics to describe how appearance changes with viewing direction. Simply loading an arbitrary point cloud is therefore not equivalent to loading a trained Gaussian model.

Training compares rendered views with reference images and adjusts the model to reduce the difference. The slides describe adding detail where needed and removing nearly transparent elements. Rendering an existing model in Unity is a separate stage.

Reading the slide deck#

  • Slides 2–4: rendering with Gaussian primitives instead of triangles.
  • Slides 5–9: parameters, training, adding or removing Gaussians, limitations and view-dependent colour.
  • Slide 10: the original training repository and a command taking a prepared COLMAP or NeRF Synthetic dataset.
  • Slides 11–17: importing a Gaussian model and displaying it in Unity.
  • Slides 18–19: Brush and Rerun as additional tools.

If training from photographs is required later#

Slide 10’s example command expects a prepared dataset, not an arbitrary folder of photographs. The original implementation documents a CUDA-based workflow. The Brush project, linked on slide 18, is another reconstruction tool to check against class instructions; slide 19 links Rerun. Listing these tools does not mean all must be installed. A reconstruction would add capture, data preparation, training settings and the generated model to this journal.

Materials and reproducibility#

ItemUsed in this run
EditorUnity 6000.6.4f1, already installed
PipelineUniversal Render Pipeline 17.6.0
GraphicsAMD Radeon(TM) 780M, Direct3D 12
RendererAras Pranckevicius, UnityGaussianSplatting, commit ebd76138a09b68340db3c74b3867f0451a53b6cd
InputNiantic SPZ public sample hornedlizard.spz, 18,143,098 bytes
Input revisionSPZ repository commit affd0ecea7fbb4c265ee119475af7ee5b2997482
Imported representation786,233 Gaussians, Medium asset preset
ExecutionWindows viewer, 1280 × 800; three saved viewpoints

The classroom screenshots use Unity 6000.0.23f1 and PLY. This run uses the installed Unity 6 version and SPZ, which the course-linked renderer also supports. The format difference is recorded rather than presented as an exact reproduction of the class dataset.

Model SHA-256: a076ca6aeb9f1a8fe52526f4a7c381fe8fffec60c0d7eb64b45532189b64bc6a.

Actual process#

  1. Check the course materials. Slides 10 and 11–17 distinguish training from loading and displaying a model. The local course folder contained slides but no Gaussian model.
  2. Obtain a small public input. I used Niantic’s pretrained horned-lizard sample instead of downloading the 14 GB collection linked by the viewer. Its source revision and hash are retained.
  3. Prepare a separate URP project. I based it on the renderer’s GaussianExample-URP and used the installed Editor. The existing Station Rescue game was not changed.
  4. Resolve compilation. The first minimal package manifest omitted the built-in XR module; the renderer referenced XRSettings and compilation failed. Adding the built-in XR reference resolved this error. The final project manifest also retains its Physics reference. This was a project dependency issue, not evidence that a new graphics driver or Editor installation was needed.
  5. Create the Gaussian asset. An Editor automation script invokes the same upstream asset-creation implementation exposed by Tools > Gaussian Splats > Create GaussianSplatAsset. It imports the SPZ, selects Medium precision and saves the generated data in Assets/GaussianAssets. These steps were scripted; I do not claim to have clicked through the dialog manually.
  6. Set up and inspect the scene. I assigned the asset to GaussianSplatRenderer, set the object transform and camera, and saved Lab2-HornedLizard. The Windows build uses Direct3D 12, as required by the renderer on Windows.
  7. Correct framing and capture. The model’s full bounds extend to roughly ±200 because they include distant Gaussians; fitting the camera to those bounds makes the subject too small. Inspecting central position quantiles gave a camera target near the scene origin and a distance scale of 1.2. No Gaussians were removed. A hidden-window capture initially produced invalid or black images, which were rejected. I then ran the viewer visibly and captured its camera render texture after rendering.
  8. Record execution. The viewer switches between three camera positions and saves actual rendered frames plus runtime information. The images below are those valid frames, not slides or generated illustrations.

Result#

Actual Unity Windows rendering of the public horned-lizard Gaussian model, viewpoint 1

View 1. Actual Windows viewer output from this experiment.

The same Gaussian model from a second Unity camera position

View 2. Changing the camera inspects the same three-dimensional representation.

The same Gaussian model from a third Unity camera position

View 3. A third view is retained to inspect view-dependent appearance and reconstruction limits.

The generated asset contains 786,233 Gaussians. The Windows build succeeded and its runtime reports a valid asset and compute-shader support. The saved views were checked visually: the sculpture is recognisable from both sides and behind, while the base and surrounding surfaces show blur and incomplete details. The runtime also logs a D3D12 upload-buffer-size warning; the visible render succeeds, but this is not a claim of a warning-free run. This is an import and rendering result, not a reconstruction-accuracy benchmark or a measured frame-rate claim.

Runtime record · Import record · Source and hash

HCI reflection and remaining scope#

The model provides convincing visual content for a possible interactive scene. Choosing viewpoints and making navigation understandable are interaction questions; collision, object selection and task feedback still need separate implementation. The distinction connects to HW2’s discussion of Sutherland: visual display is only part of an interactive system.

Completed here: public-model import, asset creation, URP scene setup, Windows rendering, three-view evidence and process documentation.

Not established: a student-captured reconstruction, training quality, use of a teacher-specified dataset, or confirmation that the teacher accepts a public sample as the full Lab 2 submission. The archived lecture deck contains old and inconsistent deadline text; it is not evidence of the current year’s deadline.

Sources and assistance#

Project setup, execution, checks and writing were performed with AI assistance. The screenshots are from this computer’s actual Unity run.

← All courseworkBack to top ↑