Messages 1 - 45 of 63
First | Prev. | 1 2 | Next | Last |
voldemort |
Ive looked through the guts of tons of filters that pipe the output into identical components multiple times
While it would not save on render time couldnt you all create a loop component with inputs for instance zoom blur by uber instead of a ton of repipes you could simply plug a loop component with an integer slider and the user then could select how many times to pipe the effect again --no this would not reduce render times but it would clean up the code and probably make the code aspect of it more efficient lets all whine for a wine port |
|||||||
Posted: June 20, 2011 9:22 am | ||||||||
Skybase
![]() |
To hint on this really awesome topic, in QuartzComposer there's a node called the iterator, which is basically like a for loop. The iterator works as a macro component. You can add multiple operations into it, and the result is the operation repeated x number of times specified by the user.
Yes, this also gives some of us who don't know lua scripting by heart opportunity to create complex graphics such as fractals and so on. I can think of all sorts of opportunities with just 1 component. I don't know how people will take this from a technical stand point, but as an artist, I see interesting opportunities with it. <Actually this was suggested before wasn't it? Forum thread search results in quite a number of similar requests> |
|||||||
Posted: June 20, 2011 9:50 am | ||||||||
voldemort |
I'm kinda shocked that this topic really hasn't earned any kind of reply or real attention
Is this just to inconceivable a concept? lets all whine for a wine port |
|||||||
Posted: August 22, 2011 3:10 pm | ||||||||
Kraellin
![]() |
+1
If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: August 22, 2011 9:41 pm | ||||||||
Crapadilla
![]() |
+1
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: November 14, 2011 10:19 am | ||||||||
Orteil
![]() |
+∞
|
|||||||
Posted: November 14, 2011 11:13 am | ||||||||
Skybase
![]() |
+1 Bump! Don't forget this feature request!
![]() |
|||||||
Posted: July 14, 2012 6:20 am | ||||||||
Morgantao
![]() |
+(∞)^2
|
|||||||
Posted: July 14, 2012 9:47 am | ||||||||
Ghislaine
![]() |
voldemort said
Skybase said
And I say that this loop component must be in the list of priorities. So + 1 000 000 000 visit https://gisoft.ca |
|||||||
Posted: July 14, 2012 10:12 am | ||||||||
SpaceRay
![]() |
YES !!! I agree too that is very important and very needed to make many filter and so you do not have to make such complex filters when it could be much simpler to repeat things and to replicate
|
|||||||
Posted: July 15, 2012 4:29 pm | ||||||||
SpaceRay
![]() |
Orteil +∞
Morgantao +(∞)^2 Ghislaine +∞ x 1000.000.000 Me +∞ x ∞ that would be the same Is there a bigger number than infinity? What is infinity times infinity? One important thing to keep in mind about infinity is that it's not really a number, it's something else. It's a concept that means "something bigger than all numbers." So there are no numbers bigger than infinity, but that DOESN'T mean that infinity is the biggest number, because it's not a number at all. In fact, there is no biggest number, because if you think you've got it, you can always add one, and you've got something bigger. Since infinity isn't really a number, it doesn't always make much sense to multiply it by things, but we can think about doing it anyway. We can say that infinity x infinity = infinity, and keep in mind that we're being a little bit sneaky to even talk about multiplication like that. ![]() |
|||||||
Posted: July 18, 2012 7:28 pm | ||||||||
Skybase
![]() |
PLUS f0(n) = n + 1
Loop components obvious have to be for loops. Just imagine a while loop in FilterForge hahaha. |
|||||||
Posted: July 18, 2012 8:17 pm | ||||||||
SpaceRay
![]() |
Will we have to request this feature in a continous loop to FF Inc. until it is finally implemented as it has happened already for many request since FF 1.0 and that are not available yet?
Or will FF Inc. be so kind and good to make this available in FF 4.0 ? I think this is something very important. Please, so FF Inc. knows better and can make it as wanted, I think that would be good to explain HOW this component should be done and what options should include |
|||||||
Posted: July 19, 2012 12:05 pm | ||||||||
Skybase
![]() |
I mean pretty sure if macros get implemented you can then set the number of feedback per macro although that leads to awful load of computation time so the limit should be set to some reasonable number.
![]() |
|||||||
Posted: July 19, 2012 12:28 pm | ||||||||
Morgantao
![]() |
Define reasonable... Some would say that 20 is a reasonable maximum ammount of presets per filter ![]() |
|||||||
Posted: July 19, 2012 1:06 pm | ||||||||
SpaceRay
![]() |
Would be possible to make your own component or control the behaviour of components using macros? Well if this like making scripts, I will not be able to use them. ![]() ![]() Perhaps there could be implemented also Windowsros ![]() ![]() sorry for the bad joke |
|||||||
Posted: August 27, 2012 5:06 am | ||||||||
Skybase
![]() |
derp.
FEAR NOT IT'S NOT THE SAME AS SCRIPTING!! The idea of macros is like scrippets. You know how you typically copy-and-paste huge loads of nodes? Well imagine bundling the set of operations into 1 component and using that as a component. That's a macro. The ability to bundle a bunch of operations is very very useful because you can nest specific operations instead of having components everywhere. It makes sense to use the macro as a FOR LOOP since it's a bundled package of a couple nodes. So that basically allows us to expand into different levels of visual complexity without having to find work arounds or copy-and-paste huge loads of the same thing. |
|||||||
Posted: August 27, 2012 7:29 am | ||||||||
SpaceRay
![]() |
Thanks for explaining it very well, I have understood it right and you are right that this kind of macros for FF would be very interesting, useful and helpful.
But will FF Inc. want to include macros in FF 4.0 ? ![]() I do not know how easy or complex can be to add this kind of macros to FF, but I think it would be worth it considering how many interesting and useful things could be done with this and would be time saving also. |
|||||||
Posted: August 27, 2012 8:33 am | ||||||||
Vladimir Golovin
Administrator |
I've been thinking about loops / iterators / integrators for quite a while. I have a good idea on how to do that, but we haven't prototyped it yet.
In a nutshell, it will include a new type of connector which I tentatively call "loopback". One end of this connection is forever glued to the Iterator node, and on the other end of it is a thingy resembling a control component. The thingy has an output which can be plugged into any compatible inputs. Technically, the thingy may be similar to IntSlider, Slider or Color, but it is controlled by the Iterator, not by the user. The trick is, the "loopback thingies" emitted by the Iterator (yes, there can be more than one) cannot be connected to inputs of components outside the subtree of this particular Iterator, and to subtree that have connections that go outside this subtree. Tehcnically, it has output of the same type as the Iterator, and this output must be used within the iterated subtree, otherwise no accumulation / merging is possible. The loopback thingies, or perhaps the Iterator itself, allows you to specify the value range for the thingy. Also, the iterator will have another special thingy called Accumulated Result, which lets you specify a component subtree which will combine the accumulated result with the current iteration, be it sum, average, some kind of blend mode or whatever else you can construct from FF components. The loopback connectors can potentially be used for creating variability per cell in Checker components, per Brick / Tile in the Bricks / Pavement / Tile components, or per particle in the Bomber component. For example, Checker could emit loopbacks like "Cell X Coord", "Cell Y Coord", "Cell Row", "Cell Column" and the like. Since we now have Math components, handling real-world numeric data emitted by loopback connectors shouldn't be a problem for the subtree. Another interesting use: a Noise component can expose the octaves via loopbacks, so that they can be processed by subtrees before being scaled and summed up into the final noise (could be problematic due to internal octave edge-blending). Added: in other words, loopback connectors let your subtree "know" what particle, cell, brick, octave or iteration is being sampled at the moment, so the subtree can form the result accordingly. (I'll draw a picture when I get the chance. Update: see below!) |
|||||||
Posted: September 13, 2012 10:21 am | ||||||||
Skybase
![]() |
Wooord, these things are things I really want to truly see in programs like this. Most other graphics programs don't really host stuff like this and it'll truly be something that will push what we design really forward.
![]() |
|||||||
Posted: September 13, 2012 11:15 am | ||||||||
Vladimir Golovin
Administrator |
(Note to myself and programmers: Given the current infrastructure, loopback dongles must be map/green or curvy/blue. They can't be gray because changes of gray inputs require Prepare(). We can't call Prepare() per every sample, that would be slow as hell, especially given the fact that Scripts can have a custom prepare step. If we keep the loopback dongles green/blue, we can do everything during the sampling phase without much problems. Now we only have to find a way to somehow pass the dongle data (or "data for dongle") with the get_sample() call.)
(Related: Houdini seemingly can "cook"/update/data-propagate the network without needing a dedicated prepare() step executed before all sampling. Obviously, that would be a big infrastructural challenge for us. Keeping the dongles green/blue sounds orders of magnitude easier.) (Another reason why we should avoid making dongles gray: bitmap components. We can't just change blur radius per sample, that would invalidate all rendered cache blocks. Yes, Captain Obvious thinking aloud, but still.) (Also: the loopback dongles should allow users to manually change their value for preview / tuning purposes, so that the user can tune the subtree. The subtree displayed just for the default values of all dongles would be impossible to tune, users will try to work around this by disconnecting dongles from inputs, entering test values into these inputs, tuning the subtree on them then connecting dongles back.) (Also: bitmap component would kill dongle metadata. How to deal with this?) (GUI: Loopback connections, that is the wires that go from Iterator to dongles, aren't free-form. These wires follow rectangular path, have rounded corners and are somehow arranged automatically. This will distinguish them from the regular input-output connections.) (Lorentz, don't be so scared ![]() |
|||||||
Posted: September 13, 2012 11:23 am | ||||||||
Vladimir Golovin
Administrator |
||||||||
Posted: September 14, 2012 9:50 am | ||||||||
Vladimir Golovin
Administrator |
||||||||
Posted: September 14, 2012 9:52 am | ||||||||
Vladimir Golovin
Administrator |
BTW, Skybase, could you post the links to these threads here? |
|||||||
Posted: September 14, 2012 9:59 am | ||||||||
Skybase
![]() |
Here are a couple I recall bumping into. Typically the conversation never carried that far....
http://www.filterforge.com/forum/read...essage1995 http://www.filterforge.com/forum/read...essage6400 http://www.filterforge.com/forum/read...essage6905 http://www.filterforge.com/forum/read...ssage73017 Back in May this year Uberzev came up with this to do recursions: http://www.filterforge.com/forum/read...#nav_start But mentions of "looping" are kinda scattered in the forums. |
|||||||
Posted: September 14, 2012 10:28 am | ||||||||
Vladimir Golovin
Administrator |
Regarding the GUI. I guess it would be also possible to implement the Loop component as a "special group" which houses the iterated subtree and variables, similarly to how Quartz Composer does it. But I'd still prefer a non-grouped look, like as on the pic above.
|
|||||||
Posted: September 15, 2012 3:20 am | ||||||||
Crapadilla
![]() |
(Added the links to the wiki "feature wishlist". Thanks, Skybase)
![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: September 15, 2012 3:50 am | ||||||||
Skybase
![]() |
Cool~
![]() I suggested Quartz Composer's thing because in the end you'd be working with sub-routes which do the looping. But I'm positive both ways will work. Just as another source of interesting inspiration regarding looping capabilities. I also use a program called Artmatic which does something like you were describing. The program itself does feature both an external iterator component and a grouped iterator (which is featured as "recursion"). The GUI in the program's a bit rigid unfortunately, so the manner in which the loop occurs is through a memory blend at the end of the chain. Just thought that would be interesting to take a look at. ![]() |
|||||||
Posted: September 15, 2012 5:09 am | ||||||||
Vladimir Golovin
Administrator |
Couldn't find any information on the Memory Blend node. What does it do?
|
|||||||
Posted: September 15, 2012 5:40 am | ||||||||
Skybase
![]() |
It essentially behaves like a buffer while blending each iteration. In this case, it's using memory max, so that's basically the equivalent of having the max RGB component at the very end of the loop chain.
|
|||||||
Posted: September 15, 2012 5:47 am | ||||||||
Vladimir Golovin
Administrator |
If so, if I understand their looping paradigm correctly, their accumulation methods are limited to blending modes implemented by Memory Blend, because otherwise they would need Memory Distortion, Memory Perlin Noise, Memory Math, Memory HueSaturation, Memory Custom Subtree etc.
|
|||||||
Posted: September 15, 2012 6:19 am | ||||||||
Skybase
![]() |
Absolutely. Actually come to think of it, it's pretty much the same thing you've described in the previous posts. It's just that the "blend mode" comes attached to it.
Artmatic on its own goes pretty deep... it's a crazy piece of program. I thought I'd bring it up since the program's looping capabilities are really crazy. And well... there are other types of iterators and just ways to mingle with the nodes all together. hehe This last one's kinda tricky to explain. X and Y coordinates are translated by the first 3 nodes one being a group component with more transformations inside. The iterator accepts X and Y coordinate space and outputs RGB outputs (XYZ). This is then fed into the XYZ slot of the color node, that gets fed into the memory add component. The last node's there for color correction and it's really not necessary. I mean of course the program's different, but I thought it'd be nice to share something about it. So I hope this kinda serves as some form of inspiration in the future. ![]() ![]() |
|||||||
Posted: September 15, 2012 7:23 am | ||||||||
Vladimir Golovin
Administrator |
It's similar but it's not the same. In Artmatic, the operation that combines accumulated results with the result of the latest iteration is embedded / hardcoded into Mem* nodes, while in the loopback approach I outlined above this operation is customizable: it is possible to use any subtree of components to implement it.
Very interesting. I'll take a closer look. |
|||||||
Posted: September 15, 2012 7:58 am | ||||||||
Vladimir Golovin
Administrator |
||||||||
Posted: September 15, 2012 2:26 pm | ||||||||
Ghislaine
![]() |
Thanks Vlad for the loop component to come. I'm so glad for this.
![]() visit https://gisoft.ca |
|||||||
Posted: September 15, 2012 3:11 pm | ||||||||
Skybase
![]() |
Artmatic organizes the nodes based on the number of inputs and outputs. And there are a couple menus each with different component menus. So the iterator and memory components are in a variety of areas and not shown in the menu above. I was wondering if a Component Reference (PDF file) would be handy to have I guess... I can send you that privately. |
|||||||
Posted: September 16, 2012 3:58 am | ||||||||
Vladimir Golovin
Administrator |
(I deleted three posts about my email exchange with Skybase so they don't clutter the thread.)
So I tried Artmatic demo, hoping to play with their Iterator and Looper nodes, but I hit a roadblock I didn't anticipate: I couldn't, for the life of me, figure out how to edit their tree: I mean I couldn't even connect a component's output to an input! It looks like that I need a full day or two to get familiar with Artmatic tree editing interface, hence this question to Skybase: Could you explain, in plain words, the conceptual difference between Loopers and Iteration? I think the following phrase from the user guide contains the key information:
Also, this one:
And this one:
Do they need this "feed-into-itself" thing because they don't have a generic "Mem-Anything" mechanism that allows for custom-designed accumulation operations, not just blend, max, min etc? Look at the mockup I posted above. There's nothing that prevents you from plugging the Accumulated Result into the Source input of a Noise Distortion, Rotate, Offset or any other distorter. This way, each iteration will operate on the combined results of all previous iterations, and the accumulation operation will be the distortion itself ("Mem Noise Distortion" in Artmatic terms). Is this what they mean by Loopers? |
|||||||
Posted: September 19, 2012 10:10 am | ||||||||
Skybase
![]() |
Artmatic by design... does have its intimidating ends. The program itself has been around for 10 years now and ... I've been using it since version 1.0. Heh. I only recently finally began understanding the mechanisms of the program myself!
<Note: the following is the best explanation I can give personally.> In SUPER plain english: they're pretty much the same thing. The difference lies in the number of inputs and outputs. They all have to go through the memory components in order for it to work. In detail: The iterations node is a fairly basic node, it has 1 input and 1 output, this is indicated as 1->1 in Artmatic terms meaning it operates on 1 signal at a time. The "looper" nodes are fairly new in the program. The most basic looper you can find is the 2 input 3 output (2->3) which basically gives you x, y, and z outputs in RGB. You then have 3->4 as well which has an alpha channel (I think!) Then there are these speciality loopers with cross-looping and otherwise... and I honestly never used those so I don't even know what they do. ![]() The loopers, iterations nodes do need corresponding memory component at the very end. I think this is by design of the program. So in case with iterators you have a 1->1 memory component listing. Then with the 2->3 looper you have the 3->3 memory components. I guess that would be what loopers and iterators would be in Artmatic.
In my understanding yes... I really think this is by design of the program. So the mockup would be technically much more powerful really if you compare it to how Artmatic's system works. See, I really brought up Artmatic just because it's got insane looping capabilities, so I thought I give it a mention. ![]() ![]() Hope the stuff above answers your question. In any case... it's really to the best of my ability. ![]() |
|||||||
Posted: September 19, 2012 12:59 pm | ||||||||
Vladimir Golovin
Administrator |
Skybase, thank you! And speaking of Quartz Composer, could you give a brief overview of its looping capabilities other than the Iterator node? QC looks much more promising than Artmatic in this regard.
|
|||||||
Posted: September 20, 2012 5:53 am | ||||||||
SpaceRay
![]() |
This is interesting and very good if FF wiil be able to have loops and iterators in a component way as this would help very much and I think that will be faster than making them with LOTS of components as it happens now.
uberzev have been making some interesting tests and experiments to try to optimize and get easier loops and iterators in FF 3.0 as shown here uberBlend - (This changes everything) I admire the great experience and knowledge that you Vladimir and Skybase have.
WOW! If someone very experienced and expert like you that have so many skills has not been able to figure out how to use this without any previous experience it could mean that is not your fault, and is because the software is complex and hard to learn. I am supossing this, and I could be wrong and you may be only refering to the loop and iterators part.
WOW, you have been using it for 10 YEARS and only recently began to undertand how it works ? I am missing something or this program is really very complex and difficult to use and learn? I can´t try it myself as it only for MacOS, but if this is true I am happy that is not available for Windows, I mean that I was sad that I could not use it, but if it is very hard to use, is not something I like. |
|||||||
Posted: September 21, 2012 2:55 am | ||||||||
Crapadilla
![]() |
Some of us have been using FF since the beta in 2006 and still haven't got it figured out. Like me, for example. It just keeps growing and growing... ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: September 21, 2012 3:45 am | ||||||||
Skybase
![]() |
Quartz Composer's iterator is actually kinda cool. This is an old tutorial but whatever discussed here is still valid: https://vimeo.com/808373 You basically have a macro specifically meant to run a portion of the node tree. In the iterator macro you create the "iterator variables" node which basically talks to the iterator on the number of loops the macro is supposed to operate. The iterator variables holds a couple key variables: current index, current position, and iterations. Once the current index and position are plugged into a node inside of the macro, it'll start working.
Artmatic is extremely easy to use in that it just generates art itself, but to really start programming, it takes a bit of background knowledge and understanding. So when I learned that, I kinda began understanding how it all worked out. Same goes with FilterForge and many other nodey programs. |
|||||||
Posted: September 21, 2012 4:39 am | ||||||||
Vladimir Golovin
Administrator |
I already watched that video (though I didn't yet play with QC, will do that soon).
My question was, are there ways to loop stuff in QC other than the Iterator node? |
|||||||
Posted: September 21, 2012 5:40 am | ||||||||
Skybase
![]() |
Darn, didn't read properly.
There's a macro called Replicate in Space which is capable of reproducing objects within the macro multiple times. There's also a feedback patch which allows for some of those looping capabilities: From the QuartzCompsoer release notes:
|
|||||||
Posted: September 21, 2012 6:29 am | ||||||||
Vladimir Golovin
Administrator |
As I understand, QC term "patch" refers to a native QC node, but what's a "macro"? Is it something similar to FF groups? A patch with sub-patches?
Also: as I see from googling, the Iterator does not allow to feed its output back into its input (which is, I think, something that the Feedback patch should be able to do). If so, the scheme I outlined above will have the capabilities of both Iterator and Feedback. (Excuse me. I should stop asking stupid questions and go play with the thing myself). |
|||||||
Posted: September 21, 2012 7:02 am |
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,531 Posts
+39 new in 30 days!
15,347 Topics
+72 new in year!
350 unregistered users.