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)
var mesh = new ArrayMesh();
mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, new BoxMesh().GetMeshArrays());
var mdt = new MeshDataTool();
mdt.CreateFromSurface(mesh, 0);
for (var i = 0; i < mdt.GetVertexCount(); i++)
{
Vertex Vector3 = mdt.GetVertex(i);
// У цьому прикладі ми розширюємо сітку на одну одиницю, що призводить до розділених граней, оскільки вона заштрихована.
vertex += mdt.GetVertexNormal(i);
// Збережіть зміни.
mdt.SetVertex(i, vertex);
}
mesh.ClearSurfaces();
mdt.CommitToSurface(mesh);
var mi = new MeshInstance();
mi.Mesh = mesh;
AddChild(mi);
Дивіться також ArrayMesh, ImmediateMesh і SurfaceTool для створення процедурної геометрії.
Примітка: Godot використовує порядок намотування за годинниковою стрілкою для передніх граней примітивних режимів трикутника.
Посібники
Методи
Описи методів
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.
Повертає кількість країв в цьому 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, оскільки ребра складаються з двох вершин.
Повертає кількість обличчя в цьому 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 index = meshDataTool.GetFaceVertex(0, 1); // Отримує індекс другої вершини першої грані.
Vector3 position = meshDataTool.GetVertex(index);
Vector3 normal = meshDataTool.GetVertexNormal(index);
Повертає формат 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) 🔗
Налаштовує тангенс даної вершини.
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) 🔗
Встановлює кісткові маси даної вершини.