This post is part of a series of guides on how to write your first ACM SIGGRAPH / TOG paper. You can find the other articles here.
This guide will show you how you can create figures that are intended to explain and clarify ideas from your paper. High-quality figures can simplify complex explanations and improve the presentation of your paper. In this guide, we’ll cover the entire process from conceptualising figures to producing them with a combination of Illustrator and Blender. Be sure to check out part one on rendering paper figures with Blender by Silvia Sellán if you haven’t yet!
First of all, I’d like to credit the people who inspired my style and process: Keenan Crane and Nicholas Sharp. Keenan has shared a very nice presentation on his process for creating figures, which I strongly recommend if you’re interested in creating beautiful, informative figures.
The Process
In this post, I’ve structured the process according to three main steps:
- Planning figures as part of your paper’s ‘story’
- Sketch and iterate
- Creating figures in Blender and Illustrator
If you’d like to jump into the nitty gritty illustrator + blender stuff, scroll to the creating figures in blender and illustrator heading.
Along the way, I’ll use some example figures I created for a recent SIGGRAPH paper: DeltaConv. It suffices for now to show you the introductory figure and say that the paper deals with an issue of using local coordinate systems on surfaces and how to solve that when you want to generalise CNNs from images to curved surfaces. In this post, I’ll show you how I got to this figure and try to draw some lessons that you could use in your own paper.
Guiding principles
To start, let’s establish a guiding principle: a paper figure should be judged by how well it serves its purpose: Does it communicate insight? Many figures can be made better and prettier just by asking this question. Not with a special font, nor that fancy suite of software.
The next principle: good design is all about iterating until the figure is just right. Use tools that allow you to iterate quickly and progress to a more complicated tool in steps: iterate with a sketch on paper to figure out how you want to illustrate the concept and try out some compositions; then create a rough version in your preferred graphics software to figure out how you can translate the concept to clean lines and simple forms; finally create a polished version where you pay attention to alignment, tiny details and materials.
Planning figures
In an ideal situation, you think about where you would need figures as you are structuring and writing your paper. You can add placeholder figures (empty squares) to think out how your figures fit the flow of the story and give them captions that describe what each figure should show. Think of figures as backdrops for the main plot points in your paper and go along them from the perspective of a reader: add a figure wherever you think the reader might need some visual support.
Figure 1 was a solution to three ‘needs’ that arose when writing the paper:
- we needed to show the problem, as the figure would act as a teaser for the paper,
- we wanted people to think of coordinate systems on the surface, rather than in 3D (set the right mindset), and
- we wanted our audience to know that the approach could work on point clouds.
Each of these requirements arose from feedback from collaborators as well as responses we got from external reviewers.
If you’re not sure how to identify this ‘need for a figure’, try to explain your core ideas to another person and take note of where your discussion partner gets stuck or when you try to visualise a concept with gestures. Maybe you refer to some ‘real-world’ concept, or you have the urge to draw the situation. That’s where a figure will likely help a reader as well.
Sketch and iterate
When you have identified the need for a figure and thought about what you want the figure to show, you can start creating it. A first step is to look at other examples that describe a concept close to what you’re trying to say, such as figures from text books.
For Figure 1, there were lots of figures in other texts that show the core idea: local coordinate systems on a curved surface. Here’s just one:
Then, start creating in the medium that lets you explore and iterate ideas as quickly as possible. Good-ol’ pen-and-paper will do.
Here’s what that looked like for our intro figure.
It’s fine for a sketch: it tells us which components we want in it and gives some clue for the layout. It satisfies two of our goals (showing the problem, and setting the right mindset), but I’m not yet showing the audience anything of a point cloud. We’ll get to that in a later stage.
Iterate a couple of times on your sketch and try replacing your placeholder with the sketch. If you read through the text, does the figure show you what you were expecting to see?
Creating figures in Blender and Illustrator
I know that I said that better software alone wouldn’t give you a prettier figure, but let’s nuance that a bit: some tools are better suited than others. In general, I prefer using vector graphics, as they can be scaled to any size without sacrificing on quality. If you export a vector graphic as a PDF, you can directly import it in your LaTeX file as a figure. The paper PDF will be infinitely zoom-able with a minimal memory footprint.
I use Adobe Illustrator for vector graphics, but you’re free to use any tool you like. Sometimes you can get Illustrator through a license from your university or research group. If you don’t have that luxury, a free alternative is Inkscape. Every step I show can be recreated in any tool with support for vector graphics. If you are completely unsure how to pick one, try to find software that gives you direct control and the ability to align and distribute elements automatically.
In Figure 1, we have both a flat, 2D image and a curved surface in 3D. It’s best to use 3D modelling software to shape the 3D surface. I’ve tried to ‘fake’ it before in Illustrator, but it’s really tricky to get right. Our eyes can always spot a line that is just a bit too slanted or an oval that is thinner than it should be. We’ll use a combination of Blender and Adobe Illustrator to make figures of curved surfaces.
Why Blender? If you’re familiar with other kinds of 3D software (like 3DS Max, Maya, or Houdini) or have colleagues who can help you out with your figures, there’s no need to stick to Blender. The reason we suggest Blender in these posts, is that it is free and open source. In addition, Blender has grown a lot in recent years, both in quality of use and quantity of users, and has become a very usable and extendable piece of software with lots of community attention and support.
Getting started in Illustrator
Open up Illustrator and create a new file (File > New…). A window pops up where you can pick a document size. This can be somewhat confusing if you’re used to tools like Gimp, Adobe Photoshop or PowerPoint because
- you probably don’t know how large you’d like your figure to be and
- vector graphics don’t really have a ‘resolution’, since they’re defined as mathematical equations.
It doesn’t really matter which document size you pick. You can always resize the artboard (the name for the canvas in Illustrator) at a later moment. I typically choose ‘common’ in the ‘web’ tab, because it gives me enough room to work with.
The second choice we need to make is the color mode. RGB is used for screens, CMYK for print (Cyan, Magenta, Yellow, blacK). In most cases, I pick RGB, unless you know your figure will only be used in print. More often, people will view your paper on digital screens, so you can design your figure in the way it’ll be viewed most often. This can also be switched later on.
Click on ‘Create’ to open the new file.
Next, you’ll see the canvas and the main tools in Illustrator. In this tutorial, we’ll go briefly over some core tools. First, some basics: I’ll refer to the main blank area as the canvas (a.k.a. the artboard). This is where you can draw your vector graphics.
- You can draw graphics with the tools in the toolbar (left).
- Each of these tools has settings that you can control in the control bar (top).
- The elements of your artwork are placed in layers (right).
The one tool that you can always return to if you’re stuck is the selection tool (press V on the keyboard). You can select and move objects with this tool and this usually gives you the behaviour you expect from a typical cursor.
Tip If you right click on the tool icons, you’ll see more options and the corresponding keyboard shortcuts. Try and learn those shortcuts, they’ll make your life much easier.
We’ll start by importing the sketch and recreating it with some of the basic tools in illustrator.
The easiest way to do this, is to simply drag-and-drop the sketch onto the canvas.
You can resize any object in Illustrator proportionally by holding shift while dragging the corners of the object. We’ll also set the opacity to 30%, so we can see through the reference.
Next, lock the layer, so we don’t have to think about accidentally clicking the image all the time and add another layer below it to draw the figure.
Now we can start to roughly block out our figure in Illustrator using some of the basic tools (keyboard shortcuts in parentheses): the pen tool (P), the rectangle tool (M) and ellipse tool (L). You can always hold shift when using these tools to make sure that the elements are scaled proportionally (a square stays a square) or that the lines you draw are on a straight line.
Click the rectangle tool (M) and then click and drag on the canvas while holding shift to draw the main components.
Next, draw the circles on each of the coordinate systems with the ellipse tool (L). Hold shift and alt/option while dragging from the center of the squares to draw uniform circles (shift) that are centered around the cursor (alt). If you want to make sure that you place your cursor exactly at the center, check that smart guides are enabled (Menu > View > Smart guides).
Change the fill to black and stroke to empty.
Finally, let’s use the pen tool (P) to add some curved lines and the surface. The pen tool lets you draw Bézier curves. You can add control points by clicking on the canvas. If you click and drag, you can also adjust the handles of the control points. The handles influence the shape of the curve. If you ever need to adjust a control point later on, you can use the direct selection tool (A), which allows you to adjust individual control points and handles.
Add the center arrow in the figure using the pen tool. And click esc to finish the curve.
Adjust the stroke properties to add arrowheads. Click on Stroke in the control bar and select the arrowheads you want. Then scale them down to the size that fits.
We’ve covered almost all of the tools you’ll need to get started:
- the selection tool (V) to select and move objects,
- the direct selection tool (A) to select and move control points,
- the rectangle (M) and ellipse (L) tools to draw primitives,
- the pen tool (P) to draw Bézier curves.
You’ll probably need one more thing: text. You can add text with the type tool (T). Click and drag on the canvas with the type tool to add a text box and type the text you want. If you want to adjust the character settings (sub/superscript, kerning, etc.), you can click on Character in the control bar. If you need to adjust things like alignment, click on Paragraph in the control bar.
It’s nice to have the fonts in your figures and the paper match. Either you can use the fonts used by the ACM template:
Or use a neutral sans-serif font. These are nice to use if you’ll use your figure in other settings as well:
- Source Sans Pro
- Helvetica
- Arial
The result of this process is the following figure.
Before we head over to Blender, some general remarks and tips:
- Group objects by pressing ctrl/cmd + G to keep your file organised. Ungroup with ctrl/cmd + shift + G.
- You can duplicate objects by using the selection tool (V) and holding alt/option while clicking and dragging the object along the canvas. You can also press ctrl/cmd + D to duplicate.
- You can arrange objects from back to front with the shortcuts ctrl/cmd + } (bring forward) or ctrl/cmd + { (send back).
- It’s important to evenly align and distribute objects. Your figure can look sloppy if things are off even slightly. You can use smart guides as shown before to snap objects along automatic guides as you move them. If you need more precise control, you always align and distribute objects by selecting multiple objects with the selection tool (V) and using the alignment and distribution buttons in the control bar. These are also available under Menu > Window > Align.
Illustrator to Blender
In Blender, we’ll create a simple surface, add images from Illustrator in 3D and render to an image that we’ll use in Illustrator again. We could, of course, build everything in Blender but that’s probably overkill.
I’ll assume you know a bit about Blender. If you don’t, be sure to check out Silvia Sellán’s guide, or follow the donut tutorials by Blender Guru.
Start by removing the basic cube (select the cube, press X, press enter) and add a grid (shift + A, Mesh > Grid).
We only need two subdivisions along each axis. Just having two subdivisions makes it easier to edit the mesh later on.
Go into edit mode by pressing Tab and make sure can select vertices by pressing 1 on your keyboard. Then select some of the corner vertices and move them along the z-axis (G, followed by Z). In the sketch we made a saddle-like surface, so we’ll mimic that here.
Go back into Object mode by pressing Tab and select the modifier tab (right, wrench icon). Add a subdivision surface modifier and increase the number of subdivisions to 3. Right click the object and select shade smooth to get a smooth surface.
You can go back into edit mode to adjust the vertices to your liking. If you like, you can add some loop cuts toward the edges to sharpen the corners.
Add a material to match your style. I like having a surface with muted pastel colours and high roughness, as it gives a nice matte look.
Finally, I created a coordinate system image in Illustrator and exported it as a PNG.
The quickest way to import this image into Blender is to enable the Import Images as Planes add-on.
Then add an image as plane (shift + A, Image > Images as Planes) and select the image you want to add.
Rotate the image plane to align with the x-y plane (press R, lock to y-axis by pressing Y, and type 90, followed by Enter to rotate 90 degrees).
Next, add an Ico Sphere at the center (shift + A, Mesh > Ico Sphere). Give the sphere a dark material, shade smooth, and add a subdivision surface modifier to smoothen it. This sphere will act as a point in the point cloud.
Finally, parent the image plane to the sphere: select the plane, then hold shift and select the sphere, then press ctrl/cmd + P.
Turn on Snap and snap to Faces. Now you can grab the point and move it along the surface to a place where you like.
We could even add a relationship between the normals of the surface and the image plane to make sure they align, but let’s keep it simple for now. Move the point to a nice location on the plane and rotate the plane to a good orientation that is roughly tangent to the surface.
I had to turn off Snap and offset the plane slightly from the surface to reduce intersections.
We’re almost there! Now we just need to add some points to the surface, to imply a point cloud.
Duplicate one of the ico spheres, select the surface and go to particle system tab (icon of graph). Add a particle system by clicking the plus sign.
Set to a Hair. Under Render select Render as > Object. And pick the ico sphere under Instance Object. Adjust the scale to match the other points.
If you like, you can assign a vertex group to guide where the points should be spawned.
Finally, it’s time to render the image and bring it back to Illustrator.
Lights. Add an area light behind the camera, pointing to the surface and a smaller area light from the side to fill the shadows.
Camera. Place the camera in the position of your viewport by pressing ctrl + alt + numpad 0.
Action! In Render Poperties, select cycles as the render engine and under Film, check Transparent. Set the number of samples for the render to 32 or some other low number. Then render the image (Menu > Render > Render Image).
Once you’re done rendering, go to Image > Save Image in the render output to save the output.
From Blender to Illustrator
Now, we can bring the rendered image back into Illustrator by drag-and-dropping the file. I’ve changed some of the colours to harmonise better and added the coordinate systems I designed in Illustrator.
Finally, let’s crop the artboard and save the file as a PDF (File > Save as… > select PDF). Now you can use this file in your LaTeX document.
Recap and next steps
We’ve gone through the following steps to create an explanatory figure:
- Planning and sketching figures.
- Using Illustrator’s tools to create vector graphics.
- Making simple shapes in Blender and including images as planes to incorporate figures from Illustrator.
- Bringing back images into illustrator and saving as a PDF.
We’ve only scratched the surface of what’s possible in Blender and Illustrator. I’m excited to see what you’ll design!
Some things you can try out for yourself:
- Add outlines and tracings to your surface. You can either do this by hand in Illustrator or generate outlines automatically by enabling Freestyle in Blender’s Render Properties.
- Use Geometry Nodes in Blender to create figures procedurally. You can use this to import experimental data or create figures that are easily changed later on.
- Animate your Blender illustration by using keyframes for presentations.
This post is part of a series of guides on how to write your first ACM SIGGRAPH / TOG paper. You can find the other articles here.