Skip to content

Triangle splatting showcase example

Show triangle splatting using the Basic visual, data obtained from the 2025 paper Triangle Splatting for Real-Time Radiance Field Rendering by Held et al., 2025.

Use the fly camera controller to navigate in the 3D scene:

  • Left mouse drag: Look around (yaw/pitch)
  • Right mouse drag: Orbit around a dynamic center (in front of the camera)
  • Middle mouse drag: Move the camera left/right and up/down
  • Arrow keys: Move in view direction (up/down) or strafe (left/right)

Credits

Dataset kindly provided by Jan Held.

Tags: basic, splatting, fly, orbit

Screenshot

import numpy as np

import datoviz as dvz


def load_data(filepath):
    data = np.load(filepath)
    position = data['position']
    color = data['color']

    # Data transformation
    position[:, 0] *= -1
    position[:, 1] *= -1
    position[:, 0] += 0.30
    position[:, 1] += 0.5
    position[:, 2] -= 0.5
    angle = -0.5
    rot = np.array(
        [
            [1, 0, 0],
            [0, np.cos(angle), -np.sin(angle)],
            [0, np.sin(angle), np.cos(angle)],
        ]
    )
    position = position @ rot

    return position, color


# Use either interactive fly camera or orbit animation
ORBIT = True

position, color = load_data(dvz.download_data('misc/garden.npz'))

app = dvz.App()
figure = app.figure()
panel = figure.panel()
if not ORBIT:
    fly = panel.fly()
camera = panel.camera(initial=(-3, 1, 3))

visual = app.basic(
    'triangle_list',
    position=position,
    color=color,
    depth_test=True,
)
panel.add(visual)

if ORBIT:
    panel.orbit(period=20)

app.run()
app.destroy()

← Back to gallery