1

I'll try to explain myself as clearly as possible. At the moment I'm working on a volumetric LED installation (over 10000 LEDs) and need to render a few short animations (previsualization) for a client. The way I decided to go about this:

Create a cube with emission shader which represents a single LED.

enter image description here

Using array modifiers I create the shape of installation.

enter image description here

So now, I'd like to be able to control RGB values of emission shader of every single cube separately by feeding those values from external software through python. My initial idea was to separate materials for each of those cubes, but then I would end up having 14040 materials, one for each cube (LED). Plus each LED has 3 values (RGB). So in total I'd need to process 42120 values per frame.

  1. Is this too much for blender?
  2. if yes, is there any other ways to achieve this that wouldn't be so processor costly?
  3. if not, how do I separate materials for every single cube after I apply the array modifiers and separate cubes by loose parts?

Cheers :)

  • Are the objects merged (merge option) by the modifier? – lemon Nov 24 '20 at 07:32
  • @Gorgious, 14040 times? – lemon Nov 24 '20 at 07:36
  • 1
    This is a lot of materials. Is there a background context that leads to this question? (could be another way to do it?) – lemon Nov 24 '20 at 07:38
  • you need to give more details, if all these objects are the same you should use linked duplications, and materials can be different for linked-duplications. You can also use one material but use the Object Info > Random output so that each object looks different – moonboots Nov 24 '20 at 07:40
  • Objects aren't merged in the array modifier, I'd like to end up having 14040 separate materials so I can control the color of each object with an external software through python. It is for previsualisation of volumetric LED installation. – Giedrius Gurevičius Nov 24 '20 at 08:12
  • I wouldn't. Use viewport color instead with a single material if only the color changes between each material, else your computer will freeze. See recent discussion https://blender.stackexchange.com/q/202865/86891 – Gorgious Nov 24 '20 at 08:19
  • OK, that more clear now. Will delete my answer. (@Gorgious). Can it be considered as duplicate so https://blender.stackexchange.com/questions/202865/different-objects-same-material-animating-alpha-independently ? – lemon Nov 24 '20 at 08:24
  • @lemon I guess, but I think we're still missing information from the OP... And still having 10k+ objects is a bad toll on performance. I would use a single mesh object and mess with vertex colors instead – Gorgious Nov 24 '20 at 08:37
  • 1
    @Gorgious, yes we're missing information. Eventually, the material variation is not only about color. – lemon Nov 24 '20 at 08:43
  • @GiedriusGurevičius, this is more clear thanks. How are the input data? Most likely what was suggested above concerning vertex colors should be better than many materials and objects. – lemon Nov 24 '20 at 10:56
  • Can you wrangle the output values from your external software into an image: a strip/array of pixels, one pixel per LED?.. Then your LED's could do a simple lookup with a contrived UV coordinate per LED. Maybe you could give us an example of the external software's output. – Robin Betts Nov 24 '20 at 19:15
  • Robin Betts, Yes I can! I can render out a video 14040*1 resolution representing Pixel per LED. How do I do that contrived UV coordinate thingy exactly ? – Giedrius Gurevičius Nov 25 '20 at 16:44
  • @GiedriusGurevičius, same principle as this: https://blender.stackexchange.com/a/195877/19156 . If your base led has known uv coordinates, you can shift it using the arrays (need some calculations and appropriate input image to make it 3d but that should do) – lemon Nov 25 '20 at 17:16
  • Thanks Guys! I'll give it a shot. – Giedrius Gurevičius Nov 25 '20 at 23:59

0 Answers0