Class reference

MeshInstance3D

Inherits GeometryInstance3D

Node that instances meshes into a scenario.

Description

MeshInstance3D is a node that takes a Mesh resource and adds it to the current scenario by creating an instance of it. This is the class most often used to render 3D geometry and can be used to instance a single Mesh in many places. This allows reusing geometry, which can save on resources. When a Mesh has to be instantiated more than thousands of times at close proximity, consider using a MultiMesh in a MultiMeshInstance3D instead.

Properties

Mesh mesh

The Mesh resource for the instance.

Skin skin

The Skin to be used by this instance.

Methods

ArrayMesh bake_mesh_from_current_blend_shape_mix(ArrayMesh existing = null)

Takes a snapshot from the current ArrayMesh with all blend shapes applied according to their current weights and bakes it to the provided existing mesh. If no existing mesh is provided a new ArrayMesh is created, baked and returned. Mesh surface materials are not copied. Performance: Mesh data needs to be received from the GPU, stalling the RenderingServer in the process.

ArrayMesh bake_mesh_from_current_skeleton_pose(ArrayMesh existing = null)

Takes a snapshot of the current animated skeleton pose of the skinned mesh and bakes it to the provided existing mesh. If no existing mesh is provided a new ArrayMesh is created, baked, and returned. Requires a skeleton with a registered skin to work. Blendshapes are ignored. Mesh surface materials are not copied. Performance: Mesh data needs to be retrieved from the GPU, stalling the RenderingServer in the process.

void create_convex_collision(bool clean = true, bool simplify = false)

This helper creates a StaticBody3D child node with a ConvexPolygonShape3D collision shape calculated from the mesh geometry. It's mainly used for testing. If clean is true (default), duplicate and interior vertices are removed automatically. You can set it to false to make the process faster if not needed. If simplify is true, the geometry can be further simplified to reduce the number of vertices. Disabled by default.

void create_debug_tangents()

This helper creates a MeshInstance3D child node with gizmos at every vertex calculated from the mesh geometry. It's mainly used for testing.

void create_multiple_convex_collisions(MeshConvexDecompositionSettings settings = null)

This helper creates a StaticBody3D child node with multiple ConvexPolygonShape3D collision shapes calculated from the mesh geometry via convex decomposition. The convex decomposition operation can be controlled with parameters from the optional settings.

void create_trimesh_collision()

This helper creates a StaticBody3D child node with a ConcavePolygonShape3D collision shape calculated from the mesh geometry. It's mainly used for testing.

int find_blend_shape_by_name(StringName name)

Returns the index of the blend shape with the given name. Returns -1 if no blend shape with this name exists, including when mesh is null.

int get_blend_shape_count() const

Returns the number of blend shapes available. Produces an error if mesh is null.

float get_blend_shape_value(int blend_shape_idx) const

Returns the value of the blend shape at the given blend_shape_idx. Returns 0.0 and produces an error if mesh is null or doesn't have a blend shape at that index.

Dictionary intersect_ray(Vector3 origin, Vector3 dir, bool include_uv = false) const

Performs a ray intersection test against the visual mesh. Returns a Dictionary with the following keys: success, position, normal, surface_index, face_index, and material. The keys surface_index and face_index are indices into their respective mesh data, position and normal returns the position the mesh was intersected at and the normal of the intersected face, and material is the material of the intersected face. If include_uv is true, then the UV and UV2 of the face at the intersected point is calculated and returned as the keys uv and uv2. If the key success is true, then the ray intersected the mesh.

Dictionary intersect_segment(Vector3 from, Vector3 to, bool include_uv = false) const

Performs a line segment intersection test against the visual mesh. Returns a Dictionary with the following keys: success, position, normal, surface_index, face_index, and material. The keys surface_index and face_index are indices into their respective mesh data, position and normal returns the position the mesh was intersected at and the normal of the intersected face, and material is the material of the intersected face. If include_uv is true, then the UV and UV2 of the face at the intersected point is calculated and returned as the keys uv and uv2. If the key success is true, then the segment intersected the mesh.

void set_blend_shape_value(int blend_shape_idx, float value)

Sets the value of the blend shape at blend_shape_idx to value. Produces an error if mesh is null or doesn't have a blend shape at that index.

void set_surface_override_material(int surface, Material material)

Sets the override material for the specified surface of the Mesh resource. This material is associated with this MeshInstance3D rather than with mesh. Note: This assigns the Material associated to the MeshInstance3D's Surface Material Override properties, not the material within the Mesh resource. To set the material within the Mesh resource, use Mesh.surface_set_material() instead.

Tutorials

Source revision 5592dc3a7a61
Connection interrupted. Reload×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.