<?xml version="1.0" encoding="UTF-8" ?>
<class name="MeshInstance" inherits="GeometryInstance" version="3.3">
	<brief_description>
		Node that instances meshes into a scenario.
	</brief_description>
	<description>
		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 [Mesh] 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 [MultiMesh] in a [MultiMeshInstance] instead.
	</description>
	<tutorials>
		<link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
		<link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
		<link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
		<link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
	</tutorials>
	<methods>
		<method name="create_convex_collision">
			<return type="void" />
			<description>
				This helper creates a [StaticBody] child node with a [ConvexPolygonShape] collision shape calculated from the mesh geometry. It's mainly used for testing.
			</description>
		</method>
		<method name="create_debug_tangents">
			<return type="void" />
			<description>
				This helper creates a [MeshInstance] child node with gizmos at every vertex calculated from the mesh geometry. It's mainly used for testing.
			</description>
		</method>
		<method name="create_trimesh_collision">
			<return type="void" />
			<description>
				This helper creates a [StaticBody] child node with a [ConcavePolygonShape] collision shape calculated from the mesh geometry. It's mainly used for testing.
			</description>
		</method>
		<method name="get_active_material" qualifiers="const">
			<return type="Material" />
			<argument index="0" name="surface" type="int" />
			<description>
				Returns the [Material] that will be used by the [Mesh] when drawing. This can return the [member GeometryInstance.material_override], the surface override [Material] defined in this [MeshInstance], or the surface [Material] defined in the [Mesh]. For example, if [member GeometryInstance.material_override] is used, all surfaces will return the override material.
			</description>
		</method>
		<method name="get_surface_material" qualifiers="const">
			<return type="Material" />
			<argument index="0" name="surface" type="int" />
			<description>
				Returns the [Material] for a surface of the [Mesh] resource.
			</description>
		</method>
		<method name="get_surface_material_count" qualifiers="const">
			<return type="int" />
			<description>
				Returns the number of surface materials.
			</description>
		</method>
		<method name="set_surface_material">
			<return type="void" />
			<argument index="0" name="surface" type="int" />
			<argument index="1" name="material" type="Material" />
			<description>
				Sets the [Material] for a surface of the [Mesh] resource.
			</description>
		</method>
	</methods>
	<members>
		<member name="mesh" type="Mesh" setter="set_mesh" getter="get_mesh">
			The [Mesh] resource for the instance.
		</member>
		<member name="skeleton" type="NodePath" setter="set_skeleton_path" getter="get_skeleton_path" default="NodePath(&quot;..&quot;)">
			[NodePath] to the [Skeleton] associated with the instance.
		</member>
		<member name="skin" type="Skin" setter="set_skin" getter="get_skin">
			Sets the skin to be used by this instance.
		</member>
		<member name="software_skinning_transform_normals" type="bool" setter="set_software_skinning_transform_normals" getter="is_software_skinning_transform_normals_enabled" default="true">
			If [code]true[/code], normals are transformed when software skinning is used. Set to [code]false[/code] when normals are not needed for better performance.
			See [member ProjectSettings.rendering/quality/skinning/software_skinning_fallback] for details about how software skinning is enabled.
		</member>
	</members>
	<constants>
	</constants>
</class>
