CSGPolygon3D in Godot – Complete Guide

Exploring the versatility and power of Godot 4’s CSGPolygon3D can ignite anyone’s journey into the world of game development. With the ability to easily and quickly transform 2D shapes into rich 3D meshes, understanding this tool opens doors to creating intricate levels and complex objects with minimal coding effort. Whether you’re at the start of your development career, looking to prototype a new game concept, or seeking to expand your Godot knowledge, diving into CSGPolygon3D offers a plethora of creative opportunities.

What is CSGPolygon3D?


stands for Constructive Solid Geometry Polygon, a class in Godot Engine 4 that specializes in creating 3D objects from 2D polygons. It simplifies the process of developing 3D models by allowing developers to focus on designing the base shape, which the tool then extrudes into a three-dimensional form. This feature greatly accelerates the prototyping phases of game development and can be a game-changer for bringing conceptual designs to life.

What is it used for?

The primary purpose of


is to assist in level prototyping and to provide a quick method for constructing 3D models in Godot 4. By using this class, you can create a variety of shapes, from simple structures like walls and platforms to more complex designs such as pillars, arches, or even intricate level layouts. This flexibility makes it an excellent tool for game designers who wish to iterate quickly on their level design without requiring detailed 3D modeling software.

Why Should I Learn It?

Learning to manipulate


is invaluable for anyone involved in creating 3D environments in Godot 4. It’s a skill that:

– Boosts your level design efficiency by allowing rapid creation and modification of 3D geometry.
– Provides a non-destructive workflow, meaning you can adjust and refine level designs without starting from scratch.
– Enhances your prototyping capabilities—essential in the early stages of game development to test ideas and gameplay mechanics.
– Offers a user-friendly introduction to 3D modeling concepts for beginners, without overwhelming them with more complex 3D modeling tools.

By the end of this tutorial, you’ll have a firm grasp on how to utilize this potent feature, enabling you to transform flat drawings into immersive 3D worlds with ease.

CTA Small Image

Setting Up the CSGPolygon3D Node

To begin utilizing


, you first need to add the node to your scene in Godot 4. Here’s how you can start:

# Step 1: Create a new scene or select an existing one.
# Step 2: Click on the 'Add Node' button in the Scene Panel.
# Step 3: Look for CSGPolygon3D in the search bar and select it to add to your scene.

Once added, you’ll see a new


node in the scene tree. With the node selected, in the Inspector window, you’ll find properties that can be tweaked to define your shape.

Configuring Your First Shape

With the


node selected, we’ll set up a simple shape—a cube:

# In the 'Polygon' section of the Inspector, edit the 'Polygon' array to define your shape.
# For a cube, add four Vector2 points to form a square in a clockwise direction.
polygon = PoolVector2Array([
    Vector2(0, 0),
    Vector2(1, 0),
    Vector2(1, 1),
    Vector2(0, 1)

# Set the depth of the extrusion to give your cube volume.
depth = 1

In the Inspector, you can adjust these settings to fine-tune your cube’s size and position.

Extruding the Shape into 3D

Extrusion is what turns your 2D polygon into a 3D model. Let’s extrude the previously defined cube shape:

# With the CSGPolygon3D node selected:
# In the Inspector, find the 'Depth' property and set a value greater than 0.
depth = 100

Adjusting the ‘Depth’ value will extend the shape into the third dimension. You’ll immediately see the changes in the viewport.

Creating More Complex Shapes

Beyond simple cubes,


allows for the creation of complex shapes:

# Adjust the 'Polygon' points to create a more interesting shape, like a star.
polygon = PoolVector2Array([
    Vector2(0, 0),
    Vector2(0.5, 1),
    Vector2(1, 0),
    Vector2(0, 0.5),
    Vector2(1, 0.5)

# You can also adjust the 'Mode' property to switch between different extrusion types:
mode = CSGPolygon3D.MODE_EXTRUDE

The ‘Mode’ property supports different extrusion modes, such as path extrusion or spin extrusion, offering various ways to manipulate your shapes further.

Tweaking Spin Extrusion

For objects like pillars or vases, the spin mode is particularly useful. Here’s how you can set up a spin extrusion:

# Make sure the 'Mode' is set to spin.
mode = CSGPolygon3D.MODE_SPIN

# Define number of spins (degrees of the full extrusion - 360 for a full circle)
spin_degrees = 360

# Define the number of steps (the more steps, the smoother the extrusion)
spin_sides = 64

As you increase the ‘spin_sides’, the smoother the curvature of the extrusion becomes, allowing for high-detail models. Experiment with these settings to craft the desired look for your game’s 3D objects.Creating a path extrusion opens up the possibility of making more intricate and winding shapes. This can be useful for creating things like roads, rails, or even customized pipes.

# Select or create a Path node for your CSGPolygon3D to follow.
# Convert the polygon into a 'Path' node.
mode = CSGPolygon3D.MODE_PATH

# Attach a 'Path' node as a child of the CSGPolygon3D node.
# Draw a curve in the Path node using the 'Edit Path' tool.
# Set your CSGPolygon3D node to follow the Path.
path_node = $Path

When you prepare the ‘Path’ node and draw its curve, your


geometry will extrude along the curve, taking the shape that you’ve defined.

Another way to use the power of


is to create hollow structures with the “invert” feature. Using this technique, you can design rooms, tunnels, or any space where the inside geometry is as important as the outside.

# Invert the extrusion to create a hollow shape.
invert = true

By simply toggling the ‘invert’ property, your extruded shape will flip inside out, creating a hollow space. This is particularly useful for architectural visualization or game environments where internal structures are key.

Combining shapes can also create more complex structures. You can refine the geometry of your model by adding or subtracting other CSG nodes.

# Add a CSGBox node as a child of your main CSGPolygon3D node.
# Set the operation of the CSGBox to subtraction to carve out space.

Setting the ‘operation’ property on a child CSG node to subtraction will result in the child’s geometry being subtracted from the parent, allowing you to create cut-outs or complex interlocking structures.

For cases where natural or more organic shapes are required, manipulating the ‘Polygon’ points dynamically can be particularly powerful.

# Use a script to dynamically change the polygon points.
# This can be used for animating the shape or responding to gameplay.
polygon[2] = Vector2(sin(OS.get_ticks_msec() * 0.001) * 10, 1)

By using a script to update the polygon points over time, such as oscillating them with sine and cosine functions, you’ll create living, dynamic structures that react to time or player input.

Lastly, tweaking the ‘Smooth Faces’ option can greatly affect the visual style of your 3D model.

# Enable 'Smooth Faces' to give your 3D model a smoother appearance.
smooth_faces = true

Enabling ‘smooth_faces’ calculates the normals of the vertices in such a way that the lighting appears smooth across the surface, which is excellent for organic or less angular models.

By exploring these features, you’re taking full advantage of what


offers within Godot 4, and you’re on your way to mastering quick, efficient, and creative 3D modeling in your game development projects. Remember to experiment with various settings, combine different nodes, and always iterate on your designs to achieve the best results for your game.Now that you have the basics down for creating simple and hollow shapes with


, let’s delve deeper into the versatility of this tool with more code examples for your Godot projects.

Combining materials and textures with


nodes can significantly enhance the visual appeal of your models. Here’s how to apply a material to shape:

# Create or select an existing Material resource.
var material = SpatialMaterial.new()

# Apply the material to the CSGPolygon3D node.
material_node.material = material

Materials can include various shaders, textures, and effects that give life to your 3D geometry. When applied to the


, the material wraps around the extruded shape reflecting the properties you’ve set, like albedo color, metallic surface, or roughness.

Next, let’s look at dynamically changing the shape through user input. This can be useful in interactive applications or games where the environment can change:

# In a script attached to the CSGPolygon3D node, you can modify the polygon based on user input.
if Input.is_action_just_pressed("ui_accept"):
    polygon = PoolVector2Array([
        Vector2(rand_range(0, 1), rand_range(0, 1)),
        Vector2(rand_range(0, 1), rand_range(0, 1)),
        Vector2(rand_range(0, 1), rand_range(0, 1))

This script randomly changes the shape of the


when the user presses the ‘Accept’ button, illustrating how you can create interactive and dynamic elements within your scene.

For a more advanced example, you can use scripts to animate the extrusion process, creating a sense of movement or growth:

# Assuming you have a 'depth' variable that you want to animate over time.
func _process(delta):
    depth = wrapf(depth + delta, 0, 100)
    $CSGPolygon3D.depth = depth

In this snippet, we’re slowly increasing the ‘depth’ value of the


node, creating an animation where the shape seems to grow. The ‘wrapf’ function ensures that the depth value stays within a specified range.

If you need to make non-uniform adjustments to your shape, manipulating individual vertices can give you the precision you need:

# Adjust individual points of the polygon array to create non-uniform shapes.
polygon[0] = Vector2(polygon[0].x, polygon[0].y + 0.1)
polygon[1] = Vector2(polygon[1].x + 0.1, polygon[1].y)

By manipulating coordinates of the polygon array, you can achieve non-uniform scaling or transformation effects, allowing your geometry to adapt and fit perfectly within your game’s environment.

Combining these tools and techniques opens a world of possibilities in Godot 4.


not only provides a straightforward way to create complex 3D models but also introduces flexibility and dynamism in your game designs. Remember, the beauty of Godot and CSGPolygon3D lies in experimentation, so don’t be afraid to play around with the settings and scripts to discover unique effects and designs that will make your game stand out!

Embarking on Your Godot Development Journey

Congratulations on taking your initial steps into the transformative world of 3D modeling with Godot 4’s CSGPolygon3D! With these foundational skills in your toolkit, the horizon of game development widens, promising an exciting array of possibilities. We encourage you to keep exploring, keep experimenting, and, most importantly, keep learning.

To further your education and mastery in game development with this powerful engine, consider diving into our comprehensive Godot Game Development Mini-Degree. Take advantage of this meticulously crafted course collection, designed to guide you through the creation of cross-platform games, from handling 2D and 3D assets to intricate combat mechanics. Suitable for all skill levels, this Mini-Degree will support you in building a robust portfolio with practical projects.

If you’re thirsting for a broader scope of topics, our wide array of Godot courses is your oasis. Every course at Zenva is created to cater not only to beginners but also to seasoned developers seeking to polish their skills. With our project-based learning approach, you have the luxury of progressing at your own pace while gaining hands-on experience. Embrace the journey, and let’s craft remarkable gaming experiences together.


Mastering CSGPolygon3D within Godot 4 is a gateway to unlocking the full potential of your game development aspirations. Whether etching the intricate details of a majestic castle or molding the vast expanse of an alien terrain, the skills you’ve acquired today will be the bricks and mortar of your game design dreams. Embrace the power of Godot’s geometry tools – they’re just the beginning of an adventure filled with creation and innovation!

As you wield these new skills, remember that every great developer was once a beginner, piecing together their first polygon. We at Zenva are here to support every step of your journey, offering high-quality, industry-relevant courses to elevate your game from a playful idea to a playable reality. Continue to sculpt your future in game development with our resources, and let’s build worlds beyond imagination, together.

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.