OverviewFilesCommitsIssuesDocsReleasesPeers

blender-bridge commits / 9a18a03

feat: convert procedural meshes to ArrayMesh on geometry import
BoxMesh/SphereMesh/CylinderMesh can't be updated in-place. Now auto-converts to ArrayMesh when Blender sends vertex changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9a18a03a3c124323b65eef05ae05aabdcceff673
by plankatron <fleeky@gmail.com> · 2026-03-03T00:52:00.000Z

Changed files (1) +14 -10

src/blender_bridge.cpp +14 -10
……@@ -520,19 +520,23 @@ void BlenderBridge::import_changes(Node *root) {
520520 }
521521 }
522522
523 // Rebuild mesh surface (scene-level, not RS-level — RS method is broken)
523 // Rebuild mesh surface — convert to ArrayMesh if needed
524524 Ref<ArrayMesh> arr_mesh = Object::cast_to<ArrayMesh>(mesh_inst->get_mesh().ptr());
525 if (arr_mesh.is_valid()) {
526 Array arrays;
527 arrays.resize(Mesh::ARRAY_MAX);
528 arrays[Mesh::ARRAY_VERTEX] = positions;
529 if (normals.size() > 0) {
530 arrays[Mesh::ARRAY_NORMAL] = normals;
531 }
525 if (!arr_mesh.is_valid()) {
526 // Procedural mesh (BoxMesh, etc.) — replace with ArrayMesh
527 arr_mesh.instantiate();
528 mesh_inst->set_mesh(arr_mesh);
529 }
532530
533 arr_mesh->clear_surfaces();
534 arr_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, arrays);
531 Array arrays;
532 arrays.resize(Mesh::ARRAY_MAX);
533 arrays[Mesh::ARRAY_VERTEX] = positions;
534 if (normals.size() > 0) {
535 arrays[Mesh::ARRAY_NORMAL] = normals;
535536 }
537
538 arr_mesh->clear_surfaces();
539 arr_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, arrays);
536540 }
537541 }
538542