# Plyplot 

Render pointcloud files to ready-to-plot svg.

Excerpt coming from the contribution for the [Pen plotting at XPUB](https://hub.xpub.nl/chopchop/PEN-PLOTTING-PARTY/Pen_plotters.pdf) zine.

## Plot twist - it was not a technical issue

For the last four years I've been researching practices of 3D documentary, finding some interesting tension between a genre that traditionally claims to be "objective" and "natural", and a super digital & constructed technique such as photogrammetry. ( A process to create 3d models starting from a series of photos of the same subject).

Eventually this tension resolved with the growing awareness that the friction is not a matter of technical complexity or abstract remediation, but more related to the context around each tool, its language, and the way it interacts with its surroundings. 

With this in mind I've started enjoying working with photogrammetry models, despite their visual clunkiness and not-so-ergonomic form-factors. In particular, I've been busy with pointclouds portraying geological subjects, such as avalanches and quarries. 

Pointclouds is pointillism for 3D models, and from pointillism to plotillism is really a short call. 

So here is a prototype to transform pointcloud files (`.ply`) to `SVG` ready to plot, in short: `plyplot`.

1. Take a lot of pictures of an avalanche
2. Generate the photogrammetry with software such as Meshroom, export it as .ply file
3. Run plyplot to render the SVG 
4. Plot 

Plyplot is a vvvv script that project the 3D pointcloud into a 2D view, rendering it as an SVG. 

Outcomes and issues

⭐️ Some plotters complained! Too many points to plot. Wonder if the bottleneck was inkscape, since I was plotting from the its plugin. Will try a more lazy approach, sending just a few point at the time and not all of them together. (This is somehow the way NLTK uses to operate with very large dataset, or haskell with infinite lists)

⭐ The SVG paths were triggering some error in the plotter: probably because their coordinates were overflowing the viewbox attribute of the SVG. Solved it by applying the transform to the path positions before rendering the SVG.

⭐ The programming environment caused some problem! Plyplot was developed in vvvv, a visual programming language really handy to develop quick prototypes. It's my go-to choice when I want to relax and figure out a problem having fun.

Unfortunately the editor is available only for Windows, that is not exactly the most popular OS in the xpub bubble.

In my two years studying here, I've progressively used it less and less, especially for the reason of not being able to share the scripts with my dear friends, and a perceived problem of technical accessibility.

My initial aproach to share it was to rewrite it using browser based libraries, but because of time and energy constraints the plan didn't work out. During the research I found indeed some really interesting resources linked at the end, but in general the contribution was spiraling, an not in a plotter way. 

I had almost decided not to share anything, until I realized:

What if this script doesn't need to be universally accessible? What if the operative system it runs on is not a technical problem, or a problem at all? What if it's already enough, even precious to share the tool and the context around it, the situation from which it emerged? 

Plot twist: it was not a technical problem. It wasnt even a problem at all.

Somehow these thoughts resonated a lot with the initial riddle between documentary and 3d and the situatedness of a tool. So I felt like sharing the script even though it runs only on windows 😝😝😝 Find it on the xpub git tomorrow!

This was a nice redemption arc for me, I humbly thank my friends in the bubble.

## Resources:

- [Plyplot](https://git.xpub.nl/kamo/plyplot)
- [Render 3d scenes from webgl to svg](https://www.generativehut.com/post/render-3d-scenes-from-webgl-to-svg)
- [From obj to pen plotter](https://www.generativehut.com/post/from-obj-to-pen-plotter)
- [Plotter vision - SVG culling](https://plotter.vision/)

## Setup

The prototype includes several [vvvv](https://visualprogramming.net/) patches with diferent tryouts. In order to run them you need to install vvvv gamma. 
