MeshInstance

    Inherited By: SoftBody

    Node that instances meshes into a scenario.

    MeshInstance 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 get 3D geometry rendered and can be used to instance a single in many places. This allows to reuse geometry and save on resources. When a Mesh has to be instanced more than thousands of times at close proximity, consider using a in a MultiMeshInstance instead.

    Tutorials

    Methods

    void

    ( bool clean=true, simplify=false )

    void

    create_debug_tangents ( )

    void

    ( )

    void

    create_trimesh_collision ( )

    Material

    ( int surface ) const

    get_surface_material_count ( ) const

    is_mergeable_with ( other_mesh_instance ) const

    bool

    ( Array mesh_instances=[ ], use_global_space=false, bool check_compatibility=true )

    void

    ( int surface, material )

    • mesh

    The Mesh resource for the instance.


    • skeleton

    Default

    NodePath(“..”)

    Setter

    set_skeleton_path(value)

    Getter

    get_skeleton_path()

    NodePath to the associated with the instance.



    • software_skinning_transform_normals

    Default

    true

    Setter

    set_software_skinning_transform_normals(value)

    Getter

    is_software_skinning_transform_normals_enabled()

    If true, normals are transformed when software skinning is used. Set to false when normals are not needed for better performance.

    See ProjectSettings.rendering/quality/skinning/software_skinning_fallback for details about how software skinning is enabled.

    Method Descriptions

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

    This helper creates a StaticBody child node with a 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 to make the process faster if not needed.

    If simplify is true, the geometry can be further simplified to reduce the amount of vertices. Disabled by default.


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


    • void create_multiple_convex_collisions ( )

    This helper creates a StaticBody child node with multiple collision shapes calculated from the mesh geometry via convex decomposition. It’s mainly used for testing.


    • void create_trimesh_collision ( )

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


    • Material get_active_material ( surface ) const

    Returns the Material that will be used by the when drawing. This can return the GeometryInstance.material_override, the surface override defined in this MeshInstance, or the surface Material defined in the . For example, if GeometryInstance.material_override is used, all surfaces will return the override material.


    • get_surface_material ( int surface ) const

    Returns the override for a surface of the Mesh resource.

    Note: This function only returns override materials associated with this MeshInstance. Consider using or Mesh.surface_get_material to get materials associated with the resource.


    • int get_surface_material_count ( ) const

    Returns the number of surface override materials.


    • is_mergeable_with ( Node other_mesh_instance ) const

    Returns true if this MeshInstance can be merged with the specified , using the function.

    In order to be mergeable, properties of the MeshInstance must match, and each surface must match, in terms of material, attributes and vertex format.


    • bool merge_meshes ( mesh_instances=[ ], bool use_global_space=false, check_compatibility=true )

    This function can merge together the data from several source MeshInstances into a single destination MeshInstance (the MeshInstance the function is called from). This is primarily useful for improving performance by reducing the number of drawcalls and Nodes.

    Merging should only be attempted for simple meshes that do not contain animation.

    The final vertices can either be returned in global space, or in local space relative to the destination MeshInstance global transform (the destination Node must be inside the for local space to work).

    The function will make a final check for compatibility between the MeshInstances by default, this should always be used unless you have previously checked for compatibility using is_mergeable_with. If the compatibility check is omitted and the meshes are merged, you may see rendering errors.

    Note: The requirements for similarity between meshes are quite stringent. They can be checked using the function prior to calling merge_meshes.

    Also note that any initial data in the destination MeshInstance data will be discarded.