Import step interpolation for loc/rot/scale from GLTF as nearest
Currently all object transform animation tracks get imported and baked as linear. For step interpolation mark the resulting animation track with Nearest interpolation to make sure there are no in-betweens generated. This is useful for camera cuts or similar.
This commit is contained in:
parent
89cc635c05
commit
3749cbb3ca
@ -6288,6 +6288,9 @@ void GLTFDocument::_import_animation(Ref<GLTFState> p_state, AnimationPlayer *p_
|
||||
animation->add_track(Animation::TYPE_POSITION_3D);
|
||||
animation->track_set_path(position_idx, transform_node_path);
|
||||
animation->track_set_imported(position_idx, true); //helps merging later
|
||||
if (track.position_track.interpolation == GLTFAnimation::INTERP_STEP) {
|
||||
animation->track_set_interpolation_type(position_idx, Animation::InterpolationType::INTERPOLATION_NEAREST);
|
||||
}
|
||||
base_idx++;
|
||||
}
|
||||
}
|
||||
@ -6310,6 +6313,9 @@ void GLTFDocument::_import_animation(Ref<GLTFState> p_state, AnimationPlayer *p_
|
||||
animation->add_track(Animation::TYPE_ROTATION_3D);
|
||||
animation->track_set_path(rotation_idx, transform_node_path);
|
||||
animation->track_set_imported(rotation_idx, true); //helps merging later
|
||||
if (track.rotation_track.interpolation == GLTFAnimation::INTERP_STEP) {
|
||||
animation->track_set_interpolation_type(rotation_idx, Animation::InterpolationType::INTERPOLATION_NEAREST);
|
||||
}
|
||||
base_idx++;
|
||||
}
|
||||
}
|
||||
@ -6332,6 +6338,9 @@ void GLTFDocument::_import_animation(Ref<GLTFState> p_state, AnimationPlayer *p_
|
||||
animation->add_track(Animation::TYPE_SCALE_3D);
|
||||
animation->track_set_path(scale_idx, transform_node_path);
|
||||
animation->track_set_imported(scale_idx, true); //helps merging later
|
||||
if (track.scale_track.interpolation == GLTFAnimation::INTERP_STEP) {
|
||||
animation->track_set_interpolation_type(scale_idx, Animation::InterpolationType::INTERPOLATION_NEAREST);
|
||||
}
|
||||
base_idx++;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user