LRM: Large Reconstruction Model for Single Image to 3D is the 2023 research paper that showed a single large transformer could look at one picture of an object and predict a full 3D version of it in seconds. If you build games with AI, this paper sits behind a lot of the image-to-3D tools you have tried, so it is worth understanding what it does, what its open-source version can and cannot give you, and how to turn a single image into a 3D asset you can actually ship.
This guide covers the architecture in plain language, the follow-up models, how to run OpenLRM on your own machine, the licensing trap that catches game developers, and a practical pipeline for game-ready characters.
What is LRM: Large Reconstruction Model for Single Image to 3D?
The paper LRM: Large Reconstruction Model for Single Image to 3D was submitted to arXiv on 8 November 2023 by Yicong Hong, Kai Zhang and colleagues, and it was accepted at ICLR 2024. Its claim is simple: give the model one image of an object and it predicts a 3D model of that object within about 5 seconds.
Two things made it notable:
- Scale. Earlier single-image methods were often trained on small datasets such as ShapeNet, one category at a time (only chairs, only cars). LRM uses a transformer with about 500 million learnable parameters. A transformer is the same family of neural network used in large language models; it processes data as a sequence of tokens and learns how they relate.
- Data. The model was trained end to end on multi-view data covering around 1 million objects: synthetic renders from Objaverse (a large public library of 3D models) and real captures from MVImgNet (videos of real objects filmed from many angles).
The result generalises to images it never saw, including phone photos and pictures made by image generators. That last point matters for game developers: it is why “generate a concept image, then lift it to 3D” became a workable pipeline.
Before models like this, getting 3D from images usually meant photogrammetry: shoot dozens of photos, match features between them, and align the resulting point clouds through point-set registration, the process of finding the rotation, translation and scale that line up two sets of 3D points. LRM skips all of that. It has learned, from a million objects, what the hidden side of a thing probably looks like, so one view is enough to make a confident guess.
How does LRM work? Encoder, triplane and NeRF
The LRM design has three stages. You do not need to understand the maths to use it, but knowing the stages explains the strengths and the artefacts you will see.
1. The image encoder
The input image is cut into small patches and passed through a pretrained vision encoder, which turns each patch into a feature vector, a list of numbers describing what is in that patch. The open-source version uses a DINOv2 encoder for this step.
2. The image-to-triplane decoder
A transformer decoder converts those image features into a triplane: three flat 2D feature grids aligned with the X, Y and Z axes, like the three walls in the corner of a room. To find out what exists at any point in 3D space, you project that point onto each of the three planes, read the features there and combine them. A triplane is far cheaper to store than a full 3D grid while still describing a whole volume.
3. The NeRF renderer
The triplane features feed a small network that predicts colour and density at any 3D point. That is a NeRF (neural radiance field): a scene stored as a function you can query, rather than as triangles. To render an image, you shoot rays from a virtual camera through the volume and add up colour and density along each ray. During training, the model renders its prediction from other viewpoints and compares those renders with real views of the same object, which is how it learns to guess the unseen sides.
To get a mesh (the triangles a game engine needs), the NeRF’s density field is sampled on a grid and converted into a surface. That conversion step is where game-specific problems start, which we will get to.

What came after LRM: OpenLRM, GS-LRM, Instant3D and others
The paper started a family of “large reconstruction models”. Here is how the main names relate, so the related papers make sense.
| Project | Input | Output | What changed |
|---|---|---|---|
| LRM | One image | Triplane NeRF | The original large transformer approach |
| OpenLRM | One image | Triplane NeRF, video or mesh | Open-source reimplementation with public weights |
| Instant3D | Text prompt | 3D object | Generates a few consistent views first, then reconstructs from them |
| GS-LRM | A few posed images | 3D Gaussian splats | Swaps NeRF for Gaussian primitives |
| CRM | One image | Textured mesh | Convolutional reconstruction aimed at mesh output |
| Long-LRM, Real3D | Varies | Varies | Longer input sequences; training on real single-view photos |
A “posed” image is one where the camera position is known. Gaussian splats represent a scene as many small coloured blobs, which render quickly and look sharp, but they are still not triangle meshes. For game work, the column to watch is “Output”: anything that is not a clean mesh needs conversion before it behaves like a normal asset in a game engine.
How to run OpenLRM yourself (with code)
The original LRM weights were not published as a download, so most people who want to try the LRM: Large Reconstruction Model for Single Image to 3D approach hands-on use OpenLRM, an open-source implementation released in December 2023. Version 1.1, from March 2024, added weights trained on both Objaverse and MVImgNet.
Pick a model size
OpenLRM publishes six checkpoints: small, base and large, each trained either on Objaverse only (“obj”) or Objaverse plus MVImgNet (“mix”).
- Small: 12 layers, 224-pixel input. Lightest on memory.
- Base: 12 layers, 336-pixel input. The default for the Hugging Face demo.
- Large: 16 layers, 448-pixel input. Most detail, most memory.
The “mix” models have seen real photos, so they tend to be the better pick for camera images; for clean AI concept art either family can work.
Install and run
You need Python, a CUDA-capable GPU and PyTorch 2.1 or newer (the project was tested on 2.1.2). Prepare an RGBA image, or an RGB image on a plain white background; strip backgrounds first. Then:
git clone https://github.com/3DTopia/OpenLRM.git
cd OpenLRM
pip install -r requirements.txt
# Weights download automatically on first run
EXPORT_VIDEO=true
EXPORT_MESH=true
INFER_CONFIG="./configs/infer-b.yaml"
MODEL_NAME="zxhezexin/openlrm-mix-base-1.1"
IMAGE_INPUT="./assets/sample_input/owl.png"
python -m openlrm.launch infer.lrm --infer $INFER_CONFIG \
model_name=$MODEL_NAME image_input=$IMAGE_INPUT \
export_video=$EXPORT_VIDEO export_mesh=$EXPORT_MESH
Use infer-b.yaml for base models and infer-s.yaml for small ones. The README also asks you to install xFormers for memory-efficient attention in the encoder. If you run out of GPU memory, lower frame_size in the inference config. Training your own model is a different story: the sample config assumes eight GPUs.





