5
$\begingroup$

I have a scene with monitors that display video from cameras in the same scene (or other scenes, but all of them are linked i.e., same objects in the scene). The cameras shown on the monitors do not view the monitors, so no looping should occur.

I found https://www.youtube.com/watch?v=mPFhX_ogL2Y that shows how to get the effect in the Game Engine.

I would like to do this in cycles.

Essentially I would like a material input node that corresponds to the output of the composition of a particular scene. The incoming image should honor the render settings of the particular scene and any compositing applied to it.

The Render Layer node does not appear to honor the resolution or compositing settings of the scene it comes from, and is not available to apply as a texture in the material node editor (that I can find).

I understand that this could be done by rendering the animation from the various cameras, then applying that video as textures to the monitors, then rendering the camera of the monitors. That's super tedious if your making changes to the whole scene, and I don't want to do that.

$\endgroup$
4
$\begingroup$

Can do it in compositor, using an UV pass to distort the images and some ID masks to mix the render layers from different scenes... you can lower the samples for the scenes that will be seen in monitors, and will have faster renders.

Here's a simple test I just did, never tried something like this before so there may be some mistakes and things to improve. I unwrapped the tv screens and assigned materials with different IDs to use as masks.

https://www.dropbox.com/s/nepv0ukolw9r0od/MONITORS.blend?dl=1

edit: had to use the unwrapping to correct aspect ratio of images a bit

and more info:

  1. you use different scenes for each camera
  2. in main scene you activate UV pass and Material Index pass
    • UV pass allow you to distort an image to match the geometry
    • ID material pass allows to isolate different monitor screens
    • but you need to unwrap the tv screens and use different materials for each
  3. in compositor you have a render layer for each scene
  4. use UV pass from main scene to distort the other render layers
  5. and use ID materials to set the alpha for the other render layers
  6. then mix the layers, could even use compositor blur or depth of field

but easier is to just look at the blend... I guess it can be done in other ways, ID masks for alpha is not that good; also multiview was meant to support multiple custom cameras at some point -I think- that would allow to have just one scene to feed the compositor


And a more conventional setup works too... you can use the File Output node in compositor to export the other scenes, and load those Image Sequences as textures in cycles, all you need to do is set offset to -1 in texture nodes... there's a 1 frame lag though, and the first frame won't have any textures -and I had a couple of crashes-

https://www.dropbox.com/s/j83imtyszl6xvik/MONITORS_SEC.blend?dl=1

$\endgroup$
  • 2
    $\begingroup$ If the link in your answer goes down, then the answer will not be as useful. Please add more information (and images) to the body of the answer outlining the basic setup to help others with the same issue in the future. $\endgroup$ – cegaton Nov 25 '16 at 16:49
  • $\begingroup$ To make a long lasting link please don't use dropbox , google dirve or other personal sharing sites, use blend-exchange.giantcowfilms.com $\endgroup$ – cegaton Jul 31 '17 at 17:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.