Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make it easier to produce seamlessly looping images / GIFs #434

Closed
ivelieu opened this issue Jun 8, 2023 · 6 comments
Closed

Make it easier to produce seamlessly looping images / GIFs #434

ivelieu opened this issue Jun 8, 2023 · 6 comments

Comments

@ivelieu
Copy link

ivelieu commented Jun 8, 2023

I'll give some background about this request. A week ago I discovered flame fractals, and I've been totally mesmerised by them since. I've been trying out every editor I could find.

It seems like JWildfire is really the only currently maintained one, and it's generally got the most features - the main feature which interests me is being able animate almost any flame/variation property and easily change them through the keyframe editor window. The closest thing I have been able to do has been in Fractorium, which can only animate transform rotation cycles.
Honestly, being able to just animate cycles at all has been a huge deal to me, and I've made some really cool animations in Fractorium using just that. But JWildfire has waay better keyframe navigation and previews, and I'd much prefer to use JWildfire entirely instead.

Here are a couple examples of seamless animations I've made in Fractorium for reference, which I personally find very relaxing to watch:
swirl_reduced
circley_reduced

They look really great at high resolutions. Mostly, I go for high resolutions and low frame counts, usually 60-120, and fiddle a lot with motion blur/related settings.

But, it looks like to me, the majority of JWildfire users seem to more interested in still images, let alone looping animations specifically. The JWildfire art galley doesn't seem to have any animated uploads. I mean, still images are great, but I'm personally more interested in animated fractal flames, specifically looping ones that can fit in a reasonable gif size. I don't know if there is a secondary reason for there not being any dedicated fractal flame animation sites, like lack of space or website maintenance difficulty. Or maybe I didn't look hard enough, in which case feel free to correct me. I bring this up because although JWildfire has the best configurability for animating transforms, there are a few features I thought of that would make it a lot easier to produce seamlessly looping fractal flame animations.

1: An easy way to make sure that the starting and ending keyframes have exactly the same property settings, so that the animation loops. As it is right now, replacing the end keyframe with the start keyframe (by deleting the end keyframe then copying the start keyframe to the end) seems to not copy all the keyframe properties.
Now, it's totally possible to go through each flame variation and affine tab and the camera settings to try and figure out which offsets need to be changed so the animation lines up, but this has been tedious for me and it seems simple to implement this action with one button instead. Maybe this is a bug with the keyframe duplicate action, I'm not sure.

A similar idea would be to have a drop-down menu next to the current keyframe which shows and allows me to navigate to the effects that are changed changed on that specific keyframe.

2: I would like to animate the transform weights. I can't see any option for this.

3: I would like more output format options for the "render" button. Because I intend the final version to be a lossless gif, normally when I am making an animation in fractorium it outputs each frame as one png, which I stitch together with imagemagick. If I use JWildfire to output to mp4, I have to convert it back to a gif, and I often want to do frame-by-frame touch ups too, which means I really want a per-frame output. But if I do per-frame output via the Easy Movie Maker PNG_IMAGES option, I have to run on CPU and not GPU, which is super slow for me. I would imagine it wouldn't be much effort to unify these different file export types across the different render menus.

4: I know about the buttons for opening the effect animation window, and how they change sprites depending on whether there is currently an animation for that effect or not. It would be nicer if the icons were higher contrast, because I have to squint to tell the minor red/green difference on the button sprite. The buttons changing themselves don't always seem to update correctly; some that are marked as red (indicating there is an animation on that frame) I can open and see there is only one keyframe set at frame 0, then I close the window and the button updates to green, so there is something wrong with the UI updates for those buttons.

  1. When I press ctrl-z for undo, I expect it to undo up to the last time I pressed a button. But if I click and drag to move a transform in the preview window, for example, the ctrl-z undo buffer seems to save lots of increments up to the point. It seems to only be an issue when moving moving things in the preview window. I can't tell if this is "it's a feature, not a bug" kind of thing, but it's very impractical. It gets worse because the preview re-renders after every ctrl-z rewind, which makes rewinding before a single button press tedious, especially when I want to try and smoothly line up start and end keyframes.

  2. It seems like keyframes get generated in the bottom menu when moving points in the graphical keyframe editor, but they aren't removed when there is no change at them. In other words, after a bit of editing it gets filled up with a lot of useless keyframes. Maybe there could be a cull button to check if any keyframe is unused, then remove it?

  3. It would be nice if the frame range in the keyframe property editor autofitted the frame count of the animation. It seems to be wildly off proportion most of the time, it only takes a couple of seconds to rescale it, but it just seems strange.

  4. Better preview resolution control. The animation updates to a higher resolution when navigating between keyframes rather than dragging and letting go of the frame slider. It would be nice to have better control of how detailed these resolutions are. The realtime preview on/off button helps, but it'd be nice to have more granularity.

  5. Even if the start and end keyframes have the exact same settings, if there are large shifts in between the start and end keyframes, there is jitter between the start and end keyframes so they don't line up for seamless looping when I render afterwards. I imagine this is possibly because of some interpolation on the ending keyframe that shouldn't be there, but that's only my best guess. I can give a few examples of this if it can't be reproduced easily, but it seems to be an issue with most animations and is most clearly visible after converting mp4 to gif.

Anyway, I might later look at the code base if some of these are easier features I could try implementing them myself, but I first just wanted to put these suggestions out there, because even though JWildfire has way more options and controls than the other editors, I'll probably have to stay with fractorium just because it has seamless looping rendering that "always works", in my preferred output format.

@thargor6
Copy link
Owner

thargor6 commented Jun 8, 2023

Thanks for your suggestions, but it is very impractical to merge 9 different topics into one feature request + bug report + wish list.
To answer the most simple question: output format.
PNG output is always the default output format for any of the modules.
mp4 is only for preview, and not recommended to use for final animation, because of the limitation of the used encoding library.
I can also add GIF, this had no priority yet, because there is a bunch of programs which can convert PNG -> GIF

@ivelieu
Copy link
Author

ivelieu commented Jun 9, 2023

If it would make things easier for you, then I could make separate issues for each item, but they are all related to seamless looping images so I thought it would make sense to keep them together. What would you prefer that I do?

mp4 is the default video output format when clicking the big "render" button and selecting "supported movie files":
image
image

Obviously I don't plan on manually rendering each of 60 frames by using the default PNG output from clicking that "render" button. The only way to get a sequence of PNG files by using GPU, as far as I can tell, is through choosing the "FLAMES" output in the easy movie maker, then loading the set of flames in the batch render window. Now that is fine and all, except for the fact that this render method stretches rather than widening the resolution when changing outside of the default 640x480. I will show you what I mean. This preview, which looks fine:
image

Gives me this cropped image when selecting 640x480 in the batch render resolution dropdown:
image

And this stretched one at 1000x1000 in:
image

And this happened even when exporting with the easy movie maker FLAMES resolution set to 1000x1000.
As you mentioned and I agree, mp4 is really not a good output format for a lot of purposes, so I don't understand why it is both the only option for the big "render" button and that changing this is hidden away behind the easy movie maker and/or batch render.

@thargor6
Copy link
Owner

thargor6 commented Jun 9, 2023

Yes, please split it into separate issues. This helps a lot to actually solve the problems and not only discuss them. I need a simple way to track what is done and what not, because this is only a side project.
Even when the issues seem related from a user's point of view, in the software they are usually not.

You may just split the existing text. There is no need for a nice introduction. It should be short, and one problem at a time :-)

Thanks!

@thargor6
Copy link
Owner

thargor6 commented Jun 9, 2023

Having separate issues also helps to track duplicates. Of course, the whole text will not be a duplicate, but the lower part of your latest posting is: #428

@thargor6
Copy link
Owner

thargor6 commented Jun 12, 2023

A hint to animate a flame as posted above with a few clicks:
a) in main editor choose "JulianDisc" as random-flame-generator
b) click "Random batch" and then choose one you like
c) open easy movie maker and click "Add from Editor" to import this flame
d) select XForm-script "ROTATE_POST_FULL" for slot "02"
e) output as flame-sequence and render using Batch render

@ivelieu
Copy link
Author

ivelieu commented Jun 23, 2023

Thank you for mentioning #428, I didn't notice that one. And thank you for the step by step instructions. I did not realise the Xform scripts could do the seamless rotation for me.

Sorry I didn't do this sooner >_< I've made separate posts now.
I noticed I can animate transform weights and I just didn't spot the little setting.

...Yeah, I feel kinda stupid. Live and learn I suppose.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants