Lines show through surfaces

modeling

#1

I’ve been using Sketchup for 9 years now and I’m embarrased to admit I still haven’t figured out how to stop lines from showing through a surface, textured or otherwise. It’s a very annoying problem. For an example, I create a second story mezzanine with floor joist up against a 5 1/2" wall. But when I zoom out far enough, the tails of the floor joist suddenly appear through the 5 1/2" wall. Any known solution to the problem? I attached a recording of the problem. >> https://discourse-cdn-sjc1.com/sketchup/uploads/default/original/3X/4/c/4cd2cb0fbec66471ff486a0540f074405cd5eba6.mp4


#2

That’s a graphics card/OpenGL thing. When you have thin shapes in front of others, at long enough distances they can be treated as not having thickness. The solution is to put the joists on a layer separate from the surface over them. Then turn that layer for longer views so there’s nothing to show through.

It’s common with framed roofs, too. For the long views you would turn off the layer for the trusses leaving the roofing with nothing under it to bleed through.


#3

There are some fixes for this phenomenon, quickest is to hide the offending lines…I see that @DaveR is about to tell you how…:wink:

EDIT
There you go, I’ll just add that you can also hide the lines that show thru by selecting them directly and right clicking for hide, or as an option use the keyboard modifier for the eraser tool which also hides things.


#4

Thanks guys. I like the adding layers idea. I’ve used the shift+eraser trick quite often but I’ve also found it to be quite inconvenient if I have something else in my model that I want to remain hidden and then I select unhide all and it screws up the delicate balance. If you know what I mean. Most of my models border on chaotic as they stand.


#5

Yeah, while hiding the edges can take care of it for one view, if you want to show the joists without the flooring, you have to unhide those edges again.

Make sure you use layers correctly to prevent hair loss. All edges and faces stay on Layer 0 where they’re made. Only groups/components get assigned to other layers.


#6

For extensive models layers are the way to go.

On unhiding: You can turn hidden geometry on so that all hidden objects are visible, then unhide specific things with a right click>unhide


#7

Good to know. I will use in the future. Thanks for the prompt help guys.


#8

I typically would create a second model of a house structure on a different layer called “Visualization” which would be the presentation of finished interior and exterior walls, roof, cielings and floors there by allowing me to hide those lines by turning off layers I don’t need to be visible.


#9

I’m sure you’re right about the “graphics card/OpenGL thing”. But I have to say I’m just not very impressed that the SU developers are satisfied with this. If the graphics cards or OpenGL are messing this up, the SU team should be working with them to correct this. Otherwise, they should find a way to render this without using the graphics card / OpenGL (I’m sure that’s a tall order). Maybe this “high-accuracy” (and slow) render only needs to be used on export, so finished models don’t have these anomalies in presentations.

I can pretty easily imagine situations where both the layers workaround and the hidden edges workaround are unworkable.

Are there OpenGL settings that impact this?


#10

I agree. I’ve encountered the problem for years and it’s been annoying on all levels. I’m surprised SU hasn’t developed a fix. In the meantime, I’ll keep using the workarounds.


#11

SketchUp seems to move all lines slightly closer to the camera, compared to faces, as a part of the rendering process. This is to avoid faces from covering/blending into their bounding edges. Unfortunately it has the side effect of edges bleeding through faces when the distance between the edge and face is very small compared to the distance to the camera. Perhaps the value by witch lines are visually offset could be tweaked to minimize the side effect, while still retaining the desired effect.


#12

If you want to geek into why SketchUp offsets the lines, you can look at this video showing the UI of one of my extensions. As you can see a few seconds in something just looks wrong with the green handles. It took me some time to realize it myself but the green faces blend into the black lines, making them appear very thin. The red /hovered) handles do not show this problem as the lines are drawn on top of the faces.


#13

Sorry, Julia, I don’t follow what’s wrong with the green handles or how that relates to the lines showing through faces.

… the green faces blend into the black lines, making them appear very thin.

Which black lines are you referring to? Making what appear very thin - the lines or the faces?

Just trying to understand your explanation.

This is to avoid faces from covering/blending into their bounding edges.

Their solution may have caused more problems than it solved…

thanks


#14

Here’s a screenshot from my plugin (above) and native scale tool (below).

2018-03-06_18h20_29

2018-03-06_18h20_47

As you may see the black lines on the scale tool’s handle are much more defined. This is because the lines are drawn slightly in front of the faces, while the lines in my own tool gets partly covered by the face.

In newer plugins I draw lines slightly in front of faces like this:

instead of like this where it looks as the previewed face is a very, very low box:

For a better experience in the vast majorette of situations (consistent line width and easier to understand geometry) a trade off is needed to be made in some rare situations (when zooming out far away). I think the SketchUp team did the right derision to do this. However, now that screens are getting higher resolution, it may be a good idea for them to tweak how much closer to the camera lines are drawn.


#15

Thanks for your explanation, @eneroth3.

I think the SketchUp team did the right derision to do this.

They may have made the right decision to do it, but still implemented it poorly.

I don’t really know how rendering is done in SU, but I would assume that at some level the render engine needs to determine which lines will be visible from the current camera angle. This should be done based on the original geometry, not the altered geometry. So the render engine shouldn’t even be trying to draw those lines.

This is because the lines are drawn slightly in front of the faces…

My naive understanding of this is that this should be an adjustment done in the drawing process, not in the actual model, since “in front of the faces” is relative to the camera position. Change the camera position and then the lines must be drawn in a different position.

Determining which lines (or which portions of lines) are drawn, should be done based on the model prior to drawing anything.

An alternate approach would be to make the lines thicker rather than closer. There are probably a number of things that could have been done. I wish they would have chosen a solution that didn’t have a side-effect that occurs so frequently and noticeably…


#16

They chose to use OpenGL for rendering.


#17

Huh???

This is because the lines are drawn slightly in front of the faces…

@DaveR, you mean OpenGL is doing this?


#18

From the help centre:

https://help.sketchup.com/en/article/3000086

Note: If you pull up an entity a small amount (less than an inch (2.54 cm), edges are visible through the entity. This is a rendering limitation that affects all 3D programs. Your entity must be an inch or more thick before this effect goes away. If the edges showing through are an issue, select the edge, context-click it, and choose Hide.


#19

If you want the full technical discussion of what is going on, see these pages: https://www.opengl.org/archives/resources/faq/technical/depthbuffer.htm
https://learnopengl.com/Advanced-OpenGL/Depth-testing


#20

So, theoretically, would it be possible to change the depth buffer through the json patcheditor?
I could imagine different depths for different templates, so that the bleed effect would start at a different height/distance.