3D Vision and Point Clouds

A self-driving car's LiDAR sensor returns a spinning cloud of points every tenth of a second. There are a hundred thousand 3D points, with no grid, no pixels, and no fixed order. A convolutional network, built for images with rows and columns, has no obvious way to consume this data. Yet the car must decide, in milliseconds, which nearby cluster of points is a pedestrian. It must also distinguish that cluster from one that is merely a mailbox. This is the central puzzle of 3D vision: real-world geometry rarely arrives as a neat array. Any architecture that assumes one will either fail outright, or need an expensive, lossy conversion first. 3D vision matters because the world is three-dimensional, and cameras only give us projections of it. Robotics, autonomous driving, augmented reality, industrial inspection, and medical imaging all require reasoning about geometry. Images alone tend to obscure that geometry. Point clouds are produced by LiDAR, depth cameras, or multi-view stereo. They are the most direct and widely available representation of that geometry: an unordered set of coordinates, sometimes with color or intensity attached. Learning directly from this representation, rather than voxelizing it into a 3D grid, avoids a cubic blow-up in memory. It also preserves fine detail that voxelization destroys. This article builds up the representational landscape of 3D vision — meshes, voxels, implicit surfaces, and point clouds. It then focuses on the architecture that made point clouds tractable for deep learning: PointNet and its permutation-invariant design. We work through the mathematical reason a plain multilayer perceptron fails on point sets. We also cover the symmetric-function trick that fixes it, and the theoretical guarantee that this trick loses no expressive power. We finish with the broader idea of geometry-aware deep learning: architectures whose invariances match the invariances of the physical world. By the end, you will be able to explain why point clouds resist ordinary CNNs. You will be able to design a permutation-invariant network from first principles. You will also be able to trace PointNet's forward and backward computation on a concrete example. Finally, you will be able to situate this line of work relative to voxel and implicit representations that come later. This includes the neural radiance fields and human pose estimators built on these same geometric foundations.

Key takeaways
  • 3D data comes in several representations — point clouds, voxel grids, meshes, and implicit functions — each with different memory and symmetry tradeoffs.
  • Point clouds are unordered sets of coordinates; any network processing them must be invariant to the order in which points are listed.
  • PointNet achieves permutation invariance by applying a shared multilayer perceptron to every point independently, then aggregating with a symmetric function (max-pooling).
  • A learned spatial transformer network aligns the input cloud to a canonical pose before feature extraction, adding invariance to rotation and translation.
  • PointNet is theoretically guaranteed, via a universal-approximation argument for symmetric functions, to approximate any continuous set function arbitrarily well.
  • These geometry-aware ideas — invariance-by-construction, implicit surfaces, and multi-view consistency — directly foreshadow neural radiance fields and human pose estimation.
The core insight

A network that must consume an unordered set of points has to be built, by construction, to give the same answer no matter what order those points arrive in.

The idea

A point cloud is a set of points {p1,p2,…,pn}\{p_1, p_2, \dots, p_n\}, each pi∈R3p_i \in \mathbb{R}^3 (or R3+k\mathbb{R}^{3+k} with kk extra channels like color or surface normal). Crucially, it is a set, not a sequence or grid: the list (p1,p2,p3)(p_1, p_2, p_3) and the list (p3,p1,p2)(p_3, p_1, p_2) describe exactly the same physical object. This distinguishes point clouds from images, where pixel (i,j)(i,j) has a fixed, meaningful neighbor structure that a convolution can exploit. This unordered structure creates a precise mathematical requirement. Any function ff that maps a point cloud to a label, a segmentation, or any other output must satisfy

f(p1,…,pn)=f(pπ(1),…,pπ(n))f(p_1, \dots, p_n) = f(p_{\pi(1)}, \dots, p_{\pi(n)})

for every permutation π\pi of {1,…,n}\{1, \dots, n\}. A function with this property is called a permutation-invariant (or symmetric) function. An ordinary fully connected network, which multiplies a fixed weight matrix against the concatenated coordinate vector, has no such guarantee — feed it the points in a different order and the weights now multiply different coordinates, producing a different, generally wrong, output. This is the fundamental obstacle that any point-cloud architecture must resolve, and it is distinct from (though related to) the translation-invariance property that convolutional networks exploit for grid data — see Convolutional Neural Networks. Alongside point clouds, 3D vision uses several other representations, each trading memory, resolution, and topological flexibility differently. A voxel grid discretizes space into a 3D array of occupancy or feature values, letting ordinary 3D convolutions apply directly, at the cost of memory that scales as O(r3)O(r^3) in the grid resolution rr — prohibitive beyond coarse resolutions. A polygon mesh stores vertices and their connectivity (edges/faces), giving an explicit, efficient surface representation but requiring topology-aware operations that do not generalize easily to learning. An implicit representation stores a continuous function, such as a signed distance function or an occupancy field, whose zero level-set defines the surface; this needs no discretization at all and underlies later developments such as neural radiance fields. Point clouds sit at the sparse end of this spectrum: memory scales linearly in the number of points, O(n)O(n), and no explicit connectivity is stored, which is exactly why they are cheap to sense and expensive to reason about geometrically.

How it works

PointNet, the architecture that established point clouds as a first-class deep-learning input, is built from three ingredients: a per-point shared multilayer perceptron (MLP), a symmetric aggregation function, and optional learned alignment transforms.

Step 1 — Per-point feature extraction. Each point pi∈R3p_i \in \mathbb{R}^3 is passed through the same MLP hθ:R3→Rdh_\theta: \mathbb{R}^3 \to \mathbb{R}^d, producing a dd-dimensional feature hθ(pi)h_\theta(p_i). Because the weights θ\theta are shared across all nn points (this is implemented as a stack of 1×11\times1 convolutions or, equivalently, matrix multiplication applied identically to every row), the computation for point pip_i never depends on which other points are present or in what order — this is what makes the eventual aggregation permutation-safe.

Step 2 — Symmetric aggregation. The nn feature vectors hθ(p1),…,hθ(pn)h_\theta(p_1), \dots, h_\theta(p_n) are combined into a single global feature g∈Rdg \in \mathbb{R}^d via an element-wise symmetric function, most commonly max-pooling:

gk=max⁡i=1,…,n[hθ(pi)]k,k=1,…,d.g_k = \max_{i=1,\dots,n} \big[h_\theta(p_i)\big]_k, \qquad k = 1, \dots, d.

Max (like sum or average) is symmetric: reordering its arguments does not change the output. This is the step that converts a per-point (order-dependent) representation into a whole-cloud (order-independent) representation.

Step 3 — Task head. The global feature gg is fed to a small MLP for classification (predicting a single label for the whole cloud), or concatenated back onto every per-point feature and fed through another shared per-point MLP for segmentation (predicting a label for every point, using both local per-point detail and global context).

Step 4 — Learned alignment (T-Net). Because rigid transformations (rotation, translation) of the input cloud represent the same object, PointNet also learns a small T-Net, itself a mini-PointNet, that regresses a 3×33\times 3 (and later a 64×6464\times64 feature-space) transformation matrix. The input coordinates (and an intermediate feature layer) are multiplied by this matrix before further processing, so the network first canonicalizes the pose before extracting features. This adds an approximate invariance to rigid transformations on top of the exact invariance to point order. ``` function PointNetForward(P): # P is a list of n points, each in R^3

# --- Step 4a: input alignment --- T3 = TNet3x3(P) # small shared-MLP + max-pool network -> 3x3 matrix P_aligned = [ T3 @ p for p in P ]

# --- Step 1: shared per-point MLP (first block) --- F = [ MLP_shared_1(p) for p in P_aligned ] # each MLP_shared_1: R^3 -> R^64, weights shared

# --- Step 4b: feature alignment --- T64 = TNet64x64(F) # regress 64x64 matrix from features F = [ T64 @ f for f in F ]

# --- Step 1 continued: shared per-point MLP (second block) --- F2 = [ MLP_shared_2(f) for f in F ] # each MLP_shared_2: R^64 -> R^1024

# --- Step 2: symmetric aggregation --- g = elementwise_max(F2) # g in R^1024, order-independent

# --- Step 3a: classification head --- class_scores = MLP_classifier(g) # R^1024 -> R^num_classes

# --- Step 3b: segmentation head (uses local + global) --- per_point_scores = [] for f in F: # f is the 64-dim local feature for this point combined = concat(f, g) # R^64 + R^1024 -> R^1088 per_point_scores.append(MLP_segmenter(combined)) return class_scores, per_point_scores ``` Note that the same shared MLP weights MLP_shared_1\text{MLP\_shared\_1} and MLP_shared_2\text{MLP\_shared\_2} are reused for every point in the loop — this weight sharing is what keeps the parameter count independent of nn, and it is the reason the whole pipeline is permutation-safe: swapping two points in the input list only swaps two entries in the output lists `F`, `F2`, and `per_point_scores`, and swapping entries has no effect on an element-wise max or on any downstream computation applied identically to each entry.

Figure
PointNet architecture: shared per-point MLPs feeding a symmetric max-pool
PointNet: shared weights + symmetric pooling p1 p2 p3 pn ⋮ T-Net align 3×3 shared MLP (same weights per point) h(p1) h(p2) h(p3) h(pn) ⋮ max pool global g classifier MLP → class scores per-point MLP (local ⊕ global) → per-point labels dashed: local per-point feature also feeds segmentation head Reordering p1..pn only reorders h(p1)..h(pn); max-pool output g is unchanged.

Complexity & correctness

Time complexity. For nn input points and a shared MLP with total cost cc floating-point operations per point (fixed once the architecture is fixed), the per-point feature stage costs O(nc)O(nc): linear in the number of points. The max-pool aggregation over dd feature channels costs O(nd)O(nd), also linear. The classification head runs once, in O(1)O(1) with respect to nn. The segmentation head, applied per point, costs O(nc′)O(nc') for some fixed c′c'. Total: O(n)O(n) — the same asymptotic order as simply reading the input, which is optimal since every point must be touched at least once. Contrast this with voxelizing the same cloud to resolution rr and running a 3D CNN, which costs O(r3)O(r^3) regardless of how sparse the actual occupied points are — for a LiDAR scan of a large outdoor scene at fine resolution, this can be orders of magnitude more expensive than PointNet's linear scan.

Space complexity. Storing all per-point features requires O(nd)O(nd) memory; storing the input itself is O(n)O(n). This again beats voxel grids, whose memory is O(r3)O(r^3) independent of how many points are actually present — a persistent theme in comparing sparse and dense 3D representations.

Correctness — permutation invariance is exact, not approximate. The claim that PointNet's classification output is exactly permutation-invariant follows directly from function composition, not from training. Let π\pi be any permutation of the input indices. Because the same function hθh_\theta is applied independently to each point (Step 1), permuting the inputs permutes the outputs identically:

hθ(pπ(1)),…,hθ(pπ(n)) is a permutation of hθ(p1),…,hθ(pn).h_\theta(p_{\pi(1)}), \dots, h_\theta(p_{\pi(n)}) \text{ is a permutation of } h_\theta(p_1), \dots, h_\theta(p_n).

Because max⁡\max over a finite set of numbers does not depend on the order in which the numbers are listed — max⁡(a,b,c)=max⁡(c,a,b)\max(a,b,c) = \max(c,a,b) for any a,b,ca,b,c — the aggregated feature gg is identical for any permutation:

g(π)=g(id)for all π.g(\pi) = g(\text{id}) \quad \text{for all } \pi.

Since the classification head is a fixed function of gg alone, the final class scores are exactly permutation-invariant by construction — no amount of adversarial reordering of the input list can change the output. This is a structural guarantee, verifiable by inspecting the computation graph, not a statistical property learned from data.

Expressive power — the symmetric-function universality argument. A natural worry is whether this design, however elegant, is powerful enough: does forcing every point through the same function before a max-pool throw away information that a more general symmetric function could use? The PointNet analysis addresses this with a universal-approximation-style argument. Any continuous symmetric function ff of a set of points can be approximated arbitrarily well by a function of the form

f({p1,…,pn})≈γ(max⁡i=1,…,nh(pi))f(\{p_1,\dots,p_n\}) \approx \gamma\Big(\max_{i=1,\dots,n} h(p_i)\Big)

for suitable continuous hh and γ\gamma, provided the max-pooled dimension dd is large enough. The intuition: hh can be chosen to act like a fine indicator, mapping each point (or small region of point-space) to a distinct "slot" in a high-dimensional feature, so that max-pooling over these slots reconstructs (to arbitrary precision) an encoding of the entire subset of space covered by the point cloud, from which any continuous symmetric function can then be computed by γ\gamma. This is analogous to how the Stone–Weierstrass theorem lets polynomials approximate any continuous function on a compact set: here, sufficiently rich per-point embeddings plus a symmetric readout approximate any continuous symmetric set function. The takeaway is that PointNet's architecture is not a heuristic simplification with a hidden ceiling — it is, in the limit of enough hidden units, as expressive as any function respecting the same symmetry.

A practical caveat on this guarantee. The universality result is asymptotic in feature width dd and is a statement about approximability, not about what a network of fixed, finite size and training budget actually learns. In practice, max-pooling means each output channel is "won" by exactly one point (a critical point); the final feature depends only on this small critical-point subset, so fine detail from the interior of an object can be under-represented — a real, documented tradeoff, not a flaw in the invariance argument itself.

Robustness to noise and missing points. Because the max operation is only sensitive to the critical points (those achieving the maximum in each channel), PointNet is empirically robust to inserting extra points, deleting non-critical points, or adding moderate noise: the classification output changes only if noise displaces or removes a critical point. This robustness is a consequence, not a coincidence, of the max-based aggregation — a mean-pool alternative would instead spread every point's influence over the output, making it more sensitive to the exact density of noise, but arguably smoother.

Worked example

Consider a toy point cloud representing an "L" shape versus a "line," reduced to 2D for hand-tracing (the same argument extends unchanged to 3D). Suppose the shared per-point function hh (after training, illustrative values) maps each 2D point (x,y)(x,y) to a 2-dimensional feature via

h(x,y)=(x+y,  x−y).h(x,y) = \big(x + y,\ \ x - y\big).

Cloud A (an "L" shape), given in one order:

point(x,y)(x,y)h(x,y)=(x+y, x−y)h(x,y) = (x+y,\ x-y)
p1p_1(0,0)(0,0)(0,0)(0, 0)
p2p_2(1,0)(1,0)(1,1)(1, 1)
p3p_3(2,0)(2,0)(2,2)(2, 2)
p4p_4(0,1)(0,1)(1,−1)(1, -1)
p5p_5(0,2)(0,2)(2,−2)(2, -2)

Max-pooling element-wise across the five feature vectors:

gA=(max⁡(0,1,2,1,2), max⁡(0,1,2,−1,−2))=(2,2).g_A = \big(\max(0,1,2,1,2),\ \max(0,1,2,-1,-2)\big) = (2, 2).

Same cloud A, permuted order (p4,p1,p5,p3,p2)(p_4, p_1, p_5, p_3, p_2):

point (new order)(x,y)(x,y)h(x,y)h(x,y)
p4p_4(0,1)(0,1)(1,−1)(1,-1)
p1p_1(0,0)(0,0)(0,0)(0,0)
p5p_5(0,2)(0,2)(2,−2)(2,-2)
p3p_3(2,0)(2,0)(2,2)(2,2)
p2p_2(1,0)(1,0)(1,1)(1,1)

Max-pooling this reordered list gives, again, g=(max⁡(1,0,2,2,1),max⁡(−1,0,−2,2,1))=(2,2)g = (\max(1,0,2,2,1), \max(-1,0,-2,2,1)) = (2, 2) — identical to gAg_A, confirming the invariance argument concretely: the same five feature vectors appear, only relisted, and max does not care about list order.

Cloud B (a straight "line"), for contrast:

point(x,y)(x,y)h(x,y)h(x,y)
q1q_1(0,0)(0,0)(0,0)(0,0)
q2q_2(1,1)(1,1)(2,0)(2,0)
q3q_3(2,2)(2,2)(4,0)(4,0)
q4q_4(3,3)(3,3)(6,0)(6,0)
gB=(max⁡(0,2,4,6), max⁡(0,0,0,0))=(6,0).g_B = (\max(0,2,4,6),\ \max(0,0,0,0)) = (6, 0).

The global features gA=(2,2)g_A = (2,2) and gB=(6,0)g_B = (6,0) are different, so a classifier head can separate the two shapes — but note the critical points: in cloud A, the maximum of channel 1 is achieved by both p3=(2,0)p_3=(2,0) and p5=(0,2)p_5=(0,2) (tied at value 2), and the maximum of channel 2 is achieved solely by p3=(2,0)p_3=(2,0). Points p1,p2,p4p_1, p_2, p_4 never determine either output channel here; under this particular trained hh, they could be perturbed or removed without changing gAg_A at all — a direct, hand-checkable illustration of the robustness-to-noise property discussed above.

Common pitfalls & traps

PitfallWhy it happensFix
Using a plain FC layer on concatenated point coordinatesConcatenation order becomes a hidden, meaningless feature the network memorizesUse per-point shared MLP + symmetric pooling (PointNet-style)
Assuming mean-pool and max-pool are interchangeableMean-pool is also symmetric, but spreads gradient/influence over all points, changing robustness and critical-point behaviorChoose pooling to match the desired sensitivity; max is standard for classification, but test alternatives
Ignoring density variation across a scan (near points dense, far points sparse)Real LiDAR scans have distance-dependent density; a network naively trained on uniform density degrades far awayUse density-aware sampling / normalization, or hierarchical local grouping (as in PointNet++)
Treating T-Net's learned matrix as a guaranteed exact rigid alignmentT-Net is learned, not a closed-form registration; it approximates canonicalization but is not provably exact for all inputsRegularize the feature-transform matrix toward orthogonality; do not assume perfect pose invariance
Forgetting that PointNet has no explicit local neighborhood structure in its base formPer-point MLP sees each point in isolation before pooling, missing fine local geometric context (e.g., surface curvature)Use hierarchical local grouping extensions, or combine with neighbor-aware layers
Comparing point-cloud model FLOPs to image-CNN FLOPs without normalizing by input sizenn (point count) and image resolution are not the same "size" unit; naive comparisons misleadCompare against a fixed sensing budget (e.g., points per scan) or wall-clock time on matched hardware

Pioneers & history

The move from hand-crafted 3D descriptors to end-to-end geometry-aware deep learning was driven by researchers straddling computer vision, graphics, and robotics.

Origins · 1 minCharles R. Qi and how this was discovered
CR
Charles R. Qi
active 2010s–present · Stanford Vision Lab; PointNet and PointNet++ lead author

Qi's work, alongside Hao Su, Kaichun Mo, and Leonidas Guibas, reframed 3D deep learning around the point cloud as a native input rather than a representation to be converted away. PointNet (2017) demonstrated that a carefully symmetric architecture, not a bespoke convolution, was the right unit of design for unordered geometric data — a conceptual shift as consequential for 3D vision as convolutional weight-sharing was for images.

History
2015
— voxel-based 3D CNNs (e.g., VoxNet, 3D ShapeNets) apply grid convolutions to occupancy volumes, at high memory cost.
2017
— PointNet introduces a permutation-invariant architecture that consumes raw point clouds directly, with a universal-approximation argument for symmetric set functions.
2017
— PointNet++ adds hierarchical local neighborhood grouping, giving the architecture multi-scale local context that plain PointNet lacks.
2019–2020
— graph-based and continuous-convolution point networks (e.g., DGCNN, KPConv) generalize local neighborhood aggregation for finer geometric detail.
2020
s — implicit neural representations and neural radiance fields extend geometry-aware deep learning from discrete point/voxel/mesh representations toward continuous, differentiable scene functions.

Where this matters

Autonomous vehicles run point-cloud networks derived from this lineage on every LiDAR sweep to detect and segment pedestrians, vehicles, and road boundaries in real time, where the O(n)O(n) scaling of a PointNet-style backbone is essential given hundred-thousand-point scans arriving at ten scans per second. Robotic manipulation systems use point-cloud segmentation to identify graspable object parts from depth-camera scans, where scan order is never guaranteed and permutation invariance is a hard requirement, not a nicety. Augmented and virtual reality headsets fuse sparse depth-sensor point clouds into scene meshes for occlusion-aware rendering, relying on efficient point-based feature extraction to run within tight mobile power budgets. Medical imaging pipelines convert segmented organ surfaces (from CT or MRI) into point clouds or meshes for shape analysis and surgical planning, where symmetric aggregation over irregularly sampled anatomical points is unavoidable. Industrial quality inspection scans manufactured parts with structured-light or LiDAR sensors and compares the resulting point cloud against a CAD model, again requiring order-independent, noise-robust matching. The same geometry-aware principles — building invariances directly into architecture rather than hoping data augmentation teaches them — carry forward into Neural Radiance Fields, which represent scenes as continuous implicit functions rather than discrete points, and into Human Pose Estimation, which reconstructs an articulated 3D skeleton (itself an unordered-in-part, structured-in-part point set) from images or depth data, and which shares PointNet's basic insight that the representation's symmetries must be respected before any accuracy can be trusted.

Ask the tutor: How does PointNet++ modify the base PointNet architecture to capture local neighborhood geometry, and why does that fix the critical-point information bottleneck?

Why can't we just voxelize a point cloud and use a normal 3D CNN?

Voxelizing converts an unordered point set into a regular grid, so ordinary 3D convolutions apply directly, avoiding the permutation problem entirely. The cost is memory and compute that scale as O(r3)O(r^3) in grid resolution rr, regardless of how sparse the actual scanned surface is — most voxels in a typical scene are empty. Fine geometric detail also gets quantized away at coarse resolutions, and increasing resolution to recover detail quickly becomes computationally infeasible. Point-based methods like PointNet instead scale linearly in the number of points actually sensed, and preserve exact coordinates rather than snapping them to a grid, at the cost of needing specially designed symmetric architectures rather than off-the-shelf convolutions.

Is max-pooling the only valid symmetric aggregation function?

No — any function insensitive to the order of its arguments qualifies, including sum, mean, and more elaborate attention-weighted combinations. Max-pooling is popular in PointNet because it naturally implements a "does some point exhibit this feature" selection, which experimentally proved robust and discriminative, and it also underlies the theoretical universal-approximation argument for the architecture. Sum and mean pooling are also symmetric and used in later point-based and graph-based networks, particularly when preserving information about how many points exhibit a property (rather than only the strongest example) matters, such as in density-sensitive tasks.

Does PointNet capture local geometric structure, like curvature or edges?

The original PointNet architecture processes each point independently before pooling, so it has no explicit mechanism for a point to know about its immediate geometric neighbors before the final aggregation — it primarily captures global shape through the pooled feature and per-point coordinates. This is a genuine limitation for fine-grained tasks like distinguishing subtly curved surfaces. PointNet++, the direct successor, addresses this by recursively partitioning the point cloud into local neighborhoods, running small PointNet-style modules within each neighborhood, and pooling hierarchically — analogous to how stacking convolutional layers builds up receptive field in image CNNs.

How does PointNet handle point clouds of different sizes, since neural networks usually expect fixed-size input?

The shared per-point MLP has a fixed number of parameters regardless of how many points are processed, since the same small function is applied independently to each point one at a time (or in a batched, vectorized way). The subsequent max-pooling aggregation reduces however many per-point feature vectors exist down to one fixed-size global vector, because max over any number of elements produces a single value per channel. This means PointNet naturally accepts point clouds with n=500n = 500 or n=50,000n = 50{,}000 points without architectural changes, though in practice a fixed nn is often used per batch for GPU efficiency via padding or subsampling.

What is the connection between PointNet's ideas and neural radiance fields?

PointNet solves geometry-aware learning by respecting the symmetry of its input (order-invariance) rather than hoping a generic network learns that symmetry from data. Neural radiance fields extend this philosophy one step further: instead of representing a scene as a discrete set of points or voxels, they represent it as a continuous implicit function mapping any 3D coordinate and viewing direction to color and density, sidestepping discretization altogether. Both approaches share the core lesson that matching an architecture's built-in structure to the true structure of 3D geometry — whether that structure is permutation symmetry or spatial continuity — yields far more efficient and accurate models than forcing image-style architectures onto 3D problems.

Why does PointNet's robustness to noise matter in practice, and what are its limits?

Real depth sensors and LiDAR produce noisy, incomplete point clouds with dropped points, spurious returns, and density variation with distance, so a fragile architecture would fail constantly in deployment. Because PointNet's global feature depends only on the small set of critical points achieving each max-pooled channel's maximum, moderate noise or missing non-critical points leaves the output largely unchanged, which is empirically validated by testing under point dropout and jitter. The limit is that noise or occlusion affecting the critical points themselves — for instance, sensor noise that shifts the extremal point defining an object's silhouette — can still change predictions meaningfully, so robustness is real but not absolute.

How does a point cloud relate to a mesh or an implicit surface representation?

A point cloud is a raw, unstructured sample of a surface with no explicit connectivity between points, typically the direct output of a 3D sensor. A mesh adds explicit topology — vertices connected into edges and faces — turning the same underlying surface into a representation suitable for efficient rendering and simulation, usually built from a point cloud via a reconstruction algorithm. An implicit representation instead stores a continuous function (like a signed distance field) whose zero level-set defines the surface, requiring no discrete points or faces at all and enabling smooth, differentiable optimization, which is the foundation later exploited by neural radiance fields and related methods.

Before this

Where this leads