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.

MeshDataTool

Успадковує: RefCounted < Object

Інструмент для доступу та редагування даних Mesh.

Опис

MeshDataTool надає доступ до окремих вершин у Mesh. Це дозволяє користувачам читати та редагувати дані вершин сіток. Він також створює масив граней і країв.

Щоб використовувати MeshDataTool, завантажте сітку за допомогою create_from_surface(). Коли ви закінчите редагувати дані, зафіксуйте дані в сітці за допомогою commit_to_surface().

Нижче наведено приклад того, як можна використовувати MeshDataTool.

var mesh = ArrayMesh.new()
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, BoxMesh.new().get_mesh_arrays())
var mdt = MeshDataTool new().
mdt.create_from_surface(mesh, 0)
for i in range (mdt.get_vertex_count()):
    var vertex = mdt.get_vertex(i)
    # У цьому прикладі ми розширюємо сітку на одну одиницю, що призводить до розділених граней, оскільки вона заштрихована.
    vertex += mdt.get_vertex_normal(i)
    # Збережіть зміни.
    mdt.set_vertex(i, vertex)
mesh.clear_surfaces()
mdt.commit_to_surface(mesh)
var mi = MeshInstance.new()
mi.mesh = mesh
add_child(mi)

Дивіться також ArrayMesh, ImmediateMesh і SurfaceTool для створення процедурної геометрії.

Примітка: Godot використовує порядок намотування за годинниковою стрілкою для передніх граней примітивних режимів трикутника.

Посібники

Методи

void

clear()

Error

commit_to_surface(mesh: ArrayMesh, compression_flags: int = 0)

Error

create_from_surface(mesh: ArrayMesh, surface: int)

int

get_edge_count() const

PackedInt32Array

get_edge_faces(idx: int) const

Variant

get_edge_meta(idx: int) const

int

get_edge_vertex(idx: int, vertex: int) const

int

get_face_count() const

int

get_face_edge(idx: int, edge: int) const

Variant

get_face_meta(idx: int) const

Vector3

get_face_normal(idx: int) const

int

get_face_vertex(idx: int, vertex: int) const

int

get_format() const

Material

get_material() const

Vector3

get_vertex(idx: int) const

PackedInt32Array

get_vertex_bones(idx: int) const

Color

get_vertex_color(idx: int) const

int

get_vertex_count() const

PackedInt32Array

get_vertex_edges(idx: int) const

PackedInt32Array

get_vertex_faces(idx: int) const

Variant

get_vertex_meta(idx: int) const

Vector3

get_vertex_normal(idx: int) const

Plane

get_vertex_tangent(idx: int) const

Vector2

get_vertex_uv(idx: int) const

Vector2

get_vertex_uv2(idx: int) const

PackedFloat32Array

get_vertex_weights(idx: int) const

void

set_edge_meta(idx: int, meta: Variant)

void

set_face_meta(idx: int, meta: Variant)

void

set_material(material: Material)

void

set_vertex(idx: int, vertex: Vector3)

void

set_vertex_bones(idx: int, bones: PackedInt32Array)

void

set_vertex_color(idx: int, color: Color)

void

set_vertex_meta(idx: int, meta: Variant)

void

set_vertex_normal(idx: int, normal: Vector3)

void

set_vertex_tangent(idx: int, tangent: Plane)

void

set_vertex_uv(idx: int, uv: Vector2)

void

set_vertex_uv2(idx: int, uv2: Vector2)

void

set_vertex_weights(idx: int, weights: PackedFloat32Array)


Описи методів

void clear() 🔗

Очистити всі дані в даний час в MeshDataTool.


Error commit_to_surface(mesh: ArrayMesh, compression_flags: int = 0) 🔗

Додає нову поверхню, вказану Mesh з редагованими даними.


Error create_from_surface(mesh: ArrayMesh, surface: int) 🔗

Використовує вказану поверхню даної Mesh для згортання даних для MeshDataTool.

Потрібні Mesh з примітивним типом Mesh.PRIMITIVE_TRIANGLES.


int get_edge_count() const 🔗

Повертає кількість країв в цьому Mesh.


PackedInt32Array get_edge_faces(idx: int) const 🔗

Повертає масив обличчя, які торкнуться до даного краю.


Variant get_edge_meta(idx: int) const 🔗

Повертає мета інформацію, призначену для даного краю.


int get_edge_vertex(idx: int, vertex: int) const 🔗

Повертає індекс заданої вершини vertex, з'єднаної з ребром за індексом idx.

vertex може бути лише 0 або 1, оскільки ребра складаються з двох вершин.


int get_face_count() const 🔗

Повертає кількість обличчя в цьому Mesh.


int get_face_edge(idx: int, edge: int) const 🔗

Повертає ребро, пов'язане з гранню за індексом idx.

Аргумент edge має бути або 0, 1, або 2, оскільки грань має лише три ребра.


Variant get_face_meta(idx: int) const 🔗

Повертає метадані, пов’язані з цим обличчям.


Vector3 get_face_normal(idx: int) const 🔗

Розрахунок і повернення нормального обличчя даної особи.


int get_face_vertex(idx: int, vertex: int) const 🔗

Повертає вказаний індекс вершини заданої грані.

vertex має мати значення 0, 1 або 2, оскільки грані містять три вершини.

var index = mesh_data_tool.get_face_vertex(0, 1) # Отримує індекс другої вершини першої грані.
var position = mesh_data_tool.get_vertex(index)
var normal = mesh_data_tool.get_vertex_normal(index)

int get_format() const 🔗

Повертає формат Mesh як поєднання прапорів ArrayFormat. Наприклад, сітка, що містить як вершини, так і норми, поверне формат 3, тому що Mesh.ARRAY_FORMAT_VERTEX 1 та Mesh.ARRAY_FORMAT_NORMAL [code2[/code].


Material get_material() const 🔗

Повернення матеріалу, призначеного для Mesh.


Vector3 get_vertex(idx: int) const 🔗

Повертає позицію даної вершини.


PackedInt32Array get_vertex_bones(idx: int) const 🔗

Повертає кістки даної вершини.


Color get_vertex_color(idx: int) const 🔗

Повертає колір даної вершини.


int get_vertex_count() const 🔗

Повертає загальну кількість вершин Mesh.


PackedInt32Array get_vertex_edges(idx: int) const 🔗

Повертає масив країв, які діляться заданими вершинами.


PackedInt32Array get_vertex_faces(idx: int) const 🔗

Повертає масив обличчя, які поділяють надану вершину.


Variant get_vertex_meta(idx: int) const 🔗

Повертає метадані, пов'язані з даної вершини.


Vector3 get_vertex_normal(idx: int) const 🔗

Повертає норма даної вершини.


Plane get_vertex_tangent(idx: int) const 🔗

Повертає тангенс даної вершини.


Vector2 get_vertex_uv(idx: int) const 🔗

Повертає УФ даної вершини.


Vector2 get_vertex_uv2(idx: int) const 🔗

Повертає УФ2 даної вершини.


PackedFloat32Array get_vertex_weights(idx: int) const 🔗

Повертає кісткові маси даної вершини.


void set_edge_meta(idx: int, meta: Variant) 🔗

Встановлює метадані даного краю.


void set_face_meta(idx: int, meta: Variant) 🔗

Налаштовує метадані даного обличчя.


void set_material(material: Material) 🔗

Налаштовує матеріал для використання новоствореними Mesh.


void set_vertex(idx: int, vertex: Vector3) 🔗

Встановлює позицію заданої вершини.


void set_vertex_bones(idx: int, bones: PackedInt32Array) 🔗

Налаштовує кістки даної вершини.


void set_vertex_color(idx: int, color: Color) 🔗

Встановлює колір даної вершини.


void set_vertex_meta(idx: int, meta: Variant) 🔗

Налаштовує метадані, пов'язані з даної вершини.


void set_vertex_normal(idx: int, normal: Vector3) 🔗

Налаштовує норма даної вершини.


void set_vertex_tangent(idx: int, tangent: Plane) 🔗

Встановлює дотичну заданої вершини.

Примітка: Хоча tangent є Plane, він безпосередньо не представляє дотичну площину. Його Plane.x, Plane.y та Plane.z представляють вектор дотичної, а Plane.d має бути або -1, або 1. Див. також Mesh.ARRAY_TANGENT.


void set_vertex_uv(idx: int, uv: Vector2) 🔗

Встановлює УФ даної вершини.


void set_vertex_uv2(idx: int, uv2: Vector2) 🔗

Встановлює УФ2 даної вершини.


void set_vertex_weights(idx: int, weights: PackedFloat32Array) 🔗

Встановлює кісткові маси даної вершини.