3d laser raster engraving on avid

Has anyone had any luck figuring out a way to raster engrave with the z-axis enabled over a previously cut 3D surface, in order to maintain focal distance?

Thanks to Jim Neeb’s stellar work, I know it’s possible to etch vector tool paths over a 3D surface with the z-axis enabled. But I’m wondering if the Warp9 raster-work-around can be modified to etch over a 3D surface by using the functionality in the Vectric Laser Module. It apparently supports 3D rastering, but it doesn’t support Mach4. I don’t have much of a programming background, so I’ve been twisting in the wind trying to comprehend how this could be done.

Ultimately, I would like to carve a 3D-scanned head on my rotary axis, then laser raster the scanned-image details in BMP format on the surface of the carved head. I would definitely need the z-axis in order to maintain focal distance while doing this.

It seems very possible that I’m operating in fantasy land here,
but any advice would be appreciated, nonetheless.

Thank you

I made some custom software to do this for a laser engraved map:

So it’s not fantasy, but it was pretty tricky and plenty of mistakes were made before I had it working well. I basically fed my software a bitmap of the image along with a depth map that I derived from NASA satellite data. The GCode created would raster while following the contours, but it also had to be smoothed to maintain constant velocity.

Doing it on a rotary axis would add another level of complexity. If I ever do a 3d rotary laser project I’d be glad to share the code with you.

That is truly outstanding work, sir! I’ve been consistently gob-smacked by what some of the people on this forum have been able to achieve.

Is there any possibility that I can purchase your software? Having the ability to 3D raster on the spoil board would be a game changer, by itself. I can’t even imagine how much work it took to create that. You should absolutely be compensated for it.

Thank you for responding.

Flat and rotary with the ESS plugin rastering is fairly easy (well, rotary requires a little axis remapping, but not too hard). Hopefully Warp9 will be able to add rotary as a feature pretty soon.

Anyway, for the 3D surface tracking, that is a pretty tall order as tinkeringtechie mentioned. A true rastering program like the ESS does ramps up to a constant velocity and then blasts the bitmap out on the fly. To coordinate that with Z moves and maintain that constant velocity so that the pixels end up where they are supposed to be isn’t trivial (because it can’t slow down the raster axis for extreme Z moves to take place).

I don’t know if you use Vectric software, but their laser module has a “laser picture” toolpath that can actually track a 3D image. I’m not a big fan of that toolpath because it isn’t really on the fly rastering, but is just Gcode and therefore every line or pixel is actually a vector. So if you think about a dithered image, you can be doing rapid-feed-rapid-feed and on and on every few thousandths of an inch. It is really slow, and wreaks havoc with the velocity planner if run at faster speeds. However, if you run it slow (like <50ipm), you can actually get reasonable image results (your mileage may vary).
The nice thing about the Vectric capability is that it should also already support rotary as well without any motor remapping trickery.

Hello Jim,

Thank you for responding. You’re pretty much the only reason that I have any level of comprehension surrounding this subject. Your videos have been invaluable. And thank you for the above explanation. That clears some things up that I was definitely confused about.

I’ve been using the files from your Google drive for a few months now. I’ve had good luck with normal flat-surface rastering using the ESS plug-in. And I’ve had good luck with etching vector toolpaths on the spoil board, as well as on the rotary axis using Vcarve Pro with the laser module, alongside your post processors. I haven’t attempted rastering on the rotary axis as of yet, but I have formulated a game plan. Maybe you can tell me if I’m on the right track.

I plan to size the source .bmp file to match the circumference of the cylinder that I’m cutting onto, then chose a zero x/y point on the cylinder to act as the lower left-hand corner of the image. When you mentioned that the “rotary requires a little axis remapping”, is that something that can be done in the “Universal.txt” file, or does it have to be changed in the Mach4 configuration directly? If it is done in Mach4, I’m assuming I would need to map the y-axis signal onto the a-axis in order to make the raster function correctly, is that correct? This is all still new to me. I’m trying to wrap my head around it.

I’ve seen the “laser picture” toolpath in Vcarve, but for some reason I had convinced myself that it wouldn’t work with the ESS. But now that you’ve explained it, I’m not sure what made me think that. I’m absolutely going to give it a try in the near future. I can now see why tinkeringtechie had to implement “smoothing” in his software in order to bypass the “rapid-feed-rapid-feed” problem. I don’t know how you guys are figuring this stuff out, but it’s impressive, to say the least.

Again, thank you so much for responding. This has been extremely helpful!

You are on the right track. You can’t map the axis’ differently in the Gcode for rastering (yet). One of the features that Warp9 wanted to add to the rastering is to be able to chose the X or A axis’ as well, but they are a little shorthanded in the software department right now. I did do an experiment last year just to see if there were any other hidden gotchas and there aren’t.
So yes, you just swap your Y motors (don’t forget to do both the master and slave) to something else (A is fine), and swap your A motor to the Y axis. You do that in the Mach4 Axis Mapping tab.
Then you have to change your steps per unit on the new Y rotary axis (in the motors tab). The orginal A axis is in steps per degree, and you need to change that to steps per inch at the radius that you plan to burn at.
So your new steps per unit = (Original A steps per unit )* 360 / (pi * diameter of your burn surface)

The nice thing about this configuration is you don’t need to use wrapped toolpaths either, so you can run flat vector files on the rotary (with the spindle or laser), and laser rastering all with the same config. I ran my raster calibration files on this which has a combination of vector and raster in it and it worked fine.

When I did this I made a whole seperate copy of Mach4 to run this way so I didn’t have to keep going back and forth with all of the reconfiguration, just the steps per unit as the workpiece radius changes.

If i were going to do this a lot, I would write a screen function to do it so that you could go back and forth quickly without renaming mach4 directories and it would automatically update the steps per unit based on an entered radius. There are Mach4 APIs for all that. Maybe I will some day, I’m sorta waiting to see if Warp9 adds some of it to their rastering capability first.

As far as the Laser picture toolpath, ya it works with ESS, probably as good as any controller. Its just not something that can be done really well in Gcode IMO, so it kinda works at slow speed, and the ONLY reason I would use it is if I really wanted to burn an image on a 3D surface. Otherwise, the ESS built in rastering is super smooth. I’ve run it up to 1100 IPM and it handles the acceleration area great. Typically for rastering though you are down under 200ipm just for laser burn quality reasons.

Here is my raster/vector alignment calibration image run on a paper towel tube.

That is precisely what I needed to know, sir. Thank you for taking the time to figure all this out. It opens up doors that I would’ve never been able to open on my own. I’ve already got a separate copy of Mach4 running, so I think I’ll just turn that into a dedicated rotary-raster setup. Do you have a Patreon or something equivalent? I would happily subscribe to something like that. I know I’m not the only one who has benefited heavily from all the work you’ve done over the years.

No, just post some of your work when you get it working. It’s fun to see what other people make with all the possibilities of these machines. :grinning:

For what it’s worth you can burn vectors in the Z axis using the curent Avid CNC laser setup:

If you were doing a topo map this is very doable.

Will do, sir. Thanks again!

Hello Eric,

That’s an awesome project and a very well-produced video! I just recently started messing around burning vectors with the z-axis enabled. I never even considered slicing the model to extract the necessary vector outlines. That seems like a solid solution. I’ve been using a software package called “Luban” (https://www.luban3d.com/). It has a “Wireframe” function that converts a 3D-mesh perspective into a flat vector wireframe that can then be exported as dxf or svg and overlaid onto the same mesh in Vcarve. It’s remarkable software. There’s a myriad of different things it can do, mainly aimed at 3D-printing. It’s a bit sketchy to install because it’s not Microsoft certified and it was developed in joint effort by a university professor in Singapore and another professor in the U.S. So I have it setup on an old junk desktop that isn’t connected to anything critical. All that being said, it’s proven to be extremely useful, and I’m certain it would give you the surface vectors in your video in a fraction of the time.

Thank you for sharing the video.

I am pretty certain you can do this in Fusion 360 as well, although I do like the method I used in my video best because it gets it all done in one piece of software.