Age Verification
This website contains age-restricted material including nudity and explicit content. By entering, you confirm being at least 18 years old or the age of majority in the jurisdiction you are accessing the website from.
I am 18+ or older - Enter
I am under 18 - Exit
Our parental controls page explains how you can easily block access to this site.

最后发帖 - 页数 712

  论坛

TheEmu
已加入 在 Jul 2012
7424 发布

Discussions for Scenes for Version 1.2.X Fullscreen Mode here

关于iStripper的一切
September 6, 2020, 5110 回复
In addition to the curve types listed by @Wyldanimal the program also supports SineCurve and CosineCurve. For these the value varies as a sine or cosine function of time. If the period is T and the amplitude A then for SineCurve the value starts at 0, reaches its maximum, A, at T/2 and returns to 0 at time T. For CosineCurve the value follows a similar curve, but is phase shifted by 90 degrees so, exceptionally for an easing curve, does not start with a value of 0 but with A/2, it then increases until it reaches its maximum value at time T/4, falls back to A/2 at time T/2, goes to zero at time 3T/4 and is back at A/2 at time T.

Applying SineCurve to one axis and CosineCurve to another using equal periods will result in an elliptical movement which will be circular if the amplitudes are equal.

The underlying Qt toolkit also seems to have the following types of easing curves

InCurve, OutCurve,
TCBSpline, BezierSpline,
Custom

all of which would seem to support more general curve functions, but as far as i know there is as yet no way to use any of these in a scene.

(This should have been in my earlier post. For the direction and repeat parameter we can have Forward and LoopForward , their inverses Backward and LoopBackward, or PingPong. An inverse of PingPong would be a convenient addition - PongPing perhaps? You can get the same effect by changing the initial value and negating the amplitude but it is not as convenient)

UPDATE: Looking at the online documentation SineCurve and CosineCurve are not "easing curves" but alternatives to them. Nevertheless they worked in iStripper scenes just like the real easing curves - though it has been some time since I checked. Also I may have gotthe behaviours of the sine and cosine curves slightly mixed up - it may be the sine curve that starts at A/2 (the behaviour described above is what I have in my notes, but feels "odd" to me).
TheEmu
已加入 在 Jul 2012
7424 发布

Discussions for Scenes for Version 1.2.X Fullscreen Mode here

关于iStripper的一切
September 6, 2020, 5110 回复
@alarsi - I have done all that myself. I also have a huge number of automatically generated scenes that produce graphs of the motions produced by driving the X axis with one easing curve and and the Y axis with another using different periods for each axis. There are about 40,000 in all. So I am well aware of what is possible using them.

However, the sort of motions I was refering to can not easily be approximated that way. Consider the following three sets of my own scenes

1) Carrousels, where muiple performers perform on a rotating stage. It take a lot of effort to make this work in a .scn file. I can get up to four clips to rotate about a central fifth by duplicating each of the four and then modulating their opacities such that one of each pair be visible only when it is supposed to be toward the front of the carrousel and the other only visible when it is supposed to be towards the rear. This requires that the opacities be modulated at the same frequency but with different phases. With the existing features of the animate clause you can only get four different phases.

2) My "Prison Ship" scenes where I shift individual cage clips about in a series of moves. Arbitrary paths can be built up by having a sequence of such moves using various easing curves, but to switch from one to another requires using multiple copies of each clip and modulating the opacities so that only the appropriate copy for that part of the motion is visible at any one time and that the motions of the copies are coordinated such that the two copies are positioned exactly the same when the transition from one being visible to the other being visible takes place. This sort of thing would be much easier if I could simply say that a single clipsprite should be moved from A to B, and then to C and then to D ...

3) My "Houses" scenes where I move the camera from one window to another pausing at each in turn. In all but the earliest few of these (where I don't have the pauses) I avhieve this by applying a set of simultaneous animations to the camera position (or rather to the whole of the scene relative to the camera) where one set opposes the other part of the time in order to generate pauses in the motion. This is labourious and only really works if the windows to be lingered at are equally spaced. The cancellations also only really work for linear motions which makes for sudden stops and starts, This can be alieviated by using different easing curves but then you can not arrange for a the motion to completely stop for a finite time. Again it would be much simpler, and would allow for more complex motions, if we could string together a set of of moves that are applied in sequence rather than having to approximate this by applying a combination of moves in parallel.

http://www.theemusnest.eu/scenes/Zips/Experiments/Carousels.zip
http://www.theemusnest.eu/scenes/Zips/TheEmu-Prison%20Ship.zip
http://www.theemusnest.eu/scenes/Zips/TheEmusHouses.zip


TheEmu
已加入 在 Jul 2012
7424 发布

Discussions for Scenes for Version 1.2.X Fullscreen Mode here

关于iStripper的一切
September 5, 2020, 5110 回复
I wish we could define a set of points that would be used for the Motion Parameters.

So do I, very much so. It is possible to string together a set of arbitrary motions by doing them seperately and cross fading from one sprite to another, but is is hard work to do more than the very simplest things that way.

The underlying toolkit supports the use of arbitray functions for "easing curves" over and above the set of predefined ones we can currently use in animate: clauses so it should not be too difficult to provide a table driven curve.

Another rather simple possibility would be to prove a way to delay the start of a motion, or more generally to alter its phase, defined in an animate: clause. Currently when we use Animate: for a property X it calculates

X = X0 + f(t);

where X0 is the initial value of X, f() is one of the Qt easing curves and t the time in seconds since the start of the scene. By simply including an optional constant time offset, T0, defaulting to 0.0 this would become

tmp = t - T0;
X = X0 + f(tmp);

which would allow us to animate several properties belonging to one or more scene elements with different phases. Currently the best I have managed to phase shift by are 0, 90, 180 and 270 degrees - and even that involves a lot of work which this change would eliminate the need for as well as allowing arbitrary phases.

Furthermore if the formula is changed to

tmp = max ( t - T0, 0.0 );
X = X0 + f(tmp);

Then this would in effect delay the start of the motion as max(t-T,0.0) would be zero for the first T seconds. This in turn would allow us to string together a series of moves each starting just as another finished.

This could be generalised slghtly more to

tmp = max ( t - T0, T1 );
X = X0 + f(tmp);

where T1 is a second constant parameter. For a sequence of one off movements this provides no benefits but would open up some more possibilities when cyclic motions are involved.

Of course a nicer and much more powerfull solution would be to provide a way of defining almost arbitrary expressions for easing curve functions - but that would require much bigger changes to the software than that proposed above,

A nice animation, would be great if you could use it as a background for an iStripper scene.

Yes, that would be nice even if it was limited to something like animated gifs. Again I believe that the underlying toolkit provides all of the required functionality for all sorts of media playback but there is currenly no way to access that via a scene.