691

(14 replies, posted in General)

chrishall123 wrote:

SlowMotion Loop feed - got it running in 4 screen split, but its confusing as to the order of the screens to watch....

Is it possible to slo mo 1 x full screen?

Yeah I know what you mean. Continuously slowing down the real time is an ill-posed problem though, if there was only one view there would have to be gaps in time when it runs out of space.

I tried to design it so that if there are several people constantly doing things in sequence, you could still theoretically see each of their actions fully in slow motion. But in practice you have to guess when you are supposed to change your focus and to which sub-view. It's not possible for the program to know when the action you are interested in starts, so it can't switch by itself.

Another approach would be to assume that the next run/action in the sequence is not happening until you are finished viewing the first one in slow motion. So for example if the action takes 5 seconds and you are watching at half speed, people have to be spaced by at least 10 seconds.

With this approach there could be a button that let you force a sync with real time and reset the buffer, so you can ensure the synchronization doesn't happen at the wrong time. The synchronization gap happening at the wrong time is what the multi-view is trying to solve by showing views with staggered ages, the gap in one view is filled by another view.

Another improvement would be to display a countdown showing when it will go out of space and do a synchronization jump.

I don't know if any of that made sense, it's a tricky feature I'm not sure it's possible to make it intuitive without understanding the internal mechanism.

692

(8 replies, posted in Bug reports)

Cool! I also think it's one of the most powerful feature in the program, but yeah the documentation is certainly lacking.
I will get around to at least write a page with a raw list of each node and the attributes they support.

If you haven't seen it already, here is an article discussing custom tools: http://www.kinovea.org/en/creating-a-custom-tool/

arnopluk wrote:

Is it possible to specify the position of labels for angles (like 'radius')?

No, at the moment the text distance is hardcoded. It's a good point though, I'll add that to the backlog for the next version.

arnopluk wrote:

With 'optionGroup' you can specify options which can be selected by the user. Can you specify the default options which are used? (In Human Model 2 I found the keyword 'DefaultOptions', but no example how to use it.)

Yes. I'll recap how this works for everyone and then add more details on declaring default options.

Each object visibility (objects: segment, handle, ellipse, angle, distance, position, computed point) can be controlled by named "options". These options end up in the context menu of the drawing and can be toggled on/off by the user. Options can also control the enabling of "constraints" placed on handles, such that the handle can be freely moved or constrained based on user desire.

This is controlled by specifying optionGroup="name of option" as an attribute on the object. Multiple objects' visibility or constraints in different objects can be controlled by the same option. There can be multiple options in the drawing.

Option discovery is entirely based on the textual name so be sure to correctly copy & paste the name otherwise they will end up as two different options.

By default all options are "off". To specify default options that are "on", create a "DefaultOptions" node and add the named options under "OptionGroup" subnodes, as following:

<DefaultOptions>
    <OptionGroup>Display ankle angles</OptionGroup>
    <OptionGroup>Display hips angles</OptionGroup>
</DefaultOptions>

Options listed here that are not matched to an option declared elsewhere will be ignored.

arnopluk wrote:

I would like to have 2 constraints in effect for my handle: 1. Fixed length ('DistanceToPoint') and 2. Rotation in steps of 5 degrees ('RotationSteps'). However, only the constraint that is configured last, is used by Kinovea.

Yes you are right. I didn't anticipate that use-case, all the other constraints are mutually exclusive I think, but rotation steps could be combined with others. This is not possible at the moment.

arnopluk wrote:

Is it possible to lock handles so they can't be changed by the user?
For example: Lock the angle-to-vertical of a certain line, while allowing a user to change its length.

For that specific scenario I think you could use a "LineSlide" constraint, where a handle is only allowed to move along a line defined by two other points. The LineSlide constraint takes "point1", "point2" and "position" attribute. The "position" attribute further determines where the handle can go in relation to the two existing points, and can take the following values: BeforeSegment, BeforeAndOnSegment, OnSegment, AfterAndOnSegment, AfterSegment, Anywhere.  Check the "Archery top view" tool for an example.

So you would first make sure your have two points defining the fixed-angle line in the point list  (without necessary creating a visible segment from them). Then add a third point and a handle referencing it, with a constraint that only allows it to slide along the line defined by the other two, maybe using AfterAndOnSegment. Then you can create a segment object that goes from the angle origin to the sliding point.

I just realized that creating a completely locked point is harder than necessary. You can create a "Point" but it won't be visible until it's either a handle or a computed point. Right now the only way seems to be to create two dummy points and create computed point based on them. Or maybe a collapsed segment. I should probably add a simpler constraint that completely locks a handle in place.

How can I make my own icons for the custom tools?

The gist of it is that the "Icon" node contains the Base64 encoded image. In practice:

Can the position of annotation in the capture screen be saved?
For example: Default annotation in a fixed-camera setup.

You can have a KVA file that is always loaded when you open a camera.

Create the annotations in the playback screen (maybe by reloading a video captured from the camera for alignment) and save them to a KVA file named "capture.kva" (File > Save > Save only the analysis). Then place that file in Kinovea %appdata% directory. The location of this directory depends on whether you are running the installed or zipped version, but you can get to it from menu Help > Open log folder.

The same can be done for the playback screen using "playback.kva". It's an application-wide thing though, there is currently no support for per-camera default KVA.

693

(6 replies, posted in Bug reports)

Thanks for looking it up. OK, I'll get the latest driver and dig up the camera if I can find it and try to see what's going on.

694

(6 replies, posted in Bug reports)

Oh you are on Windows 7, in that case the program name in the process tab should have a *32 at the end if it's 32 bit.

It could still be this because Kinovea 0.8.24 was only released as a 32 bit app. It's only from 0.8.25 and forward that there is an x64 build. So it would be very consistent with this being the origin of the issue.

695

(6 replies, posted in Bug reports)

Hi,

If it's indeed a 64bit/32bit issue, it's possible that the CL-Eye test software is itself 32 bit, and that would be the reason it works with the driver. If you go to the Task manager, in the Details tab, show the "Platform" column, it will tell if the application is 32 bit.

Try to load the file in Kinovea 0.8.26 from the download page, it has a lot of updates, including in the loading library.

Hi,
Yeah, I haven't seen this error in a while. It happens when the loading process manages to load the file, but then when it attempts to decode the first frame something bad happens.

The exact error can be seen in the log (you can get to the log from the Help menu).  It should be either "First frame couldn't be loaded" or "First frame loaded but negative timestamp", which would be my guess. In the code I have added a comment that some AVCHD files exposed the second behavior. This negative timestamp breaks a lot of things down the line for the timekeeping and so it is not supported. I think it's an encoder issue. The first timestamp shoud be zero. Some files have a positive first timestamp which Kinovea tries to work with as well. I haven't seen reports on this lately so most likely the encoder that was producing these files is either not used anymore or has been fixed.

698

(2 replies, posted in Bug reports)

Hi,
The "Lock segments length" will force the lines to keep whatever size they had when you clicked the option. So when you move the ankle joint for example, it won't move freely around, instead it will keep the size of the leg the same.

The bike fit tool doesn't display the segments length, however this can be changed in the XML description of the tool which is user-editable.

Go to Kinovea program files folder, and under "DrawingTools\Custom" open the file "Bike fit.xml" in a text editor.
Under the whole <Segments></Segments> block you can add the following:

<Distances>
    <Distance point1="4" point2="5" />
    <Distance point1="5" point2="6" />
</Distances>

This will add length measurement for the thigh and leg segments. You can make your own changes as you like. Refer to the Segments section above for the points id.

Hi,
Yeah no solution at the moment, sorry about that. Personally I use AviSynth and VirtualDub when I need to preprocess videos for rotation/crop and whatnot. But it's more of a programmer's tool and still requires to re-save the video so the workflow is not that streamlined.

This is becoming close to the top requested feature at the moment though. I will have another look at it at some point to see if doing this at the image level just before rendering is acceptable performance wise.

700

(2 replies, posted in Cameras and hardware)

Sometimes for some reason you have to go into the settings for the camera in Kinovea (cog icon or click the infobar at the top) and change the stream format or the framerate to something else and apply. Then you can change back if you want.

701

(14 replies, posted in General)

Do you see the thumbnail for the camera in the camera list tab?
Could you collect the log file (see in help menu to get to the folder containing it) and send it over at joan at kinovea dot org, thanks.
Also, try the following: right click the thumbnail of the camera and select "Forget custom settings", if you are using the installed version, to remove the settings set with the previous version.

OK.
When you do the capture, whether in NCH Debut Video or in Kinovea, try to have almost nothing else running on the computer so the compression on the fly has more chances to sustain the framerate. Also, try to set the capture file target on an SSD if possible, it will also decrease chances of frame drops. If your camera supports MJPEG streams, doing the capture in Kinovea might give the best performance as it will store the frames coming straight from the camera without decompression/recompression.

Hypothesis: the file on the left has non constant framerate. The capture application set a custom timestamp to each frame as it was capturing them. Marked the final file as 30fps but in reality using non-constant intervals between the frames. And there might have been frame drops during the capture process, so some frames/timestamps are missing, and the resulting video is faster than expected.

Variable framerate is pretty rare and not supported in Kinovea, but the timestamp is nonetheless read from the metadata associated with the frame, so this could explain the behavior. 

Do you have a small example of such file that you could send me (joan at kinovea dot org) or upload somewhere, to verify that hypothesis?

What happens to the timestamps when you read this file on its own? Do they also progress in a non-constant fashion? Note that you can set the time format to "total milliseconds" to make it easier to experiment maybe.

To get the complete picture, what is the FPS value read by Kinovea? This is visible in the info bar above the video. Also please confirm that both videos are at 100% playback speed and the value of checkbox in Preferences > Playback > General > "Link speed sliders when comparing videos". Also the value in menu Video > Configure video timing > High speed camera > Capture framerate. Although these options did not exist in 0.8.15 so it's unlikely the culprit.

The timestamps in Kinovea should not diverge, that definitely smells like a bug somewhere. What happens when you click a random location in the common navigation bar at the bottom?

The way it's supposed to work is that the common time position is computed first and then it is mapped to each individual video and they are adjusted accordingly. What you describe would be an issue in the time mapping for this particular video, but it's especially strange if they are coming from the same capture software.

Do you have a way to check if this video is playing back at the expected speed when it's played alone in its own screen?

Forgot to ask, do you mean the content/action seen in the video is off but the timestamps are in sync, or do the timestamps diverge as well?