Animation Without Jumps

Hello! I’m trying to create an aerial animation in which you circle a building. Right now I’m using scenes and animating between the scenes but the jump is distracting.

I created a circle around the building, and placed cameras tangent to the center of the circle then created scenes from those cameras.

What jump ?

Be aware that you can change the animation settings via the Animation panel of the ModelInfo dialog.

1 Like

Thank you for your reply!

All of the cameras (actual cameras using advanced camera tools) that were used to create the scenes have the same Z value. When going from scene to scene (Scene transitions) or in the animation created from export animation the view that you have goes up and down along the Z axis.

I would like to know if there is a way to change this (I could not find a setting in Animation panel of the ModelInfo dialog that would allow me to disable the “jumping”)

Did you rotate the the “world” model axis by 90 degrees (before creating the scenes) ?

Can you post a sample of a SKP that shows this behavior ? (The 7th tool icon on the posting edit toolbar.)

The only time I’ve seen this (moving up and down,) is with the “ViewSpinner” animation example that comes with the “Examples” extension (… but it doesn’t use scenes.)

@Lunar: Can you please make a copy of the SKP file and give it a new filename. Then edit that new file by selecting the whole model and delete it. Create some simple 3D shape at the origin, like a cube. But leave all the scene pages with the ACT cameras intact. Purge the model of unused materials and components. Then post the model here for someone to look at.

Attached is an example
The Z axis does not remain the same in the video.
Example File.skp (105.0 KB)

Your profile does not say what SketchUp version you are using.

I see the issue.

The camera target points and up vectors differ for all scene page cameras. The most important to prevent “the jumpiing” would be the camera up vector.

Running this code in the Ruby Console …

  mod = Sketchup::active_model
  pgs = mod.pages
  puts "\nPage Camera Inspection: "
  puts
  pgs.each {|pg|
    puts "Scene Page: "<<pg.label
    puts "Camera Eye    : "<<pg.camera.eye.inspect
    puts "Camera Target : "<<pg.camera.target.inspect
    puts "Camera Up     : "<<pg.camera.up.inspect
    puts
  }

… gives:

Page Camera Inspection: 

Scene Page: Scene 1
Camera Eye    : Point3d(293.688, 0, 135.188)
Camera Target : Point3d(-655.509, -40.1371, -40.3036)
Camera Up     : Vector3d(-0.181484, -0.0076741, 0.983364)

Scene Page: Scene 2
Camera Eye    : Point3d(0, -293.688, 135.188)
Camera Target : Point3d(-68.8358, 668.729, 86.2181)
Camera Up     : Vector3d(-0.00361608, 0.0505577, 0.998715)

Scene Page: Scene 3
Camera Eye    : Point3d(-293.688, 0, 135.188)
Camera Target : Point3d(667.328, 57.1646, 54.1682)
Camera Up     : Vector3d(0.0837127, 0.00497953, 0.996477)

Scene Page: Scene 4
Camera Eye    : Point3d(0, 293.688, 135.188)
Camera Target : Point3d(23.8391, -668.309, 49.2992)
Camera Up     : Vector3d(0.00220236, -0.0888732, 0.996041)

1 Like

@Lunar: Meaning that your camera tilt is changing from scene to scene. It may be easier to set a common target point that is in the middle of all camera positions. Sometimes people use model.bounds.center or the bottom middle of the model bounds, as the common camera target.

OK, Did that. (Wrote a Ruby loop that set all the scene cameras to the bottom middle of the model bounds.)

Confirmed. The native animation loop slightly increases the camera position’s z value, peaking mid-way through the transition. This makes the camera appear to hop from scene to scene.

(I never noticed this before because I use my own spin animator script.)

Zjump Animation Example File.skp (105.0 KB)

There is a ViewSpinner code example in the Examples extension by the SketchUp Team, (but I do not think it exports frames.)

  • See post 20 below for the Examples RBZ.
    The extension was removed from the EW in favor of the Ruby Tutorials repo at GitHub.
1 Like

Most of my SketchUp “videos” involve orbiting around my model and creating scenes. I then export the animation and upload it to YouTube where I add one of their inane (but free) audio tracks. The hopping up and back down during the scene transitions has always been a source of annoyance for me, but I’ve accepted it and moved on.

Interpolating from one scene to another should be a simple linear transformation between the initial camera location and orientation vector to the next location and orientation. The hopping up and down is indicative of a non-linear transform … note that if you place the camera in the X/Y plane (or otherwise orient it horizontally), the animation doesn’t hop up and down at all. This is the special case where the camera up vector is exactly [0,0,1] for the start and end frame.

[added] Okay … I get it now. The transform is linear, but it’s from two points between which it is desired to be rotated in transition, but it moves in a straight line across the model while adjusting the camera angle. Although it gets closer to the model and then further away, this is not evident as the focal length never changes and it gives the appearance of hopping up and back down. I used @DanRathbun’s code snippet to create lines for two simple scenes in the attached model … the camera view from the halfway point along the line of sight is what’s displayed in the animation about halfway through the transition.

box.skp (26.1 KB)

:bulb:

I made a dumb assumption that if the target was the same, and the distance to target was the same, and if the camera positions were in the same plane,… that the native animation code would somehow “know” that we wanted a spin around target animation (where the camera path is a circle.)

Must be why I had originally wrote my own spin animation script.

Thanks for the epiphany, Jim.

I also had not realized that the native animation code was also transforming the camera target for each frame. (Makes sense though.)

1 Like

@Lunar: You realize that the workaround is more than 4 scenes, with each having a camera located on a planar circle, and set the camera target for all scenes to a point somewhere on the z-axis of the camera circle. I’d suggest at least 16 scenes.

Are there any other better solutions? For what I’ll be doing it’ll probably end up being 32-64 scenes. I will be using advanced camera tools so that the view angle and Z-Location will be the same.

Do not know what your budget is, but have you looked at/considered any of the external tools like Lumion, LumenRT or Twinmotion?

Definitely excellent pieces of software. Outside of budget unfortunately.

http://www.smustard.com/
Type animation in the search box and press ENTER

  • UPDATE: Smustard closed on 1 JAN 2023 and their support ended 1 JUN 2023.

or the Trimble Extension Warehouse:

The link to the ViewSpinner example is a dead link. Is there a copy somewhere else? (I checked github, this is all I could find on it: https://github.com/SketchUp/ruby-api-stubs/blob/64b41716cb6dcecc8cd388831cb4a3166431dd02/lib/sketchup-api-stubs/stubs/Sketchup/View.rb#L38

Well, it’s an 8 years old thread.

1 Like

Blockquote
Well, it’s an 8 years old thread.

I’m not blaming anyone, I just would like to look at the script if it still exists anywhere as I’m having some issues with animation with Ruby and I am hoping to find some clues.

Yes, the SketchUp Extensibility Team removed the extension in favor of the Ruby Tutorials repo at GitHub.

But, they did not include all of the examples that were in the old extension. (The animation is one that is not in the GitHub repository.)

Here, is v 1.1.0 from my own archive.
su_examples_110.rbz (18.4 KB)