Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

MultiMesh

Inherits: Resource < RefCounted < Object

使用 GPU 实例提供单一网格的高性能多次绘制。

Description

MultiMesh 提供了低级别的网格实例化功能。绘制数以千计的 MeshInstance3D 节点可能会很慢,因为每个对象都要提交给 GPU 然后单独绘制。

MultiMesh 要快得多,因为它可以通过一次绘制调用来绘制成千上万的实例,从而减少 API 的开销。

缺点是,如果实例之间的距离太远,性能可能会降低,因为每一个实例总是会被渲染(对于整个对象,它们在空间上被索引为一个)。

由于实例可能具有任何行为,因此用于可见性的 AABB 必须由用户提供。

注意:MultiMesh 是单个对象,因此适用相同的对每个对象的最大灯光限制。这意味着,一旦最大灯光被一个或多个实例消耗了,其余的 MultiMesh 实例将不会接收任何光照。

注意:在 MultiMesh 中使用的 Blend Shape 将被忽略。

Tutorials

Properties

PackedFloat32Array

buffer

PackedFloat32Array()

PackedColorArray

color_array

PackedColorArray

custom_data_array

int

instance_count

0

Mesh

mesh

PackedVector2Array

transform_2d_array

PackedVector3Array

transform_array

TransformFormat

transform_format

0

bool

use_colors

false

bool

use_custom_data

false

int

visible_instance_count

-1

Methods

AABB

get_aabb ( ) const

Color

get_instance_color ( int instance ) const

Color

get_instance_custom_data ( int instance ) const

Transform3D

get_instance_transform ( int instance ) const

Transform2D

get_instance_transform_2d ( int instance ) const

void

set_instance_color ( int instance, Color color )

void

set_instance_custom_data ( int instance, Color custom_data )

void

set_instance_transform ( int instance, Transform3D transform )

void

set_instance_transform_2d ( int instance, Transform2D transform )


Enumerations

enum TransformFormat:

TransformFormat TRANSFORM_2D = 0

使用 2D 变换时使用此选项。

TransformFormat TRANSFORM_3D = 1

使用 3D 变换时使用此选项。


Property Descriptions

PackedFloat32Array buffer = PackedFloat32Array()

There is currently no description for this property. Please help us by contributing one!


PackedColorArray color_array

set_instance_color


PackedColorArray custom_data_array

set_instance_custom_data


int instance_count = 0

  • void set_instance_count ( int value )

  • int get_instance_count ( )

将被绘制的实例数。这会清除缓冲区,并(重新)调整其大小。之后设置的数据格式或标志将无效。

默认情况下,所有实例都会被绘制,但可以使用 visible_instance_count 来限制它。


Mesh mesh

  • void set_mesh ( Mesh value )

  • Mesh get_mesh ( )

要被实例化的 Mesh 资源。

各个实例的外观可以通过 set_instance_colorset_instance_custom_data 来修改。


PackedVector2Array transform_2d_array

set_instance_transform_2d


PackedVector3Array transform_array

set_instance_transform


TransformFormat transform_format = 0

用于变换网格的变换格式,可以是 2D 或 3D。


bool use_colors = false

  • void set_use_colors ( bool value )