Blender3D Basics

Game asset rules: a checklist for polygons, textures, origin, scale, names, LOD, and collision before sending Blender models to a game engine

We build one game prop (a barrel) in Blender 5.2 and bring it into Godot 4.7.2, and turn the rules a game model should follow into a checklist: polygon count, texture size, origin, applied scale, names, LOD, and collision shapes. We also compare, on real screens, how a version with the wrong origin and scale looks in the engine.

AZTechnology20 min read

한국어English

Based on: Blender 5.2 LTS (screenshots from 5.2.1, English UI, default keymap), Godot 4.7.2 stable (Windows, English UI), and the official Godot 4.7, Unity 6.6, and Unreal Engine 5.8 docs. Checked on November 4, 2026. All figures are real Blender and Godot screens. The red numbers and boxes were added for explanation. The Blender screenshots use a large UI scale, so the text looks big.

A model that looks great in Blender can end up half buried in the floor in a game engine, collide strangely, or stay heavy even when it is far away. A model for video only has to look good in one render. A model for a game is drawn dozens of times per second, used for physics, and found by code through its name. So there are more rules to follow.

This is part 5 of the series "Solo game development with Blender, AI, and a game engine." We make one barrel prop in Blender 5.2, bring it into Godot 4.7.2, and go through a seven-line checklist for game assets: polygons, textures, origin, scale, names, LOD, and collision shapes. Every setting in the export window is covered in From Blender to Godot 4.7 with glTF, so this guide focuses on what the model itself needs.

By the end of this guide, you will be able to:

  1. Read a game model's triangle count in Blender.
  2. Put the origin at the bottom center and apply the scale.
  3. Export a collision shape together with the model, using name suffixes that Godot recognizes.
  4. See how the LOD that Godot makes automatically changes.
  5. Find the naming rules that change when you send models to Unity or Unreal.

1. The checklist first

#ItemRuleWhere to check
1PolygonsMatch how big it appears on screen. Know the triangle countBlender statistics overlay (section 2)
2TexturesPower-of-two sizes recommended (512, 1024, 2048); 4096 or less for mobile and webImage size (section 3)
3OriginBottom center for props that stand on the groundThe object origin dot (section 4)
4ScaleScale 1.000, real size in metersObject tab Scale, Dimensions (section 5)
5NamesNames the code will look for, suffixes and prefixes the engine readsOutliner (section 6)
6LODDraw less when far away. Automatic in Godot, naming rules in Unity and UnrealDraw count in the engine (section 7)
7Collision shapeSeparate from the visible shape, and simpleThe engine's node tree (section 8)

It is like checking a parcel before you ship it. You weigh it (polygons and textures), mark which side is the bottom (origin), write down the size, stick on a label (name), and add packing material (collision shape).

2. Polygons: know the number

A polygon is a face that makes up a model. A game engine splits every face into triangles to draw it, so game models are weighed by triangle count. If vertices, edges, and faces are new to you, read Polygons and topology first.

Starting point: Start from a new file (File > New > General) and delete the default cube, camera, and light.

Follow along:

  1. Add a cylinder with Add > Mesh > Cylinder. In the Adjust Last Operation panel at the bottom left, set Vertices 32, Radius 0.4 m, Depth 1 m, and Location Z 0.5 m. This makes a 1 m tall barrel whose bottom touches Z 0.
  2. In the Modifier tab (wrench icon), add Bevel, set Amount 0.03 m, Segments 3, Limit Method Angle, then Apply it. The rims become slightly round. Bevel is covered in detail in The Bevel modifier.
  3. Rename the object to Barrel.
  4. In the Overlays menu at the top right of the 3D Viewport, turn on Statistics. Vertex, edge, face, and triangle counts appear at the top left of the viewport ((1) in Figure 1).

Blender screen. A cylinder barrel with a colored grid texture stands in the middle. The statistics at the top left read Objects 1/2, Vertices 256/272, Edges 480/504, Faces 226/236, Triangles 508/536. Box 1 is the Triangles line, box 2 is the orange origin at the bottom center of the barrel, box 3 is Scale X, Y, Z 1.000 in the Object tab on the right, box 4 is the two rows Barrel and Barrel-convcolonly in the outliner at the top right. Location is 0 m on all axes Figure 1. The finished barrel. (1) Triangle count (508 for the selected object / 536 for the whole scene) (2) Origin at the bottom center (3) Scale 1.000 (4) Names (Barrel and the collision object Barrel-convcolonly) (Blender screenshot)

The barrel has 508 triangles. The scene total of 536 includes the 28 triangles of the collision object we make in section 8. Figure 1 shows the screen after adding the texture from section 3 and the collision object from section 8.

There is no fixed right number. It depends on how big the object looks on screen, how many appear at once, and what device runs the game. For reference, in the air defense game test I made with Godot, one launcher truck had 31,360 triangles, the radar truck 30,108, a drone 1,248, and the plan's rough estimate for the whole scene was about 230,000. The game ran with this scene, and the difficulty was tuned over five play sessions. The first rule is do not put a model in without knowing the number; write down the triangle count for each model. The style that uses few faces is covered in Low-poly style basics.

3. Textures: size and compression

A texture is the picture wrapped around a model, like wrapping paper on a gift box. Big paper looks sharp but is heavy.

Starting point: Continue from the barrel in section 2.

Follow along:

  1. In the Material tab, click New to make a material and rename it Barrel_Mat.
  2. In the Shader Editor, add an Image Texture node and click New. Make it Width 1024, Height 1024, Generated Type Color Grid. Name the image Barrel_BaseColor.
  3. Connect the Image Texture's Color to the Principled BSDF's Base Color. In Material Preview, you should see the color grid as in Figure 1.

The texture rules in the Godot 4.7 docs are:

RuleDetails
SizePower-of-two sizes (256, 512, 1024, 2048…) are recommended but not required. Non-square is fine
Mobile and webUsually cannot show textures larger than 4096×4096
CompressionVRAM Compressed is the default for 3D assets. Video memory use usually drops by a factor of 4 to 6
MipmapsStop textures looking grainy at a distance but use about 33% more memory. Recommended for 3D
Size limitThe Size Limit import option can shrink a texture inside the engine only

This barrel, carrying one 1024×1024 image, made a single .glb file of about 250 KB, and Godot also read the texture as 1024×1024 (see the output in section 8). Putting a 4096 texture on a small prop makes almost no visible difference but uses much more memory. Pick the texture size to match how big the object appears on screen.

4. Origin: at the bottom center

The origin is the object's reference point, the small orange dot you see when you select an object in Blender. When code tells the engine "put this at (0, 0, 0)," the engine puts this dot there. It is like the spot where you push a pin: if the pin is in the middle of the barrel, the barrel sinks halfway into the floor when you set it down.

Starting point: Continue from the barrel in section 2. Because you entered Location Z 0.5 m in step 1 of section 2, the origin is now in the middle of the barrel.

Follow along:

  1. With the mouse over the 3D Viewport, press Shift+S → Cursor to World Origin. The 3D cursor moves to the floor center (0, 0, 0).
  2. Click Object > Set Origin > Origin to 3D Cursor. The origin moves to the bottom center of the barrel, and the barrel shape stays in place.
  3. Check that Location in the Object tab is 0 m on all axes (Figure 1).

To compare in the engine, I made one more version done the wrong way: a cylinder with its origin left in the middle, shrunk in Object Mode to the same size without applying the scale.

Blender screen. The same grid barrel crosses the floor grid, with its lower half below the grid, and the origin halfway up the barrel. The Object tab on the right shows BarrelBad, Location 0 m, Scale X 0.400, Y 0.400, Z 0.500. Box 1 is the origin in the middle of the barrel, box 2 is the Scale fields Figure 2. The wrong version (BarrelBad). (1) Origin in the middle of the barrel (2) Scale not applied, so it reads 0.4, 0.4, 0.5 (Blender screenshot)

I exported both versions to glTF (.glb) and placed them at the same spot (height 0) in a Godot scene.

Godot run screen. Two grid barrels on a brown floor. Barrel 1 on the left stands fully on the floor with its shadow touching the floor; barrel 2 on the right has its lower half under the floor and looks about half as tall Figure 3. Both versions placed at height 0. (1) Origin at the bottom center (2) Origin in the middle. The lower half is buried in the floor (Godot run screenshot)

You could lift version (2) by 0.5 m every time in the engine, but then you have to remember that number all over the code. With the origin at the bottom, "put it on the floor" is always just height 0. For objects that rotate, such as a door, put the origin at the hinge. In short, put the origin where the object sits or turns.

5. Scale: apply it to 1.000

1 m in Blender is saved as 1 in glTF and read as 1 unit in Godot. So you can build at real size in Blender. The problem is when you change the size with S in Object Mode and do not apply it. The shape looks right, but the Scale fields hold a value other than 1 ((2) in Figure 2).

Follow along:

  1. Select the object and press Ctrl+A over the 3D Viewport. The Apply menu opens (Figure 4).
  2. Click Scale. If you also rotated it, click All Transforms.
  3. Check that Scale in the Object tab is 1.000, 1.000, 1.000.

Blender's Apply menu showing Location, Rotation, Scale, All Transforms, Rotation & Scale, Location to Deltas, and more. Box 1 is Scale, box 2 is All Transforms. The Object tab behind shows Scale X 0.400, Y 0.400, Z 0.500 Figure 4. The Apply menu opened with Ctrl+A. (1) Scale (2) All Transforms (Blender screenshot)

An unapplied scale goes straight into the engine. When I brought the Figure 2 version into Godot and printed its node tree as text, both the visible mesh and the collision object carried a scale of (0.4, 0.5, 0.4). The axis order changes because Godot uses Y as up.

barrel_bad [Node3D] scale=(1.0, 1.0, 1.0)
  BarrelBad [MeshInstance3D] scale=(0.4, 0.5, 0.4)
  @StaticBody3D@19798 [StaticBody3D] scale=(0.4, 0.5, 0.4)
    CollisionShape3D [CollisionShape3D] shape=ConvexPolygonShape3D

The Godot 4.7 docs advise not to move, rotate, or scale collision shapes, so they can benefit from the engine's internal optimizations. A collision object with a different scale on each axis breaks that advice from the start. So apply the object transform in the modeling program before export. The case where the size comes in 100 times too big and covers the screen is in section 8 of From Blender to Godot 4.7 with glTF.

Decide the front direction too. For Godot, an asset's front should face -Y in Blender, which is the side you see in Blender's front view (numpad 1). In my air defense game test, the models made earlier for video faced +Y, so they came into Godot facing -Z, and the game code was written to move them that way. If you already have many models, matching them in code works. For new models, following the rule from the start is less confusing.

6. Names: labels that code and the engine read

In a game, a name is an address. When code says "find Barrel and roll it," the engine looks for a node with that name in the scene. So follow these rules:

  • Do not leave Blender's default names (Cylinder.001). Give names that show the role.
  • Keep moving parts as separate objects with their own names. The launcher in the air defense game had names like _pack for the missile pack and _cell_0 to _cell_7 for the eight tubes, so the code could raise or empty just that part.
  • Some engines read the end or start of a name and treat it specially. Know these rules so you do not add those letters by accident.
EngineNaming ruleWhat it does
Godot 4.7Ends with -col, -convcolKeeps the visible mesh and adds a collision shape (exact shape / convex shape)
Godot 4.7Ends with -colonly, -convcolonlyRemoves the visible mesh and makes only a collision StaticBody3D
Godot 4.7Ends with -noimpDrops it on import
Godot 4.7Ends with -loopImports the animation set to loop
Unity 6.6Ends with _LOD0, _LOD1…Creates a LOD Group automatically on import. 0 is the most detailed, up to 8 levels
Unreal 5.8Starts with UCX_ (convex), UBX_ (box), UCP_ (capsule), USP_ (sphere) + mesh nameImported as a collision shape. Example: UCX_Barrel_00

Godot's suffixes also work with $ or _ instead of -, and they are not case-sensitive. For example, Rock_COL also triggers the collision rule. If such a name appears by accident, a collision shape may appear or a mesh may vanish without you noticing. In Unreal's UCX_ names, the mesh name after the prefix must exactly match the name of the visible mesh.

7. LOD: draw less when far away

LOD (level of detail) means swapping a distant object for a version with fewer faces. It is like a landscape painting that does not paint every tree on a distant mountain.

Godot 4.7 makes LODs automatically when it imports 3D scenes such as glTF, .blend, and FBX (OBJ is the exception). After importing the barrel, I read the mesh data in Godot and found five extra levels below the original 508 triangles: 254, 126, 62, 30, and 16.

When each level is used is decided by how many pixels of error on screen are acceptable. This value is the LOD threshold, and the default is 1 pixel, tuned so you cannot see the difference. A higher value switches to lower levels sooner: lighter, but rougher.

Camera distanceThreshold 1 (default)Threshold 60
1.6 m508254
6 m50862
20 m25416

The numbers are the triangles Godot actually drew on that screen (my PC, a 1280×720 window, 30° field of view, shadows off). At the default, it drew the full version up to 6 m and halved it at 20 m.

Two Godot run screens drawn as lines only. The left panel labeled 508 shows a barrel with dense vertical lines and rounded top and bottom rims; the right panel labeled 126 shows the same-size barrel with sparse vertical lines and angular rims Figure 5. The barrel drawn as lines at the same distance (3 m). Left: threshold 1 (508 triangles). Right: threshold 60 (126) (Godot run screenshot)

As the right side of Figure 5 shows, raising the threshold a lot makes the model rough even up close. Leave the default at first. If you want to swap hand-made versions by distance, Godot uses Visibility ranges instead of automatic LOD. In Unity you add hand-made versions with the _LOD0 naming rule in the section 6 table, and in Unreal you turn on Import LODs when importing FBX. LOD meshes sent to Unreal should sit in the same place and share the same pivot as the base mesh.

8. Collision shapes: separate and simple

A collision shape is an invisible shape used for physics. It is separate from what the player sees and is only used to work out hits. Like a parcel box: whatever is inside, the box is a simple rectangle. The Godot 4.7 docs group shapes like this:

KindBehaviorWhere to use
Primitive shapes (box, sphere, capsule, and so on)Most reliable and often fastestMoving objects (RigidBody, CharacterBody)
Convex shapesIn betweenSimple objects, moving objects
Concave shapes (triangle mesh)Most accurate but slowestOnly in static objects (StaticBody)

Starting point: Continue from the barrel after section 4.

Follow along:

  1. Add Add > Mesh > Cylinder and, in Adjust Last Operation, set Vertices 8, Radius 0.4 m, Depth 1 m, Location Z 0.5 m. This is an octagonal prism the same size as the barrel.
  2. Move its origin to the bottom center as in steps 1 and 2 of section 4.
  3. Rename it Barrel-convcolonly. This Godot suffix means "convex collision shape only."
  4. In the Object tab, set Viewport Display > Display As to Wire. In Blender it now shows as lines only and does not hide the barrel.

Blender screen in X-Ray. An octagonal prism drawn in orange lines surrounds the barrel. The outliner at the top right shows Barrel and the selected Barrel-convcolonly, the Object tab name field reads Barrel-convcolonly, and Scale is 1.000. Box 1 is the octagonal prism, box 2 is the Barrel-convcolonly row in the outliner Figure 6. The octagonal collision prism. (1) A 28-triangle shape around the barrel (2) The name Godot reads (Blender screenshot)

Figure 6 is Solid view with X-Ray on, so both overlapping objects are visible. The visible barrel has 508 triangles; the collision prism has 28.

Follow along (check in the engine):

  1. Export both objects into one file, barrel_good.glb, with File > Export > glTF 2.0 (.glb/.gltf). Keep the default settings.
  2. Put the file in the Godot project folder. Godot imports it by itself.
  3. Drag the .glb into a new scene, right-click the node, and turn on Editable Children. The inner nodes appear (Figure 7).

Godot 4.7.2 editor in English. The Scene panel on the left shows View, then barrel_good, then Barrel and @StaticBody3D@19799, then CollisionShape3D. The 3D view in the middle shows the grid barrel standing at the center of the grid floor. Box 1 is the node tree in the Scene panel Figure 7. The barrel imported into Godot. (1) The visible mesh Barrel and the collision StaticBody3D and CollisionShape3D (Godot editor screenshot)

Running the same scene and printing the node tree as text gives:

barrel_good [Node3D] scale=(1.0, 1.0, 1.0)
  Barrel [MeshInstance3D] scale=(1.0, 1.0, 1.0) tex=(1024.0, 1024.0)
  @StaticBody3D@19799 [StaticBody3D] scale=(1.0, 1.0, 1.0)
    CollisionShape3D [CollisionShape3D] shape=ConvexPolygonShape3D

The octagonal prism did not come in as a visible mesh. It became a convex collision shape (ConvexPolygonShape3D) under a static physics body (StaticBody3D). Every scale is 1. As the figure and output show, the StaticBody3D came in with a name Godot generated. If your code needs to find this node by name, rename it in the scene after import.

If the barrel will roll or be thrown, the docs' advice points to adding a primitive shape (cylinder, capsule) directly in the engine instead. Making the collision shape in Blender and sending it over is most useful for irregular objects that do not move, such as rocks and buildings.

9. Practice

  1. Rebuild the Figure 1 barrel with Vertices 16 and write down its triangle count.
  2. If you model a door, write down where you would put its origin.
  3. Find in the section 6 table what happens when you send an object named Wall_Col to Godot.
  4. Change the barrel texture to 2048×2048 and check in a Godot scene, from 3 m away, whether you can see a difference.

10. Common mistakes and fixes

SymptomCauseFix
A model placed in the engine is half buried in the floorThe origin is in the middle of the modelShift+S → Cursor to World Origin, then Object > Set Origin > Origin to 3D Cursor (section 4)
The collision node has a strange scale valueThe scale was not applied in BlenderCtrl+A → Scale or All Transforms, then export again (section 5)
The model comes in facing backwardThe front faces +Y in BlenderRotate it so the front shows in front view (numpad 1), then apply
A mesh disappeared in the engineThe name ends with a suffix such as -colonly or -noimpRename it using the section 6 table
A collision shape you did not ask for appearedThe name ends like _col (case does not matter)Rename it
The model looks angular even up closeThe LOD threshold was raised too highSet the LOD threshold in Project Settings back to the default 1 (section 7)
A rolling object goes through walls or bouncesA complex collision shape on a moving objectSwitch to a primitive shape (cylinder, capsule) in the engine (section 8)
Textures do not show on web or mobileThe texture is larger than 4096Shrink it in Blender or use Godot's Size Limit (section 3)

11. Summary

Write down the triangle count, size textures for the screen, put the origin where it sits, keep Scale at 1.000, name by role and watch the suffixes, start with Godot's default LOD, and keep collision shapes separate and simple.

The earlier parts of this series covered the big picture of solo development and how to split the work with AI. To start from the beginning, go to the solo game dev map.

References

KEEP EXPLORING

Read next

The Export submenu opened from the File menu in Blender 5.2.1, listing formats such as FBX, glTF 2.0, Universal Scene Description, Wavefront (.obj), and STL (Blender screenshot)Blender
3D Basics19 min read

A 2026 map of 3D software: when to use Blender, Maya, 3ds Max, Cinema 4D, ZBrush, Houdini, Substance, and Plasticity

What eight widely used 3D programs are good at, their latest versions, how you pay for them (free, subscription, or perpetual), and which operating systems they run on, in one map and one table, plus what to pick when you are just starting.

The Godot run window. A low-poly windmill with a green base, a white tower, a red roof, and four white blades stands on brown ground under a sky (Godot run screenshot)Blender
3D Basics14 min read

From Blender to Godot 4.7 with glTF: exporting, importing, materials, and animation

We export a small windmill model made in Blender 5.2 as a single glTF (.glb) file, bring it into a Godot 4.7.2 project, and walk through import settings, placing it in a scene, light and sky, playing the spinning-blade animation, and running the project. A common mistake that makes models 100 times too big is shown on real screens.

The Unreal Engine 5.8 editor viewport. Two sets of props, each a wooden crate, a barrel, and a red arrow sign, stand on a bright floor. The front set's barrel is white and the back set's barrel is dark metal, with an X/Y/Z axis indicator at the bottom leftBlender
3D Basics15 min read

Moving a Blender scene to Unreal Engine 5.8: FBX and USD export, and checking size, axes, and materials

We export a small prop scene from Blender 5.2 as both FBX and USD, import both into Unreal Engine 5.8, and check what actually arrives: size (meters and centimeters), axes (which way is forward), pivots, materials, and smoothing warnings.

Godot 4.7.2 editor (Korean interface). A red cylinder and a white box on green ground in the 3D view, the scene tree on the left with Main, Ground, Cup, Box, Sun, Camera3D, and 4.7.2.stable at the bottom rightBlender
3D Basics12 min read

Choosing a game engine in 2026: Godot 4.7, Unity 6.6, and Unreal 5.8 for Blender users

What to look at when a Blender user picks a game engine for the first time. Godot, Unity, and Unreal are compared on latest version, pricing, language, and how to bring Blender files in, using official sources, with real screens of Godot and Unreal opened on an 8 GB laptop.

Two Unreal Engine 5.8 viewports side by side. A room with 25 white pillars lit by green, orange, and blue lights. The left is labeled GI Epic (Lumen high), the right GI Medium (Lumen Lite), and the right shows jagged dark marks along the ceiling edgeBlender
3D Basics12 min read

Unreal Engine 5.8 Lumen Lite and MegaLights on an 8 GB laptop: measuring GPU time yourself

On an RTX 4070 Laptop GPU (8 GB), we opened Unreal Engine 5.8.1 and measured GPU time per frame three times each in a room with 48 shadow-casting point lights, changing only GI quality (Epic, High, Medium, Low) and MegaLights on or off. This guide covers where the settings are, the results, how the image changes, and which combination suits an 8 GB laptop.

The Importing & Exporting Files page of the Blender 5.2 manual (screenshot of the official site)Blender
3D Basics13 min read

3D file formats compared: FBX, glTF, OBJ, and USD

OBJ is an envelope, glTF is a shipping box, FBX is a suitcase, and USD is a chest of drawers. A look at how four 3D file formats differ and how to choose between them.