3D Gaussian Splatting and Unreal Engine 5 to Simulate Extreme Weather Caused by Climate Change

This repository contains the official authors implementation associated with the paper "3D Gaussian Splatting for Real-Time Radiance Field Rendering", which can be found here.

Web Browser Demo

scene1-after

Scene 1 Ferris Wheel: https://share.arcware.cloud/v1/share-a17aa7a5-ad0f-4897-aff2-94e4c4e31fc8
Scene 2 Old Port: https://share.arcware.cloud/v1/share-c31d620b-3629-42b2-ad0f-72131d153891

Workflow

Video capture -> convert to images -> train -> get 3d model -> import to unreal and add weather effects -> host via pixel streaming on browser

Original Paper

Below is an excerpt from the original repo:

Abstract: Radiance Field methods have recently revolutionized novel-view synthesis of scenes captured with multiple photos or videos. However, achieving high visual quality still requires neural networks that are costly to train and render, while recent faster methods inevitably trade off speed for quality. For unbounded and complete scenes (rather than isolated objects) and 1080p resolution rendering, no current method can achieve real-time display rates. We introduce three key elements that allow us to achieve state-of-the-art visual quality while maintaining competitive training times and importantly allow high-quality real-time (≥ 30 fps) novel-view synthesis at 1080p resolution. First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space; Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene; Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows realtime rendering. We demonstrate state-of-the-art visual quality and real-time rendering on several established datasets.

Overview

The codebase has 4 main components:

  • A PyTorch-based optimizer to produce a 3D Gaussian model from SfM inputs
  • A network viewer that allows to connect to and visualize the optimization process
  • An OpenGL-based real-time viewer to render trained models in real-time.
  • A script to help you turn your own images into optimization-ready SfM data sets

Optimizer

The optimizer uses PyTorch and CUDA extensions in a Python environment to produce trained models.

Processing your own Scenes

Our COLMAP loaders expect the following dataset structure in the source path location:

<location>
|---images
|   |---<image 0>
|   |---<image 1>
|   |---...
|---sparse
    |---0
        |---cameras.bin
        |---images.bin
        |---points3D.bin

For rasterization, the camera models must be either a SIMPLE_PINHOLE or PINHOLE camera. We provide a converter script convert.py, to extract undistorted images and SfM information from input images. Optionally, you can use ImageMagick to resize the undistorted images. This rescaling is similar to MipNeRF360, i.e., it creates images with 1/2, 1/4 and 1/8 the original resolution in corresponding folders. To use them, please first install a recent version of COLMAP (ideally CUDA-powered) and ImageMagick. Put the images you want to use in a directory <location>/input.

<location>
|---input
    |---<image 0>
    |---<image 1>
    |---...