Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MisMatch of Vertices for Surface-Matched Surfaces #60

Open
Ski90Moo opened this issue Aug 26, 2020 · 11 comments
Open

MisMatch of Vertices for Surface-Matched Surfaces #60

Ski90Moo opened this issue Aug 26, 2020 · 11 comments

Comments

@Ski90Moo
Copy link
Contributor

This vertex mismatch error is very common where matched surfaces are comprised of more that four vertices:

** Severe ** RoofCeiling:Detailed="SURFACE ???", Vertex size mismatch between base surface :SURFACE ??? and outside boundary surface: SURFACE ???

I suspect Sketchup defines a surface not just based on its component vertices, but also shared vertices. So, for example, if two surfaces have a shared vertex, only one of the surfaces will have that vertex in its definition. The other surface will be missing the vertex in it's definition.

Here is a detailed video of the problem and work-around I developed to resolve the issue: https://1drv.ms/v/s!AseQmgZxffwzgbN01VYhYjiIjfhXaQ?e=62GZTC

@Mkellyeng
Copy link

I've run into this issue several times, as well

I'm not quite sure what causes the issue, but I have an extra detail to add
Using the example from your video:
You're wanting the following surface, in Red (11 vertices)
image

But I think the .osm/.idf is actually using the following surface, in Green (7 vertices)
image

That is, it drops the 4 vertices from the middle rectangle, leaving you with an incorrect area, and an incorrect number of vertices, when compared to its matched surface.

Note that this is tricky to spot visually, because it's seemingly behind the excluded rectangle.

I believe your workaround corrects the issue because you used one of the vertices that was being lost. For whatever reason, that seems to help them get found?
Eg: If you subdivided the surface by drawing the Yellow line, the issue would not be resolved. But if you drew the Pink line, it would be
image

@Ski90Moo
Copy link
Contributor Author

Ski90Moo commented Apr 8, 2021

@Mkellyeng, I agree. OpenStudio is just importing the vertices from SketchUp. In the example above, SketchUp is telling OS that the green surface only has 7 vertices and the red surface has 4 vertices. I have a theory:

SketchUp is doing some sort of geometric optimization to save computing power. In other words, it is saying; why define a surface with all of its constituent vertices if it shares vertices with a co-planer surface? Dropping those four shared vertices from one of the co-planer surfaces reduces the amount of extraneous data.

If you copy and paste the green surface to somewhere else in SketchUp, it still shows 11 vertices...there seems to be something lost in translation when going from SketchUp to OpenStudio.

@macumber
Copy link
Collaborator

Thanks for the detailed report. SketchUp has Faces which have an outer loop and then potentially inner loops. We detect these inner loops and classify them as doors or windows on walls. I think there is an issue here because you have basically drawn a door but on a horizontal floor surface so we aren't classifying it as a door. Plus you want it to be a separate surface and not a subsurface. Dividing the surface so there are three faces with no inner loops would work. I think the only thing we could try to do in the plug-in would be to detect the case of a door on horizontal floor surface and break up the outer loop.

PS: nice SketchUp selection skills!

@Mkellyeng
Copy link

Mkellyeng commented Apr 15, 2021

Interesting, how do inner loops work exactly?

Something like this?
image

Do they need to share an edge with the Outer Loop? I assume if they're fully contained without the Outer Loop, they become a window?

Now that I think about it, I think I've usually seen this vertex-mismatch issue on the edges of surfaces, perhaps that edge is not being subdivided properly?

@Ski90Moo
Copy link
Contributor Author

Thanks guys, this would make sense. I wonder if this is related to the issue with sky lights? Sometimes the ceilings are miss-identified as skylights.

@WangDAL-stack
Copy link

I got the same questions in this situation....When I was trying to intersect and match those surfaces,not every piece of surface turn into green,but green and blue(under the circumstance of Render By Boundary Bondition).
These problems stuck me a long period so that I can not to finish other steps of os.
图片
Here is the predict of the problems and submitting my sincere appreciation beforehand.

@Ski90Moo
Copy link
Contributor Author

I got the same questions in this situation....When I was trying to intersect and match those surfaces,not every piece of surface turn into green,but green and blue(under the circumstance of Render By Boundary Bondition). These problems stuck me a long period so that I can not to finish other steps of os. ![图片] Here is the predict of the problems and submitting my sincere appreciation beforehand.

This looks like your polygons only have four vertices, so I don't think this issue would apply to your problem. Try solving like this: https://youtu.be/FfIpsCsO7HM

@Mkellyeng
Copy link

@WangDAL-stack Yeah, your issue here is a little different I think. The original issue is to do with surfaces not getting intersected and subdivided properly

I think your issue is to do with surfaces not matching properly, which is something different. I'm not sure why that occasionally fails to match properly, but if you need a simple, manual fix, you can use the tips in the link that @Ski90Moo posted. You can use the inspection tool to manually set the outside boundary condition. Alternatively, you can set it using a text editor, which is very easy

@Mkellyeng
Copy link

@WangDAL-stack Can you share your file? It looks like you have a nice, simple example of that surface matching issue

@ianvg
Copy link

ianvg commented Nov 17, 2023

Interesting read, I guess there's no way that Sketchup can be 'asked' to not do that geometric optimization, whereby vertices are lost. I was going to post a new issue (related to this Unmet Hours Forum post about subsurfaces), but the problem described here I think encompass it? I am personally having trouble creating inner loops that share an edge with the parent surface. Is there any related issues or programming that will eventually address this issue?

If not, I suppose the solution is to slightly offset doors and windows from the parent edges to create proper subsurfaces.

@macumber
Copy link
Collaborator

The OpenStudio SketchUp Plug-In uses SketchUp's assignment of loops to faces to decide if a face is a surface or a sub surface. If two faces share an edge then SketchUp assigns separate loops to each face. I don't know of any way to override this behavior. The recommended solution would be to offset the sub surfaces from the surface edges by at least an inch on all sides.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants