Remove requirement to have vertex positions when creating a mesh. Meshes can now be constructed from an index buffer alone
This commit is contained in:
@ -201,7 +201,9 @@ Ref<TriangleMesh> Mesh::generate_triangle_mesh() const {
|
||||
continue;
|
||||
}
|
||||
int len = (surface_get_format(i) & ARRAY_FORMAT_INDEX) ? surface_get_array_index_len(i) : surface_get_array_len(i);
|
||||
if ((primitive == PRIMITIVE_TRIANGLES && (len == 0 || (len % 3) != 0)) || (primitive == PRIMITIVE_TRIANGLE_STRIP && len < 3)) {
|
||||
if ((primitive == PRIMITIVE_TRIANGLES && (len == 0 || (len % 3) != 0)) ||
|
||||
(primitive == PRIMITIVE_TRIANGLE_STRIP && len < 3) ||
|
||||
(surface_get_format(i) & ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY)) {
|
||||
// Error was already shown, just skip (including zero).
|
||||
continue;
|
||||
}
|
||||
@ -211,6 +213,7 @@ Ref<TriangleMesh> Mesh::generate_triangle_mesh() const {
|
||||
|
||||
int vc = surface_get_array_len(i);
|
||||
Vector<Vector3> vertices = a[ARRAY_VERTEX];
|
||||
ERR_FAIL_COND_V(vertices.is_empty(), Ref<TriangleMesh>());
|
||||
const Vector3 *vr = vertices.ptr();
|
||||
|
||||
int32_t from_index = widx / 3;
|
||||
|
||||
@ -144,6 +144,7 @@ public:
|
||||
ARRAY_FLAG_USE_DYNAMIC_UPDATE = RS::ARRAY_FLAG_USE_DYNAMIC_UPDATE,
|
||||
ARRAY_FLAG_USE_8_BONE_WEIGHTS = RS::ARRAY_FLAG_USE_8_BONE_WEIGHTS,
|
||||
|
||||
ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = RS::ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY,
|
||||
};
|
||||
|
||||
virtual int get_surface_count() const;
|
||||
|
||||
Reference in New Issue
Block a user