A set of simple Godot 3D nodes for extruding and instancing 3D meshes along a Path3D. Implemented as a GDExtension in C++ for speed.
Click the AssetLib
button at the top of the Godot editor and search for PathMesh3D
. When prompted where to install it, you can select only the folder named "addons". If you wish to modify or recompile the addon, then you'll need to include the "godot-cpp" and "src" folders along with the "SConstruct" file from this repository.
Head over to the PathMesh3D page on the asset library website and click the download button. Unzip the download into a location of your choosing. To put the addon in your project, just copy the "addons" folder into the project directory.
You can download the full repository for PathMesh3D here. You can clone this repository by doing git clone https://github.com/iiMidknightii/PathMesh3D.git
in the directory of your choosing. If you want to compile your own binaries this is the best option. To put the addon in your project, just copy the "addons" folder into the project directory.
Note
PathMesh3D
and PathExtrude3D
both have a plugin button to generate baked meshes and collision shapes. In the editor, you can enable this button by enabling the PathMesh3D
plugin.
PathMesh3D
is a great node if you want to take a 3D model and "tile" or "repeat" it along a Path3D
node within your scene. The Mesh
model provided will be duplicated along its Z axis according to the settings chosen for each surface. Since each surface has its own independent settings, there is a high degree of customization available.
Simply add the PathMesh3D
node to the scene, set its path_3d
property to a Path3D
node, and set its mesh
property to any Mesh
derived resource. From there, you can tweak the settings for each surface to get your desired effect. If you want to create a permanent, separate node as a "snapshot" of the extruded mesh, hit the PathMesh3D
button on the editor toolbar and select "Bake Mesh". You can also create collision shapes and static bodies similarly to MeshInstance3D
with that same button.
PathExtrude3D
works similarly to the CSGPolygon
node when in path mode. First, you define the cross section using the profile
property. This property uses any one of the PathExtrudeProfileBase
classes, including rectangular, circular, etc. You can also create your own profile by creating a custom script inheriting from PathExtrudeProfileBase
and overriding the virtual _generate_cross_section
method. This resource stores the points as a PackedVector2Array
that will be used by the PathExtrude3D
. Next, set the path_3d
property to any Path3D
node in the scene. From there, the cross section will be extruded according to the settings you have chosen.
PathMultiMesh3D
works similarly to PathMesh3D
, but instead of creating one combined mesh, it generates the instances of a MultiMesh
resource along the path. Just set the mesh
property to a MultiMesh
(and select a base mesh for it). Then, set the path_3d
property to a Path3D
node in the scene. The node will automatically set the MultiMesh
instance_count
property and distribute their transforms along the path according to the selected settings.
- 1.2 - Updated
PathExtrude3D
normals generation and fleshed out the profile vertex data generation. In addition, also added base mesh rotation toPathMesh3D
so the input mesh can be tiled along a specified local rotation.
Feel free to leave any feedback, suggestions, bug reports, and contributions to the repository at https://github.com/iiMidknightii/PathMesh3D.