Camera Transform Testing Branch

by @davidlamhauge

Hi Pencil2D users. I hope some of you want to help testing the new camera.

The New camera is developed in three stages, and this test build is about stage 2.
Stage 1 was about defining easing for the camera movement, and is already merged into the master branch. This means that it is (in) the nightly builds, and you can test it there. You right-click on the camera-frame to set the easing.

Stage 2 is about defining the camera field (placement, rotation and size) in a more intuitive way.

It is a long lasting coding process, that is close to the finish line. That depends on eventual bugs, suggestions for improvement and other things that might come up.

I have made a tutorial, that youā€™ll find here:

It should tell you what is needed to test it. If not - please ask here in this channel.

I have four development builds, and a test scene:



The test scene has a camera layer and a bitmap layer with a layout. The test scene must be downloaded to be useful, but you could also make a scene yourselfā€¦ (no pun intended)

Those who depend on a legacy build must excuse me. I only provide the four main builds. Sorry.

They come with the same warnings as the official build, that is ā€˜unknown providerā€™ etc, but it is as safe as the official release.
Though - Please be cautious! DO NOT use these development builds for actual projects. Only for testing! It is a development build, with features not officially supported. Again - only for testing!

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

@MrStevns 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