CGCookie / retopoflow

A suite of retopology tools for Blender
2.5k stars 250 forks source link

Adding ability to select vertices below a surface would be useful #724

Open grimakaka opened 5 years ago

grimakaka commented 5 years ago

image Hello! I have a problem with the selection. Vertices that are inside the reference object cannot be selected. Vertices 1 2 3 - can be selected and 4 are cannot be selected. This makes the whole process very uncomfortable. But in general, I really love your tool!

grimakaka commented 5 years ago

I have a question for the developers, is it true that the selection algorithm does not use api blender?

vxlcoder commented 5 years ago

@grimakaka, Thanks for the report.

Yes, RF uses our own selection code, because of how we do our rendering (hide original target mesh, draw it using custom shaders) Blender cannot select the verts/edges/faces because they are hidden.

As for your issue, RF does render the target slightly offset along the normal along with rendering the target under the surface of the source.

The normal offsetting is similar to using the displacement modifier on the target mesh. However, sometimes the scale settings and model sizes are outside what we expect, so the "slightly" there in how far the target is offset is too much. We do have a way to adjust this, though. In Options Window > General > Target Rendering, there is a Normal Offset option. Adjust this value to suit your needs.

image

The target show-through is also adjustable in Options > General > Target Rendering > Below and Backface. (just above the Normal Offset option in screenshot above)

As for selecting vertices that are inside or behind the source mesh, we don't have a good way to do this. Usually during a retopology session, you will only be editing the vertices that are visible and "facing" you, because there could be thousands of vertices on the opposite side of the source mesh, and you wouldn't want to accidentally select and move them.

This is the first we've heard a request for selecting vertices that are not in front of the mesh. I probably will not work on this yet, because I'm working on getting RF to work on Blender 2.80 beta at the moment. When I get that finished, we can consider adding an option for this.

Let us know if you have any other questions. Thanks!

grimakaka commented 5 years ago

Thank you very much for this detailed answer! I tried all the settings in different variations and the result is the same - as soon as the vertex is at least a little below the surface of the reference object, it ceases to be available for selection. Sometimes it helps to move away from the object or change the viewing angle, but more often you have to go into the editing mode of the object in a blender and select it there. In this mode, the selection works at 100%. All this is very distracting and slows down the process. I highly recommend that you use blenders API to selecting vertices, etc.!

grimakaka commented 5 years ago

image Vertex 1 cannot be selected and vertex 2 can be selected. Situations when vertices fall under the surface of the reference object appear quite often, for example, when using the patch tool.

vxlcoder commented 5 years ago

@grimakaka, I'm confused how the target mesh in your screenshot was created to begin with. It looks like you are either creating geometry outside RF and then trying to edit it in RF, or you're changing the source meshes, or maybe something else. How did you create that?

Also, how is the patch tool creating vertices under the surface? Would you mind recording a video? All of the RF tools are designed to work on the surface of the source mesh, so no geometry within RF should be created under the surface (unless there is a bug).

The Blender operators (including selection) are designed to work in a general case, which does not work for typical retopology workflow. RetopoFlow is design specifically for retopology work, so the way certain operations happen will be different in RF vs edit mode. However, it appears that you might be using RF in ways that we did not expect, which is why the tools and selection aren't doing what you expect. If you can show us a video of your workflow, we can start figuring out how to resolve your issues.

Thanks for your feedback!

grimakaka commented 5 years ago

another bug))) bug1 okay, I'll record it all down now on video.

vxlcoder commented 5 years ago

Hmm. yeah, that's certainly a problem. Just making sure, but are all of the normals on your source mesh (sphere) pointing out from the center of the sphere? Can you share this blend file?

grimakaka commented 5 years ago

bug2 Again, I could not select the top. Strange but when I clicked A and then G selected everything but only the vertex I needed moved!

grimakaka commented 5 years ago

The sphere was created using shift-A. I did nothing else with it. Sorry, I already deleted that file. I created a new one but now everything works as it should. I am sure that the roots of all the bugs lie in the function that is responsible for the selection.

grimakaka commented 5 years ago

The whole problem for me is that I love your instrument so much that now I can’t work in anything else.))))

grimakaka commented 5 years ago

bug3 As soon as the vertex is covered by the reference surface, it is no longer available for selection. I think you yourself can repeat it all.

grimakaka commented 5 years ago

bugs.zip

vxlcoder commented 5 years ago

When you select, RF will select a vertex as long as: 1) it is not occluded by the source mesh (preventing selection of vertices on back side of source), and 2) it is within a certain pixel (screen) distance from the cursor.

In the cube example above, you are using RF in a way that it wasn't designed. Almost always, retopo/target meshes lie on or just above the surface of the source mesh. If the target vertex that is inside the source was on the surface, then you can select it (exactly like the end of your video).

This will likely stay our default way of interacting, since that hits probably 99% of all use cases for RF. In fact, we added a button in options to snap all vertices to the surface (General > Target Cleaning > Snap Verts) to correct target meshes that are not on the surface (either under or above).

Now, an option is to allow for the artist to ignore condition 1) above. This will cause selection to slow down on really large source meshes, because there could be several thousands of vertices drawn on the screen. Alternatively, we could specify how far the vertex can be below the surface before throwing it out of consideration, but that would complicate the workflow by adding another tuneable parameter (and we already have probably too many options as it is!).

Aside from the examples you gave, where you are just beginning the retopo process with a target mesh that was created outside of RF, what use case would you have for changing the selection process? I'm having a hard time understanding the use case and the workflow that would require such a change, which means that any solution we come up with will likely still be wrong.

Just saw you latest posts. Did you use Patch to create that quad patch on top?? If so, that is a bug in Patch (maybe verts are placed just below surface...). If you snap verts to surface (using button described above), does that then allow you to select those verts?

Thanks for you .blend! I will be digging into this very soon.

I appreciate your help on this!

grimakaka commented 5 years ago

Yes, I used a patch for this example. Recently, I was doing a complex retopology, and when I did snap all some of the vertices did not react to it. Thank you and good luck in the development! I will post bugs if I find them in the future.

grimakaka commented 5 years ago

Hello! I think that making the ability to select overlapped vertices as a switchable option will be the best solution!

vxlcoder commented 5 years ago

Just a note: the bug with the sphere is same as issue #689.

I'm labeling this issue as a feature request, since it is really a different way of dealing with selection that is outside the normal workflow of retopology (not bug with RF).

grimakaka commented 5 years ago

bug4 Hello! I just downloaded a new build from issue/720 branch. I recorded a video in which I show that there is a problem with the selection.

vxlcoder commented 5 years ago

I recently noticed that selection still has problems in orthographic mode, too. ("workaround", switch to perspective) looking into this now. thanks, @grimakaka!

vxlcoder commented 5 years ago

the issue with selecting vertices that are on the surface of the source (not underneath) is related to issue #720. I will post updates to that selection in the related issue. Any updates to selecting vertices that are below the surface or behind the source will be posted to this issue. (trying to keep issues and fixes organized so that I don't lose track of the current state)

grimakaka commented 5 years ago

Wonderful! You are absolutely right! In the perspective view, the selection works at 100%. Thank you very much!

vxlcoder commented 5 years ago

@grimakaka, one quick note on your workflow in the latest screenshot: you do not need to add a plane and then delete the verts to start a new target mesh. If nothing is selected, simply clicking one of the RF tools will automatically create a new target mesh for you.

grimakaka commented 5 years ago

Oh cool! It is very convenient!

Davision3d commented 3 years ago

@grimakaka, Thanks for the report.

Yes, RF uses our own selection code, because of how we do our rendering (hide original target mesh, draw it using custom shaders) Blender cannot select the verts/edges/faces because they are hidden.

As for your issue, RF does render the target slightly offset along the normal along with rendering the target under the surface of the source.

The normal offsetting is similar to using the displacement modifier on the target mesh. However, sometimes the scale settings and model sizes are outside what we expect, so the "slightly" there in how far the target is offset is too much. We do have a way to adjust this, though. In Options Window > General > Target Rendering, there is a Normal Offset option. Adjust this value to suit your needs.

image

The target show-through is also adjustable in Options > General > Target Rendering > Below and Backface. (just above the Normal Offset option in screenshot above)

As for selecting vertices that are inside or behind the source mesh, we don't have a good way to do this. Usually during a retopology session, you will only be editing the vertices that are visible and "facing" you, because there could be thousands of vertices on the opposite side of the source mesh, and you wouldn't want to accidentally select and move them.

This is the first we've heard a request for selecting vertices that are not in front of the mesh. I probably will not work on this yet, because I'm working on getting RF to work on Blender 2.80 beta at the moment. When I get that finished, we can consider adding an option for this.

Let us know if you have any other questions. Thanks!

I have the problem of not being able to select vertices all the time in 3.1.0, especially after using the Patches tool. The Patches tool also keeps placing the generated vertices far from optimal which makes this extra frustrating.

I also tried fixing inside vertices with Push and Snap Vertices on all (bc I can't select them) but it just leaves them under there

vxlcoder commented 3 years ago

Thanks for the report, @Davision3d.

Can you post a screenshot or a .blend file showing more context about not being able to select vertices? this is an issue that I want to address next!

as for patches not being optimal, would you mind starting a new issue with some screenshots? doing so will help me keep track of what issues still need worked on.

Thanks!

wsoulless commented 1 year ago

@vxlcoder I found it weird that a problem that is 2 years old now hasn't been addressed yet. This is something extremely common to me.

For example: https://user-images.githubusercontent.com/65297299/229343324-2b191a40-f492-4886-866d-dd48c1f3bbf6.mp4

My only way to fix it right now is to exit retopoflow, select the vertex that I want from edit mode, go back in retopoflow and drag the select (G) but as you can see all the edgeloops created with the "loops" comamnd are inside the reference mesh.... so this is so time consuming...

I would love an option that allow me to select any visible vertex (either inside or outside the reference mesh)

Blender version 3.4 - Retopoflow version 3.3.0 (github)

grimakaka commented 1 year ago

@vxlcoder I found it weird that a problem that is 2 years old now hasn't been addressed yet. This is something extremely common to me.

For example: https://user-images.githubusercontent.com/65297299/229343324-2b191a40-f492-4886-866d-dd48c1f3bbf6.mp4

My only way to fix it right now is to exit retopoflow, select the vertex that I want from edit mode, go back in retopoflow and drag the select (G) but as you can see all the edgeloops created with the "loops" comamnd are inside the reference mesh.... so this is so time consuming...

I would love an option that allow me to select any visible vertex (either inside or outside the reference mesh)

Blender version 3.4 - Retopoflow version 3.3.0 (github)

Wow! 4 years have already passed! I don't remember exactly but try switching to perspective view in the window.

wsoulless commented 1 year ago

@vxlcoder I found it weird that a problem that is 2 years old now hasn't been addressed yet. This is something extremely common to me. For example: https://user-images.githubusercontent.com/65297299/229343324-2b191a40-f492-4886-866d-dd48c1f3bbf6.mp4 My only way to fix it right now is to exit retopoflow, select the vertex that I want from edit mode, go back in retopoflow and drag the select (G) but as you can see all the edgeloops created with the "loops" comamnd are inside the reference mesh.... so this is so time consuming... I would love an option that allow me to select any visible vertex (either inside or outside the reference mesh) Blender version 3.4 - Retopoflow version 3.3.0 (github)

Wow! 4 years have already passed! I don't remember exactly but try switching to perspective view in the window.

As you can see on the edit mode (top left) the view is already in perspective.

grimakaka commented 1 year ago

Oops! Sorry didn't look that far. It's really a pity that such little things kill good instruments!

vxlcoder commented 1 year ago

hi all!

I believe this issue has already been solved, but it might not be documented well enough.

this screenshot shows vertices under the cube than are not selectable.

image

but under Options > Selection, unchecking the Block Occluded box will allow you to select geometry just fine.

image

the reason this isn't unchecked by default is because most of the time artists do not want to select that geometry. (it could be on an entirely different part of the mesh.

note that there are commands to snap all vertices to the nearest surface under Options > Target Cleaning.

image

please let me know if these do not solve your problems.