Camera Transform Testing Branch

Hi. I have found some issues to fix & discuss

Note: I will update with videos later on

Camera Transform Reset

With 2 camera frames

  1. Position the playhead at the second camera frame
  2. Move the camera with the transform handles at the second camera frame
  3. Reset the camera on the second drawing frame
    Result Camera transform & motion path are reset.
  4. Repeat 1 -3 | Reset the camera position on an empty frame exposure after it
    Result The position will reset but the motion path won’t.
  5. Opinion I feel it’s correct that the motion path will not reset if we’re only resetting the position since we have a reset path button, however the problem lies in point #3 where it’s not consistent.
  6. Proposed solution I vote for keeping the big reset button to reset everything. But leaving the individual property reset buttons (position, rotation, scale) only for the transforms, so the reset path button has a purpose.

With at least 3 frames

Note: This issue has a similar reproduction steps to the previous section

Given at least 3 frames, If the first and third camera frames have equal position values (e.g default at [0,0]) the interpolation handle will be disabled. It will only come enabled if the third frame position is even slightly different than the first.

Motion Path Drawing

Motion path visibility with same position

I understand that by default the motion path is not visible on camera keyframes for reasons only when both frames in the interpolation have the same value. However as exposed from the previous section, I feel it’s necessary that the motion path and handles are drawn on all frames, not just the exposures (empty frames), when both frames have the same position since the motion path can be changed independently and create motion even if the position is the same.

Motion path handle inconsistent position

The motion path handle to modify the trajectory for any given interpolation will be set to the position of the last reset camera frame position instead of appearing in the middle of the path.

Resetting the camera transform an empty frame, with 3 or more frames in the interpolation, will cause the second interpolation path handle to appear in the origin position.

Involuntary motion path interpolation reset

Moving the camera position will reset the motion interpolation.

There is an expectation as a user that the motion path will only change when I want it to change. If I move the first or last camera frame involved in its motion, I want to trust the software to keep the motion path predictable.

If I already have an arched trajectory, moving the camera should only change the position of the camera viewfinder while preserving the motion path curvature.

For a better visual aid, look into Inkscape when you move a control point on a curved path, it does it’s best to preserve the curvature while moving either start or end points since the “tangents” or bezier handles do not change angle or length.

Resetting scale or rotation properties will reset the motion path interpolation

This makes even less sense since rotation and scale does not contribute to the motion math, so resetting them should not reset the motion path without user approval.

New inbetween camera frames affect the motion path

creating a new frame inbetween and deleting it will reset the motion interpolation.

Duplicating camera frames affect the motion path

If i duplicate a frame between two other camera frames, it will become an inbetween position for the existing path which is great. However If I move the new inbetween camera frame away from the frame range the path will be reset. If I bring it back the path will be restored.

I would expect that the path would be preserved If I delete or move the frame regardless.

For a better visual aid, look into Inkscape when you remove a control point from a curved path, it does it’s best to preserve the curvature.

Crashes

Creating a new file when the playhead is at an inbetween camera interpolation frame will crash the program :100:

Thanks for your thorough test. i only have short time before I leave for a 4-day vacation, but here’s my first comments.

The motion path:

The motion path is drawn as a bezier curve with two points, which are the centers of the two keyframes that it connect. That’s the solution I’ve been capable of coding. This means that if you delete a frame in between other frames, the path will be reset as you mention.

I’m aware that Inkscape, and several other programs, have solutions where you can define bezier-points to your curve, and make it curve all over the place, but if we want that, somebody else must code it.

I would like to add, that I think my solution fits our philosophy, that the software should be easy and intuitive to use.

The crash:

I can’t reproduce it. It will presumably be included in your video, so I will try again then. Maybe I’ve misunderstood your description.

  1. Position the playhead at the second camera frame
  2. Move the camera with the transform handles at the second camera frame
  3. Reset the camera on the second drawing frame 4.Result* Camera transform & motion path are reset.
  4. Repeat 1 -3 | Reset the camera position on an empty frame exposure after it 6.Result* The position will reset but the motion path won’t.
  5. Opinion I feel it’s correct that the motion path will not reset if we’re only resetting the position since we have a reset path button, however the problem lies in point #3 where it’s not consistent.
  6. Proposed solution I vote for keeping the big reset button to reset everything. But leaving the individual property reset buttons (position, rotation, scale) only for the transforms, so the reset path button has a purpose.

This won’t work the way you would think, because the path modifies the transforms as well, meaning that if you don’t reset the path when you reset the translation, then the camera will jump in and out, because the midpoint hasn’t been centered.

You can see the result of what that would look like here: camera

The reset path still has a purpose, for when you want to reset the path only but it’s true that it’s a bit misleading that resetting all transforms also resets the path.

There is however a bug , the interpolation happens on the next frame, so pressing reset all makes you think it does nothing but it actually resets the transform of the previous frame.

Hi, We’ve had some feedback, and here is a new version of the New Camera branch, with more stability, and some extra work with the paths:

Happy testing, and thanks for the help so far!

1 Like

@davidlamhauge Apologies David I’ve been quite busy and forgot to reply to this.

When I mentioned Inkscape was only in the context of what I was suggesting. I understand that a visual aid might be preferred but honestly I haven’t been able to rerecord one for each point.

Related to the crash however these are the reproduction steps under Windows 10:

  1. Open the branch build exe
  2. Create a new camera keyframe
  3. Select the Move Tool and reposition the camera field. I always move it to the top right of the current position.
  4. Position the playhead at any frame between the two camera keyframes
  5. Immediately go to File > New
  6. Crash.

Note: Make sure that the second camera keyframe is on any frame after frame # 7

1 Like

@CandyFace Hi, sorry It took me too long to answer, though I’m a bit confused about the scope of your reply I’ll do my best to answer.

Most of the issues are geared to how the camera motion path behaves and how it is presented, so I’ll list here how I think these are related to the one you picked specifically:

  1. In general I think each button should do as advertised. Right now If you press Reset ALL at a keyframe, it will reset everything. But on an empty frame it won’t.
    Regarding Reset All - if it’s going to reset transforms only, it should say Reset all transforms instead of resetting the motion path on some cases, if it’s intended to also reset the path, then let’s do it in every case (on any frame, with any “timeline drawing option”).
  2. Seeing your GIF. If you saw that behavior in an app like After Effects you would determine that it’s a logical result of resetting the control points position property if the path was originally modified beforehand since the bezier curve is preserved as much as possible.
    In other software I sometimes purposely modify the motion path for a camera or object position with a “Pen Tool” to create a camera bump, shake or similar effects. In Pencil2D we would only need to move the path handle.
  3. However the motion path should always be displayed even if the camera frames have the same position value. This is specially important when I want to modify the path independently from the position of the primary keys. If I don’t want to see it I’d turn it off in the options panel.
  4. Lastly moving the camera should not reset the camera path no matter what, but rather aim to preserve the current trajectory as much as possible. Only manually restoring the trajectory to a linear slope, or using the reset path button (or if we agree to have reset all also intervene) should do this.

I’ve tried again, and I still can’t reproduce it. I’ve tried both Ctrl+N and File → New, for new file, and I can’t get it to crash.

EDIT: I’ve now also tried to load the preset in stead of the last used file. Still no crash…

@davidlamhauge are you testing the previous build or directly form Qt? It might be something that only occurs in the release build for the branch. It’s also happening in the latest build you shared recently, so I don’ think it’s a coincidence.

In the new build I tried it the first time and it didn’t work (I put the frames too close together) the second time I put the camera keyframe exactly on frame 7 and then moved the camera field a bit on that frame. Then moved the playhead exactly to frame 4, and when I pressed File > New it crashed.

I apologize as well I forgot to add a step that seemed obvious at the time, and as such I thought I had included it. You HAVE to move the second keyframe position with the move tool. I’ll update that in the previous steps. Camera Transform Testing Branch - #11 by JoseMoreno

Hi,

I can see that the tutorial video, at the top of the page, has been viewed more than 50 times now. That hopefully means that many of you have been testing the new camera.

Please report back here, what you think. The more reviews, the better. Thanks!

Just saw the tutorial video and am impressed. I’ll download and review it. I’ve been using Pencil since Pencil 0.4.3b and every upgrade since. some great and some very good. I think this is now getting to be a real player. I used it as it was created as a pencil check app. With improved brushes and a powerful camera editor my animatics will have some real pop.

1 Like

We’re looking forward to your comments, about the new camera. Like you, I think it will be a game-changer.

Since my post on May 19th, there has been 90 more views of the tutorial video, so I hope many users are testing the special branch, and report back.

1 Like

I’ve been busy outside of drawing this month but have tried out the tutorial video for myself and am very impressed with the way it works. So far it seems to be working well and is stable. As the summer ends I’ll have more time to give it a good stress test. Pencil 2D is getting some real professional upgrades!

1 Like

We want everyone following this topic to know that after a lot of work to iron out issues, this feature has been merged yesterday into the main version of the software under the developmental builds, so everyone can test it out regularly and help us catch bugs are improve use cases.

Please check the most recent nightly build download for your preferred operating system at the project’s website

1 Like

That’s awesome! Will my old camera functionality be deprecated or corrupted in any way?

We’ve built upon the existing camera data, so you should be able to open a project with the old camera interpolation and see it working in the nightly build.

3 Likes

Great! Thank you very much.

2 Likes

That’s very good news, it’s such a cool feature to have in Pencil2D. Many many thanks for all the hours put in to this development ! :pray:

2 Likes