Accuracy at Any Size Using Blender's Warp Modifier

Hi all!

So for those of you who are like me and totally disheartened by the fact that this machine can only print accurately within the center 20mm square, know that I am on the case.

The reason that we can not simply define a scale factor to print reliable geometry at any size is because the distortion seems to be a linear function of the geometry’s distance from the origin. As the print geometry gets further away from the origin, the scale factor increases.

I am creating a workaround which will pre-deform the object in opposition to the machine’s natural bias. The end result should be straight walls and predictable dimensions.

After scouring all day, I think I have found the correct modifier called the Warp modifier.

I am currently printing a series of concentric circles and squares to try and get an idea of what the falloff should be. In the mean time, here is a sample of the kind of distortion I am talking about without regard for the actual numbers.

Will post more as I progress.



Won’t this require the modifier to be set for the object’s position on the build plate? That could get rather fiddly.

It would be nice if the firmware allowed for non-linear calibration. This should be simple geometry to compensate for the arc of the laser projected on the flat plate.

It would also be nice if the firmware accepted the pause GCODE!

To your first point, yes. The process would be something like.

  1. Model
  2. Add supports
  3. Warp Deform in position
    4)Export with registering geometry so that it lands in the right place in Cura

It’s a real bitch to be honest and if I’d known about this I would have never convinced my client to buy this machine. But I’m here now, and Peopoly hasn’t had much to say on the topic. Looks like we’ve been forced into beta testing.

isn’t the latest firmware addressing that?

I’ve just gotten my machine so I haven’t gotten to the stage of evaluating absolute accuracy. A few questions occur to me:

What is your expectation in terms of accuracy? Is it reasonable for SLA? You will never get zero error in every dimension.

Have you confirmed that the errors are repeatable?

Do you use more than one type of resin? Are the errors the same for each?

How do the dimensions compare pre-, post-cure?

Is there a Z-axis error as well (I’d use a raft and supports on a test print to eliminate initial adhesion variations)?

If the dimensional variations are predictable (you may need to compensate for temperature, resin, laser power setting, location on the plate, …) you can correct for them in software. I would consider changing the GCODE since it encapsulates the slicer results as far as position etc. I have done this for FDM printer issues in the past. It’s not that hard to implement once you figure out what you need to do in terms of corrective actions e.g. multiply segment endpoints by a scale factor based on distance from the center of the plate.

I hope this helps

I have also found even though I use it a lot, that Blender is a better character modelling tool than CAD tool. I know there has been work done in this area and improvements made, but be careful about numerical manipulations. In particular I have seen rounding issues where vertices positions change slightly.

Are you able to print a 120mm circle that comes out at 120mm before post cure?

Obviously Blender is not an engineering CAD tool. It’s just the only tool that I found that will do this type of deformation. Unfortunately their numerical inputs are vague at best.

I do like the idea of a Gcode transposer.

I’m measuring geometry without post cure. Shrinkage is a uniform scale that can be applied any time and would only confuse things at this stage.

My expectations are that I can make dimentionally accurate prototypes for injection mold parts for my clients just like we have been doing with outside services to this point. The Form labs printer does a fine job. This one can be out almost 2 mm on larger objects.

I think if this got out, peopoly wouldn’t be selling so many units and might actually finish the software for their machine.

1 Like

I will eventually want to print dimensionally accurate parts so I’m quite interested in the topic. I will look at some GCODE to see what paradigms are used in the Moai profile for Cura.

Have you looked at the GCODE in Reptier Host by chance?

I would love to know the results of your concentric ring tests.

What tolerance can the Form Labs hold?

Personally I don’t need that print size, but I know of people here having the same issue. I haven’t tried with firmware 1.16 though that is supposed to fix exactly that kind of aberration. Unfortunately I’m fighting with over issues that are actually affecting my work

@peopoly Does the printer’s coordinate system zero at the center of the bed or on one of the corners?

You can edit the P_yuan-test gcode file by hand and see where the laser goes.

zero is not in the center (it’s bottom/left in the coordinate system)

1 Like

…but the galvos are centered on the build plate correct? At the very least there is likely an intensity difference across the plate due to variable path length with fixed lenses. There is also spherical positional distortion i.e. one degree of mirror rotation may yield 1mm of linear travel at the center and 2mm (made up numbers) at the edge. None of this is rocket science though…

which is compensated by the software. even camera lenses distortion is often corrected in post production. How good or how bad the algorithm is I’m not sure.

zero in gcode starts at the bottom left corner as @matt3o said.

What do you mean by “post production”? How the control board interprets and acts on the gcode?

When the laser path length changes the spot defocuses spreading the energy over a larger area. The controller could move the location of the spot to correct position of the “edge” of the cured resin. I don’t know enough about the photopolymer chemistry to say if the lower energy density (but same total energy) affects cure time. If so, the controller may also slow the travel down or turn power up.

One could argue that the Moai SHOULD do all of this under the hood and that a user should not have to care about how it happens. The proof is in the results though. Has anyone done a systematic evaluation of dimensional accuracy across the build plate?

Here is a library that could be easily modded to scale the gcode. It is also compatible with Cura.

Has this really not been solved yet??. I really need the dimensional accuracy. Parts near the edge of the build volume are about 1mm off. If it was 0.1mm off it wouldn’t be a big deal but 1mm is too much for me. Even if someone has a solution that makes it even slightly more precise please let me know as i wont be able to continue with my project till this is solved.

Please let me know if there is any improvement at all. Thank you