Spreadsheet: Add Volume grid's active voxel count #105515

Closed
Erik Abrahamsson wants to merge 1 commits from erik85/blender:ss-voxel-count into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
1 changed files with 9 additions and 1 deletions

View File

@ -426,7 +426,7 @@ void VolumeDataSource::foreach_default_column_ids(
return;
}
for (const char *name : {"Grid Name", "Data Type", "Class"}) {
for (const char *name : {"Grid Name", "Data Type", "Class", "Active Voxels"}) {
SpreadsheetColumnID column_id{(char *)name};
fn(column_id, false);
}
@ -474,6 +474,14 @@ std::unique_ptr<ColumnValues> VolumeDataSource::get_column_values(
return IFACE_("Unknown");
}));
}
if (STREQ(column_id.name, "Active Voxels")) {
return std::make_unique<ColumnValues>(
IFACE_("Active Voxels"), VArray<int>::ForFunc(size, [volume](int64_t index) {
const VolumeGrid *volume_grid = BKE_volume_grid_get_for_read(volume, index);
openvdb::GridBase::ConstPtr grid = BKE_volume_grid_openvdb_for_read(volume, volume_grid);
return grid->activeVoxelCount();
}));
}
#else
UNUSED_VARS(column_id);
#endif