Animation in SketchUp
-
@chris fullmer said:
How exactly do renderers work with object animation - like in Sketchyphysics? How can they capture that movement?
I don't kow the answer to that. SketchyPhysics does use the Animation class, and I assume uses the physics engine to do the heavy calculations needed.
They must be able to hook into that animation from the c/c++ code, since there can only be a single animation active at a time.
-
I see two different ways to do animation in SU. Both good in their own way:
-
Fly around in realtime with something like LightUp's Tourtool mixed with Chris Fullmers Record camera. Then enhanced with a way of manually adjusting curves to reposition camera/object.
-
Keyframe based animation with a timeline. Maybe a tool to drag and rotate the camera to the right position. A bit like the walktool but dragging instead of pushing the camera for better control. Maybe even adjustable curves in the UI like most animation software have. (I know you can draw curves like that with javascript.)
-
-
@chrisglasier said:
Will post again when found.
Looping: Single vs. Multiple vs. Fixed Timelines, amongst other things.
Also the demo - Click and drag to create more.
-
@jim said:
Why wouldn't you want to use Scenes to define the keyframes?
Our (vaporous) dialog would allow defining what happens to objects between the keyframes (scenes): sets the number of frames (or seconds), easings, etc.
Sorry I missed this probably because of the vapor pouring from my brow.
The dialog basically deeply nests components and scenes in multiple collections, and records what components appear in what scenes, purchase orders and so on. All of this I am sure could be helpful in creating a conventional animation, but what I am more interested in is using it to create "living" 3D reports. Imagine a project manager having an automatically updating AR model sitting on his desk instead of huge piles of drawings, site reports, change orders and so forth.
So I shy away from keyframes - not because I think they are wrong but because I want to see how far I can get towards what I described.
-
@jim said:
But there is more types of animation than moving - what about rotation? color? model time (shadows)? focal length?, etc.
I've got my Conductor running. He's Timer based. I'll see if I can switch him to Animation.
He calls the
run()
method of objects that register during an interval they request. What your object'srun()
does is up to your object: move, rotate, scale, fly, explode ...I've had nothing but issues with materials. Do simple colors work w/o Bug Splats?
-
Yup. I use colors in many scripts and I've never plsatted from them. Though I've never had a texture splat on me either, so it might just be a workflow thing?
-
@chris fullmer said:
Yup. I use colors in many scripts and I've never plsatted from them. Though I've never had a texture splat on me either, so it might just be a workflow thing?
Thanks. We're off topic. I'll reraise this as Wood Cherry Original.
-
@martinrinehart said:
I've had nothing but issues with materials. Do simple colors work w/o Bug Splats?
I remember from another thread that you demonstrated that you used
entity.material = 'materialname'
, correct? Have you tried instead doingentity.material = model.materials['materialname']
I've also never had problems working with materials, textured or not, in SU ruby.
-
For animation, I do appreciate where your coming from on this Chris. Database driven animation is very important. I would love to see the two work side by side, maybe even hand in hand I'm sure they can, since its all just about the computer knowing when to start and stop an animation for specific object. It doesn't care if the markers are recorded in frames or days. I think a masterful GUI would be able to handle it all.
Chris
-
In reply to #1
Another reason not to use a SketchUp timer is that is is an integer timer - it will round decimal values to the nearest whole number.
#2 - that is a solid way to do it. Yes, scaling does not work when interpolating the matrix. I never got around to trying to animate the scale of a Group/Instance.
-
@jim said:
Another reason not to use a SketchUp timer is that is is an integer timer - it will round decimal values to the nearest whole number.
Do we have other timer options?
-
When using the Animation class, you call view.show_frame(delay) with an optional delay argument. The question is if this delay can be fractional seconds, or is limited to whole seconds. If whole seconds, then you still will not be able to control the in-model frame-rate (which is really not important because the output frame-rate can be set.)
-
-
BTM's Animation Plugin moved here: http://forums.sketchucation.com/viewtopic.php?f=323&t=25196&p=215878#p215878
-
@jim said:
Another reason not to use a SketchUp timer is that is is an integer timer - it will round decimal values to the nearest whole number.
I want to switch to Animation, but in the mean time I'm getting good timer results at 25 frames per second. Wish I could explain this:
# /r2/t.rb require 'sketchup' i = 0 start = Time.now() id = UI.start_timer( 1.0/25, true ) { i += 1 if i > 25 UI.stop_timer( id ) puts Time.now() - start end } puts Time.now() - start
-
Because your maximum "live" frame-rate is coincidentally about 25 fps?
$t=Time.now;UI.start_timer(0.999) { puts Time.now - $t } 0.02 $t=Time.now;UI.start_timer(1.999) { puts Time.now - $t } 1.002
I don't know. I get 0.26 seconds when I run your example.
-
@jim said:
Because your maximum "live" frame-rate is coincidentally about 25 fps?
Actually, not a coincidence. I was expecting 25 frames to take a second, more or less, at 25 fps. I'm getting half a second, consistently.
-
@chris fullmer said:
For animation, I do appreciate where your coming from on this Chris. Database driven animation is very important. I would love to see the two work side by side, maybe even hand in hand I'm sure they can, since its all just about the computer knowing when to start and stop an animation for specific object. It doesn't care if the markers are recorded in frames or days. I think a masterful GUI would be able to handle it all.
Chris
I am not sure about masterful but I think this adaptation and refinement of namesets, cgScenes and the cheat sheet thing could be a start. (The refinement mainly was due to Jim's bullying me into using proper code.) Please have a look at this set of screenshots (refresh page to restart) and then read why I think it can be usefully linked back up to Sketchup to create analytical animations (amongst other things).
So basically it produces a set of names that represent entities (like buildings, floors or spaces), groupings (like brickwork or furniture) and items (components in SU terms). These Type names are included in each name's Property list together with names used in SU for definitions and instances. It also shows you can do something similar with scenes. As with other names input is minimised because unique names are stored in separate portable files (in json); later there can be devices to exchange them and thus introduce a level of standardisation for individuals, practices, regions and so forth.
ShowHide provides much easier control over visibility of components or selection of scenes. (All SU layers and components would be made visible on plug in.) Because of the Backlinks array in Properties components can easily be made to appear in many scenes.
The Properties shown are the basic minimum requirement. With a device they can also receive multiple start dates and durations (for delivery, horizontal and vertical distribution, installation and so forth). As the Properties can always be on show they are easily altered to amend the timeline.
Needless to say it is currently PC only.
Would be interested to hear what members think.
Chris
-
@unknownuser said:
Because your maximum "live" frame-rate is coincidentally about 25 fps?
I have implemented a high resolution javascript timer via webdialog, wrapped in a ruby class.
The problem is RACE CONDITIONS. After quite some time on workarounds I think its best to stay with the native API timer with its limitation of firing every one second, or 0 seconds if you specify a value smaller than 1 - ie almost immediatly, depending on your CPU speed and model complexity - roughly 80 to 20 times a second.As replieed to me, the "rough" animationts in "proper animation" plugin seem to satisfy the "quick to result" sketchers using it.
The general direction of reasoning for plugin design seems to me should be of whats the most bare basic minimal functionality required for a plugin to carry its name, whats the next basic feature to add .... etcDeveloping a fair plugin takes quite a few hours and with support and refining goes up to tens of hours easyly, gross.
For a really nice rounded animation solution, or any other nice plugin, you will go up to hundreds of hours gross total invested - and the next day your investment can become irrelevant by forces you dont control.I have grown to become a big believer in using the right tool for the job - dont be fanatically limited to sketchup, use it as a sketcher and enjoy todays sketchy animation plugins
-
@morisdov said:
I think its best to stay with the native API timer with its limitation of firing every one second,
Huh? I'm using
UI.start_timer( 1.0/fps, true )
(fps usually 25) and getting nice, smooth animations.
Advertisement