()
| 6 | |
| 7 | |
| 8 | def test_numpy_voxels(): |
| 9 | sphere = mrmesh.makeSphere(mrmesh.SphereParams()) |
| 10 | params = mrmesh.MeshToDistanceVolumeParams() |
| 11 | voxelSize = 0.01 |
| 12 | box = sphere.computeBoundingBox() |
| 13 | expansion = mrmesh.Vector3f.diagonal(3 * voxelSize) |
| 14 | |
| 15 | params.vol.origin = box.min - expansion |
| 16 | params.vol.voxelSize = mrmesh.Vector3f.diagonal(0.01) |
| 17 | dimensionsF = (box.max + expansion - params.vol.origin) / voxelSize |
| 18 | params.vol.dimensions = mrmesh.Vector3i( |
| 19 | int(dimensionsF.x), int(dimensionsF.y), int(dimensionsF.z) |
| 20 | ) + mrmesh.Vector3i.diagonal(1) |
| 21 | params.dist.signMode = mrmesh.SignDetectionMode.HoleWindingRule |
| 22 | params.dist.maxDistSq = 3 * voxelSize |
| 23 | volume = mrmesh.meshToDistanceVolume(sphere, params) |
| 24 | npArray = mrmeshnumpy.getNumpy3Darray(volume) |
| 25 | assert npArray.shape[0] == params.vol.dimensions.x |
| 26 | assert npArray.shape[1] == params.vol.dimensions.y |
| 27 | assert npArray.shape[2] == params.vol.dimensions.z |
nothing calls this directly
no test coverage detected