godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.16k stars 97 forks source link

Make the animationplayer capable of recording objects / make animationrecorder node . . <3 #2208

Closed jasperbrooks79 closed 3 years ago

jasperbrooks79 commented 3 years ago

Describe the project you are working on

A Tomb raider game . .

Describe the problem or limitation you are having in your project

I'm watching Metal Gear Solid 4, and it has many amazing cut-scenes, with a ' live ' camera . . Resident Evil 5 had the same, they sort of put ' mo - cap ' on a camera, and put that into a game . . That is very difficult to emulate, with a normal key-frame animation, but I was wondering if one could make the animationplayer node capable of recording things ' live ', maybe at 30 FPS, or even 60 FPS . . so, one could control camera movement with the mouse and, zoom and, focus levels with buttons, like ' W-S ' and, ' E - D ', to get something like this . .

https://www.youtube.com/watch?v=hK9Ie3Fp7yg

So, if one could move an object, live, like a box, or the camera, so on . . and, then RECORD that movement, in say 4 FPS, 8 FPS, 16 FPS, 30 FPS, 60 FPS . . and, then the animationplayer ' stores ' a key-frame, at each interval, then one can play it back . . then, one could make some ' fairly ' good virtual cameras, IF one could control where camera LOOKS with the mouse, and ZOOM levels, with two buttons ( since real cameras, today, have a zoom in, zoom out button, often ) and, FOV or, focus point . .

Basically, I'm asking if animationplayer could be made in such a way, it can record movements, so if I move a box around, on the screen, in a weird way, it record that, at say 10 FPS, 20 FPS, and stores that in an animationplayer, live . . it's mostly for stuff like cameras, to imitate the ' virtual ' cameras we have today, or so <3

Describe the feature / enhancement and how it helps to overcome the problem or limitation

I was thinking, I would like a ' good ' virtual camera, that ' looks ' like it's been held, by a real person recording it, live . . that requires an expensive virtual camera, which one can buy, but I don't think I'd need more, than if I could control the camera with the mouse, to make jitter and, random motions, and have two buttons, to control zoom in, zoom out . . it would also mean, I should be able to configure the short-cut buttons, so I can control a slider, live . . for instance, so I can set TWO buttons, one for zoom in, other for zoom out, or set mouse - scroll, less comfortable, to zoom in or, out . .

I really only just need the animationplayer to be able to record, whatever I'm doing on screen, live . . so, if I record this . .

2021-01-31 0652

It ' writes ' keyframes, at some FPS, live . . it'd make cinematic cameras, but also some other stuff, easier . .

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

Sort of, like ' animationplayer ' can also record, at maybe 4 FPS ( stores 4 keyframes, each second ), 8 FPS, 16 FPS, 30, FPS, 60 FPS, 120 FPS <3 . . also, so keys can be set to sort of, add or, subtract to a value, like FOV, zoom, so on, like sliders or, so . . . <3

2021-01-31 0656

it would also be useful for some other stuff, but I can't think of it now . . like, ' reverse keyframing ', or ' back keyframing ' <3, or so . .

If this enhancement will not be used often, can it be worked around with a few lines of script?

Well, I can't re-program the engine, and can't do that, at all . . <3

Is there a reason why this should be core and not an add-on in the asset library?

just add a button, to animation player, so you ' record ' stuff on screen, and you can select what stuff you want to record, like camera angle, rotation and, the ' zoom ' value, live . . then, one could make very good ' cinematic ' camera stuff, fast, and dirt - cheap, in Godot <3 . . also, people might start using it, for many other things . . or, select the objects you want to record, and auto - make the keyframe tracks, say position, rotation, scale, FOV, more . . :O :O <3 . . .

also, if one could first record say, camera rotation, then add to recording, by recording one more time, for zoom or, angle . . then, one could make amazing animations, using the mouse or, keyboard . . 2021-01-31 0701

and, one would be able preview it, live, in Godot, in the exact lighting settings, etc etc . . cheap pre-viz, on any computer <3 <3 . . . :OO . . .

jasperbrooks79 commented 3 years ago

I hope it makes sense, so if one could first record say, x-axis movement, controlled by the mouse, and y axis, then one could record one MORE time, from another viewport, to get z - axis, using only the mouse and, a slider . . maybe if one could have two buttons set aside, maybe page up and, page down, for controlling an ' axis ', like FOV, then one could make some really amazing animations, that could be replayed with linear interpolation, for many FPS, or pretty low FPS, for bezier stuff . .

it'd turn Godot, into a, if you NEED it, mouse controlled movie studio or, prod. center <3 . .

instead of manual key-framing, one just records key-frames live, on the screen . . and, one just ' drag and drop ' any property into the animationrecorder node, to record something else, like z-scale, FOV, x-position, xy - position . . :OO

if you had a track-ball, that could be used, for really fine zoom stuff or, effects . . . 2021-01-31 0710

that way, you could pan, zoom, elevate, even rotate around a pivot, with one controller and, the keyboard . . <3

I can't think of any real - world camera effect I couldn't ROUGHLY imitate, with an animationrecorder node, that supported these features or, ability to record first one direction or, viewport, then another . . :OO

you'd just need the program to, be able to use any mouse button or, axis, to control the stuff you're recording, live . . :O

no need, for expensive virtual cameras . . <3 <3 free cinema ' style ' cut - scenes, if NEEDED <3 . .

so, if you set the recorder program, to say record FOV, and then one can assign the mouse to it, buttons on the mouse or, a keyboard axis, maybe HOME - END or, Page up - Page down, or so . . then, one could use the computer alone, to make really smooth and, ' natural ' animations, maybe also if one wanted say, a rock to move up and, down, when player walks over bridge, like each 'bridge' tile, is a bit shaky or, 'wobbly' . . <3 Thx . .

ps. you could also record a few ' cam - jitter ' animations, and the loop them, randomly, to get a ' nice ' camera shake effect <3 user - friendly and, might be useful, for many other scenarios, or so . . <3 all you need, is keyboard and, mouse <3

last, if one could select an option, so it creates a ' looping ' animation, ie. returns last frame, to same position as first frame, then it'd be nice . . also, if one could use a controller, with a slider on it, with the mouse . .

2021-01-31 0805

then one could make amazing animations, using nerdy gear only, classic computer stuff, mouse, trackball, so on :OO <3 <3

so, you select what you want to animate, with the little animationplayer key-icon, next to a property, and then you assign a mouse or, keyboard axis, to it <3 :OO . . not sure, Windows supports sliders, atm . . <3

it'd be a fun, nerdy way, to create ' organic ' or, virtual camera stuff <3

also, if one wanted to animate properties, in an audiostream player or, videostreamplayer, for making fades and, transitions, other stuff <3 might be a fun, nerdy way, of making nice stuff, sound effects or, animation stuff . . :OO . . if one could record ANY property one can keyframe, it's impossible to say, what users might use it for <3

so, one could animation xy movement with the mouse and, z movement, with a knob or, slider, or so . . :O :O <3 cool . . .

one could theoretically use a USB music keyboard or, ' drum ' synth pad, to control events . . > 2021-01-31 0814

once it's connected, you can coordinate the craziest animations, live, using all your fingers, like a nerdy music performance, animate rocks, waterfall speed, even trigger physics events, like rocks falling or, so <3

not sure how much of this is possible . . :OO

maybe some of it is dumb, but I could really use it, for camera shake or, cool animations <3 if you could set a slider, to say FOV, and then set a range, maybe from 120 - 40, for the entire slider, for each value, if needed, then it'd be an amazing, yet super - geeky way, of emulating most movie effects or, so on . . <3 I could use it, to make some realistic camera jitter, like the MGS 4 intro or, RE 5 <3 . . :OO

also, might be used, for other things, audio control, controlling materials or, shaders <3 . . :OO . . <3

drum pads, could be set to trigger jumps, like tap drum pad, z value is + 0.1, or audio is + 2 db, each time you press, so one can make linear, bezier, and . . constant interpolation, vs. linear or bezier, or so . .

could be, fun, for some games or, even animating shaders or, who knows what . . .

jasperbrooks79 commented 3 years ago

I updated the messages, this is the last part, it's done <3 . . no, more . . :DD <3 <3

Thx . . .

ps. you could even animate displacement maps, to make say, a ' face ' animate, out of a wall, animating the displacement height value, in weird ways . . . Thx . . . <3

and, see result live <3

or, get a keyboard with some sliders or, knobs, I've seen some, or so . . 2021-01-31 0830

anyway, that'd turn a keyboard USB controller, into something, like a video and, audio editing platform <3

also, stuff like a truck, jumping a bit, while it goes over terrain, such stuff . . . 2021-01-31 0835

a bit, extreme, but trucks driving on, bumpy roads, planes, with turbulence, camera shake and, jitter . . <3 <3 even, massive explosions, where one animates physics properties, like weight, other parameters <3

or, animating cloud movements or, effects, to get that natural look . . <3

if one had some filters, or post - proc., so one could smooth the animation, add sine wave or, cosine or, or, noise or, so <3 + ability, to make them ' tiling ' or, seamless . . and, perhaps a simple graph editor, for controlling larger parts, of an animation . . <3 . . so, one could select a keyframe, and have a ' fall - off ', so when one moves it, keyframes near it, are lowered or, so, as well . . . <3 nice . . like, linear fall-off, cubic fall-off, etc <3 . . . or, custom :OO . . <3

one can also get small ' extra ' USB controllers, for any PC, that one can combine or, so <3 2021-01-31 0841

they're pretty cheap and, modular <3 . . :OOO . . turning the cheapest PC into, a video and, effects power - house, at almost no cost <3 Thx . .

one could even coordinate massive cut - scenes or, effects that way . . <3 Thx . .

controlling particle parameters, density, scale and, emitter amount, live . . then, when one is happy, hit record, and boom, world - class animations, effects and, etc etc . . .

stuff like this, but perhaps less violent <3 2021-01-31 0851

should be, possible, using a mouse, trackball and, keyboard, with sliders :OO . .

cinematics, for geeks and, coders . . .

or, if you wanted the title logo to ' fade ' in, in a particular way, then fade away . . or, you had some leaves, that you were animating using physics, you could animate the force, in the wind direction, using sliders or, knobs, to get crazy good - looking, cool, stuff, like winds blowing, in the wind . . 2021-01-31 0900

then, when you're done, BAKE the animation, and possibly use a ' optimize ' algorhithm to remove not needed key-frames, to lower size, of animations, like a compressed .jpeg or, so . . <3 so, you can set compression ratio, 90 %, or maybe half-quality, that removes the key-frames, that don't have much effect, on animation :OO Thx . . .

that would allow massive physics simulations, to be compressed into some animationplayer tracks, and played back more efficiently, at run - time . . <3 . .

so, if you select half - quality, it removes 50 % of the keyframes, that are not needed, reducing size, of animation data, or 75 % quality or, compression ratio number . . <3

or, a compression algorhithm could simply remove every other keyframe, making a 100 keyframes per sec., into a 50 keyframes per sec., by removing every other keyframe, or, for if you have keyframe . .

1 2 3 4 5 6 7 8 . .

1 . . . 5 . . .

that might look nice, with linear interpolation or, bezier <3 . . <3

if could animate stuff, in a particle system, like angular velocity, one would have amazing control, over particle simulations or, effects . . slowly, gradually turning it up, with a dial or, slider or, so on . . . Thx <3

and, you could see it, real - time <3 also, shaders, fading effects, basically all elements of movie and, effects production, that can be made with a keyboard, mouse, classic PC peripherals <3 . .

ps, I'm autist, and type funny, sry <3

Calinou commented 3 years ago

Duplicate of https://github.com/godotengine/godot-proposals/issues/169.