I have about a 100 small renders that I’d like to tile and line up on a grid… anyone have any advice on an easy, efficient way of doing this?
Thanks,
Michael
So, as expected, my initial attempt at accomplishing this didn’t work at all… I individually composited every tile into an image the size of the final image and then used the Composite TOP with “ADD” compositing mode to combine all the resulting image… it was much, much too slow. There has to be a better a way of doing this…
If you want to use only TOPs, try using a Texture3D TOP in connection with a Timemachine TOP.
Set the parameters for the Texture3D TOP so that it will store 100 images and feed that into the Timemachine TOP. The second input to the Timemachine TOP should be a greyscale ramp which is used as a kind of lookup texture. You can specify in its parameters what offset black should be and what offset white should be.
Let me know if this advice is helpful
cheers
Markus
So, if I’m understanding this correctly, the texture3d TOP fills up from the individual frames of a single movie connected to its input. I actually have 100 separate movie TOPs that are generated in realtime that I need to go into this… and it needs to update all 100 of those every frame (also, I’m not committed to doing this exclusively with TOPs… I’m just not sure how else to do it).
Thanks,
Michael
Yeah, my first approach doesn’t work for that.
But here are 2 approaches that should do the job.
- Composite TOP
You could build it out of 11 Composite TOPs. For each row of images one and the 11th Composite TOP for putting them all together. The key I believe is to have the input images to the Composite COMP already at the reolution which they will have in the end. So for a output resolution of 1024x768 each image should only be the size of 102x76 (or similar…)
The Translate Step Parameter to offset each individual TOP input is very helpful with that.
- Table COMP
The Table COMP is a very nice and clean solution. You have to define a Cell Attribute DAT which points to a layout Table that holds only one attribute: “image”. This attribute again points to a Table DAT which holds all the names of the images you would like to use.
After that, use a Op Viewer TOP to convert the Table COMP again into a TOP so that you can bring it back into your compositing chain.
cheers
Markus
grid.tox (2.87 KB)
Thanks! I tried using a GLSL multi TOP to generate the texture array (viewtopic.php?f=27&t=2227&start=10), but discovered that it doesn’t accept more than 16 inputs. The table method, however, seems to work really well, though I don’t quite understand how you’re doing it… what actually references the evalauate DAT “images?”
Thanks,
Michael
the cell_default Table DAT is where the images Table DAT get’s referenced via the image attribute.
You can specify all kinds of attributes (derivative.ca/wiki/index.php … Table_COMP) in this DAT which define the look of each cell.
cheers
Markus
Oh, okay, thanks! That’s good to know… I need to read up on tables.
It turns out that the OPVIEW Top is incredibly slow… so, I initially just specified the table as my perform OP… which worked reasonably well, but was still a bit slow. The Composite method you specified performed better (I didn’t know about that translate step parameter) but was still not fast enough, mostly because of how I was generating the textures, though, and not the compositing itself. Eventually went with a custom GLSL vertex shader that both renders out the imagery quickly using using hardware instancing and tiles them.
How do you access the 100 different images in the Shader?
cheers
Markus
Well, what I didn’t mention earlier (and probably should have) was that tiles were actually views of the same geometry from different angles…so, I used hardware instancing to create the different views. Normally, the shader would just draw them one on top of another… I offset them by the instance ID.