#2166 closed enhancement (fixed)
Don't cap clipped volume meshes
Reported by: | Owned by: | Tom Goddard | |
---|---|---|---|
Priority: | moderate | Milestone: | |
Component: | Volume Data | Version: | |
Keywords: | Cc: | Elaine Meng | |
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
Want volume mesh surfaces not to show caps when clipped.
Change History (4)
comment:1 by , 6 years ago
comment:2 by , 5 years ago
Cc: | added |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
Fixed.
I made mesh style surfaces not show clip caps for all models. This can be controlled with the new "surface cap" command "mesh" option default false. Also there is a preference setting under the clipping tab. If clip caps are enabled for mesh I made them show the caps as mesh. In general caps now match the style of the surface they are capping -- there is no option to override that. It is possible to change a cap's style by command but as soon as the cap is recomputed it will revert to the matching style.
follow-up: 3 comment:3 by , 5 years ago
Nice to have this option, but the nested logic is not clear from the option name or Preferences wording. By nested logic I mean that the "cap clipped surfaces" option has to be turned on or else the "cap mesh surfaces" option does nothing. I know you explained this in what you sent before, but a reasonable person looking at the Preferences might think that turning on "cap mesh surfaces" would always show them. Might help to make the second option "hide mesh caps" default true instead of "cap mesh surfaces" default false, and surface cap command option "hideMesh" instead of "mesh."
follow-up: 4 comment:4 by , 5 years ago
I am not a fan of the negative logic options (hide mesh caps). Currently "cap clipped surfaces" controls whether any capping is done, and "cap mesh surfaces" will only make caps if both options are true. I used the phrase "cap mesh surfaces" instead of "cap meshes" to make clear that a mesh surface is a surface. So what is a user to make of "cap clipped surfaces" false and "cap mesh surfaces" true? I agree it is unclear. They might think that "cap clipped surfaces" means "cap clipped non-mesh surfaces" -- I don't think that is too likely. I think the hide mesh caps is worse than the minor confusion and I suspect no one will ever change the "cap mesh surfaces" option to true, so I think it best to leave it as is.
Note:
See TracTickets
for help on using tickets.
This was initially discussed in ticket #2137, excerpts copied here:
Currently whether clip caps are shown is not dependent on the style of what is display (mesh vs surface). To the user there there is only a single true/false setting to (command "surface cap true"). At the Python level there is a Drawing.clip_cap boolean value. That is used to disable caps on things that should never be capped, like outline boxes. The user interface gets a bit more complicated if the clip caps can be tri-state: on / off / depends on display style.
I agree that solid caps on mesh are ridiculous. I just looked at mesh caps on mesh -- better, but no caps is best. So I think the best plan is probably to show no caps on density map on mesh, with no option to enable caps for now.
Currently clip cap code does not have support to be notified when a model decides to change whether it has clip caps (e.g. when switching between mesh and surface styles). I think clip caps will need tighter integration with the graphics to do this cleanly, so that just setting drawing.clip_caps will cause the cap to update. Currently caps can only be turned on and off globally by the user. I'm not sure if I want to move capping into graphics -- it is pretty complex, and currently has been separated out in the surface module. This needs more evaluation.
I see that the current VolumeSurface? model sets clip_cap = True every time it changes surface shape. I've moved that to the VolumeSurface? constructor so it is possible to volume surfaces that are not capped "for s in v.surfaces: s.clip_cap = False".