5.6部分模型开启nanite skeleton mesh会造成Crash

5.6部分模型开启nanite skeleton mesh会造成Crash,不确定是引擎的原因,还是资产有问题。

`Assertion failed: (uint64)Bits < (1ull << NumBits) [File:D:\ASEngine\Engine\Source\Developer\NaniteBuilder\Private\NaniteEncode.cpp] [Line: 382]

UnrealEditor_Core!FDebug::CheckVerifyFailedImpl2() [D:\ASEngine\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:728]
UnrealEditor_NaniteBuilder!Nanite::EncodeGeometryData() [D:\ASEngine\Engine\Source\Developer\NaniteBuilder\Private\NaniteEncode.cpp:2022]
UnrealEditor_NaniteBuilder!``Nanite::WritePages’::2'::<lambda_1>::operator()'::2’::<lambda_1>::operator()() [D:\ASEngine\Engine\Source\Developer\NaniteBuilder\Private\NaniteEncode.cpp:2800]
UnrealEditor_NaniteBuilder!Nanite::WritePages'::2’::<lambda_1>::operator()() [D:\ASEngine\Engine\Source\Developer\NaniteBuilder\Private\NaniteEncode.cpp:2720]
UnrealEditor_NaniteBuilder!ParallelForImpl::ParallelForInternal<TFunctionRef<void __cdecl(int)>,ParallelFor’::2'::<lambda_1>,std::nullptr_t>'::2’::FParallelExecutor::operator()() [D:\ASEngine\Engine\Source\Runtime\Core\Public\Async\ParallelFor.h:358]
UnrealEditor_NaniteBuilder!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<LowLevelTasks::FTask::Init<ParallelForImpl::ParallelForInternal<TFunctionRef<void _cdecl(int)>,ParallelFor'::2’::<lambda_1>,std::nullptr() [D:\ASEngine\Engine\Source\Runtime\Core\Public\Async\Fundamental\TaskDelegate.h:171]
UnrealEditor_Core!LowLevelTasks::FTask::ExecuteTask() [D:\ASEngine\Engine\Source\Runtime\Core\Public\Async\Fundamental\Task.h:627]
UnrealEditor_Core!LowLevelTasks::FScheduler::ExecuteTask() [D:\ASEngine\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:365]
UnrealEditor_Core!LowLevelTasks::FScheduler::WorkerLoop() [D:\ASEngine\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:724]
UnrealEditor_Core!LowLevelTasks::FScheduler::CreateWorker'::2’::<lambda_1>::operator()() [D:\ASEngine\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:188]
UnrealEditor_Core!FThreadImpl::Run() [D:\ASEngine\Engine\Source\Runtime\Core\Private\HAL\Thread.cpp:69]
UnrealEditor_Core!FRunnableThreadWin::Run() [D:\ASEngine\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:159]`

附件中提供了一个复现工程,打开关卡,找到场景中的SKM,开启Nanite,引擎就会造成Crash。

Hi,

感谢提供信息,这应该是一个bug,我已经提了一个jira UE-302392,后续应该会修复这个问题。

你可以试一下把Nanite.CalculateInfluences函数里的

if (BoneWeight == 0) { break; }改成

if (BoneWeight != 0) { ... }应该可以修复问题。

Hi,

好的,我们试试。这个Break还需要保留么?

不用保留,就是要去掉break,让所有的bone都走进来,如果break了,后面的boneweight有超过0的,就处理不到了。

明白了,非常感谢。