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.
Checking the stable version of the documentation...
SpriteBase3D¶
继承: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
派生: AnimatedSprite3D, Sprite3D
3D 环境中的 2D 精灵节点。
描述¶
在 3D 环境中显示 2D 纹理信息的节点。另请参阅 Sprite3D,其中定义了许多其他属性。
属性¶
|
||
|
||
|
||
|
||
|
||
Vector3.Axis |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
方法¶
generate_triangle_mesh ( ) const |
|
get_draw_flag ( DrawFlags flag ) const |
|
get_item_rect ( ) const |
|
void |
set_draw_flag ( DrawFlags flag, bool enabled ) |
枚举¶
enum DrawFlags:
DrawFlags FLAG_TRANSPARENT = 0
如果设置,纹理的透明度和不透明性用于使精灵的这些部分不可见。
DrawFlags FLAG_SHADED = 1
如果设置,环境中的灯光会影响精灵。
DrawFlags FLAG_DOUBLE_SIDED = 2
如果启用,则纹理也可以从背面看到。如果未启用,则纹理从后面查看时不可见。
DrawFlags FLAG_DISABLE_DEPTH_TEST = 3
禁用深度测试,所以这个对象被画在所有其他对象的上面。但是,在绘制顺序中,在它之后绘制的对象可能会覆盖它。
DrawFlags FLAG_FIXED_SIZE = 4
标签会根据深度进行缩放,从而在屏幕上始终以相同的大小显示。
DrawFlags FLAG_MAX = 5
代表 DrawFlags 枚举的大小。
enum AlphaCutMode:
AlphaCutMode ALPHA_CUT_DISABLED = 0
这个模式会进行标准的 Alpha 混合。可以显示半透明区域,但透明材质存在重叠时可能会暴露透明度排序问题。
AlphaCutMode ALPHA_CUT_DISCARD = 1
该模式仅允许完全透明或完全不透明的像素。除非启用了某种形式的屏幕空间抗锯齿(请参阅 ProjectSettings.rendering/anti_aliasing/quality/screen_space_aa),否则会看到粗糙的边缘。从好的方面来说,当多个透明材质重叠时,该模式不会出现透明度排序问题。这种模式也被称为 alpha 测试或 1 位透明度。
AlphaCutMode ALPHA_CUT_OPAQUE_PREPASS = 2
该模式在深度预渲染阶段绘制完全不透明的像素。这比 ALPHA_CUT_DISABLED 或 ALPHA_CUT_DISCARD 慢,但它允许在使用正确排序的同时显示半透明区域和平滑边缘。
AlphaCutMode ALPHA_CUT_HASH = 3
该模式绘制时会截断所有低于空间确定性阈值的值,其余值将保持不透明。
属性说明¶
float alpha_antialiasing_edge = 0.0
将在 Alpha 通道上应用抗锯齿的阈值。
AlphaAntiAliasing alpha_antialiasing_mode = 0
void set_alpha_antialiasing ( AlphaAntiAliasing value )
AlphaAntiAliasing get_alpha_antialiasing ( )
要应用的 Alpha 抗锯齿类型。见 AlphaAntiAliasing。
AlphaCutMode alpha_cut = 0
void set_alpha_cut_mode ( AlphaCutMode value )
AlphaCutMode get_alpha_cut_mode ( )
该精灵的 Alpha 裁剪模式。可能的取值见 AlphaCutMode。
float alpha_hash_scale = 1.0
Alpha Hash 的哈希比例。推荐 0
和 2
之间的值。
float alpha_scissor_threshold = 0.5
Alpha 裁剪丢弃数值的阈值。
Vector3.Axis axis = 2
void set_axis ( Vector3.Axis value )
Vector3.Axis get_axis ( )
纹理正面朝向的方向。
BillboardMode billboard = 0
void set_billboard_mode ( BillboardMode value )
BillboardMode get_billboard_mode ( )
该精灵使用的公告板模式。可能的值见 BillboardMode。
bool centered = true
如果为 true
,纹理将被居中。
bool double_sided = true
如果为 true
,则从后面也可以看到纹理,如果为 false
,则从后面看它是不可见的。
bool fixed_size = false
如果为 true
,则无论距离远近,标签都以相同的尺寸呈现。
bool flip_h = false
如果为 true
,纹理将被水平翻转。
bool flip_v = false
如果为 true
,纹理将被垂直翻转。
Color modulate = Color(1, 1, 1, 1)
用于乘以纹理颜色的颜色值。可用于氛围着色或模拟光的颜色。
注意:如果在 SpriteBase3D 上定义了 GeometryInstance3D.material_override,则必须配置该材质,让它的反照率考虑顶点颜色。否则 modulate 中定义的颜色将被忽略。对于 BaseMaterial3D,BaseMaterial3D.vertex_color_use_as_albedo 必须为 true
。对于 ShaderMaterial,必须将 ALBEDO *= COLOR.rgb;
,插入到着色器的 fragment()
函数中。
bool no_depth_test = false
如果为 true
,深度测试被禁用,对象将按渲染顺序绘制。
Vector2 offset = Vector2(0, 0)
纹理的绘图偏移量。
float pixel_size = 0.01
精灵上一个像素宽度的大小,以 3D 缩放。
int render_priority = 0
设置该精灵的渲染优先级。优先级高的物体将被排序在优先级低的物体前面。
注意:仅在 alpha_cut 为 ALPHA_CUT_DISABLED(默认值)时适用。
注意:仅适用于透明物体的排序。这不会影响透明物体相对于不透明物体的排序方式。这是因为不透明对象不被排序,而透明对象则从后往前排序(取决于优先级)。
bool shaded = false
如果为 true
,则 Environment 中的 Light3D 对该精灵有影响。
TextureFilter texture_filter = 3
void set_texture_filter ( TextureFilter value )
TextureFilter get_texture_filter ( )
纹理的过滤标志。选项见 TextureFilter。
bool transparent = true
如果为 true
,纹理的透明度和不透明度用于使精灵的这些部分不可见。
方法说明¶
TriangleMesh generate_triangle_mesh ( ) const
返回一个 TriangleMesh,其中精灵的顶点遵循它的当前配置(例如它的 axis 和 pixel_size)。
bool get_draw_flag ( DrawFlags flag ) const
返回指定标志的值。
Rect2 get_item_rect ( ) const
返回表示此精灵的矩形。
void set_draw_flag ( DrawFlags flag, bool enabled )
如果 true
,则指定的标志将被启用。标志列表见 DrawFlags。