载入中...
搜索中...
未找到
AnimInertializer.cpp
浏览该文件的文档.
18 const double norm = double(t.qx) * t.qx + double(t.qy) * t.qy + double(t.qz) * t.qz + double(t.qw) * t.qw;
33 !finitePose(source, count) || !finitePose(previousSource, count) || !finitePose(target, count) ||
36 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "transition requires matching finite poses and valid history/duration", "poseTransition", {}, "animation"));
39 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "time factors must be empty or match the bone count", "poseTransition", {}, "animation"));
43 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "bone time factors must be finite and between zero and one", "poseTransition", {}, "animation"));
51 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "transition history overflows velocity range", "poseTransition", {}, "animation"));
54 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "transition output is not finite", "poseTransition", {}, "animation"));
60 if (!std::isfinite(elapsedSeconds) || elapsedSeconds < 0.f || !finitePose(target, impl_->output.getBoneCount()))
62 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "evaluation requires an initialized transition, matching finite target and elapsed time", "poseTransition", {}, "animation"));
66 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "transition output is not finite", "poseTransition", {}, "animation"));
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
AnimInertializer()
Construct an empty, independently owned transition.
Definition AnimInertializer.cpp:24
const AnimPose & pose() const noexcept
Borrow read-only output, valid until destruction; contents change after successful begin/evaluate....
Definition AnimInertializer.cpp:70
eve::Result< void > begin(const AnimPose &source, const AnimPose &previousSource, const AnimPose &target, const AnimPose &previousTarget, float historySeconds, float durationSeconds, std::span< const float > boneTimeFactors={})
Atomically begin or interrupt a transition using actual outgoing pose history.
Definition AnimInertializer.cpp:27
~AnimInertializer()
Release owned samples; no external objects are accessed.
eve::Result< void > evaluate(const AnimPose &target, float elapsedSeconds)
Evaluate the moving target at an absolute elapsed simulation time since begin.
Definition AnimInertializer.cpp:59
Evaluated local (and optional world) pose for an AnimSkeleton. Script type: AnimPose.
Definition AnimPose.h:17
Definition Animation.cpp:58
@ InvalidArgument
@ Applied
Definition Container.h:602
std::vector< float > factors
Definition AnimInertializer.cpp:9
detail::PoseInertia inertia
Definition AnimInertializer.cpp:7