Check out our latest project ✨ OpenChapter.io: free ebooks the way its meant to be 📖

Goshapes: Curve-based Modelling and Level Building

An asset by daleblackwood
The page banner background of a mountain and forest
Goshapes: Curve-based Modelling and Level Building thumbnail image
Goshapes: Curve-based Modelling and Level Building thumbnail image
Goshapes: Curve-based Modelling and Level Building hero image

Quick Information

0 ratings
Goshapes: Curve-based Modelling and Level Building icon image
daleblackwood
Goshapes: Curve-based Modelling and Level Building

Goshapes provides intuitive, curve-based level creation tools for Godot 4.This tool augments Path3D nodes with abilities to: - create custom block meshes (earth, buildings, etc) - create path meshes (fences, paths, roads) - scatter instances (trees, rocks, grass, etc)This makes it ideal for quickly putting together 3D environments.

Supported Engine Version
4.1
Version String
1.4.1
License Version
MIT
Support Level
community
Modified Date
6 months ago
Git URL
Issue URL

Goshapes for Godot 4

README goshapes1

Intuitive path-based level creation for Godot 4

Goshapes makes it easier to rapidly generate level geometry in Godot 4.

This tool augments Path3D nodes with the following abilities:

  • create custom block meshes (earth, buildings, etc)
  • create path meshes (fences, paths, roads)
  • scatter instances (trees, rocks, grass, etc)

This makes it ideal for quickly putting together 3D environments.

Goshapes wraps your custom meshes to a path you specify in the editor: README goshapes1

You can also use paths to procedurally place instances: README goshapes2 ^ Notice that the trees above both snap to ground and ignore the footpath. This can be toggled by layer masks.

Screenshots

What's New in 1.3

Goshapes 1.3 has been released Sept 12th, 2024. Some new features include:

  • Wider compatibility with Godot 4.2.x, 4.3.x
  • Added Mound Caps and Curved Walls
  • Gaps in Mesh Walls
  • Support for LOD wall meshes, colliders
  • Threaded building
  • Segmented wall mesh (in testing) which allows for caching and better threaded building

Installation

To install, use the Godot Asset Library or clone this repository into the addons folder of your Godot 4 project, so that its path in your project is res://addons/goshapes.

Demo Scenes

A few sample scenes, and some sample shape styles and materials have been included under the addons/goshapes/samples folder. Have a play around there, it should help demonstrate what's possible. Some of these include:

  • WallMeshLoop: demonstrates how to use a mesh as a shape wall, including using caps
  • SampleIsland: contains a combination of most shaper types including block shapers, wall mesh shapers and scatter shapers
  • SampleLineShape: demonstrates how the line function works

Editor Tools

Goshapes works mainly in the inspector. You can add a new Goshape through the add menu or the Goshapes menu in the top toolbar.

Inspector

README image

The inspector will always have shape native properties and path options. Path options can be copied between shapes, while shape native properties are individual. The data for shapes is contained within Resources. This means you can rapidly assemble shapes using preset styles and options or set to local to set custom for each shape.

For a Goshape, all functions and configurations can be achieved using the inspector.

  • Axis matched editing is useful for inorganic shapes like buildings or structures. When enabled it will caused axis-aligned points to move with the point you're currently editing.
  • Invert and recenter alow you to change the direction and origin respectively.

Inspector: Block Options

Alongside that, there's the Path Options which can be copied between shapes.

  • Flatten will force the path to flatten the Y axis, which is useful when you're editing flat surfaces for a player or NPC to traverse.
  • Twist will allow you to bend the path in weird and wonderful ways for shapes like corkscrews and vertical spirals.
  • Line will cause the shape to extrude along the path instead of filling the path. This is useful for footpaths, roads and fences.
  • Rounding will round the edges of the shape by the desired distance
  • Interpolate affects the detail of the shape
  • Points On Ground will cause the points to align to the surface below them using Raycasting
  • Offset Y shifts the shape up or down
  • Ground Placement Mask will affect which objects are selected in a Points On Ground raycast

Choosing Shapers

README image

The Shaper Resource: The thing that tells a Goshape what to generate

The Shaper Resource contains the data that is used as instructions for what to generate within the Goshape. You can use these to have your Goshape generate geometry or objects using the type of Shaper used.

Shapers can be picked from the top of the GoShape inspector (Shaper must be expanded.)

BlockShapers: The main geometry generator

README image

Blockshapers are the main Shaper type for rendering geometry, they combine up to three Shapers to make geometry: the CapShaper, the WallShaper and the BottomShaper. For the most part, this is automatic.

The CapShaper (generates a cap at the top, best used as part of a BlackShaper)

There are three cap shaper types: Flat, Plane and Line. Flat and Plane are great for building most shapes (with Plane containing more detail) and Line is useful when using the line PathOption (see above). These three methods alter the triangulation technique used for the caps.

README image

All Cap shapers take a material and render its UVs 1:1 in world space.

The WallShapers (generates a wall around the path, best used as part of a BlackShaper)

There are two wall shaper types: Bevel and Mesh. Bevel will generate a straight wall and allows tapering and bevelling. MeshWall is the most useful, allowing you to create custom geometry and wrap it to a wall. There are some tricks to creating that geometry, that I go into below (see Making Mesh Walls).

README image

The ScatterShaper: Useful for randomly placing objects within an area

README image

A ScatterShaper allows for as many instances as is needed within an area:

  • Density controls how likely an instance is to spawn
  • Spread changes how far apart the instances are (actual distance from neighbour is between 0 and spread * 2
  • Seed changes the random seed
  • Place on ground causes the genernated instances to be placed on the ground using Raycasting
  • Noise lets you override the inbuilt random function with a noise texture
  • Evenness changes how well aligned the instances are to each other. The higher the value, the less organic the scatter selection is.

Contribution Policy

I will endeavour to review any pull requests on Github that fix, optimise or compliment existing functionality without changing the nature of previously generated output. Please note that, while I'm a hobbyist and may sometimes take a little while to respond, I do enjoy and welcome the code contributions of others.

Goshapes provides intuitive, curve-based level creation tools for Godot 4.

This tool augments Path3D nodes with abilities to:
- create custom block meshes (earth, buildings, etc)
- create path meshes (fences, paths, roads)
- scatter instances (trees, rocks, grass, etc)

This makes it ideal for quickly putting together 3D environments.

Reviews

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
Goshapes: Curve-based Modelling and Level Building icon image
daleblackwood
Goshapes: Curve-based Modelling and Level Building

Goshapes provides intuitive, curve-based level creation tools for Godot 4.This tool augments Path3D nodes with abilities to: - create custom block meshes (earth, buildings, etc) - create path meshes (fences, paths, roads) - scatter instances (trees, rocks, grass, etc)This makes it ideal for quickly putting together 3D environments.

Supported Engine Version
4.1
Version String
1.4.1
License Version
MIT
Support Level
community
Modified Date
6 months ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers