Using the WordPress 3D Printing plugin got us most of the way to the end-goal in terms of functionality, but there were some visual customizations that needed to get made as well as some technical hurdles that needed to be overcome.
The plugin allows the user to upload a 3D file or zip file of 3D files, and then visualizes the files in a
<canvas> tag on the page. The user can then scale the size of the object to be printed, as well as choose what printer, material, and material color should be used to make the print.
Configuring the plugin
The first step needed to integrate the 3D printing plugin for this theme was to add all of the data for the printers the client has available in their shop. For each printer added, we also needed to specify what materials were available to print with. Lastly, for each material available we needed to specify what color options are available in that material.
Modifying the template
The 3D plugin came with a product page template that already integrated with WooCommerce, but did not have any functionality included that would allow us to customize the look and layout of the template.
I ended up forking the entire plugin so that our changes to it would not be overwritten if updates became available for the plugin. Then, using WooCommerce hooks I was able to re-order the WC components of the plugin template to reflect the layout of the design I was given.
Fixing plugin bugs
The plugin, while it did do a bunch of the heavy lifting for us, had some issues. Part of the functionality the plugin needs to provide in order to integrate correctly with WooCommerce is to determine the amount [volume] of material needed in order to print the file the user uploads.
This is how the sale is able to be priced based on the cost of printing time of the printer and also the cost of the material being printed with. While this functionality worked, somehow the weight of the printed object based on the material being used was not being passed back to WooCommerce, and therefore was not available to the shipping add-on we were using.
I ended up do a bunch of troubleshooting to find out how to expose the PHP/JS data in order to get the calculated weight of the object(s) to be printed and send that data to the shipping add-on in order to calculate the weight and get a shipping quote (instantly) to the user during the checkout process.