Simple Keystone Node

Hi I’d love it if there was a simple keystone node. The current “quad layer” node is clunky in my opinion. Firstly it changes the image to layer which strikes me as very odd.

Also there isn’t any node to crop/mask shapes from the image (ie diagonal lines across the image).

So I’m proposing a simple node of the image class that can keystone the image… and while I’m here I’m proposing that it can be used to diagonally crop pieces of the image too.

Feel free to point it out if there is one already.

simple keystone node

Sure, that would be doable. The reason the Make Quad Layer node outputs a layer instead of an image is that it’s more efficient (both for building the composition and for performance when running it) when combining multiple pieces into one final image.

However, for the case where there’s only one piece, we could add a node something like this:

  • Inputs:
    • image
    • verticalKeystone: -1 (biased to bottom) to 0 (square) to 1 (biased to top)
    • horizontalKeystone: -1 (biased to left) to 0 (square) to 1 (biased to right)
  • outputs:
    • keystonedImage

Also there isn’t any node to crop/mask shapes from the image (ie diagonal lines across the image).

@video_piglet, could you explain what you mean about cropping diagonal lines?

I guess I mean that the image could also be cropped by the same node. A keystone distorts the image so that it looks correct on a sloping wall for example. A crop actually cuts parts of the image out. At the moment I don’t think there’s any node that can cut a triangular piece from the edge of an image, I think that’s what I was getting at by crop diagonal lines.

I’m having a hard time typing this without sounding like a pedantic dong(is this a rude word, or is it okay to say?), so please bear with me, it is not my intention to come off as that.

When you say keystone, do you mean actual keystoning or do you mean corner correction? Keystone is the very specific correctional feature of cheap projectors when you don’t shoot the image straight on, but at a slight angle either vertically or horizontally. Corner correction is the option to take a corner of your image and place it where you want within the pixel-range of your projector. While you can “keystone”(ish) with corner correction, you can not corner correct with a keystone.

I also think you mean masking judging by your first post. Cropping can only be done from the edges, and will leave you with fewer pixels in the final image. It is essentially to physically remove rows or columns of pixels from an image. If you want to remove content diagonally, that is done with a mask.

While I absolutely agree that it is not a good experience to use the “Make Quad Layer” node to corner correct in itself - it is actually pretty nice when you have made a user interface for it. Then you can add the features you want, and have a good time mapping out your content.

Attached is a relatively simple composition using two instances of the “Make Quad Layer” to map out your content. One is used for preview and control along with handles to place your corners, the other goes to the actual output. This can of course be picked apart, modified with other options (cropping/opacity control/input selection…) and placed into a sub-composition to make for neater use and re-use. Note that this composition will reset the correction when the output window changes/moves, so do not use in production without modifying it to suit your usage. For production use, you should also implement a save system of some sort in case of restarting the composition or any unforeseen changes.

For masking, you can actually use the same approach. Just feed a quad with a black image to a layer position after the one you want to mask out, and adjust the corners of that one to suit your needs.

InsaneMapper.vuo (17.6 KB)

1 Like

@MartinusMagneson, you make some good points.

@video_piglet, I guess what we’ll do is open up this feature request for voting, and limit the scope to the simple keystone node.

For diagonal cropping/masking, I’d echo Magneson’s suggestion. Possibly we could create additional nodes related to Apply Mask that would be more convenient for specific situations. If you know of any that would be useful, please create a separate feature request.