Restricting a layer to a mapping surface

Is there a way to restrict a layer to a mapping surface without forcing that item to map to the surface in it's entirety? What I am looking for is basically an equivalent to "stage tiers" in WATCHOUT, where a layer can be restricted to a certain "tier".

 In Millumin, the desired behavior it to be able to adjust the size and position etc... of a layer which is "free-mapped" onto a surface, but without that layer's content spilling on to the canvas areas outside of the selected mapping surface.


  • Hello @michaelvoccola

    If I understand well, Millumin approach is different. 
    However, others approaches are possible : 

    - you can edit the input mapping in the slice editor and then place your media where you want. See this tutorial

    - put your medias in a timeline with the right custom resolution (using the "normalize") option in the scale of the layer. Then import that timeline in the dashboard. If necessary, you can use segments to fill your timelines with multiple medias. 

    - you can also refer to this answer 

    Hope it helps 


  • I think the issue here really arises when we are talking about projecting a rectangular video onto a trapezoidal mapping surface. Imagine that the video file is a bunch of circles - they aren't going to be circles anymore. I don't see how slice editor or copy layers will solve this without unnecessary levels of complexity, if at all.

    From a user perspective, this should be a checkbox on the cue/layer called "crop media to mapping surface". I of course understand making that happen is quite a bit more complex from a development standpoint, but that is the user experience I would expect.
  • Hi Perhaps you can simply use a mask ? In this case, no deformation...
  • Hello @michaelvoccola,

    There is something I don't understand : do the surface you're projecting onto, and your rectangular movie, have the same ratio ? I guess no.

    In this case (let's say the movie is a rectangle, and the surface to map is a square), there is 3 solutions :
    - using layer with a black mask, on top of the others (no mapping, just projecting a masked movie)
    - using the slice-editor, so your movie matches the shape of your surface (cutting some content up/down or left/right)
    - creating a canvas (Output popup) mapped to the surface, then using your movie inside this canvas as usual

    If it doesn't fit your needs, please explain us why (but keep in mind that Millumin cannot guess the width/height/shape of your surface).
    Watchout and Millumin have quite different concepts, but "stage tiers" in Watchout, are very close to "canvas" in Millumin. Are we talking about "stage tiers" like in this article ?

    Best. Philippe
  • @Millumin

    Yes, I am referring to stage tiers as described in that article. specifically:

    "Panning large images sideways on the main center area, or on the side screens, will make those images intrude on the adjacent display areas. That’s fine while using all five projectors as a single, large canvas, but not when using the side displays independently."

    We are almost never doing what would be considered mainstream projection mapping. Almost all projects would be almost identical to what is being described in that WATCHOUT document.

    While I agree with your comparison to a Millumin Canvas and a WO stage-tier, the issue arises when we want to treat all outputs as a single canvas. Using exactly the setup in the WO doc, let's use their example of flying/spanning content across all the screens - we can't do that if we use separate canvases in Millumin because the layers are tied to a given canvas.

    If we go with one big canvas then we end up with exactly the problem described in the WO doc. We can certainly add masks to the layers, but there is no way to accurately enter the coordinates of each corner in the mask and there is no way to copy a mask from layer to layer. It is extremely messy and very much "by eye" for each and every layer involved.
  • I suppose we could use additional canvases in very much the same way WO uses virtual displays. These canvases could be assigned to Syphon and re-ingested where needed onto the main, single canvas. The downside is that there is significant video delay using syphon with live inputs.
  • Hello @michaelvoccola,

    Are you looking for something like the attached project ?
    It's using Syphon only for sake of seeing what's happening, without pluging outputs (I also colored the outputs so it's easier to see the difference between outputs).
    In brief : it's using "advanced layout" mode in Output's popup (you can double-click the anchors to edit values numerically).

    Lastly, if you re-ingest Syphon in Millumin, it add 1 frame delay (16ms).
    We tried with 4 Syphon feeds piped together, and this is constant (16ms per re-ingested feed).

    Best. Philippe
  • edited June 2017

    Similar to your attached project, but my main focus is on the relationship between the two side screens and the center screen. I've updated and attached your project to represent the pixel space in question and added a pair of screens flanking the main center screen.

    Let's take a look at the white circle now and see how that circle animates across the center screen. It enters from just off the left side and exits on the right. The starting position of the circle is within the area or interest for the HL side screen, so the circle shows up there. We don't want it to show up on the side screen though.

    Sometime we do want the circle (or another object) to span all screens. Because we need this behavior as well we need to keep it as one single canvas and used advanced mode to setup outputs. We left that unused pixel space between the three screens to represent the actual physical gap between them at the venue. This approach is consistent with other media servers, including WO, and also with screen management systems such as E2, Ascender and Spyder.

    As discussed, I know we can use a mask on that layer to keep the circle from appearing on the side screens. The problem is a combination of lack of precision on the setup of the mask (can't enter coordinates) and the inability to reuse a mask across multiple layers.

    In the time that I have been involved with software development and workflows in general, I have learned that the best way to figure out a good experience is to exaggerate the scale of what is involved in the workflow. While manually creating a mask for each layer technically checks off the "there is a way to do this" box, it isn't scalable. For example, if we have a show with 100 layers that need to be "restricted" to one or more screens, it is unrealistic to manually draw a mask for each and every layer, especially considering that each mask will be different because there is no way to enter coordinates. So my suggestion here would be the ability either allow for a higher-precision approach to generating masks AND a way to copy/reuse them OR modifying the behavior of mapping surfaces to act like more of a mask than a warp OR creating a new property on the canvas level that mimics the stage tiers in WO.

    Either way, I think Dataton has done a great job with their implementation of stage tiers and there are absolution circumstances where that functionality is necessary and there needs to be some form of that functionality in Millumin that is better than the current approach to individual layer masks.
  • @Millumin

    - Forgot to attach the file. Here it is.
    Layer Restriction Demo.millumin
  • edited June 2017
    Hello @michael,

    From what I understand, you have 2 configurations : one with your 5 outputs (contant to span all screens), and one with only 3 outputs (keep content as one single canvas on 3 middle outputs). Am I right ?

    In this case, create 2 canvases, each for one configuration. See attached project.
    Of course, you'd probably use only one canvas at a time, and Millumin will only process this one (not the other, if there is no content to show). So saving resources.
    But you can mix both canvases, if you want to use these 2 configurations at the same time.

    Best. Philippe
    PS : if you want to copy masks from one layer to another one, use the menubar ("Edit" then "Copy mask only")

    all5 - only3.millumin
  • @Millumin

    That is a very, very interesting solution. Would have never gone down that path. Perhaps this approach should be described in the docs as it is very useful but obviously has very low "discoverability".

    For those reading, Philippe has created an equivalent of WO's stage-tiers by creating multiple canvases to represent each "tier". In the output section, what you need to do is have each output "look" at the respective canvas area. A single output can be used multiple times. Any area of a canvas that does not contain content is treated as transparent. The Z-order of the canvases in the output configuration tab will determine the z-order of the "stage tiers" that we have created.

    Everything in my earlier posts is possible using this approach. The downside is that the workspace itself gets rather cluttered as all the canvases line up end-to-end, so if you were to break the example pixel space up into three separate screens, just the middle and just the flanking screens, you would have three very long canvases next to each other in your workspace. Functionally this means nothing, but from an operator perspective it can mean a lot of scrolling around. The other downside here is that you won't be able to see your final composite within the workspace. It might be necessary to create yet another canvas and use syphon to bring everything back together on your local monitor.
Sign In or Register to comment.