# 2D Low-poly illustration from 3D scene

# 2D Low-poly illustration

I like the feel of 2D low-poly illustrations. Here is some examples.

The process to create this kind of illustrations can be tedious, as described in this tutorial.

Given a reference image, the artist has to :

- Draw triangles, following hard lines of the initial image, creating small triangles on detailed zones and bigger triangles on coarse zones
- Create each triangle with Illustrator
- Snap together points from neighbors triangles
- Color each triangle

Some WIP from the illustration I created following those steps.

And my result :

It does look good, but it took me 20-30 hours. So I thought of an automatic tool producing this kind of result.

# From 3D scene to 2D illustration

I present here my ideas to implement such a tool, still under construction !

## Projective approach

I would like to produce this kind of illustration from a 3D scene. .

So, given an arbitrary 3D scene (ie high or low poly) and a point of view, the process would be :

- Simplify the scene to keep a small number of triangles
- Project the 3D scene on the 2D projective space of the point of view
- Pick colors from the scene for triangles

I also want to keep this editable on Illustrator (to change some colors for instance), then the output will be vector triangle (eventually a SVG file).

But an obvious drawback of this approach will be the look of the result. The triangles are seen from a point of view, and we can’t get rid of the feel of perspective. It will eventually still look 3D, like those flat shaded rendered scenes. You can get a good feeling of this comparing r/lowpoly2d and r/lowpoly.

And that is not what I want to get.

## Constrained Delaunay approach

To get rid of the perspective look, we have to work in the 2D space.

I think about using a Delaunay triangulation on 2D point (projections of the 3D points). It would produce regular, noce lloking triangles.

A constrained Delaunay triangulation could be used to preserve hard lines of the scene and can give so control if the user would be able to input those lines.

## Leave a Reply