再現方法としては、弊社のMotion Matchingの独自実装に関わるもので、簡単にこうすれば再現するというものでは無いですが、
FPoseSearchQueryTrajectory::FPoseSearchQueryTrajectory(const FF& InTrajectory)
このコンストラクタをInTrajectory.Samplesの要素数が0で無い状態で呼び出すことでクラッシュします。
ただし、呼び出し元の
UE_DEPRECATED(5.6, “Use PoseSearchGenerateTrajectory function that takes in FTransformTrajectory.”)
static UE_API void PoseSearchGenerateTrajectory(const UObject* InAnimInstance,
UPARAM(ref) const FPoseSearchTrajectoryData& InTrajectoryData, float InDeltaTime,
UPARAM(ref) FPoseSearchQueryTrajectory& InOutTrajectory, UPARAM(ref) float& InOutDesiredControllerYawLastUpdate, FPoseSearchQueryTrajectory& OutTrajectory,
float InHistorySamplingInterval = 0.04f, int32 InTrajectoryHistoryCount = 10, float InPredictionSamplingInterval = 0.2f, int32 InTrajectoryPredictionCount = 8);
が5.6でDepricatedになっており、新しい関数ではクラッシュしないようです。
とは言え、
FPoseSearchQueryTrajectory::FPoseSearchQueryTrajectory(const FTransformTrajectory& InTrajectory)
{
Samples.Reset(InTrajectory.Samples.Num());
for (int i = 0; i < InTrajectory.Samples.Num(); ++i)
{
Samples[i].Position = InTrajectory.Samples[i].Position;
Samples[i].Facing = InTrajectory.Samples[i].Facing;
Samples[i].AccumulatedSeconds = InTrajectory.Samples[i].TimeInSeconds;
}
}
はバグのように思えます。