Welcome to WSL!

Make yourself at home, but before posting, please may I ask you to read the following topics.


Posting 101
Server space, screenshots, and you

Thank you!

PS. please pretty please:


Image

How would you create this room in 3D?

Moderator: SecondMan

User avatar
TheBloke
Posts: 26
Joined: Wed Jun 17, 2020 6:02 am

How would you create this room in 3D?

#1

Post by TheBloke » Sat Jun 20, 2020 4:03 am

Hi all

I'm still bumbling along with my efforts in Fusion. I'm trying to edit a Covid19 lockdown project recorded over Zoom, with actors in front of green screens. I've made my usual mistake of trying to get much more fancy than I have the knowledge, experience or time to achieve. Hence why I'm still in Fusion, trying to create a 3D room that casts shadows and can support simple orthogonal camera movements.

I have achieved the shadows part: I have working shadows cast from my ProRes 4444 + alpha footage, and I even learnt how to render the shadows separately then combine them in 2D, which has enabled me to do the main rendering in OpenGL, and only the shadows in the software renderer, which will massively reduce my render times. (Thanks to Bernd of VFXStudy for his video tutorials, and Brian Ray for his 3D compositing tutorial!)

The last remaining problem is creating a room that reacts reasonably well to some basic orthogonal camera movements. The back wall and floor are fine, but I need two side walls, and unfortunately the stock image I'm using to create the room has curved walls, and it's getting a bit complicated.

The background I want to use is a Shutterstock stock image that I got for free on their one month trial, and which I've edited in Photoshop to remove a window and its light (click for larger):
Image

This is by far the best image I could find. I spent hours searching, but I need a room that looks like a dungeon or cell, which looks appropriate for the 17th century, where the back wall is flat to the camera, and which I can use royalty-free, for free!

The remaining problem I have with this image I'm using is that the walls are curved, plus I'm generally not sure how best to make any such 2D image into a working 3D room.

Here's my best effort so far in Fusion (click for larger):
Image

For simplicity I'm only showing the left wall. The left wall is a simple ImagePlane, attached to a Bender3D to curve it at the top, somewhat like the real wall is curved. Then it's stretched a bit and positioned so it looks reasonably OK in the output.

This kind of works, and supports my zooming the camera in/moving it forward on Z. But when I then try to move the camera left or right, the wall doesn't quite work. I guess the issue is parallax, in that the wall doesn't seem to move realistically compared to the actors and the back wall.

I can probably keep tweaking position and sizing and angles until it looks better. But am I doing this the best way?

I've tried using a projector + catcher instead, but this doesn't seem to improve things particularly, and alters how I would have to do lighting.

Maybe I need to do more editing on the Photoshop image, to chop it up differently, so it can better fit 3D geometry? I know it's possible to turn a 2D flat image into a special image that can map into a sphere or cube and look perfect wherever the camera goes. But I have no idea how to even start with that.

Then I wondered if I should abandon my attempt to use the real left/right walls from my image, and instead find another stock image of a similar type of wall, where the wall is flat to the camera. Here's a link to an example Shutterstock flat wall image. It's taken by the same photographer and may even be one of the walls in the same room, just taken close up and with brighter lighting.

If I used a flat wall texture and then put it on the left and right walls (maybe edited a bit to make it look different on each), then used a Bender3D to curve it to meet the back wall, maybe that would work better? Because then I wouldn't be trying to use part of a wall, I'd have a whole rectangular wall to put on a rectangular ImagePlane, and then the perspective would look right just from my positioning the wall at the appropriate angle to the scene?

Apologies for so many questions and the long post, but I've been working on this project for over three weeks and I'm starting to wish that I'd just kept things simple and never even gone into Fusion. I will of course keep doing more testing and experimenting myself, but if anyone has the time to give me their thoughts on how they would do it, it might save me a lot of time and I'd be really grateful for that. I've spent ages learning Fusion and getting my basic shadows working, it'd be really nice to complete the job. (Once I have the scene right, I then have to start putting my 20 minutes of edited footage into the 3D scene and animating camera movements where I want them. I have a feeling that's going to take another week at least :) )

Thanks very much if you read all this, and for any suggestions.
Here's my current node layout (with temporary extra lighting, and darker shadows than I plan to have in the final edit)
Show
Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2020-06-20--12.00.02.setting)
  1. {
  2.     Tools = ordered() {
  3.         MaskForBitmap_1Polyline = BezierSpline {
  4.             SplineColor = { Red = 173, Green = 255, Blue = 47 },
  5.             NameSet = true,
  6.             KeyFrames = {
  7.                 [27806] = { 0, Value = Polyline {
  8.                         Closed = true,
  9.                         Points = {
  10.                             { Linear = true, X = -0.371337592601776, RX = 0.00360934615388292, LX = 0.000656078259150187, RY = 0.0249150618601403, Y = -0.495469987392426, LY = -0.0260826547940572 },
  11.                             { Linear = true, X = -0.360509544610977, RX = 0.0205944766537652, LX = -0.00360934615388292, RY = 0.0924877336719163, Y = -0.420724809169769, LY = -0.0249150618601403 },
  12.                             { Linear = true, X = -0.298726111650467, RX = 0.0138004236287119, LX = -0.0205944766537652, RY = 0.0268025681089572, Y = -0.143261611461639, LY = -0.0924877336719163 },
  13.                             { Linear = true, X = -0.25732484459877, RX = 0.0178343961826049, LX = -0.0138004236287119, RY = 0.0335975849586822, Y = -0.0628539100289345, LY = -0.0268025681089572 },
  14.                             { Linear = true, X = -0.203821659088135, RX = 0.021443737742754, LX = -0.0178343961826049, RY = 0.0192525482762193, Y = 0.0379388444125652, LY = -0.0335975849586822 },
  15.                             { Linear = true, X = -0.139490440487862, RX = 0.028025475916336, LX = -0.021443737742754, RY = 0.0290675735717767, Y = 0.0956964865326881, LY = -0.0192525482762193 },
  16.                             { Linear = true, X = -0.0554140135645866, RX = 0.02590233573172, LX = -0.028025475916336, RY = 0.0158550397613535, Y = 0.182899206876755, LY = -0.0290675735717767 },
  17.                             { Linear = true, X = 0.0222929939627647, RX = 0.0225053077448958, LX = -0.02590233573172, RY = 0, Y = 0.230464324355125, LY = -0.0158550397613535 },
  18.                             { Linear = true, X = 0.0898089185357094, RX = 0.0326963902120884, LX = -0.0225053077448958, RY = -0.00226500506061752, Y = 0.230464324355125, LY = 0 },
  19.                             { Linear = true, X = 0.187898084521294, RX = 0.0280254792572333, LX = -0.0326963902120884, RY = -0.011325027069401, Y = 0.223669305443764, LY = 0.00226500506061752 },
  20.                             { Linear = true, X = 0.27197453379631, RX = 0.0244161320466651, LX = -0.0280254792572333, RY = -0.019252548648889, Y = 0.189694225788116, LY = 0.011325027069401 },
  21.                             { Linear = true, X = 0.345222920179367, RX = 0.019320597732143, LX = -0.0244161320466651, RY = -0.0268025670401687, Y = 0.131936579942703, LY = 0.019252548648889 },
  22.                             { Linear = true, X = 0.403184711933136, RX = 0.0203821660859823, LX = -0.019320597732143, RY = -0.0309550772836272, Y = 0.0515288785099983, LY = 0.0268025670401687 },
  23.                             { Linear = true, X = 0.464331209659576, RX = 0.0127388536803535, LX = -0.0203821660859823, RY = -0.017365043236821, Y = -0.0413363538682461, LY = 0.0309550772836272 },
  24.                             { Linear = true, X = 0.502547740936279, RX = 0.00996156383205101, LX = -0.0127388536803535, RY = -0.0585997630006228, Y = -0.0934314802289009, LY = 0.017365043236821 },
  25.                             { Linear = true, X = 0.532432436943054, RX = -0.000900902404441517, LX = -0.00996156383205101, RY = -0.0956196535346854, Y = -0.269230782985687, LY = 0.0585997630006228 },
  26.                             { Linear = true, X = 0.529729723930359, RX = -0.299699697766576, LX = 0.000900902404441517, RY = -0.00587606328165428, Y = -0.556089758872986, LY = 0.0956196535346854 },
  27.                             { Linear = true, X = -0.369369357824326, RX = -0.000656078259150187, LX = 0.299699697766576, RY = 0.0260826547940572, Y = -0.573717951774597, LY = 0.00587606328165428 }
  28.                         }
  29.                     }, Flags = { LockedY = true, Linear = true } }
  30.             }
  31.         },
  32.         TwoD = Underlay {
  33.             Colors = { TileColor = { B = 0.466666666666667, R = 0.776470588235294, G = 0.627450980392157 } },
  34.             NameSet = true,
  35.             ViewInfo = UnderlayInfo {
  36.                 Pos = { -2145, 1138.5 },
  37.                 Size = { 577.43701171875, 259.196990966797 }
  38.             }
  39.         },
  40.         ThreeD = Underlay {
  41.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  42.             NameSet = true,
  43.             ViewInfo = UnderlayInfo {
  44.                 Pos = { -2970, 1138.5 },
  45.                 Size = { 912.030029296875, 227.301910400391 },
  46.                 Flags = {
  47.                     ShowModes = true
  48.                 }
  49.             }
  50.         },
  51.         Shadows = Underlay {
  52.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  53.             NameSet = true,
  54.             ViewInfo = UnderlayInfo {
  55.                 Pos = { -2970, 1369.5 },
  56.                 Size = { 911.096008300781, 220.026000976562 }
  57.             }
  58.         },
  59.         ShadowNote_1 = Note {
  60.             ViewInfo = StickyNoteInfo {
  61.                 Pos = { -2640, 1402.5 },
  62.                 Size = { 125.460662841797, 26.1098785400391 },
  63.                 Flags = {
  64.                     ShowModes = true,
  65.                     Expanded = true
  66.                 }
  67.             },
  68.             NameSet = true,
  69.             Inputs = {
  70.                 Comments = Input { Value = "Software renderer for shadows" }
  71.             }
  72.         },
  73.         MaskForBitmapPolyline = BezierSpline {
  74.             SplineColor = { Red = 173, Green = 255, Blue = 47 },
  75.             NameSet = true,
  76.             KeyFrames = {
  77.                 [27806] = { 0, Value = Polyline {
  78.                         Closed = true,
  79.                         Points = {
  80.                             { Linear = true, X = -0.371337592601776, RX = 0.00360934615388292, LX = 0.000656078259150187, RY = 0.0249150618601403, Y = -0.495469987392426, LY = -0.0260826547940572 },
  81.                             { Linear = true, X = -0.360509544610977, RX = 0.0205944766537652, LX = -0.00360934615388292, RY = 0.0924877336719163, Y = -0.420724809169769, LY = -0.0249150618601403 },
  82.                             { Linear = true, X = -0.298726111650467, RX = 0.0138004236287119, LX = -0.0205944766537652, RY = 0.0268025681089572, Y = -0.143261611461639, LY = -0.0924877336719163 },
  83.                             { Linear = true, X = -0.25732484459877, RX = 0.0178343961826049, LX = -0.0138004236287119, RY = 0.0335975849586822, Y = -0.0628539100289345, LY = -0.0268025681089572 },
  84.                             { Linear = true, X = -0.203821659088135, RX = 0.021443737742754, LX = -0.0178343961826049, RY = 0.0192525482762193, Y = 0.0379388444125652, LY = -0.0335975849586822 },
  85.                             { Linear = true, X = -0.139490440487862, RX = 0.028025475916336, LX = -0.021443737742754, RY = 0.0290675735717767, Y = 0.0956964865326881, LY = -0.0192525482762193 },
  86.                             { Linear = true, X = -0.0554140135645866, RX = 0.02590233573172, LX = -0.028025475916336, RY = 0.0158550397613535, Y = 0.182899206876755, LY = -0.0290675735717767 },
  87.                             { Linear = true, X = 0.0222929939627647, RX = 0.0225053077448958, LX = -0.02590233573172, RY = 0, Y = 0.230464324355125, LY = -0.0158550397613535 },
  88.                             { Linear = true, X = 0.0898089185357094, RX = 0.0326963902120884, LX = -0.0225053077448958, RY = -0.00226500506061752, Y = 0.230464324355125, LY = 0 },
  89.                             { Linear = true, X = 0.187898084521294, RX = 0.0280254792572333, LX = -0.0326963902120884, RY = -0.011325027069401, Y = 0.223669305443764, LY = 0.00226500506061752 },
  90.                             { Linear = true, X = 0.27197453379631, RX = 0.0244161320466651, LX = -0.0280254792572333, RY = -0.019252548648889, Y = 0.189694225788116, LY = 0.011325027069401 },
  91.                             { Linear = true, X = 0.345222920179367, RX = 0.019320597732143, LX = -0.0244161320466651, RY = -0.0268025670401687, Y = 0.131936579942703, LY = 0.019252548648889 },
  92.                             { Linear = true, X = 0.403184711933136, RX = 0.0203821660859823, LX = -0.019320597732143, RY = -0.0309550772836272, Y = 0.0515288785099983, LY = 0.0268025670401687 },
  93.                             { Linear = true, X = 0.464331209659576, RX = 0.0127388536803535, LX = -0.0203821660859823, RY = -0.017365043236821, Y = -0.0413363538682461, LY = 0.0309550772836272 },
  94.                             { Linear = true, X = 0.502547740936279, RX = 0.00996156383205101, LX = -0.0127388536803535, RY = -0.0585997630006228, Y = -0.0934314802289009, LY = 0.017365043236821 },
  95.                             { Linear = true, X = 0.532432436943054, RX = -0.000900902404441517, LX = -0.00996156383205101, RY = -0.0956196535346854, Y = -0.269230782985687, LY = 0.0585997630006228 },
  96.                             { Linear = true, X = 0.529729723930359, RX = -0.299699697766576, LX = 0.000900902404441517, RY = -0.00587606328165428, Y = -0.556089758872986, LY = 0.0956196535346854 },
  97.                             { Linear = true, X = -0.369369357824326, RX = -0.000656078259150187, LX = 0.299699697766576, RY = 0.0260826547940572, Y = -0.573717951774597, LY = 0.00587606328165428 }
  98.                         }
  99.                     }, Flags = { LockedY = true, Linear = true } }
  100.             }
  101.         },
  102.         MainNote_1 = Note {
  103.             ViewInfo = StickyNoteInfo {
  104.                 Pos = { -2640, 1270.5 },
  105.                 Size = { 114.793998718262, 27.32200050354 },
  106.                 Flags = {
  107.                     ShowModes = true,
  108.                     Expanded = true
  109.                 }
  110.             },
  111.             NameSet = true,
  112.             Inputs = {
  113.                 Comments = Input { Value = "OpenGL renderer main scene" }
  114.             }
  115.         },
  116.         MaskForBitmap_1_1Polyline = BezierSpline {
  117.             SplineColor = { Red = 173, Green = 255, Blue = 47 },
  118.             NameSet = true,
  119.             KeyFrames = {
  120.                 [27806] = { 0, RH = { 27836.6666666667, 0.333333333333333 }, Value = Polyline {
  121.                         Closed = true,
  122.                         Points = {
  123.                             { Linear = true, X = -0.371337592601776, RX = 0.00360934615388292, LX = 0.000656078259150187, RY = 0.0249150618601403, Y = -0.495469987392426, LY = -0.0260826547940572 },
  124.                             { Linear = true, X = -0.360509544610977, RX = 0.0205944766537652, LX = -0.00360934615388292, RY = 0.0924877336719163, Y = -0.420724809169769, LY = -0.0249150618601403 },
  125.                             { Linear = true, X = -0.298726111650467, RX = 0.0138004236287119, LX = -0.0205944766537652, RY = 0.0268025681089572, Y = -0.143261611461639, LY = -0.0924877336719163 },
  126.                             { Linear = true, X = -0.25732484459877, RX = 0.0178343961826049, LX = -0.0138004236287119, RY = 0.0335975849586822, Y = -0.0628539100289345, LY = -0.0268025681089572 },
  127.                             { Linear = true, X = -0.203821659088135, RX = 0.021443737742754, LX = -0.0178343961826049, RY = 0.0192525482762193, Y = 0.0379388444125652, LY = -0.0335975849586822 },
  128.                             { Linear = true, X = -0.139490440487862, RX = 0.028025475916336, LX = -0.021443737742754, RY = 0.0290675735717767, Y = 0.0956964865326881, LY = -0.0192525482762193 },
  129.                             { Linear = true, X = -0.0554140135645866, RX = 0.02590233573172, LX = -0.028025475916336, RY = 0.0158550397613535, Y = 0.182899206876755, LY = -0.0290675735717767 },
  130.                             { Linear = true, X = 0.0222929939627647, RX = 0.0225053077448958, LX = -0.02590233573172, RY = 0, Y = 0.230464324355125, LY = -0.0158550397613535 },
  131.                             { Linear = true, X = 0.0898089185357094, RX = 0.0326963902120884, LX = -0.0225053077448958, RY = -0.00226500506061752, Y = 0.230464324355125, LY = 0 },
  132.                             { Linear = true, X = 0.187898084521294, RX = 0.0280254792572333, LX = -0.0326963902120884, RY = -0.011325027069401, Y = 0.223669305443764, LY = 0.00226500506061752 },
  133.                             { Linear = true, X = 0.27197453379631, RX = 0.0244161320466651, LX = -0.0280254792572333, RY = -0.019252548648889, Y = 0.189694225788116, LY = 0.011325027069401 },
  134.                             { Linear = true, X = 0.345222920179367, RX = 0.019320597732143, LX = -0.0244161320466651, RY = -0.0268025670401687, Y = 0.131936579942703, LY = 0.019252548648889 },
  135.                             { Linear = true, X = 0.403184711933136, RX = 0.0203821660859823, LX = -0.019320597732143, RY = -0.0309550772836272, Y = 0.0515288785099983, LY = 0.0268025670401687 },
  136.                             { Linear = true, X = 0.464331209659576, RX = 0.0127388536803535, LX = -0.0203821660859823, RY = -0.017365043236821, Y = -0.0413363538682461, LY = 0.0309550772836272 },
  137.                             { Linear = true, X = 0.502547740936279, RX = 0.00996156383205101, LX = -0.0127388536803535, RY = -0.0585997630006228, Y = -0.0934314802289009, LY = 0.017365043236821 },
  138.                             { Linear = true, X = 0.532432436943054, RX = -0.000900902404441517, LX = -0.00996156383205101, RY = -0.0956196535346854, Y = -0.269230782985687, LY = 0.0585997630006228 },
  139.                             { Linear = true, X = 0.529729723930359, RX = -0.299699697766576, LX = 0.000900902404441517, RY = -0.00587606328165428, Y = -0.556089758872986, LY = 0.0956196535346854 },
  140.                             { Linear = true, X = -0.369369357824326, RX = -0.000656078259150187, LX = 0.299699697766576, RY = 0.0260826547940572, Y = -0.573717951774597, LY = 0.00587606328165428 }
  141.                         }
  142.                     }, Flags = { LockedY = true, Linear = true } },
  143.                 [27898] = { 1, Value = Polyline {
  144.                         Closed = true,
  145.                         Points = {
  146.                             { Linear = true, X = -0.486578806258401, RX = 0.0197452304343003, LX = 0.0174938311540724, RY = 0.0695809710723315, Y = -0.507927518536254, LY = -0.0302634777461143 },
  147.                             { Linear = true, X = -0.4273431149555, RX = 0.023630063879812, LX = -0.0197452304343003, RY = 0.102135900281577, Y = -0.299184605319259, LY = -0.0695809710723315 },
  148.                             { X = -0.350320858367165, RX = 0.0209924173474387, LX = -0.0256740855294449, RY = 0.0284692338109015, Y = -0.0515949447949723, LY = -0.082529886841429 },
  149.                             { Linear = true, X = -0.287343606324849, RX = 0.0234629129938514, LX = -0.0209924173474387, RY = 0.0202642514805, Y = 0.0338127566377321, LY = -0.0284692338109015 },
  150.                             { Linear = true, X = -0.216954867343294, RX = 0.0233199121413043, LX = -0.0234629129938514, RY = 0.0281414362622631, Y = 0.094605511079232, LY = -0.0202642514805 },
  151.                             { Linear = true, X = -0.146995130919382, RX = 0.030527039118265, LX = -0.0233199121413043, RY = 0.00128979567024456, Y = 0.179029819866021, LY = -0.0281414362622631 },
  152.                             { Linear = true, X = -0.0554140135645866, RX = 0.02590233573172, LX = -0.030527039118265, RY = 0.0158550397613535, Y = 0.182899206876755, LY = -0.00128979567024456 },
  153.                             { Linear = true, X = 0.0222929939627647, RX = 0.0225053077448958, LX = -0.02590233573172, RY = 0, Y = 0.230464324355125, LY = -0.0158550397613535 },
  154.                             { Linear = true, X = 0.0898089185357094, RX = 0.0326963902120884, LX = -0.0225053077448958, RY = -0.00226500506061752, Y = 0.230464324355125, LY = 0 },
  155.                             { Linear = true, X = 0.187898084521294, RX = 0.0280254792572333, LX = -0.0326963902120884, RY = -0.011325027069401, Y = 0.223669305443764, LY = 0.00226500506061752 },
  156.                             { Linear = true, X = 0.27197453379631, RX = 0.0244161320466651, LX = -0.0280254792572333, RY = -0.019252548648889, Y = 0.189694225788116, LY = 0.011325027069401 },
  157.                             { Linear = true, X = 0.345222920179367, RX = 0.019320597732143, LX = -0.0244161320466651, RY = -0.0268025670401687, Y = 0.131936579942703, LY = 0.019252548648889 },
  158.                             { Linear = true, X = 0.403184711933136, RX = 0.0203821660859823, LX = -0.019320597732143, RY = -0.0309550772836272, Y = 0.0515288785099983, LY = 0.0268025670401687 },
  159.                             { Linear = true, X = 0.464331209659576, RX = 0.0127388536803535, LX = -0.0203821660859823, RY = -0.017365043236821, Y = -0.0413363538682461, LY = 0.0309550772836272 },
  160.                             { Linear = true, X = 0.502547740936279, RX = 0.00996156383205101, LX = -0.0127388536803535, RY = -0.0585997630006228, Y = -0.0934314802289009, LY = 0.017365043236821 },
  161.                             { Linear = true, X = 0.532432436943054, RX = -0.000900902404441517, LX = -0.00996156383205101, RY = -0.0956196535346854, Y = -0.269230782985687, LY = 0.0585997630006228 },
  162.                             { Linear = true, X = 0.529729723930359, RX = -0.321275678908848, LX = 0.000900902404441517, RY = -0.0142093976338703, Y = -0.556089758872986, LY = 0.0956196535346854 },
  163.                             { Linear = true, X = -0.434097312796183, RX = -0.0174938311540724, LX = 0.321275678908848, RY = 0.0302634777461143, Y = -0.598717951774597, LY = 0.0142093976338703 }
  164.                         }
  165.                     }, Flags = { LockedY = true, Linear = true }, LH = { 27867.3333333333, 0.666666666666667 } }
  166.             }
  167.         },
  168.         PlaneBlankForShadows1 = Shape3D {
  169.             NameSet = true,
  170.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  171.             Inputs = {
  172.                 ["SurfacePlaneInputs.Visibility.Nest"] = Input { Value = 1 },
  173.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
  174.                 ["MtlStdInputs.Specular.Nest"] = Input { Value = 1 },
  175.                 ["Transform3DOp.Translate.Z"] = Input { Value = -0.983 },
  176.                 ["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1 },
  177.                 ["SurfacePlaneInputs.Controls.Nest"] = Input { Value = 1 },
  178.                 ["SurfacePlaneInputs.BlendMode.Nest"] = Input { Value = 1 },
  179.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
  180.                 ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0 },
  181.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.0111 },
  182.                 ["SurfacePlaneInputs.Matte.Nest"] = Input { Value = 1 },
  183.                 ["SurfacePlaneInputs.SubdivisionWidth"] = Input { Value = 1 },
  184.                 ["SurfacePlaneInputs.Visibility.IgnoreTransparentPixelsInAuxChannels"] = Input { Value = 0 },
  185.                 ["SurfacePlaneInputs.Width"] = Input { Value = 2 },
  186.                 ["SurfacePlaneInputs.Lighting.Nest"] = Input { Value = 1 },
  187.                 ["Transform3DOp.Translate.X"] = Input { Value = 0.00232674220855164 }
  188.             },
  189.             ViewInfo = OperatorInfo {
  190.                 Pos = { -3025, 1534.5 },
  191.                 Flags = {
  192.                     ShowModes = true
  193.                 }
  194.             }
  195.         },
  196.         CameraShadows1 = Camera3D {
  197.             NameSet = true,
  198.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  199.             Inputs = {
  200.                 ApertureH = Input { Value = 0.467716535433071 },
  201.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 6 },
  202.                 ["MtlStdInputs.MaterialID"] = Input { Value = 7 },
  203.                 AoV = Input { Value = 19.2642683071402 },
  204.                 ApertureW = Input { Value = 0.831496062992126 },
  205.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.008 },
  206.                 ["Transform3DOp.Translate.Z"] = Input { Value = 1.58 },
  207.                 PerspFarClip = Input { Value = 10000 },
  208.                 ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
  209.                 FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
  210.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.000870893323809759 }
  211.             },
  212.             ViewInfo = OperatorInfo {
  213.                 Pos = { -2750, 1501.5 },
  214.                 Flags = {
  215.                     ShowModes = true
  216.                 }
  217.             }
  218.         },
  219.         MediaInActorVideoInst = MediaIn {
  220.             SourceOp = "MediaInActorVideo",
  221.             ViewInfo = OperatorInfo {
  222.                 Pos = { -3355, 1501.5 },
  223.                 Flags = {
  224.                     ShowModes = true
  225.                 }
  226.             },
  227.             NameSet = true,
  228.             ExtentSet = true,
  229.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  230.             CustomData = { MediaProps = { MEDIA_HEIGHT = 1080, MEDIA_PAR = 1, MEDIA_MARK_IN = 27761, MEDIA_SRC_FRAME_RATE = 30, MEDIA_NUM_FRAMES = 31407, MEDIA_NUM_LAYERS = 1, MEDIA_NAME = "Scene3TrioVideoOnlyAlpha.mov", MEDIA_WIDTH = 1920, MEDIA_MARK_OUT = 27988, MEDIA_FORMAT_TYPE = "QuickTime", MEDIA_PATH = "/Volumes/New500GB/Renders/Scene3TrioVideoOnlyAlpha.mov", MEDIA_START_FRAME = 0 } },
  231.             Inputs = {
  232.                 SettingsNest = Input { },
  233.                 EffectMask = Input { },
  234.                 ["Gamut.ColorSpaceNest"] = Input { },
  235.                 ["Gamut.GammaSpaceNest"] = Input { },
  236.                 EndRenderScripts = Input { },
  237.                 Channels = Input { },
  238.                 StartRenderScripts = Input { },
  239.                 CommentsNest = Input { },
  240.                 FrameRenderScriptNest = Input { }
  241.             }
  242.         },
  243.         ImagePlanePeopleShadows1 = ImagePlane3D {
  244.             NameSet = true,
  245.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  246.             Inputs = {
  247.                 ["SurfacePlaneInputs.Visibility.Nest"] = Input { Value = 1 },
  248.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
  249.                 ["MtlStdInputs.Specular.Nest"] = Input { Value = 1 },
  250.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.02 },
  251.                 ["SurfacePlaneInputs.Matte.Nest"] = Input { Value = 1 },
  252.                 ["SurfacePlaneInputs.Matte.InfiniteZ"] = Input { Value = 0 },
  253.                 ["Transform3DOp.PivotNest"] = Input { Value = 1 },
  254.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
  255.                 ["MtlStdInputs.Transmittance.Nest"] = Input { Value = 1 },
  256.                 ["MtlStdInputs.MaterialIDNest"] = Input { Value = 1 },
  257.                 ["SurfacePlaneInputs.BlendMode.Nest"] = Input { Value = 1 },
  258.                 ["SurfacePlaneInputs.Lighting.Nest"] = Input { Value = 1 },
  259.                 ["SurfacePlaneInputs.Visibility.IsUnseenByCameras"] = Input { Value = 1 },
  260.                 ["SurfacePlaneInputs.Controls.Nest"] = Input { Value = 1 },
  261.                 MaterialInput = Input {
  262.                     Source = "Output",
  263.                     SourceOp = "MediaInActorVideoInst"
  264.                 },
  265.                 ["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1 },
  266.                 ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0 }
  267.             },
  268.             ViewInfo = OperatorInfo {
  269.                 Pos = { -3025, 1501.5 },
  270.                 Flags = {
  271.                     ShowModes = true
  272.                 }
  273.             }
  274.         },
  275.         SpotlightShadows1 = LightSpot {
  276.             NameSet = true,
  277.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  278.             Inputs = {
  279.                 ["Transform3DOp.Target.X"] = Input { Value = -0.0658550454778055 },
  280.                 ["ShadowLightInputs3D.ShadowMapSampleType"] = Input { Value = FuID { "Low" } },
  281.                 ["Transform3DOp.Target.Y"] = Input { Value = -0.297797983071074 },
  282.                 ["Transform3DOp.Translate.Z"] = Input { Value = 3.07888553849635 },
  283.                 ["ShadowLightInputs3D.ShadowDensity"] = Input { Value = 1 },
  284.                 DecayRate = Input { Value = 0.8505 },
  285.                 ["ShadowLightInputs3D.MinSoftness"] = Input { Value = 0.18 },
  286.                 Dropoff = Input { Value = 0.88 },
  287.                 ["ShadowLightInputs3D.Nest"] = Input { Value = 1 },
  288.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.374945284755588 },
  289.                 ["Transform3DOp.UseTarget"] = Input { Value = 1 },
  290.                 ["ShadowLightInputs3D.MultiplicativeBias"] = Input { Value = 9.21 },
  291.                 ["Transform3DOp.Target.Z"] = Input { Value = -0.192297793888931 },
  292.                 ["ShadowLightInputs3D.ConstantSoftness"] = Input { Value = 0.01 },
  293.                 ["Transform3DOp.PivotNest"] = Input { Value = 1 },
  294.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.0623028531258962 }
  295.             },
  296.             ViewInfo = OperatorInfo {
  297.                 Pos = { -2805, 1567.5 },
  298.                 Flags = {
  299.                     ShowModes = true
  300.                 }
  301.             }
  302.         },
  303.         Merge3DShadows1 = Merge3D {
  304.             NameSet = true,
  305.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  306.             Inputs = {
  307.                 PassThroughLights = Input { Value = 1 },
  308.                 SceneInput1 = Input {
  309.                     Source = "Output",
  310.                     SourceOp = "PlaneBlankForShadows1"
  311.                 },
  312.                 SceneInput6 = Input {
  313.                     Source = "Output",
  314.                     SourceOp = "ImagePlanePeopleShadows1"
  315.                 },
  316.                 SceneInput9 = Input {
  317.                     Source = "Output",
  318.                     SourceOp = "SpotlightShadows1"
  319.                 },
  320.                 SceneInput11 = Input {
  321.                     Source = "Output",
  322.                     SourceOp = "CameraShadows1"
  323.                 }
  324.             },
  325.             ViewInfo = OperatorInfo {
  326.                 Pos = { -2860, 1501.5 },
  327.                 Flags = {
  328.                     ShowModes = true
  329.                 }
  330.             }
  331.         },
  332.         RendererShadowsSoftware1 = Renderer3D {
  333.             NameSet = true,
  334.             ViewInfo = OperatorInfo {
  335.                 Pos = { -2860, 1435.5 },
  336.                 Flags = {
  337.                     ShowModes = true
  338.                 }
  339.             },
  340.             Colors = { TileColor = { B = 0.396078431372549, R = 0.250980392156863, G = 0.56078431372549 } },
  341.             CustomData = { ToolVersion = 2 },
  342.             Inputs = {
  343.                 GlobalOut = Input { Value = 31406 },
  344.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  345.                 UseFrameFormatSettings = Input { Value = 1 },
  346.                 Width = Input { Value = 1920 },
  347.                 ["RendererSoftware.ShadowsEnabled"] = Input { Value = 1 },
  348.                 ["RendererSoftware.Channels.Nest"] = Input { Value = 1 },
  349.                 Height = Input { Value = 1080 },
  350.                 ["RendererSoftware.LightingEnabled"] = Input { Value = 1 },
  351.                 SceneInput = Input {
  352.                     Source = "Output",
  353.                     SourceOp = "Merge3DShadows1"
  354.                 }
  355.             }
  356.         },
  357.         BitmapRenderToMask_1_1 = BitmapMask {
  358.             NameSet = true,
  359.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  360.             Inputs = {
  361.                 ClippingMode = Input { Value = FuID { "None" } },
  362.                 High = Input { Value = 0.906 },
  363.                 Image = Input {
  364.                     Source = "Output",
  365.                     SourceOp = "RendererShadowsSoftware1"
  366.                 },
  367.                 Channel = Input { Value = FuID { "Luminance" } },
  368.                 MaskHeight = Input { Value = 1080 },
  369.                 PaintMode = Input { Value = FuID { "Maximum" } },
  370.                 MaskWidth = Input { Value = 1920 },
  371.                 FitInput = Input { Value = FuID { "Stretch" } },
  372.                 Filter = Input { Value = FuID { "Fast Gaussian" } },
  373.                 PixelAspect = Input { Value = { 1, 1 } }
  374.             },
  375.             ViewInfo = OperatorInfo {
  376.                 Pos = { -3135, 1435.5 },
  377.                 Flags = {
  378.                     ShowModes = true
  379.                 }
  380.             }
  381.         },
  382.         BlurShadowMask1 = Blur {
  383.             NameSet = true,
  384.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  385.             Inputs = {
  386.                 Input = Input {
  387.                     Source = "Mask",
  388.                     SourceOp = "BitmapRenderToMask_1_1"
  389.                 },
  390.                 XBlurSize = Input { Value = 10.2 },
  391.                 Red = Input { Value = 0 },
  392.                 Green = Input { Value = 0 },
  393.                 Filter = Input { Value = FuID { "Fast Gaussian" } },
  394.                 Blue = Input { Value = 0 }
  395.             },
  396.             ViewInfo = OperatorInfo {
  397.                 Pos = { -3245, 1435.5 },
  398.                 Flags = {
  399.                     ShowModes = true
  400.                 }
  401.             }
  402.         },
  403.         BitmapInvertMask_1_1 = BitmapMask {
  404.             NameSet = true,
  405.             Colors = { TileColor = { B = 0, R = 0.6, G = 0.4 } },
  406.             CtrlWZoom = false,
  407.             ViewInfo = OperatorInfo {
  408.                 Pos = { -3245, 1402.5 },
  409.                 Flags = {
  410.                     ShowModes = true
  411.                 }
  412.             },
  413.             Inputs = {
  414.                 ClippingMode = Input { Value = FuID { "None" } },
  415.                 Invert = Input { Value = 1 },
  416.                 Image = Input {
  417.                     Source = "Output",
  418.                     SourceOp = "BlurShadowMask1"
  419.                 },
  420.                 Channel = Input { Value = FuID { "Luminance" } },
  421.                 MaskHeight = Input { Value = 1080 },
  422.                 MaskWidth = Input { Value = 1920 },
  423.                 FitInput = Input { Value = FuID { "Stretch" } },
  424.                 Filter = Input { Value = FuID { "Fast Gaussian" } },
  425.                 PixelAspect = Input { Value = { 1, 1 } }
  426.             }
  427.         },
  428.         BGBackWall = MediaIn {
  429.             ViewInfo = OperatorInfo {
  430.                 Pos = { -3355, 1204.5 },
  431.                 Flags = {
  432.                     ShowModes = true
  433.                 }
  434.             },
  435.             NameSet = true,
  436.             ExtentSet = true,
  437.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  438.             CustomData = { MediaProps = { MEDIA_HEIGHT = 2662, MEDIA_PAR = 1, MEDIA_MARK_IN = 0, MEDIA_WIDTH = 3728, MEDIA_SRC_FRAME_RATE = 30, MEDIA_NUM_FRAMES = 1, MEDIA_NUM_LAYERS = 0, MEDIA_NAME = "Back wall.png", MEDIA_MARK_OUT = 0, MEDIA_LAYER_DESC = {
  439.                     }, MEDIA_FORMAT_TYPE = "PNG", MEDIA_PATH = "/Volumes/SSD/FTV2020/Images/Shutterstock/Back wall.png", MEDIA_START_FRAME = 0 } },
  440.             Inputs = {
  441.                 GlobalOut = Input { Value = 31406 },
  442.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  443.                 ClipTimeEnd = Input { Value = 0 },
  444.                 Layer = Input { Value = "" },
  445.                 MediaID = Input { Value = "189ed036-bca5-4b1c-95a4-c76bf90033dc" },
  446.                 Loop = Input { Value = 1 }
  447.             }
  448.         },
  449.         BriConForShadows = BrightnessContrast {
  450.             NameSet = true,
  451.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  452.             Inputs = {
  453.                 Gamma = Input { Value = 0.8 },
  454.                 EffectMask = Input {
  455.                     Source = "Mask",
  456.                     SourceOp = "BitmapInvertMask_1_1"
  457.                 },
  458.                 Input = Input {
  459.                     Source = "Output",
  460.                     SourceOp = "BGBackWall"
  461.                 },
  462.                 Saturation = Input { Value = 0.64 },
  463.                 Lift = Input { Value = -0.16 }
  464.             },
  465.             ViewInfo = OperatorInfo {
  466.                 Pos = { -3245, 1204.5 },
  467.                 Flags = {
  468.                     ShowModes = true
  469.                 }
  470.             }
  471.         },
  472.         IPlaneBackWall = ImagePlane3D {
  473.             NameSet = true,
  474.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  475.             Inputs = {
  476.                 ["SurfacePlaneInputs.Visibility.Nest"] = Input { Value = 1 },
  477.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
  478.                 ["MtlStdInputs.Specular.Nest"] = Input { Value = 1 },
  479.                 ["Transform3DOp.Translate.Z"] = Input { Value = -1 },
  480.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
  481.                 ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0 },
  482.                 ["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1 },
  483.                 MaterialInput = Input {
  484.                     Source = "Output",
  485.                     SourceOp = "BriConForShadows"
  486.                 },
  487.                 ["SurfacePlaneInputs.Controls.Nest"] = Input { Value = 1 },
  488.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.0111 },
  489.                 ["SurfacePlaneInputs.Matte.Nest"] = Input { Value = 1 },
  490.                 ["SurfacePlaneInputs.SubdivisionWidth"] = Input { Value = 500 },
  491.                 ["SurfacePlaneInputs.Visibility.IgnoreTransparentPixelsInAuxChannels"] = Input { Value = 0 },
  492.                 ["SurfacePlaneInputs.BlendMode.Nest"] = Input { Value = 1 },
  493.                 ["SurfacePlaneInputs.Lighting.Nest"] = Input { Value = 1 },
  494.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.0093 }
  495.             },
  496.             ViewInfo = OperatorInfo {
  497.                 Pos = { -3025, 1204.5 },
  498.                 Flags = {
  499.                     ShowModes = true
  500.                 }
  501.             }
  502.         },
  503.         CameraMain1 = Camera3D {
  504.             NameSet = true,
  505.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  506.             Inputs = {
  507.                 ApertureH = Input { Value = 0.467716535433071 },
  508.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 6 },
  509.                 ["MtlStdInputs.MaterialID"] = Input { Value = 7 },
  510.                 AoV = Input { Value = 19.2642683071402 },
  511.                 ApertureW = Input { Value = 0.831496062992126 },
  512.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.008 },
  513.                 ["Transform3DOp.Translate.Z"] = Input { Value = 1.58 },
  514.                 PerspFarClip = Input { Value = 10000 },
  515.                 ["Stereo.Mode"] = Input { Value = FuID { "OffAxis" } },
  516.                 FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" } },
  517.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.000870893323809759 }
  518.             },
  519.             ViewInfo = OperatorInfo {
  520.                 Pos = { -2860, 1171.5 },
  521.                 Flags = {
  522.                     ShowModes = true
  523.                 }
  524.             }
  525.         },
  526.         PlaneFloor = Shape3D {
  527.             ViewInfo = OperatorInfo { Pos = { -3025, 1237.5 } },
  528.             NameSet = true,
  529.             Inputs = {
  530.                 ["SurfacePlaneInputs.Visibility.Nest"] = Input { Value = 1 },
  531.                 ["Transform3DOp.Scale.X"] = Input { Value = 1.6 },
  532.                 ["MtlStdInputs.Specular.Nest"] = Input { Value = 1 },
  533.                 ["Transform3DOp.Translate.Z"] = Input { Value = -1.29 },
  534.                 ["MtlStdInputs.Diffuse.Color.Green"] = Input { Value = 0.1467 },
  535.                 ["MtlStdInputs.Diffuse.Color.Red"] = Input { Value = 0.15 },
  536.                 ["SurfacePlaneInputs.Matte.Nest"] = Input { Value = 1 },
  537.                 ["Transform3DOp.Rotate.X"] = Input { Value = 90 },
  538.                 ["Transform3DOp.PivotNest"] = Input { Value = 1 },
  539.                 ["Transform3DOp.Scale.Y"] = Input { Value = 12 },
  540.                 ["MtlStdInputs.MaterialID"] = Input { Value = 3 },
  541.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 3 },
  542.                 ["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1 },
  543.                 ["SurfacePlaneInputs.Controls.Nest"] = Input { Value = 1 },
  544.                 ["SurfacePlaneInputs.BlendMode.Nest"] = Input { Value = 1 },
  545.                 ["SurfacePlaneInputs.Lighting.Nest"] = Input { Value = 1 },
  546.                 ["Transform3DOp.Rotate.Z"] = Input { Value = 180 },
  547.                 ["MtlStdInputs.Diffuse.Color.Blue"] = Input { Value = 0.1467 },
  548.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.0782 },
  549.                 ["SurfacePlaneInputs.SubdivisionWidth"] = Input { Value = 50 },
  550.                 ["Transform3DOp.Rotate.Y"] = Input { Value = 180 },
  551.                 ["Transform3DOp.Translate.Y"] = Input { Value = -0.414 },
  552.                 ["Transform3DOp.ScaleLock"] = Input { Value = 0 },
  553.                 ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0.441 }
  554.             }
  555.         },
  556.         LeftWall = MediaIn {
  557.             ViewInfo = OperatorInfo { Pos = { -3135, 1336.5 } },
  558.             NameSet = true,
  559.             ExtentSet = true,
  560.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  561.             CustomData = { MediaProps = { MEDIA_HEIGHT = 3939, MEDIA_PAR = 1, MEDIA_MARK_IN = 0, MEDIA_WIDTH = 3001, MEDIA_SRC_FRAME_RATE = 30, MEDIA_NUM_FRAMES = 1, MEDIA_NUM_LAYERS = 0, MEDIA_NAME = "Left outer.png", MEDIA_MARK_OUT = 0, MEDIA_LAYER_DESC = {
  562.                     }, MEDIA_FORMAT_TYPE = "PNG", MEDIA_PATH = "/Volumes/SSD/FTV2020/Images/Shutterstock/Left outer.png", MEDIA_START_FRAME = 0 } },
  563.             Inputs = {
  564.                 GlobalOut = Input { Value = 31406 },
  565.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  566.                 ClipTimeEnd = Input { Value = 0 },
  567.                 Layer = Input { Value = "" },
  568.                 MediaID = Input { Value = "d329f634-17c2-416b-8728-614a6c045146" },
  569.                 Loop = Input { Value = 1 }
  570.             }
  571.         },
  572.         IPlaneLeftWall = ImagePlane3D {
  573.             ViewInfo = OperatorInfo { Pos = { -3025, 1336.5 } },
  574.             NameSet = true,
  575.             Inputs = {
  576.                 ["MtlStdInputs.MaterialID"] = Input { Value = 2 },
  577.                 ["Transform3DOp.Scale.X"] = Input { Value = 1.733 },
  578.                 ["MtlStdInputs.Specular.Nest"] = Input { Value = 1 },
  579.                 ["Transform3DOp.Translate.Z"] = Input { Value = 0.145 },
  580.                 ["MtlStdInputs.ReceivesShadows"] = Input { Value = 0 },
  581.                 ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0.031 },
  582.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2 },
  583.                 MaterialInput = Input {
  584.                     Source = "Output",
  585.                     SourceOp = "LeftWall"
  586.                 },
  587.                 ["Transform3DOp.Rotate.Y"] = Input { Value = 77.48 },
  588.                 ["Transform3DOp.Translate.Y"] = Input { Value = -0.180467345456761 },
  589.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.0224336836262387 },
  590.                 ["SurfacePlaneInputs.SubdivisionWidth"] = Input { Value = 40 },
  591.                 ["Transform3DOp.PivotNest"] = Input { Value = 1 },
  592.                 ["Transform3DOp.Pivot.Y"] = Input { Value = 0.0377 },
  593.                 ["Transform3DOp.ScaleLock"] = Input { Value = 0 },
  594.                 ["Transform3DOp.Pivot.X"] = Input { Value = -0.5 }
  595.             }
  596.         },
  597.         Bender3DCurveLWall = Bender3D {
  598.             ViewInfo = OperatorInfo { Pos = { -3025, 1303.5 } },
  599.             NameSet = true,
  600.             Inputs = {
  601.                 Center = Input { Value = 0 },
  602.                 SceneInput = Input {
  603.                     Source = "Output",
  604.                     SourceOp = "IPlaneLeftWall"
  605.                 },
  606.                 RangeMin = Input { Value = 0.544 },
  607.                 Amount = Input { Value = 0.37 },
  608.                 Angle = Input { Value = 77 }
  609.             }
  610.         },
  611.         Merge3DOuterWalls = Merge3D {
  612.             NameSet = true,
  613.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  614.             Inputs = {
  615.                 PassThroughLights = Input { Value = 1 },
  616.                 SceneInput1 = Input {
  617.                     Source = "Output",
  618.                     SourceOp = "Bender3DCurveLWall"
  619.                 },
  620.                 ["Transform3DOp.Translate.Z"] = Input { Value = 0.00259596045877637 },
  621.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.0498935723745293 },
  622.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.0130741972559361 }
  623.             },
  624.             ViewInfo = OperatorInfo { Pos = { -2860, 1303.5 } }
  625.         },
  626.         AmbientLight1 = LightAmbient {
  627.             ViewInfo = OperatorInfo { Pos = { -2750, 1270.5 } },
  628.             Inputs = {
  629.                 Intensity = Input { Value = 0.386 }
  630.             }
  631.         },
  632.         SpotlightMain1 = LightSpot {
  633.             NameSet = true,
  634.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  635.             Inputs = {
  636.                 ["ShadowLightInputs3D.SoftnessType"] = Input { Value = FuID { "Constant" } },
  637.                 ["Transform3DOp.Translate.Z"] = Input { Value = 2.8842388357206 },
  638.                 DecayRate = Input { Value = 0.8505 },
  639.                 Dropoff = Input { Value = 22.3 },
  640.                 ConeAngle = Input { Value = 33.31 },
  641.                 ["Transform3DOp.UseTarget"] = Input { Value = 1 },
  642.                 ["Transform3DOp.PivotNest"] = Input { Value = 1 },
  643.                 ["Transform3DOp.Translate.X"] = Input { Value = -0.868294205060278 },
  644.                 ["Transform3DOp.Target.X"] = Input { Value = -0.0658550454778055 },
  645.                 ["Transform3DOp.Target.Y"] = Input { Value = -0.297797983071074 },
  646.                 Red = Input { Value = 0.945 },
  647.                 ["ShadowLightInputs3D.MinSoftness"] = Input { Value = 0.18 },
  648.                 Blue = Input { Value = 0.836325 },
  649.                 ["ShadowLightInputs3D.ShadowDensity"] = Input { Value = 1 },
  650.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.412532610945826 },
  651.                 ["ShadowLightInputs3D.Nest"] = Input { Value = 1 },
  652.                 Green = Input { Value = 0.909354600000001 },
  653.                 ["Transform3DOp.Target.Z"] = Input { Value = -0.192297793888931 },
  654.                 PenumbraAngle = Input { Value = 6.3 },
  655.                 ["ShadowLightInputs3D.ShadowsEnabled"] = Input { Value = 0 },
  656.                 Intensity = Input { Value = 0.606 }
  657.             },
  658.             ViewInfo = OperatorInfo {
  659.                 Pos = { -2750, 1171.5 },
  660.                 Flags = {
  661.                     ShowModes = true
  662.                 }
  663.             }
  664.         },
  665.         MediaInActorVideo = MediaIn {
  666.             ViewInfo = OperatorInfo {
  667.                 Pos = { -3355, 1171.5 },
  668.                 Flags = {
  669.                     ShowModes = true
  670.                 }
  671.             },
  672.             NameSet = true,
  673.             ExtentSet = true,
  674.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  675.             CustomData = { MediaProps = { MEDIA_HEIGHT = 1080, MEDIA_PAR = 1, MEDIA_MARK_IN = 27761, MEDIA_SRC_FRAME_RATE = 30, MEDIA_NUM_FRAMES = 31407, MEDIA_NUM_LAYERS = 1, MEDIA_NAME = "Scene3TrioVideoOnlyAlpha.mov", MEDIA_WIDTH = 1920, MEDIA_MARK_OUT = 27988, MEDIA_FORMAT_TYPE = "QuickTime", MEDIA_PATH = "/Volumes/New500GB/Renders/Scene3TrioVideoOnlyAlpha.mov", MEDIA_START_FRAME = 0 } },
  676.             Inputs = {
  677.                 GlobalOut = Input { Value = 1000000 },
  678.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  679.                 Loop = Input { Value = 1 },
  680.                 ClipTimeEnd = Input { Value = 27988 },
  681.                 Layer = Input { Value = "0" },
  682.                 ClipTimeStart = Input { Value = 27761 },
  683.                 GlobalIn = Input { Value = 27761 }
  684.             }
  685.         },
  686.         IPlaneActors = ImagePlane3D {
  687.             NameSet = true,
  688.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  689.             Inputs = {
  690.                 ["SurfacePlaneInputs.Visibility.Nest"] = Input { Value = 1 },
  691.                 ["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1 },
  692.                 ["MtlStdInputs.Specular.Nest"] = Input { Value = 1 },
  693.                 ["MtlStdInputs.Transmittance.Nest"] = Input { Value = 1 },
  694.                 ["MtlStdInputs.MaterialID"] = Input { Value = 1 },
  695.                 ["MtlStdInputs.MaterialIDNest"] = Input { Value = 1 },
  696.                 ["MtlStdInputs.Specular.Intensity"] = Input { Value = 0 },
  697.                 MaterialInput = Input {
  698.                     Source = "Output",
  699.                     SourceOp = "MediaInActorVideo"
  700.                 },
  701.                 ["SurfacePlaneInputs.ObjectID.Nest"] = Input { Value = 1 },
  702.                 ["Transform3DOp.Translate.Y"] = Input { Value = 0.02 },
  703.                 ["SurfacePlaneInputs.Matte.Nest"] = Input { Value = 1 },
  704.                 ["SurfacePlaneInputs.Lighting.Nest"] = Input { Value = 1 },
  705.                 ["SurfacePlaneInputs.Matte.InfiniteZ"] = Input { Value = 0 },
  706.                 ["Transform3DOp.PivotNest"] = Input { Value = 1 },
  707.                 ["SurfacePlaneInputs.Controls.Nest"] = Input { Value = 1 },
  708.                 ["SurfacePlaneInputs.BlendMode.Nest"] = Input { Value = 1 }
  709.             },
  710.             ViewInfo = OperatorInfo {
  711.                 Pos = { -3025, 1171.5 },
  712.                 Flags = {
  713.                     ShowModes = true
  714.                 }
  715.             }
  716.         },
  717.         Merge3DMain = Merge3D {
  718.             NameSet = true,
  719.             Colors = { TileColor = { B = 0.709803921568627, R = 0.913725490196078, G = 0.549019607843137 } },
  720.             Inputs = {
  721.                 SceneInput6 = Input {
  722.                     Source = "Output",
  723.                     SourceOp = "IPlaneActors"
  724.                 },
  725.                 PassThroughLights = Input { Value = 1 },
  726.                 SceneInput1 = Input {
  727.                     Source = "Output",
  728.                     SourceOp = "IPlaneBackWall"
  729.                 },
  730.                 SceneInput9 = Input {
  731.                     Source = "Output",
  732.                     SourceOp = "SpotlightMain1"
  733.                 },
  734.                 SceneInput2 = Input {
  735.                     Source = "Output",
  736.                     SourceOp = "CameraMain1"
  737.                 },
  738.                 SceneInput10 = Input {
  739.                     Source = "Output",
  740.                     SourceOp = "Merge3DOuterWalls"
  741.                 },
  742.                 SceneInput7 = Input {
  743.                     Source = "Output",
  744.                     SourceOp = "PlaneFloor"
  745.                 },
  746.                 SceneInput11 = Input {
  747.                     Source = "Output",
  748.                     SourceOp = "AmbientLight1"
  749.                 }
  750.             },
  751.             ViewInfo = OperatorInfo {
  752.                 Pos = { -2860, 1237.5 },
  753.                 Flags = {
  754.                     ShowModes = true
  755.                 }
  756.             }
  757.         },
  758.         RendererGL_1_1 = Renderer3D {
  759.             SubInputsData = {
  760.                 RendererOpenGL = {
  761.                     Version = 1
  762.                 }
  763.             },
  764.             NameSet = true,
  765.             ViewInfo = OperatorInfo {
  766.                 Pos = { -2475, 1237.5 },
  767.                 Flags = {
  768.                     ShowModes = true
  769.                 }
  770.             },
  771.             Colors = { TileColor = { B = 0.396078431372549, R = 0.250980392156863, G = 0.56078431372549 } },
  772.             CustomData = { ToolVersion = 2 },
  773.             Inputs = {
  774.                 ["RendererOpenGL.WireframeAntialiasing"] = Input { Value = 0 },
  775.                 ["RendererOpenGL.ShadingModel"] = Input { Value = 0 },
  776.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  777.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateX"] = Input { Value = 16 },
  778.                 ["RendererOpenGL.TransparencySorting"] = Input { Value = 2 },
  779.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateX"] = Input { Value = 3 },
  780.                 ["RendererOpenGLUV.ShadowsEnabled"] = Input { Value = 1 },
  781.                 ["RendererOpenGL.LightingEnabled"] = Input { Value = 1 },
  782.                 ["RendererOpenGL.AccumQuality"] = Input { Value = 32 },
  783.                 ["RendererOpenGL.AccumulationEffects"] = Input { Value = 1 },
  784.                 Width = Input { Value = 1920 },
  785.                 ["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 0 },
  786.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3 },
  787.                 ["RendererOpenGL.Channels.Nest"] = Input { Value = 1 },
  788.                 ["RendererSoftware.LightingEnabled"] = Input { Value = 1 },
  789.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 3 },
  790.                 ["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateY"] = Input { Value = 3 },
  791.                 ["RendererOpenGLUV.LightingEnabled"] = Input { Value = 1 },
  792.                 ["RendererOpenGL.AntiAliasing.Presets.Nest"] = Input { Value = 1 },
  793.                 ["RendererOpenGL.DoFBlur"] = Input { Value = 0.015 },
  794.                 CameraSelector = Input { Value = FuID { "CameraMain1" } },
  795.                 ["RendererOpenGL.AntiAliasing.Channels.RGBA.LowQuality.Enable"] = Input { Value = 0 },
  796.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3 },
  797.                 RendererType = Input { Value = FuID { "RendererOpenGL" } },
  798.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 2 },
  799.                 GlobalOut = Input { Value = 31406 },
  800.                 ["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateY"] = Input { Value = 3 },
  801.                 UseFrameFormatSettings = Input { Value = 1 },
  802.                 SceneInput = Input {
  803.                     Source = "Output",
  804.                     SourceOp = "Merge3DMain"
  805.                 },
  806.                 ["RendererSoftware.Channels.Nest"] = Input { Value = 1 },
  807.                 Height = Input { Value = 1080 },
  808.                 ["Gamut.ColorSpaceNest"] = Input { Value = 1 }
  809.             }
  810.         },
  811.         MediaOut1_1_1 = MediaOut {
  812.             ViewInfo = OperatorInfo { Pos = { -2365, 1237.5 } },
  813.             Inputs = {
  814.                 Input = Input {
  815.                     Source = "Output",
  816.                     SourceOp = "RendererGL_1_1"
  817.                 },
  818.                 Index = Input { Value = "0" }
  819.             }
  820.         },
  821.         TwoDNote = Note {
  822.             ViewInfo = StickyNoteInfo {
  823.                 Pos = { -2365, 1171.5 },
  824.                 Size = { 96.6666641235352, 28.0303077697754 },
  825.                 Flags = {
  826.                     Expanded = true
  827.                 }
  828.             },
  829.             NameSet = true,
  830.             Inputs = {
  831.                 Comments = Input { Value = "2D merges and effects" }
  832.             }
  833.         }
  834.     }
  835. }
by Millolab » Sat Jun 20, 2020 4:29 am


This seems to be what you need
Go to full post

User avatar
Millolab
Fusionista
Posts: 535
Joined: Wed Oct 24, 2018 6:26 am
Answers: 2
Been thanked: 72 times
Contact:

Re: How would you create this room in 3D?

#2

Post by Millolab » Sat Jun 20, 2020 4:29 am



This seems to be what you need

User avatar
TheBloke
Posts: 26
Joined: Wed Jun 17, 2020 6:02 am

Re: How would you create this room in 3D?

#3

Post by TheBloke » Sat Jun 20, 2020 6:35 am

It works! That's absolutely brilliant!

At the start I wasn't sure how I was going to get a depth map out of my dungeon/cave scene, but then at the end of the tutorial he showed how to make one for a tunnel using some Trails magic, and the same method worked perfectly for my image. Like, first time! This is a new experience for me :)

Thank you so much! I had played around with Displace3D and depth maps briefly before, but I thought I could only apply them to individual planes to give them shape. It never occurred to me I could make an entire room out of a single flat image.

Image

Magic! This is only my first attempt at a basic depth map, simply using the 'tunnel' method from the tutorial to make the basic shape. I'm going to try and refine it to make it more accurate, and to account for some of the bumpiness in the walls. But the principle seems to be working great.

I haven't got my shadows in yet but I'm hoping that will be fairly simple - cast them onto a plane at the back, then merge them in 2D, kind of like I was doing before. It'd be lovely if I could just use the software renderer to get full shadows straight in the scene, but it's 2-4 seconds a frame depending on shadow settings, and that's just too long for 20+ minutes of footage. But hopefully I can get them looking pretty OK using the 2D merge method and two renderers, with OpenGL doing most of the work.

Thanks again!

User avatar
SteveWatson
Fusioneer
Posts: 121
Joined: Sat Oct 12, 2019 6:03 am
Answers: 3
Been thanked: 14 times

Re: How would you create this room in 3D?

#4

Post by SteveWatson » Sat Jun 20, 2020 7:18 am

Hi,

thanks for starting this, just so I could get to watch that video. I've never seen that technique of creating a depth matte that way but it's great, especially the tunnel one.

Previously I've seen tutorials where the geometry is recreated like this,



but it's good to know another method - again the tunnel thing was inspired.

User avatar
TheBloke
Posts: 26
Joined: Wed Jun 17, 2020 6:02 am

Re: How would you create this room in 3D?

#5

Post by TheBloke » Sat Jun 20, 2020 9:10 am

SteveWatson wrote:
Sat Jun 20, 2020 7:18 am
Previously I've seen tutorials where the geometry is recreated like this,
That's another great tutorial, thanks very much for linking it. Especially interesting as I had been wanting to understand what the UVMap node did, but hadn't yet looked up any tutorials on it as I had thought it might be a more advanced method requiring more than just a 2D image. Ironically I see now that it's actually simpler in principle than the method I just used, as, unlike Displace3D, it doesn't require anything besides the 2D image itself. Though I'm not certain if it would work as well in my situation, as I am thinking I would again hit the complication of needing curved walls.

I'm still a bit hazy on the precise practical differences between all the different methods of projection/converting 2D to 3D, and when exactly one should use one method versus another. For example, while I can see now how the UVMap node works, I'm not sure I fully grasp what all the benefits are versus ImagePlanes or Projector + Catcher. Well, I think I can see one: I believe that without the UVMap node, one would have to pre-cut the image into the different sections (like I tried to do with my dungeon room) whereas with the UVMap it seemed like he could project a single image, through a single camera, onto multiple separate planes with different geometry. Perhaps that is the key difference?

I'm going to do some more experimentation (and look for more tutorials) and hopefully all this will become more apparent.

Thanks again to both of you for pointing me to those very useful tutorials.

User avatar
MelbFilm
Fusioneer
Posts: 87
Joined: Thu Oct 13, 2016 2:38 pm
Been thanked: 6 times

Re: How would you create this room in 3D?

#6

Post by MelbFilm » Mon Jun 29, 2020 2:25 pm

If you're looking to take this work to another level I have been getting some great results using Blender. Once you get your work flow down and head around the tools its much quicker, allows much more detail and the renders are much nicer. I would still do the key and composite in Fusion though.

User avatar
TheBloke
Posts: 26
Joined: Wed Jun 17, 2020 6:02 am

Re: How would you create this room in 3D?

#7

Post by TheBloke » Tue Jun 30, 2020 1:17 am

MelbFilm wrote:
Mon Jun 29, 2020 2:25 pm
If you're looking to take this work to another level I have been getting some great results using Blender.
Thanks for the info. I'm getting close to done with this project and don't have time to think about other software now, but if I were starting from scratch I'd definitely take a look at proper 3D software. I have basically zero experience with 3D apps besides what I've done this past few weeks in Fusion 3D, but I would like to learn more about them.

I managed to get a 3D room that looks reasonably OK, given the low light levels, but it's far from perfect. The displace method worked OK to create the shape, but then the background texture looks quite stretched in some places and I wasn't able to fix that, even after some experimentation with using much higher resolution versions of the background PNG, and trying to use a UVMap node to adjust how the texture was applied. In the end I just hid it by adjusting the lighting so it wasn't obvious in the final render.

So yeah, if/when I try to do something like this again, it'd makes sense to try a proper 3D app and then composite the results in Fusion.