Stable Fluids 3DA single-file implementation of 3D stable fluids. Github YouTube |
|
Several Classical Partial Differential Equations: Numerical and Exact SolutionsSeveral classical linear partial differential equations, including the transport equation, Laplace's equation, the heat equation, and the wave equation, are analyzed. Their exact solutions and numerical solutions (including Eulerian methods and Monte Carlo methods) in two-dimensional space are then compared. Github Article |
|
A Corrected Derivation of Invertible Neo-Hookean ModelIn this project, we implement several different invertible constitutive models. Additionally, we correct the derivation of the invertible neo-hookean model, which is presented in the SIGGRAPH course 'Dynamic Deformables: Implementation and Production Practicalities'. Github Article |
|
Soft2D Physics EngineSoft2D is a 2D multi-material continuum physics engine designed for real-time applications. With soft2d, users can simulate various materials such as fluids, sand, snow, and elastic bodies within their applications. Soft2D runs on GPU, and currently supports Vulkan and Metal backends. For user convenience, we offer a comprehensive suite of easy-to-use interfaces in C language. Please see the user documentation for more details. We also provide a free-to-access unity plugin - Soft2D for Unity, which allows users to build simulation scenes in a low-code way. Website Github YouTube |
|
2D Semi-Implicit MPMWe provide a detailed derivation of a 2D semi-implicit MPM (Material Point Method) time integration solver, and the experimental results are analyzed. Unlike other matrix-free methods (such as PCG), which avoid the explicit construction of stiffness matrices, we provide a full derivation for a 2D semi-implicit method and present the explicit form of the stiffness matrix. Article Tutorial |
|
High-Performance PBD Physics EngineThis project aims to develop a high-performance PBD (position-based dynamics) physics engine, which is similar to Houdini Vellum. The engine supports a series of materials' simulation: rigid body, soft body, fluid, cloth, granular material, etc. We achieve a 60 FPS's 240k particles fluid simulation, and the simulation can be extended to a large-scale scene (there are 20 million particles in the picture on the right side). To obtain a high-quality fluid surface, we implement a surface reconstruction algorithm based on dual contouring. In this project, we also use a CCD (Continuous collision detection) algorithm to tackle the tricky collision problem. |
|
Unreal Engine SPH PluginThis plugin simulates SPH (smoothed-particle hydrodynamics) linear elasticity deformable objects and fluids in the UE (Unreal Engine) game engine. We implement several linear algebra algorithms in HLSL (high-level shader language), for example, a HLSL version's 3x3 SVD algorithm. To our knowledge, we are the first ones who implement these algorithms in HLSL. The major reference for this project is the SPH-related papers mentioned in Jan Bender's SPH Eurographics course. Github |
|
Unity Stable Fluids PluginInspired by FluidNinja LIVE, this plugin achieves a high-performance stable fluids simulation in the Unity game engine. Besides fluids, this plugin can also be employed to simulate wind field and magic effects in games. This plugin is optimized specifically for mobile devices and is able to run at 2ms/frame performance on a mid-range mobile phone. |
|
Simple Path Tracing RendererThis project achieves a BRDF model renderer based on path tracing (I am considering expanding this project to the BSSRDF model in the future). In Monte Carlo integration, uniform sampling is used, and direct/indirect light sources are sampled separately to improve rendering quality. Moreover, a Russian Roulette scheme is used when casting rays recursively. In this project, a BVH (bounding volume hierarchy) data structure is used to accelerate querying ray-triangle intersection. This project is inspired by the course GAMES 101. Github |
|
GAMES 201 Course ProjectsThis project includes algorithm implementations of the course GAMES 201: 高级物理引擎实战指南2020 . I complete almost all algorithms mentioned in this course, these algorithms include: Euler fluid methods; Hybrid fluid methods: PIC (Particle-In-Cell), APIC (Affine Particle-In-Cell), FLIP (Fluid Implicit Particles), MPM (Material Point Method); 3D implicit FEM (Finite Element Method); Vortex methods; Several numerical methods: Conjugate Gradients, Multigrid Methods. All procedures are written in the Taichi programming language. Github |
|
Real-Time Fluid Simulation in GamesThis pre-research project was finished during my internship in NetEase Games, with advisor Xiaosheng Li . This project aims to explore the possibility of achieving real-time interactive fluid simulations in desktop and mobile games. Two popular Lagrangian methods, SPH (Smooth Particles Hydrodynamics) and PBF (Position Based Fluids), are achieved on both PC and cell phones, and their performance is compared. For free-surface rendering, two rendering methods are implemented and compared: Marching Cubes and SSFR (Screen Space Fluid Rendering). This project is written by Unity compute shader and fully runs on GPU. |
|
Vascular Fitting SystemA vascular fitting system for visualizing, editing, and fitting 3D vascular data. This software is developed during my first year of postgraduate, and it is currently used by Virtual Reality and Visualization Lab of Beijing Normal University. This system is based on Dynamic Ball B-Spline Curves and is written in Qt / C++ / OpenGL. More Details |
|
Computer Graphics Course AssistantI design assignments for Beijing Normal University undergraduate computer graphics course. The content includes a modern OpenGL tutorial, basic shading modes, mesh subdivision, curves and surfaces, physical simulation, and simple ray tracing. These procedures are based on Qt C++ framework and use the OpenGL 4.0 APIs. More Details |