Skip to content
Snippets Groups Projects
Unverified Commit daed14e2 authored by David Sehnal's avatar David Sehnal Committed by GitHub
Browse files

Merge pull request #588 from midlik/picking-whole-isosurfaces

New volume isosurface param pickingGranularity: voxels|surfaces
parents 7db82c5b 9ea6f511
No related branches found
No related tags found
No related merge requests found
...@@ -38,7 +38,7 @@ function print(volume: Volume) { ...@@ -38,7 +38,7 @@ function print(volume: Volume) {
} }
async function doMesh(volume: Volume, filename: string) { async function doMesh(volume: Volume, filename: string) {
const mesh = await Task.create('', runtime => createVolumeIsosurfaceMesh({ runtime }, volume, Theme.createEmpty(), { isoValue: Volume.IsoValue.absolute(1.5) })).run(); const mesh = await Task.create('', runtime => createVolumeIsosurfaceMesh({ runtime }, volume, Theme.createEmpty(), { isoValue: Volume.IsoValue.absolute(1.5), pickingGranularity: 'voxels' })).run();
console.log({ vc: mesh.vertexCount, tc: mesh.triangleCount }); console.log({ vc: mesh.vertexCount, tc: mesh.triangleCount });
// Export the mesh in OBJ format. // Export the mesh in OBJ format.
......
...@@ -32,7 +32,8 @@ import { BaseGeometry } from '../../mol-geo/geometry/base'; ...@@ -32,7 +32,8 @@ import { BaseGeometry } from '../../mol-geo/geometry/base';
import { ValueCell } from '../../mol-util/value-cell'; import { ValueCell } from '../../mol-util/value-cell';
export const VolumeIsosurfaceParams = { export const VolumeIsosurfaceParams = {
isoValue: Volume.IsoValueParam isoValue: Volume.IsoValueParam,
pickingGranularity: PD.Select<'voxels' | 'surfaces'>('voxels', [['voxels', 'Voxels'], ['surfaces', 'Surfaces']]),
}; };
export type VolumeIsosurfaceParams = typeof VolumeIsosurfaceParams export type VolumeIsosurfaceParams = typeof VolumeIsosurfaceParams
export type VolumeIsosurfaceProps = PD.Values<VolumeIsosurfaceParams> export type VolumeIsosurfaceProps = PD.Values<VolumeIsosurfaceParams>
...@@ -67,7 +68,11 @@ function getLoci(volume: Volume, props: VolumeIsosurfaceProps) { ...@@ -67,7 +68,11 @@ function getLoci(volume: Volume, props: VolumeIsosurfaceProps) {
function getIsosurfaceLoci(pickingId: PickingId, volume: Volume, props: VolumeIsosurfaceProps, id: number) { function getIsosurfaceLoci(pickingId: PickingId, volume: Volume, props: VolumeIsosurfaceProps, id: number) {
const { objectId, groupId } = pickingId; const { objectId, groupId } = pickingId;
if (id === objectId) { if (id === objectId) {
return Volume.Cell.Loci(volume, Interval.ofSingleton(groupId as Volume.CellIndex)); if (props.pickingGranularity === 'surfaces') {
return Volume.Isosurface.Loci(volume, props.isoValue);
} else {
return Volume.Cell.Loci(volume, Interval.ofSingleton(groupId as Volume.CellIndex));
}
} }
return EmptyLoci; return EmptyLoci;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment