Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.18k stars 2.08k forks source link

different result for single model and multi model #9843

Closed yawyd closed 3 years ago

yawyd commented 3 years ago

Application Version

4.6.2

Platform

Ubuntu 20.04

Printer

Voron 2.4

Reproduction steps

  1. add model A
  2. get result 1 for model A
  3. add model B
  4. get result 2 for model A and result 2 for model B

result 1: inner walls shown result 2: inner wall disapper

Actual results

model inner walls disapper if multi model added to cura

Expected results

get same result (for each mdoel) no matter how many model added to cura

Checklist of files to include

Additional information & file uploads

Hi, I'm printing a plane model with inner walls in it. everything goes well if I open one file with cura. like below: image

but inner walls disapper if another model adedd, like below:

image

here is project file: inner_walls_disapper_multi_model.zip

and log file: cura.log

Thanks.

fvrmr commented 3 years ago

Hi @yawyd thank you for your report. I can reproduce your issue. I will discuss it with the team. Keep you posted.

GregValiant commented 3 years ago

"Not watertight and consists of 3 sub-meshes." So I said to myself "No problem, I'll fix the model". I exported it from Cura as an STL and started cogitatin'. I tried 7 different programs to repair and slice and except for a single instance - all the gussets disappeared. Prusaslicer, Cura 4.9.1, KISSlicer, MatterControl, IdeaMaker, along with MS 3D Builder and Netfabb (for repair), . It was IdeaMaker that left the gussets in after a repair to the file. It's still a mess, but the gussets (kind of) remained. This is layer 18 of the "good" Cura file. This was sliced without any changes. Alternate Extra Wall is turned on and the extra wall is present on the odd layers. There are areas that are printing over air. U3

Here is the PrusaSlicer version. There was one "good" model on the build plate. I didn't find a setting to alternate extra walls so they are every layer. There are unsupported extrusions in this slice as well. There are no gussets. U1

Here is the IdeaMaker version with one model on the build plate. The green lines might be a second loop but only appear every 6th layer. This would essentially print as a single wall model and the gussets look like they've been knit instead of extruded. There is the added bonus of some air printing here too along with ugly gussets. U2

The model has problems and they appear to relate to the internal support gussets. As near as I can tell, the aberration is the file that sliced with the gussets in place. I think an attempt to print it would fail, but it does have gussets.

yawyd commented 3 years ago

"Not watertight and consists of 3 sub-meshes." So I said to myself "No problem, I'll fix the model". I exported it from Cura as an STL and started cogitatin'. I tried 7 different programs to repair and slice and except for a single instance - all the gussets disappeared. Prusaslicer, Cura 4.9.1, KISSlicer, MatterControl, IdeaMaker, along with MS 3D Builder and Netfabb (for repair), . It was IdeaMaker that left the gussets in after a repair to the file. It's still a mess, but the gussets (kind of) remained. This is layer 18 of the "good" Cura file. This was sliced without any changes. Alternate Extra Wall is turned on and the extra wall is present on the odd layers. There are areas that are printing over air. U3

Here is the PrusaSlicer version. There was one "good" model on the build plate. I didn't find a setting to alternate extra walls so they are every layer. There are unsupported extrusions in this slice as well. There are no gussets. U1

Here is the IdeaMaker version with one model on the build plate. The green lines might be a second loop but only appear every 6th layer. This would essentially print as a single wall model and the gussets look like they've been knit instead of extruded. There is the added bonus of some air printing here too along with ugly gussets. U2

The model has problems and they appear to relate to the internal support gussets. As near as I can tell, the aberration is the file that sliced with the gussets in place. I think an attempt to print it would fail, but it does have gussets.

Thanks for you research. actually,many people include me printed these model out, here is the model link: https://www.thingiverse.com/thing:3040294 the link above contains some gcode, curaprofile and Simplify3D factory file. you can take a look if you are interested in. what confused me most is, I can slice single stl model and print it out pretty well, but failed with multi model added. I will try to "fix the mesh" if I can figure out what it is : ) (after some google)

Ghostkeeper commented 3 years ago

This seems to be caused by the Merged Meshes Overlap setting. Setting it to 0 removes the issue.

The shapes on the inside (except the two big cavities) are all positive shapes, not holes, due to their normal vector orientation. So according to a computer they are not vacancies in the volume, but essentially "double filled", if that makes sense. A volume overlapping with another volume. Union Overlapping Volumes is disabled, so it should use the even-odd rule for volumes, causing double-filled volumes to become open again. This is why it works with a single mesh.

However Merged Meshes Overlap looks for multiple meshes, and under certain conditions (multiple meshes with intersecting bounding boxes) tries to merge them together with some overlap. This merging does a polygon union too, which didn't take this fill rule into account. The reason why it only happened with multiple meshes is because the Merged Meshes Overlap is omitted when there's just 1 mesh, for performance reasons.

yawyd commented 3 years ago

This seems to be caused by the Merged Meshes Overlap setting. Setting it to 0 removes the issue.

The shapes on the inside (except the two big cavities) are all positive shapes, not holes, due to their normal vector orientation. So according to a computer they are not vacancies in the volume, but essentially "double filled", if that makes sense. A volume overlapping with another volume. Union Overlapping Volumes is disabled, so it should use the even-odd rule for volumes, causing double-filled volumes to become open again. This is why it works with a single mesh.

However Merged Meshes Overlap looks for multiple meshes, and under certain conditions (multiple meshes with intersecting bounding boxes) tries to merge them together with some overlap. This merging does a polygon union too, which didn't take this fill rule into account. The reason why it only happened with multiple meshes is because the Merged Meshes Overlap is omitted when there's just 1 mesh, for performance reasons.

finaly got it, unexpectedly. you are my life saver, thanks