MANUAL picoCAD
MANUAL picoCAD
MANUAL picoCAD
Welcome to picoCAD!
picoCAD is a program to build and texture low poly 3D models. I needed something simple to
create simple models and found all other programs bloated and overly complicated, so I decided to
roll my own.
Since picoCAD is built with PICO-8 it comes with pretty harsh limitations. This is fine, since it
encourages the use of even less polygons. Be smart and creative and anything is possible!
Credits
Created by Johan Peitz, @JohanPeitz
3D math and fill routines adapted from Frederic Souchu, @FSouchu
Built on the PICO-8 platform created by Joseph White, @Lexaloffle
Overview
Use the following screens to get an overview of how to use picoCAD. But read on, there is a lot to
discover!
How to have a good time in picoCAD
3D in PICO-8 takes up a lot of the available performance. This means it will start running slow if the
models are too complex. Especially in build mode since the model has to be drawn four times.
Here’s some basic tips and tricks to stay sane.
Basic controls
Use mouse and keyboard to control all aspects of picoCAD. Using shortcut keys will greatly speed
up the workflow. In general:
For ease of use, most actions snap to a grid. This might feel cumbersome in the beginning but is of
great help to make things manageable at the low resolution.
File management
picoCAD stores your work in text files. These are easily readable and editable in case you want to
take your work elsewhere. Due to limitations in the pico8 platform, files will be stored in the
following location, regardless where you load them from.
Windows
%appdata%/Roaming/pico-8/appdata/picocad/
OSX
~/Library/Application Support/pico-8/appdata/picocad/
Linux
~/.lexaloffle/pico-8/appdata/picocad/
This folder can be opened via the “View files” option in the ☰ menu.
Also, beware that there is no warning before quitting or overwriting unsaved work, so save your
work often!
For file handling and exports to work properly, please make sure you are running the program with
administrator rights.
Loading projects
To load a previously saved picoCAD project, simply drag the txt file into the picoCad window.
Please note: picoCAD cannot remember where you loaded the project from, so when saved it will
end up in the same directory as everything else (see folders above).
Views
picoCad is structured around two views; build and texture. In the build view you place and
manipulate meshes, and in the texture view you can move around UV coordinates. Toggle between
the views with the top right buttons on the toolbar (or press V).
Both views support all three different render modes: wireframe, fill, and texture. Swap between
💡
them with the ▢ button. When in fill or texture mode, you can also toggle shading on or off with the
button.
Build view
The build view shows whatever you’re building from
three directions - one for each axis, and a fourth 3D
view. The general idea is that you build your model by
placing and manipulating meshes and vertices in the
three views, seeing the result in the 3D view. In each
viewport you can use the arrow keys to move the
camera around.
Moving meshes
Grab a mesh with the left mouse button and drag it to
where you want it. This moves the mesh’s origin point as well which is important if you start
rotating things.
Hovering over faces takes precedence over selecting vertices so if you can’t reach a specific
vertex, hold X to force vertex selection.
Any selected vertices can then be moved by either dragging them directly with the mouse, or by
using the arrow keys. Moving vertices does not move the mesh’s origin point, which is important if
you later rotate the mesh.
Adding meshes
Click the [+] button to choose a volume to add. Right clicking almost anywhere also opens the
same menu. By using the available meshes creatively you should be able construct most things.
Color mesh Set the color for the whole mesh used in fill mode.
Rotate mesh Mesh is rotated around its center by 45 degrees. Use different
viewports to rotate around different axises.
You can also hover over a mesh and press R and T to rotate it.
Clone mesh Creates a copy of the current mesh and adds it to the scene.
Texturing view
This view is split between a 3D viewport and the texture.
Hover over faces in the model to see which part of the
texture it is using.
Manipulating UV coordinates
Click a face to be able to show it’s UV coordinates on
the texture. You can now drag the UVs to where you
want them. To quickly rotate the UVs of a face, hover
over it (or select it) and press R.
Importing textures
Simply drag and drop a 128x128 PNG texture onto the program to use it for texturing (this cannot
be undone). Colors will be adjusted to fit the pico-8 palette, and the texture will be saved in the
project file.
Note that picoCAD needs some of the texture memory for internal use, so only the first 120 lines of
the texture will be used.
Background color
Use the palette button to choose the background color to use in the 3D viewport as well as which
color to treat as alpha in texture mode.
Mesh centre
Each mesh has a centre point, represented by a red dot when you hover over the mesh with the
mouse. When rotating the mesh, it will rotate around it’s centre. If you drag the mesh around, the
center point will follow. To move the center point, select all vertices and move them - they will then
be moved while the center point stays.
Launch the toolbox and drag and drop the project you want
to export onto the program. Once loaded, choose the export
option you want and the files will be created.
Thanks
All the testers for helping me find gnarly bugs as well as ironing out the workflow (in no particular
order):
Antonio Menteguiaga, Pit, Waporwave, Jack Raymond, Jeiel Aranal, Khari Addison,
Preston Bruner, Miguel Sánchez, Annette Pew, Woolion, Chi Wong, Johan Vinet, Thomas
Leroy, errik, Riccardo Santangelo, and some who didn’t respond to whether they wanted
their names in here.
v1.0.1
● picoCAD
○ Added ability to disable snap to grid when moving vertices and meshes (for real this
time)
○ Added title to window
○ Changed GIF save name to use project name (eg banana_0.gif)
○ Removed outdated reference to desktop when saving gif
○ Removed p8l export from main application
○ Fixed model being wiped when reaching end of undo buffer
○ Fixed faces occasionally being highlighted during gif export
○ Fixed rotation via menu rotating around the wrong axis in some cases
● toolbox
○ Added functionality to export obj, mtl, png
○ Added functionality to export p8l
○ Added functionality to export png
v1.0
● Added ability to to disable snap to grid when moving vertices and meshes (hold Z)
● Tweaked spin speed in model view to be a bit faster
● Fixed crash when attempting to save with empty filename
● Fixed some actions not creating undo states
● Fixed textures not loading properly if only colors 0-9 where used
v0.9.13 - RC4
● Tweaked spin speed in model view to be a bit slower
● Tweaked toast messaged to stay on screen a bit longer
● Removed the * next to filename that was displayed if unsaved changes
● Fixed normals getting funky when merging vertices (and other special cases)
v0.9.12 - RC3
● Added a dithered shading step for textures
● Removed ability to save empty scenes.
● Tweaked the size and position of some ui elements
● Tweaked the colors used for the GIF watermark
● Fixed rectangle select not working in model viewport
● Fixed mesh center points not being drawn unless in wireframe mode
● Fixed color and zoom settings in project file being ignored
● Fixed project colors not being set correctly in some circumstances
● Fixed double sided planes flashing during some circumstances
v0.9.11 - RC2
● Added a [+] button for simple mesh adding
● Tweaked position of version string on about screen
● Fixed color menu not showing if clicking too far to the right on a menu option
● Fixed filename being displayed on top of save as prompt
● Fixed meshes not being draggable in ortographic viewports unless in wireframe mode
v0.9.10 - RC1
● Changed positions of most UI elements
● Removed ability to change render mode in orto views
● Fixed config issue causing slow spinning gifs to cut short
● Fixed gif menu showing up when clicking on a specific place
● Fixed gif export being choppy if scene suffered from low framerate
● Fixed vertices getting unselected when changing render mode
● Fixed project size not being recalculated on undo
v0.9.9
● Added a cap on how much content can be put into a single scene (16kB)
● Added toast message when hitting content cap
● Added a visual cue when approaching content cap
● Added different spinning speeds when exporting GIF
● Added functionality to rotate GIF in opposite direction (hold X when selecting in menu)
● Added ability to reset all views to default by clicking build view icon when already in build
view
● Removed zoom reset button (1:1)
● Removed 1px border being applied to all viewports
● Changed position of #picoCAD watermark not to collide with GIF tag on Twitter
● Changed colors on message toast
● Changed looks and content on About screen
● Fixed undo buffer from being wiped if running out of memory
● Fixed texture not being reset when starting new project
● Fixed filename input not allowing numbers
● Fixed being able to scroll texture too far
● Fixed viewports ending up in a funky state when importing a project while in texture view
v0.9.8
● Added shortcut to face property menu (press F while hovering a face)
● Added #picoCAD tag when exporting gif
● Removed menu borders when exporting gif
● Removed zoom percentage indicator
● Removed limit when zooming out
● Removed WASD mapping as is clashed with other keys and had different mapping on
different systems
● Removed ! indicator (cpu>100%)
● Changed so that GIF export saves in the same directory as everything else
● Changed menu option from OPEN to VIEW FILES
● Fixed zoom levels not being set properly on loading a model
● Fixed not being able to scroll texture with mouse wheel if a vertex was selected
● Fixed shading being inverted on the back of double sided faces
● Fixed crash caused by rotating a texture when no face was selected
● Fixed crash caused by loading files too big (>32k-ish)
● Fixed faces passing through the camera from being rendered twisted
● Fixed views not resetting properly when starting a new project
v0.9.7
● Added ability to start new project from menu
● Added ability to open folder where picoCAD saves everything
● Added ability to scroll the texture with mouse wheel
● Added ability to use WASD as well as arrow keys
● Added window mode to be default on first launch
● Added hovered UVs on textures being highlighted in the model viewport
● Added ability to select vertices inside meshes buy holding down X
● Added plane primitive
● Reversed mouse wheel scroll direction
● Adjusted perspectiveness to be less extreme
● Adjusted vertex selection to standard interaction models
● Fixed non-shaded textures not handling transparency correctly when lit
● Fixed top left 8x8 of texture not being usable
● Fixed cameras moving when entering filenames
● Fixed UV selection getting messed up when rotating UVs
● Fixed files being written to obscure pico8 path instead of sane location, new locations:
○ Windows: %AppData%/Roaming/pico-8/appdata/picocad/
○ OSX: /Users/Yourname/Library/Application Support/pico-8/appdata/picocad/
○ Linux: ~/.lexaloffle/pico-8/appdata/picocad/
v0.9.6
● Rolled back save fix, files are now saved as before (in mystery folder)
● Added minimum and maximum to zoom levels
● Added near camera clipping
● Added mouse wheel zoom
● Adjusted lighting settings
● Adjusted the rotation speed when recording gifs to be 10% faster
● Fixed 3D view not using perspective projection
● Fixed unlimited undo buffer leading to out of memory crash
● Fixed normals not being recalculated when dragging vertices
● Fixed crash caused by zooming in until division by zero occurred
● Fixed distorted frames appearing when recording gif of heavy models
● Fixed visibility check sometimes being a bit off
● Fixed crash caused by selecting “-------” from the menu
v0.9.5
● Added display of mesh origio when hovering a mesh in wireframe mode
● Added ability to rotate meshes in both directions using R & T keys
● Changed direction of movement when moving the camera with the arrow keys in an
orthogonal viewport
● Changed cylinder primitive to be on grid
● Change pentagonal prism primitive to center around it’s origo
● Adjusted light source to be slightly more from above
● Adjusted mouse and vertex interaction to be more forgiving
● Adjusted shading angles when using textures
● Fixed files being written to obscure pico8 path instead of program root
● Fixed color selection menu not resetting properly, causing the wrong things to be colored
● Fixed crash caused by changing render mode with the M key while hovering a face
v0.9.4
● Optimised vertex pipeline for slight (10%) performance increase
● Fixed viewports getting out of sync when moving camera in full screen
● Fixed view buttons creating strange states when pressed repeatedly
● Fixed texture coordinates getting messed up if texture was scrolled all the way down
● Fixed undo state not being created when changing face properties
● Fixed undo state not being created when cloning a mesh
● Fixed crash caused when menu was opened in the model view but selected over the
texture
v0.9.3
● Added individual face properties (back-face rendering, ignore shading, ignore texture, color,
render order) for faces and access via menu
● Added graceful error fallback on trying to import a non-picoCAD project
● Fixed so that the full version number is visible on the credits screen
● Fixed UV rotations not being stored in the project properly
● Fixed the build menu being accessible from texturing view
● Fixed deleting mesh not creating an undo state
● Fixed p8l export concatenating data instead of creating a new file
● Fixed hovering a face before entering the texture map conflicting with the selected face
● Fixed model from rotating when scrolling the texture
● Fixed uvs from not being selected if texture is scrolled
v0.9.2
● Added ability to scroll in texture view to use full texture
● Added a default texture
● Added ability to rotate face UVs
● Adjusted shading palette for pink and peach
● Adjusted model spinning speed when exporting to GIF
● Removed ability to rotate meshes in 3D viewports
● Fixed some primitives not spawning face up
● Fixed default UVs for all primitives
● Fixed so that texture doesn’t scroll when rotating model in texturing view
v0.9.1
● Fixed texture being 1px offset when reading from txt file
● Fixed compatibility issues in txt file between mac and pc
● Fixed crash when right-clicking selected vertices
● Fixed crash when undoing into an empty scene
v0.9
● First beta release