Importing

A hint is a mask, and painting a mask that matches your artwork exactly is a job for the program you drew the artwork in. So it does not have to be done here: import a layered document and map its layers onto hint layers directly.

A base sprite

File ▸ Import ▸ Base sprite… (Ctrl+Shift+O), or drag a PNG onto the window.

This replaces the open artwork and clears any painted hints, since hints address pixels of the sprite they were painted on. A sprite with transparency around it is what the tool wants.

Layered documents

File ▸ Import ▸ Photoshop or Aseprite file, with its layers as hints…, or drag the file onto the window. Photoshop .psd and .psb, and Aseprite .aseprite and .ase, are read directly — no exporting step in between.

The format is decided by what is inside the file rather than by its extension, so a document that arrived under the wrong name still opens.

An import dialog opens listing every layer, top to bottom as your Layers panel shows them, with a thumbnail. Each layer gets a dropdown: leave it as artwork, or send it to a hint layer.

Layer names do the work for you

Name a layer for the hint it feeds and the dialog opens with the assignment already made. It is deliberately liberal about what it accepts:

HintNames it recognises
Add strokeink, add ink, add strokes, line add
Remove strokeerase, ink erase, remove lines, no lines
Cut outlinecut, occluder, hard edge
Flattenflatten, flat, planar
Tube axisaxis, tube, cylinder, centreline
In frontfront, in front, overlap
Convex areaconvex, dome, bulge, boss
Concave areaconcave, crater, dish, dent, hollow, socket
Trust methodstrust, detail mask, detail region

A prefix of hint:, tnmap: or normal map: is stripped before matching, as is a trailing copy from duplicating a layer, and brackets are ignored. So hint: front, arm (front), front copy 2 and TNMAP: Front all land on the same place.

A layer whose name matches nothing arrives unassigned, which is the important half — reading a layer called "cape" as a mask would change the result without anyone having asked.

An example layout

Layers
  hint: cut            ← white where the outline is a hard edge
  hint: front          ← filled over the arm that crosses the body
  hint: ink-erase      ← over the scale texture, to stop it creasing
  ─────────────
  Line art            ← your ink; also a fine candidate for hint: ink
  Shading
  Base colour

Hint layers can be hidden and will still import — visibility is shown in the dialog but does not exclude a layer. That applies to a layer inside a hidden group too. What visibility does affect is the artwork: a hidden layer never contributes to the sprite, so the picture you import is the picture you had on screen.

Aseprite

The first frame is read. Layers, groups, per-layer opacity and visibility all come across, as do indexed and grayscale documents. An animation imports as its first frame rather than as a batch — for a whole animation, export the frames as PNGs and see Frames and animation.

Aseprite files carry no flattened copy of the artwork, so the sprite is composited from the layers with normal blending. A document leaning on blend modes will not look quite as it does in Aseprite; the editor says so when it happens.

Tilemap layers appear in the list but arrive empty, since a tilemap is a reference to a tileset rather than a picture.

Alpha or luminance

Each assigned layer also chooses how its pixels are read:

  • Alpha — the layer's own transparency is the mask. This is what you want for a layer you painted on a transparent layer, which is the normal case.
  • Luminance — brightness is the mask, so white means "here" and black means "not here". Use this for a layer filled with black and painted white, or one that arrived flattened.

Taking the artwork too

A checkbox at the top decides whether the document's flattened image replaces the open sprite. On by default, since importing a document is usually how you open the artwork in the first place. Turn it off to pull hints out of a document onto a sprite you already have — that is undoable, so a mistaken import can be taken back.

The dialog warns you if two layers are assigned to the same hint (they are combined, which is usually fine) and if a layer looks unsuited to the hint it has been given.

Reload from source

File ▸ Reload from source (Ctrl+Alt+O) re-reads the document you imported and applies the same layer mapping again.

This is what makes the workflow a loop rather than a one-off: import the file, look at the result, go back to Photoshop or Aseprite, fix the mask, come back and press one key. Layers that have since been renamed or deleted are reported by name, because a rename is the likeliest cause and you are the only one who can tell.

Reloading needs persistent read access to the file, which the desktop build always has. In a browser it depends on the File System Access API — available in Chromium-based browsers and not elsewhere. When it is unavailable the import dialog says so up front, rather than letting you discover it when the menu item is greyed out.

Placeholders

Height map and Existing normal map appear in the Import menu, greyed out. They are listed rather than omitted because "can this take a height map?" is a question you would ask of the menu, and a menu that simply lacks the entry answers "no, and never will". Greyed out answers "not yet", which is the truth, and settles where the answer will appear when it arrives.