YOUR ACCOUNT

Login or Register to post new topics or replies
Burt
Random Old Guy
Posts: 333
Filters: 12
I'm not sure if it is possible to write components using the Lua scripting but if so I wanted to suggest one for the scripters to consider.

I know that recursion or looping is high on the list of feature requests. What I was thinking is that the Switch component could be used to create a pseudo looping (or at least incremental sequential processing) of multiple nodes if there was a counter component that allowed you to add 1 to the selector value on each 'loop' so that counter=counter+1.
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Could you give a description of how you'd use this? When should the counter increase?
  Details E-Mail
Burt
Random Old Guy
Posts: 333
Filters: 12
More of a visual guy so not quite sure how to explain. This is liable to sound convoluted.

I thought if the counter could be attached to a noise filter, and maybe to Variation, Roughness for example, generate a variation with the result going to something like Multiblend, and at the next 'tick' the new result would go to the next layer in Multiblend and so on. However the components like Multiblend (and maybe Bomber and Blend) that could be candidates to 'store' the result fr om each 'tick' (like an array) and have some operation performed, of course don't have a selector that could be used to be able to allow that. I also guess the first pass would run all the way through to the Result.

Sorry if that sounds confusing. Can't always funnel what I am thinking into coherent speech. Wh ere's the blush emoticon when you need it.
  Details E-Mail
Mike Blackney

Posts: 375
Filters: 57
Click 'more smileys' smile:D

I kind of think I understand what you're saying. Let me make sure I've got it. (Picking names out of the air here.)

You have a setup where there's an Array node, it has two inputs and one output. The inputs are a map connection called Input and a slider for number of array elements, called Count. Into the array node you plug in, say, a Perlin Noise. Into the perlin noise you plug in an ArrayRandomiser node and you can connect it to, say, variation and roughness. Then the perlin noise gets rendered a couple of times (as determined by the Count input) and stored in the array slots. Then when you plug the array map output into another element you can pick which array element is used?

If I've got that right, you can kind of do some of that, except you can't do the multiple perlin noise renders. If you're okay plugging a number of different elements into your script node, instead of using a switch or some sort of layers system, you can pack your input images into a grid of smaller images in the output, then use another script node to extract one section of the grid. The multisampling means you shouldn't lose any image quality that's packed in when you size it up again.
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Only one sample is rendered per filter execution. Gray inputs affect components before the sample collection start in the rendering process (i.e. at initialization time). So we can't change gray inputs from sample to sample, only from full rendering to rendering and only manually (or via a batch rendering script). We don't have control scripts either, but even if we get that at some point, they will most likely not support per sample change (their connection context of ins and outs probably remain gray).

Also you have to consider the difference between inputs and outputs - it is not allowed to create a connection feedback:

Noise A -> Script A
Script A -> Noise A (input)

So the script that would take care of looping cannot define properties of one of its sources.

However some of you describe can be achieved indirectly. Variation can be thought of as different regions in the same source, and roughness can be thought of as scaling the source differently (not 100% correct though). Variation changes can be simulated by offsetting coordinates so each loop fetches from a different region in the source (assumes non seamless mode), and to increase "roughness" you multiply coordinates by a number > 1, to decrease you either divide or multiply by a number in range [0..1[. This assumes that you set roughness to 100 initially and found an initial scale level.

It gets a bit complicated, and it would be a great deal easier if a parent script component were allowed to configure inputs in its sources (by allocating them at initialization time, thus disabling them for traditional connections).
  Details E-Mail
Burt
Random Old Guy
Posts: 333
Filters: 12
Thanks for the explanation guys - methinks I have much yet to learn. Nevertheless I got some ideas from what you suggested and take some more baby steps as soon as I get some play time.
  Details E-Mail

Join Our Community!

Filter Forge has a thriving, vibrant, knowledgeable user community. Feel free to join us and have fun!

33,711 Registered Users
+18 new in 30 days!

153,533 Posts
+38 new in 30 days!

15,348 Topics
+73 new in year!

Create an Account

Online Users Last minute:

12 unregistered users.