Selection Use Cases
From K-3D
Overview
Doing some "thinking out loud" on selection:
- We assume that the visible_selection flag has been removed, and that a new property in MeshInstance controls whether component selections are shown or not.
- We assume that selection_weight defaults to 0.0 for components (currently it defaults to 1.0).
- Note in cases 3.3 and 4.3 that interactive deselections by the user must be encoded as explicit deselections - that is, they cannot be encoded as ignore selections even though the default weight is 0.0. This is so upstream selections can be overridden.
Step | Action | Selection Mode | Pipeline | Modifier1 Selection | Modifier2 Selection | MeshInstance Selection | MeshInstance Visibility | Notes |
---|---|---|---|---|---|---|---|---|
Use case 1: apply a modifier in object mode | ||||||||
1 | object | source -> sink | explicit ignore all | hide component selection | The mesh instance selection doesn't matter because the selection state of components isn't drawn anyway. | |||
2 | apply modifier | object | source -> modifier1 -> sink | explicit select all | explicit ignore all | hide component selection | The modifier1 selection must explicitly select everything, since components have a default selection weight of 0.0. | |
Use case 2: apply a modifier in object mode with upstream selection | ||||||||
1 | object | source -> modifier1 -> sink | contains explicit selections, or the modifier alters the selection | explicit ignore all | hide component selection | The mesh instance selection doesn't matter because the selection state of components isn't drawn anyway. | ||
2 | apply modifier | object | source -> modifier1 -> modifier2 -> sink | unchanged | explicit select all | explicit ignore all | hide component selection | The modifier2 selection must explicitly select everything, since its inputs could be in any state. |
Use case 3: apply a modifier in component mode | ||||||||
1 | object | source -> sink | <doesn't matter> | hide component selection | ||||
2 | change mode | component | source -> sink | explicit ignore all | show component selection | |||
3 | apply modifier | component | source -> modifier1 -> sink | explicit selections & deselections | explicit ignore all | show component selection | The mesh instance selection must be set to "explicit ignore all" so the upstream selection is still visible. | |
Use case 4: apply a modifier in component mode with upstream selection | ||||||||
1 | object | source -> modifier1 -> sink | Contains explicit selections, or the modifier alters the selection. | explicit ignore all | hide component selection | |||
2 | change mode | component | source -> modifier1 -> sink | unchanged | explicit ignore all | show component selection | The mesh instance selection must be set to explicit ignore all, so the upstream selection can become visible. | |
3 | apply modifier | component | source -> modifier1 -> modifier2 -> sink | unchanged | explicit selections & deselections | explicit ignore all | show component selection | The mesh instance selection must be set to explicit ignore all, so the upstream selection remains visible. |