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

Wrong bridge detection result #4651

Merged
merged 1 commit into from
Mar 23, 2024
Merged

Conversation

SoftFever
Copy link
Owner

@SoftFever SoftFever commented Mar 23, 2024

Fixed a bug that top surface was mistaken as bridge.
To produce this bug, just set thick top shell layer when slicing Orca cube
image

Fixes #4648

@igiannakas
I reverted this part of the change. I tested the case you mentioned, it seems fine too
#3285 (comment)

@SoftFever SoftFever merged commit f626e4d into main Mar 23, 2024
12 checks passed
@igiannakas
Copy link
Contributor

Hm that bug is surprising. Have not seen this happen in the past few months with this change active. I’ll test again with the model file from the original issue and also validate that the bridging expansion is still ok.

thank you 🙏🏻

@igiannakas
Copy link
Contributor

Ps. I’ve also noticed in the latest prusa alpha that there are changes to how bridge infill expansion is handled. Haven’t noticed that bug either with orca but maybe something to keep in mind for the future: prusa3d/PrusaSlicer@b133579

prusa3d/PrusaSlicer#9999
prusa3d/PrusaSlicer#10493

@SoftFever
Copy link
Owner Author

Ps. I’ve also noticed in the latest prusa alpha that there are changes to how bridge infill expansion is handled. Haven’t noticed that bug either with orca but maybe something to keep in mind for the future: prusa3d/PrusaSlicer@b133579

prusa3d/PrusaSlicer#9999 prusa3d/PrusaSlicer#10493

yeah, Orca has optimized for bridge.
But bridging to a thin parts is still a challenge.
Haven't got the chance to check what has PS changed yet.

@igiannakas
Copy link
Contributor

igiannakas commented Mar 23, 2024

And I dont think it fixes the issue with this model I'm afraid:
image

which I would have thought so as the core logic in discover_horizontal_shells is skipped due to the continue statement when ensure vertical shell thickness is set to all, so the re-ordering of the this->process_external_surfaces(); shouldn't affect that code at all...

@igiannakas
Copy link
Contributor

igiannakas commented Mar 23, 2024

While it does introduce the bridging issue when ensure vertical shell thickness is critical only or moderate
image

OrcaCube-2.3mf.zip

@igiannakas
Copy link
Contributor

igiannakas commented Mar 23, 2024

This PR build with Stock Voron profile with 5 top shells:
image

Test 6.3mf.zip

So that is definitely not the fix I think... Something is causing the top layer to be considered an internal bridge.

A workaround for this is to set the top layers to 6 or 4 resulting in the bridge layer not coinciding with the top surface layer of the (Z) but this is clearly not the solution

image

@igiannakas
Copy link
Contributor

Replicated in 1.9.1
image

Replicated in 1.9
image

@igiannakas
Copy link
Contributor

igiannakas commented Mar 23, 2024

Same issue with Prusa Slicer 2.7.1:
image

And latest Prusa Alpha (2.7.3):
image

So the fixes from Prusa on bridge detection in 2.7.3 won't fix this.

igiannakas added a commit to igiannakas/OrcaSlicer that referenced this pull request Mar 23, 2024
@igiannakas
Copy link
Contributor

Doesnt happen with BBS:
image

So seems like a bridge expansion defect with both Orca and Prusa when the top most layer is exactly at the same height as an internal bridge supporting a secondary top most layer.

I amended the STEP file in fusion increasing the depth of the Z cut out by exactly 0.2mm

image

However when increasing the top surface thickness by 1 more line:
image

Which supports that theory - when the layers are perfectly aligned in that specific scenario the bridge expands fully.

@igiannakas
Copy link
Contributor

More to add:
For some reason when ensure vertical shell thickness is disabled, the top surface is detected correctly. Maybe because the Top surface expands more?

image

@SoftFever
Copy link
Owner Author

I've tested with more cases.
Now I'm getting inconsistent results, lmao.
I agree it's not fixed, and the cause is very unlikely the change that I thought was.

@SoftFever
Copy link
Owner Author

bridge seems fine tho?
image

@SoftFever
Copy link
Owner Author

anyway, I will revert this PR first

@SoftFever
Copy link
Owner Author

So seems like a bridge expansion defect with both Orca and Prusa when the top most layer is exactly at the same height as an internal bridge supporting a secondary top most layer.

I agree

SoftFever added a commit that referenced this pull request Mar 23, 2024
@igiannakas
Copy link
Contributor

igiannakas commented Mar 23, 2024

bridge seems fine tho? image

The regression happens when the ensure vertical shell thickness is not all ;) I've attached a project file above for your reference on this :)

@igiannakas
Copy link
Contributor

igiannakas commented Mar 23, 2024

I've been trying to find the source for this with very limited success. The PrintObject::bridge_over_infill() code seems to be working ok, as in it detects the unsupported areas properly (orange lines below). Blue is the expanded bridge region in that code which still is correct, i.e. doesnt fill the whole layer.

145_candidate_surface_509851386932371 000000

But something then expands the bridge and replaces the top surface.

This can be "resolved" by adjusting the expansion top value below but I think that is a bit "hacky" and not the right way.
image

@SoftFever
Copy link
Owner Author

I've been trying to find the source for this with very limited success. The PrintObject::bridge_over_infill() code seems to be working ok, as in it detects the unsupported areas properly (orange lines below). Blue is the expanded bridge region in that code which still is correct, i.e. doesnt fill the whole layer.

145_candidate_surface_509851386932371 000000

But something then expands the bridge and replaces the top surface.

This can be "resolved" by adjusting the expansion top value below but I think that is a bit "hacky" and not the right way. !

I have a hunch that it's probably just because the original algo failed to consider the cases that internal bridge and top surface can be on same layer.
I will give it a try later, will keep you posted.

@igiannakas
Copy link
Contributor

I've been trying to find the source for this with very limited success. The PrintObject::bridge_over_infill() code seems to be working ok, as in it detects the unsupported areas properly (orange lines below). Blue is the expanded bridge region in that code which still is correct, i.e. doesnt fill the whole layer.
145_candidate_surface_509851386932371 000000
But something then expands the bridge and replaces the top surface.
This can be "resolved" by adjusting the expansion top value below but I think that is a bit "hacky" and not the right way. !

I have a hunch that it's probably just because the original algo failed to consider the cases that internal bridge and top surface can be on same layer. I will give it a try later, will keep you posted.

Yeah same feeling here but for the life of me I couldn’t find where to adjust it :) thank you!!

@SoftFever SoftFever deleted the feature/fix-wrong-bridge-type-issue branch May 31, 2024 11:44
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

Successfully merging this pull request may close these issues.

Odd bridging in i.e. Z of the orca cube
2 participants