载入中...
搜索中...
未找到
PhysicalBalancePose.cpp
浏览该文件的文档.
18void quatMul(float ax, float ay, float az, float aw, float bx, float by, float bz, float bw, float& ox, float& oy,
23void quatFromAxisAngle(float ax, float ay, float az, float angle, float& qx, float& qy, float& qz, float& qw) {
82eve::Result<void> PhysicalBalancePose::requireFinitePositive(const char* name, float value, bool allowZero) {
85 eve::DiagnosticCode::InvalidArgument, std::string("physical balance ") + name + " must be finite and " +
93 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "physical balance support bone is out of range"));
101 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "physical balance balance bone is out of range"));
109 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "physical balance bone mass index is out of range"));
126 eve::DiagnosticCode::InvalidArgument, "physical balance recovery damping must be finite and non-negative"));
143 eve::DiagnosticCode::InvalidArgument, "physical balance recoil damping must be finite and non-negative"));
200 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "physical balance target pose is null"));
203 eve::DiagnosticCode::InvalidArgument, "physical balance target pose bone count does not match the skeleton"));
219 eve::Diagnostic::error(eve::DiagnosticCode::Failed, "physical balance has no target pose to snap to"));
225eve::Result<void> PhysicalBalancePose::applyImpulse(int boneIndex, float impulseX, float impulseY, float impulseZ,
229 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "physical balance impulse bone is out of range"));
230 if (!std::isfinite(impulseX) || !std::isfinite(impulseY) || !std::isfinite(impulseZ) || !std::isfinite(pointX) ||
233 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "physical balance impulse values must be finite"));
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
void ignore(std::string_view reason={}) const noexcept
Explicitly discard this result after documenting the reason.
Definition Result.h:537
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
Evaluated local (and optional world) pose for an AnimSkeleton. Script type: AnimPose.
Definition AnimPose.h:17
void computeWorld(const AnimSkeleton *skeleton)
Compute world transforms from local pose + skeleton hierarchy. World values readable via getWorld* af...
Definition AnimPose.cpp:203
3D bone hierarchy + bind-pose local TRS for skeletal animation. Independent of ik::Skeleton3D (FABRIK...
Definition AnimSkeleton.h:16
void applyBindPose(class AnimPose *pose) const
Fill pose locals with bind pose.
Definition AnimSkeleton.cpp:132
void update(float dt)
Legacy seconds facade; forwards to advance() and ignores its Result.
Definition PhysicalBalancePose.cpp:364
eve::Result< void > setInertia(float inertia)
Whole-body rotational inertia for lean (kg·m²).
Definition PhysicalBalancePose.cpp:174
float getCenterOfMassZ() const
Definition PhysicalBalancePose.cpp:394
eve::Result< void > setRecoilInertia(float inertia)
Per-bone recoil inertia (kg·m²).
Definition PhysicalBalancePose.cpp:181
eve::Result< void > advance(const eve::SimulationStep &step)
Advance the pendulum and recoil, then write the overlay pose.
Definition PhysicalBalancePose.cpp:355
float getLeanVelocityX() const
Definition PhysicalBalancePose.cpp:390
eve::Result< void > snapToTarget()
Zero lean, recoil and pending impulses; pose snaps to the last target.
Definition PhysicalBalancePose.cpp:216
eve::Result< void > setSupportBone(int boneIndex)
Bone whose world XZ is the support point (typically pelvis/root).
Definition PhysicalBalancePose.cpp:90
float getGravity() const
Definition PhysicalBalancePose.cpp:383
int getSupportBone() const
Definition PhysicalBalancePose.cpp:377
float getCenterOfMassY() const
Definition PhysicalBalancePose.cpp:393
int getBalanceBone() const
Definition PhysicalBalancePose.cpp:378
float getLeanX() const
Definition PhysicalBalancePose.cpp:388
float getBoneMass(int boneIndex) const
Definition PhysicalBalancePose.cpp:116
eve::Result< void > setMaxLean(float radians)
Clamp for lean angle in radians.
Definition PhysicalBalancePose.cpp:188
eve::Result< void > setBalanceBone(int boneIndex)
Bone that receives whole-body lean (typically spine/chest).
Definition PhysicalBalancePose.cpp:98
float getCenterOfMassX() const
Definition PhysicalBalancePose.cpp:392
eve::Result< void > setPendulumHeight(float meters)
Pendulum length used as g/h (meters).
Definition PhysicalBalancePose.cpp:162
float getPendulumHeight() const
Definition PhysicalBalancePose.cpp:384
eve::Result< void > setTargetPose(const AnimPose *target)
Copy the authored pose that recovery tracks.
Definition PhysicalBalancePose.cpp:197
eve::Result< void > setBoneMass(int boneIndex, float mass)
Mass used for center-of-mass; zero excludes the bone.
Definition PhysicalBalancePose.cpp:106
eve::Result< void > setRecovery(float frequencyHz, float dampingZeta)
Recovery frequency (Hz) and damping ζ for the balance pendulum.
Definition PhysicalBalancePose.cpp:121
float getSupportZ() const
Definition PhysicalBalancePose.cpp:397
AnimPose * getPose()
Overlay pose after the last successful advance (or snap). @ownership Borrowed; this object retains ow...
Definition PhysicalBalancePose.cpp:373
float getMaxLean() const
Definition PhysicalBalancePose.cpp:387
float getLeanZ() const
Definition PhysicalBalancePose.cpp:389
float getRecoilDamping() const
Definition PhysicalBalancePose.cpp:382
float getRecoilFrequency() const
Definition PhysicalBalancePose.cpp:381
float getLeanVelocityZ() const
Definition PhysicalBalancePose.cpp:391
eve::Result< void > applyImpulse(int boneIndex, float impulseX, float impulseY, float impulseZ, float pointX, float pointY, float pointZ)
Queue a world-space linear impulse at a world point.
Definition PhysicalBalancePose.cpp:225
float getInertia() const
Definition PhysicalBalancePose.cpp:385
AnimPose * getTargetPose()
Last authored target, or bind pose before the first setTargetPose. @ownership Borrowed; this object r...
Definition PhysicalBalancePose.cpp:374
eve::Result< void > setGravity(float metersPerSecondSquared)
Gravity magnitude (m/s², Y-up). Zero disables the fall-away term.
Definition PhysicalBalancePose.cpp:149
float getRecoilInertia() const
Definition PhysicalBalancePose.cpp:386
float getSupportX() const
Definition PhysicalBalancePose.cpp:395
PhysicalBalancePose(AnimSkeleton *skeleton)
Construct for a borrowed skeleton.
Definition PhysicalBalancePose.cpp:52
float getRecoveryFrequency() const
Definition PhysicalBalancePose.cpp:379
float getRecoveryDamping() const
Definition PhysicalBalancePose.cpp:380
eve::Result< void > setRecoil(float frequencyHz, float dampingZeta)
Local-bone recoil frequency and damping toward the authored rotation.
Definition PhysicalBalancePose.cpp:138
float getSupportY() const
Definition PhysicalBalancePose.cpp:396
AnimSkeleton * getSkeleton() const
Borrowed skeleton. @ownership Borrowed; ownership remains with the animation source....
Definition PhysicalBalancePose.cpp:376
eve::Result< eve::SimulationStep > legacyStep(float seconds, bool hasLastTick, eve::SimulationTick lastTick, const char *owner)
Convert a legacy seconds call to the next local scheduler step.
Definition AnimationTime.h:34
eve::Result< float > secondsForStep(const eve::SimulationStep &step, bool hasLastTick, eve::SimulationTick lastTick, const char *owner)
Validate a scheduler step before an animation object mutates state.
Definition AnimationTime.h:13
Definition Animation.cpp:58
void multiplyQuat(float ax, float ay, float az, float aw, float bx, float by, float bz, float bw, float &ox, float &oy, float &oz, float &ow)
Hamilton product a * b for unit quaternions (xyzw).
Definition AnimMath.h:94
@ InvalidArgument
@ Failed
@ NoOp
@ Applied
Local TRS used by skeletal animation (quaternion xyzw).
Definition AnimMath.h:9