prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.7k stars 1.93k forks source link

Infill density vs. pattern #8617

Open espr14 opened 2 years ago

espr14 commented 2 years ago

Description of the bug

By switching the infill type the final weight of the model changes a lot. This is not caused by the infill connections and anchoring. It happens even in big inner volumes.

Project file & How to reproduce

In the attached project you can see that 15% grid infill weighs 4.3 g but honeycomb weighs 5.43 g. Moreover, the 100% infill weighs 27.5 g so the 15% infill should take 4.125 grams only. I know that it's hard to get microgram precision for all infill types but it's easy to create a calibration matrix that minimizes the error for typical sized objects. The calibration curve can be non-linear but you can approximate it by few points and interpolation.

Shape-Box.3mf.zip

Checklist of files included above

Version of PrusaSlicer

Version 2.4.2+win64

Operating system

Windows 10

Printer model

Prusa MINI

bubnikv commented 2 years ago

Thank you. Please provide a pull request.

espr14 commented 2 years ago

Calibration coefficients for densities: 1 5 10 20 40 60 80 99%

2D + adaptive infills

(align) recti 0,889411765 0,969230769 0,988235294 0,994736842 0,998019802 0,999118943 1,356053812 0,99991984 grid 1,008 0,994736842 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001927711 trian 1,008 0,994736842 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001257525 stars 1,008 0,994736842 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001927711 cubic 1,008 0,994736842 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001257525 line 0,945 0,994736842 0,994736842 0,998019802 0,999669421 0,999118943 0,999669421 0,99991984 conce 0,795789474 0,9 0,910843373 0,919148936 0,924770642 0,925714286 0,92618683 0,926287129 hilbert 1,008 0,994736842 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001927711 archimed 1,008 1,008 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001927711 octagram 1,008 1,008 1,001324503 1,001324503 1,001324503 1,001324503 1,001324503 1,001927711 adaptive 1,26 1,35 1,35 1,356053812 1,356053812 1,356053812 1,356053812 1,355869565 support 1,26 1,35 1,35 1,356053812 1,356053812 1,356053812 1,356053812 1,355869565 lightning 1,68 1,453846154 1,453846154 1,453846154 1,467961165 1,535025381 1,475121951 1,584

3D infills

hone 0,738863636 0,766745283 0,772209026 0,794865526 0,838967742 0,887847064 0,943344215 1,006407129 3d honey 0,691702128 0,745642202 0,737188209 0,739704209 0,740968661 0,740827953 0,740125213 0,741416724 gyroid 1,083666667 1,055519481 1,05210356 1,057235772 1,065901639 1,091550084 1,092314154 1,093980286

espr14 commented 2 years ago

Thank you. Please provide a pull request.

https://github.com/prusa3d/PrusaSlicer/pull/8659

espr14 commented 2 years ago

Hello @bubnikv. Can we get this https://github.com/prusa3d/PrusaSlicer/pull/8659 into 2.5.0 version? The main reason is that the new lightning infill is cheating a lot. It generates lower density by 33% (mostly) which is a record among all infills. We can split discussing about implementation from discussion about the final calibration data. Thank you.

espr14 commented 2 years ago

Afterwards, it would be nice to update this document about infills: https://help.prusa3d.com/article/infill-patterns_177130

gringer commented 1 year ago

pr #6434 includes fixes to the 3D honeycomb pattern to improve the density accuracy (among many other improvements). It has an exact calculation for low densities, with a linear scale factor of 1.1 applied above 42% infill based on the filament length reported in PrusaSlicer.

[42% infill is where the pattern switches from a more faithful representation of the truncated octahedron honeycomb to an elongated 2-layer repeating pattern, for practical / mechanical purposes].