One of the questions we get most often from Volinga Suite users goes something like this: “Should I train with ADC or MCMC? Which one gives better results? When does it make sense to use each?”
It is a fair question, and the honest answer is: it depends. Both strategies have real strengths and real limitations, and in many cases the best approach is actually to use them together. In this post we will walk you through the theory behind each method, explain the practical tradeoffs, and give you a concrete workflow that combines the best of both worlds.
Before comparing the two strategies, it helps to understand what they are both trying to solve.
When you capture a scene for 3D Gaussian Splatting, the pipeline starts with Structure from Motion (SfM), the process of aligning your input images in 3D space and extracting a sparse point cloud. Each point in that cloud becomes the seed for an initial 3D Gaussian: a small, semi-transparent ellipsoid with a position, orientation, size, opacity, and color encoded as spherical harmonics.
From that starting point, the model enters an optimization loop. It renders the scene from each camera angle, compares the result to the ground-truth images, and nudges the Gaussian parameters to reduce the error. This is where the two strategies split: how do you decide which Gaussians exist, and where they should go?
Adaptive Density Control (ADC) is the approach introduced in the original 3D Gaussian Splatting paper. Think of it as a rulebook: a set of heuristics that the model follows during training to decide when to add Gaussians, when to remove them, and what the final count should be.
The process works roughly like this. During optimization, ADC monitors the positional gradient of each Gaussian, a measure of how hard the model is pulling on it. If a Gaussian’s gradient exceeds a threshold, it means that region of the scene is not well covered:
If the Gaussian is small, it is probably under-reconstructing a fine detail → it gets cloned into two copies in the same location.
If the Gaussian is large, it is probably covering too much area with low precision → it gets split into two smaller children placed along its longest axis.
Periodically, ADC also runs a pruning pass: Gaussians that have become nearly transparent (very low opacity) are deleted, since they contribute little to the final render. Every few thousand iterations, all opacities are reset to a low value, forcing the model to re-earn the right to keep each Gaussian.
The result is a Gaussian count that grows organically throughout training, starting from the SfM seed points and expanding until the scene is well covered. You do not choose a final number; ADC arrives at it through these rules.
The MCMC approach (from the paper 3D Gaussian Splatting as Markov Chain Monte Carlo, UBC / Google DeepMind, NeurIPS 2024) takes a fundamentally different view of the problem.
Instead of rules that grow the Gaussian count, MCMC starts from a fixed number of Gaussians, set by the user before training begins, and treats the entire set as a random sample drawn from a probability distribution over possible scene representations. Configurations that reconstruct the scene well have high probability; configurations that don’t, have low probability.
The optimization then becomes a form of Stochastic Gradient Langevin Dynamics (SGLD): at every training step, the model not only takes a gradient step to reduce reconstruction error, but also adds a small, controlled amount of noise. This noise acts as an engine for exploration; it constantly nudges Gaussians into slightly different positions, orientations, and sizes, testing whether a new configuration reconstructs the scene better than the previous one. Over thousands of iterations, this process converges on the best possible arrangement for the given Gaussian budget.
When a Gaussian becomes “dead” (its opacity collapses), it does not disappear; it is relocated to the position of a currently active, high-opacity Gaussian, split off as a new candidate, and given a chance to find a better home. This is the MCMC equivalent of densification: not creating new Gaussians, but redeploying existing ones to where they might be more useful.
The key distinction: ADC decides how many Gaussians are needed by following rules. MCMC takes a given number as a hard constraint and finds the best possible configuration for exactly that many Gaussians, through continuous exploration.
When you compare both methods with the same number of Gaussians, MCMC consistently achieves higher visual quality, with better PSNR, SSIM, and LPIPS scores across a wide range of benchmark scenes. The noise-driven exploration allows it to find placements that the clone-and-split heuristics of ADC simply cannot reach.
MCMC is also more robust to imperfect SfM initializations. Because it actively explores, it can recover from sparse or badly distributed seed points, something ADC struggles with, since its cloning and splitting decisions depend heavily on where the initial Gaussians land.
But MCMC has one critical vulnerability: you have to tell it how many Gaussians to use. This sounds simple, but it is surprisingly hard to get right:
Too few Gaussians: the scene is under-represented, fine details are lost, and quality plateaus below the method’s true potential.
Too many Gaussians: a large fraction of the budget ends up filled with empty or near-invisible Gaussians, parked in empty space, at the edges of the scene, or scattered around as floaters. This wastes GPU memory, slows down rendering, and, counterintuitively, can hurt quality compared to a well-tuned smaller count.
ADC does not have this problem. It grows naturally to the count the scene needs. Its weakness is the inverse: the final count is unpredictable, the heuristics occasionally place Gaussians inefficiently, and quality tends to plateau below what MCMC can achieve.
Here is the strategy that the MCMC paper authors themselves propose, and that we have validated extensively with Volinga Suite:
Train with ADC on your scene. Let it run to completion. Note the final Gaussian count.
Use that count as the fixed budget for a MCMC training run on the same scene.
This gives you the best of both worlds. ADC acts as an automatic estimator: it explores the scene organically and converges on a Gaussian count that is roughly appropriate for the scene’s complexity. MCMC then uses that number as a principled budget, and through its continuous exploration finds a configuration that is meaningfully better than what ADC’s heuristics produce.
It costs more total training time, two full training runs instead of one, but the quality gain is consistent and often significant, especially for complex outdoor environments, scenes with fine textures, or captures where the SfM initialization is sparse.
| ADC | MCMC |
|---|---|---|
Core idea | Heuristic rules that grow the Gaussian count | MCMC sampling to find the best config for a fixed count |
Gaussian count | Determined dynamically during training | Set by the user before training |
Densification | Clone + Split based on gradient thresholds | Relocation of dead Gaussians |
Pruning | Opacity threshold + periodic reset | Opacity regularizer |
Robustness to init | Sensitive to SfM quality | Robust; works even with random init |
Quality (equal #Gaussians) | Baseline | Higher |
Main risk | Unpredictable count, suboptimal placement | Wrong count → empty Gaussians or under-coverage |
Best used for | Quick baseline; estimating scene complexity | Maximum quality when count is known |
Ideal workflow | Run first to estimate the right Gaussian count | Use ADC count as input budget |
ADC and MCMC are not competing alternatives; they are complementary tools that address different parts of the same problem. ADC is practical and forgiving: it figures out how many Gaussians your scene needs. MCMC is more powerful but requires that number as an input to do its best work.
For most production workflows, we recommend letting ADC solve the “how many” question, and then using that answer to unlock MCMC’s higher quality ceiling. This is the workflow the research proposes, and it reflects how we think about training strategy in Volinga Suite.
If you have questions about which approach to use for your specific capture, or want to share results from your own experiments, reach out. We read everything.
Credits
Written by: Fernando Rivas Manzaneque
References
Kerbl et al., 3D Gaussian Splatting for Real-Time Radiance Field Rendering, SIGGRAPH 2023
Kheradmand et al., 3D Gaussian Splatting as Markov Chain Monte Carlo, NeurIPS 2024. https://ubc-vision.github.io/3dgs-mcmc