city-super / MatrixCity

Apache License 2.0
217 stars 9 forks source link

MatrixCity

MatrixCity: A Large-scale City Dataset for City-scale Neural Rendering and Beyond.

Yixuan Li, Lihan Jiang, Linning Xu, Yuanbo Xiangli, Zhenzhi Wang, Dahua Lin, Bo Dai

The Chinese University of Hong Kong, Shanghai AI Laboratory

[Paper] [Project Page]

teaser

Release

June. 2024 - Update the point cloud of the small city extracted from RGB-depth pairs using rgbd2pc.py, which can be used as the initialization of 3DGS.

Apr. 2024 - Update the script for extracting point clouds from several rgb-depth pairs at rgbd2pc.py, which can be used as the initialization of 3DGS.

Apr. 2024 - Release depth maps of aerial data in float32 format on Hugging Face and Baidu Netdisk. Update the scripts for loading depth and normal maps.

Feb. 2024 - Release diffuse, metallic, roughness and specular of Small City on Hugging Face and Baidu Netdisk

Jan. 2024 - Release depth maps of Big City

Dec. 2023 - V1.0.1 MatrixCityPlugin Released

Oct. 2023 - Attend ICCV 2023 Conference.

Sep. 2023 - MatrixCity Dataset Released.

Data Download

We provide three ways to download our MatrixCity dataset.

Hugging Face: https://huggingface.co/datasets/BoDai/MatrixCity/tree/main

Openxlab: https://openxlab.org.cn/datasets/bdaibdai/MatrixCity

Baidu Netdisk: https://pan.baidu.com/s/187P0e5p1hz9t5mgdJXjL1g#list/path=%2F (password: hqnn)

Data Color Space

We output depth and normal maps in EXR format, while RGB, diffuse, specular, roughness, and metallic are output in PNG format. All files in EXR format are in linear space, and all images in PNG format are in sRGB space. Please use gamma correction for conversion.

Depth and Normal Map Note

Export Point Clouds

We provide the point clouds of the small city (both aerial and street views). You can also use rgbd2pc.py to extract point clouds from any RGB-depth pairs you have‼️ The generated point clouds can be used as the initialization of 3DGS.

Pose File Structure

We use the same pose coordinate system as original NeRF repo: the local camera coordinate system of an image is defined in a way that the X axis points to the right, the Y axis upwards, and the Z axis backwards as seen from the image.

Data Structure

MatrixCityPlugin

Our plugin is developed based on the v0.1.0 version of xrfeitoria. Thank Haiyi Mei and Lei Yang for their invaluable help and discussions for the plug-in development.

It leverages Unreal Engine 5.0.3 to automatically collect large-scale and high-quality city data from City Sample project.

Allowing researchers to flexibly control lighting, weather, and transient objects.

Using this to generate synthetic data including rgb, depth, normal map, decomposed BRDF materials etc.

General camera noises like motion blur and defocus blur can be simulated in UE5.

This plugin is relied on the Movie Render Queue plugin, and is python-friendly.

Installation

Please see Get-Started for plugin setup.

Generate custom trajectories

Please see Generate-Trajectory to generate custom trajectories.

We have provided the trajectories of Small City and Big City used in our dataset in folder MatrixCitySequence. If you only want to render your own data under different environmental settings based on the provided trajectories, you can skip this part.

Render custom data

Please see Render-Data to render custom data after getting camera trajectories (Provided / Custom).

Export camera poses

Please see Export-Camere-Poses to export camera trajectories from UE to transforms.json.

Code Details

We also provide some code details for your convenience in Code-Details.

Citation

@inproceedings{li2023matrixcity,
  title={MatrixCity: A Large-scale City Dataset for City-scale Neural Rendering and Beyond},
  author={Li, Yixuan and Jiang, Lihan and Xu, Linning and Xiangli, Yuanbo and Wang, Zhenzhi and Lin, Dahua and Dai, Bo},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={3205--3215},
  year={2023}
}