aseprite icon indicating copy to clipboard operation
aseprite copied to clipboard

Isometric object creation tools

Open AkashaRepo opened this issue 10 years ago • 24 comments

Asepirite has grids and pixel grids which are handy, but they are mostly limited to flat square things. It would be nice if there were tools for making isometic art easier, isometric angle grids, and perhaps a tool to generate perfect isometric shapes of arbitrary size like this one http://codepen.io/nosir/details/ganrh

AkashaRepo avatar Jul 09 '15 18:07 AkashaRepo

+1+

axelbsa avatar Jun 17 '16 14:06 axelbsa

From Steam forums:

Right now, even if you don't have full-on isometric-recognition mode implemented, could you at least please add (x-delta, y-delta) options for the Tiling mode? Something as simple as that would help with isometric tile editing immensely, and I don't think it should be too difficult to implement.

dacap avatar Sep 22 '16 14:09 dacap

On the community forum too.

dacap avatar Jul 19 '17 14:07 dacap

+1 on this, and thanks for listening! Being able to adjust the ratios of the canvas' squares would be a great solution to this.

petracles-zz avatar Jul 21 '17 17:07 petracles-zz

thank you very much for this :)

ellogwen avatar Jan 06 '18 22:01 ellogwen

Other from the forum

dacap avatar Apr 14 '18 12:04 dacap

If no one is working on this, I'd be happy to do some mockups and then work on implementing this.

jaybill avatar Dec 07 '18 21:12 jaybill

Nobody is working on this one at the moment @jaybill, if you have some mockups about this they will be welcome 👍 I think the first idea that came to my mind is the possibility to create isometric grids (like the regular grid), where snap to grid should work in those new kind of isometric grids.

dacap avatar Dec 09 '18 14:12 dacap

I would also like to see offsets for Tiled Mode so would be easier to make seamless isometric tiles or just make an Isometric Tiled Mode.

ghost avatar Dec 15 '18 04:12 ghost

I would be also nice to create circle in isometric mode

p10tr3k avatar May 04 '19 11:05 p10tr3k

@AkashaRepo maybe check out this plugin? https://darkwark.itch.io/isobox-for-aseprite It creates isometric box shapes and seems to work just fine in v1.2.11

ScepticDope avatar May 13 '19 07:05 ScepticDope

No news on this yet?

merijndk avatar Oct 22 '19 12:10 merijndk

There are no news about this one yet. We're working in a tilemap editor for v1.3, we hope to be able to introduce isometric grids with tilemaps (maybe v1.3-beta2 or 3).

dacap avatar Oct 24 '19 11:10 dacap

A tilemap editor? That's going to be great! +1 to the grid but def do the tile editor first, really excited to use it

l4tte avatar Apr 20 '20 19:04 l4tte

Any update on this? How close are you guys to a 1.3 release anyhow?

@dacap

aadamsx avatar Jul 17 '20 00:07 aadamsx

I, REAAALLLLYYY hope v1.3 has isometric support with the new tile features. It would be so game changing for me

RockyGitHub avatar Mar 26 '21 04:03 RockyGitHub

Right now we are really close to release part of the tilemap editor feature #977. Isometric support will not be part of the first release, but there is an internal logic to support some kind of isometric flat tiles in the future, but we prefer to release the feature ASAP as it is. (Probably in a couple of weeks.)

dacap avatar Mar 26 '21 11:03 dacap

Now that the tilemap feature has been added, will isometric support be added soon?

hazeled avatar Apr 03 '21 03:04 hazeled

Just adding onto this so it doesn't go entirely stale, I purchased Aesprite for Isometric art (not realising that it had no support).

This would be a great selling point and probably make this one of the better tools on the market.

bozau avatar Jan 12 '23 07:01 bozau

I also purchased this to do isometric art. I just assumed it would support this feature. But unfortunately not.

ColinM94 avatar Mar 05 '24 13:03 ColinM94

As an experiment, I hacked together some logic to rotate the grid in 7b03dc4 last week, including an option for enabling and disabling it:

screencap

It's only modifying how the grid is drawn, and nothing else, so it's just a visual guide. I have to rework a few details too. But because it's done through a spatial transform, doing operations with the displaced grid points should be about the same, plus inverting or applying said transform. Also, modifying the angles used for rotation gets you a different type of grid, so variations on isometric could perhaps be added with relative ease.

Adding support for tiles is a trickier question though, as rotating the grid doesn't make sense in that scenario (just think of subdividing a square or rectangular image into diamonds, as opposed to smaller squares or rectangles). Both guides may be needed in that case, I am not entirely sure. Anyway, it's an interesting feature to work on, so I'll look at it a little more.

Liebranca avatar Sep 30 '24 23:09 Liebranca

@Liebranca that looks great! I was just testing your patch and there are a couple of things I'd like to notice:

  • I'm not sure where the origin of the isometric grid should be located, but probably this (?):

    image

    I'm not sure if the grid dimensions should indicate the dimension of the grid in isometric view or in orthogonal view. E.g. from https://tips.clip-studio.com/en-us/articles/4969

    image

  • The pixel grid should not be isometric, they should be always orthogonal:

    image

  • When we zoom in, the isometric grid should show the boundaries of each isometric grid with pixel precision:

    image

    We have an utility class to create segments/boundaries from a bitmap mask: https://github.com/aseprite/aseprite/blob/a975873f7ae38988d4cc2f20dc10e12ec08f3bbd/src/doc/mask_boundaries.h#L20 This is used to draw the boundaries of the active selection, which is similar to the kind of work we need here. I think that we could create a mini template of one tile boundaries (a gfx::Path to paint just one tile), and draw the same path repeatedly over the whole editor canvas to draw the whole grid.

  • The doc::Grid type has some special properties that are not fully used but were created for isometric (and other projections) tilemaps in a future, like m_oddRowOffset and m_oddColOffset. Although these might be useless right now for this feature.

As a first version it would be nice to have the possibility to specify an isometric grid as you have created. I think the segments should be displayed as we zoom in. And there are several variations of isometric grids that probably we could support, e.g. from https://tips.clip-studio.com/en-us/articles/4969:

image

dacap avatar Oct 01 '24 14:10 dacap

Some alternatives about what a 32x16 isometric grid should look like, from: https://mastodon.art/@eishiya/113235611218123023

image

image

image

dacap avatar Oct 02 '24 12:10 dacap

Hi @dacap! Thank you for the references and notes, they've been very helpful!

I've mostly rewritten the approach for 89595af, as drawing can be done accurately without rotations, and this in turn makes it easier to think about the grid points themselves. The new implementation simply interprets the dimentions to be those of the orthogonal grid, and fits the isometric one within that space, so the line angle depends on the ratio (say 2:1 for 26.5º or 1:1 for 45º).

I've also fixed the pixel grid issue and added logic for drawing a pixel-precise version of the isometric grid according to the zoom scale (hardcoded to use pixel-precise grid if >8 for now).

pixel-grid

There are a few of things I still need to do:

  • Drawing a pixel-precise grid for ratios other that 2:1.
  • Handling other ratios in general, my method is currently not drawing the lower half 100% correctly for 1:1 for instance.
  • Taking the grid offset into account. This one simply slipped my mind.

Small note to myself for the future: snap to grid should be something along the lines of transforming coordinates to orthogonal space, finding the nearest point normally, and then transforming back to isometric. So in essence it's still adding a conditional prologue and epilogue to already existing code. But what I'd need to look into is building a matrix for this, from the grid bounds themselves. Anyway this is something for later on.

Liebranca avatar Oct 03 '24 12:10 Liebranca