Final skeletal fixes

This commit is contained in:
SirLynix
2022-08-17 20:03:52 +02:00
committed by Jérôme Leclercq
parent 3efe62ddbe
commit b37af6da31
4 changed files with 17 additions and 25 deletions

View File

@@ -87,8 +87,6 @@ int main()
Nz::MeshParams meshParams;
meshParams.animated = true;
meshParams.center = true;
meshParams.vertexOffset = Nz::Vector3f(3.f, 0.f, 0.f);
meshParams.vertexRotation = Nz::EulerAnglesf(0.f, 0.f, 0.f);
meshParams.vertexScale = Nz::Vector3f(0.1f, 0.1f, 0.1f);
meshParams.vertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_Normal_UV_Tangent_Skinning);
@@ -105,7 +103,7 @@ int main()
animParam.jointScale = meshParams.vertexScale;
animParam.jointOffset = meshParams.vertexOffset;
std::shared_ptr<Nz::Animation> bobAnim = Nz::Animation::LoadFromFile(resourceDir / "character/Wave Hip Hop Dance.fbx", animParam);
std::shared_ptr<Nz::Animation> bobAnim = Nz::Animation::LoadFromFile(resourceDir / "character/Gangnam Style.fbx", animParam);
if (!bobAnim)
{
NazaraError("Failed to load bob anim");
@@ -253,6 +251,14 @@ int main()
window.EnableEventPolling(true);
renderSystem.GetFramePipeline().OnTransfer.Connect([&](Nz::FramePipeline* pipeline, Nz::RenderFrame& renderFrame, Nz::CommandBufferBuilder& builder)
{
auto& skeletalAllocation = renderFrame.GetUploadPool().Allocate(skeletalBufferMem.size());
std::memcpy(skeletalAllocation.mappedPtr, skeletalBufferMem.data(), skeletalBufferMem.size());
builder.CopyBuffer(skeletalAllocation, Nz::RenderBufferView(renderBuffer.get()));
});
Nz::Clock fpsClock, updateClock;
float incr = 0.f;
unsigned int currentFrame = 0;
@@ -388,30 +394,9 @@ int main()
playerShipBody.AddForce(Nz::Vector3f::Down() * 3.f * mass, Nz::CoordSys::Local);*/
}
Nz::RenderFrame frame = window.AcquireFrame();
if (!frame)
continue;
frame.Execute([&](Nz::CommandBufferBuilder& builder)
{
builder.BeginDebugRegion("Skeletal UBO Update", Nz::Color::Yellow);
{
builder.PreTransferBarrier();
auto& skeletalAllocation = frame.GetUploadPool().Allocate(skeletalBufferMem.size());
std::memcpy(skeletalAllocation.mappedPtr, skeletalBufferMem.data(), skeletalBufferMem.size());
builder.CopyBuffer(skeletalAllocation, Nz::RenderBufferView(renderBuffer.get()));
builder.PostTransferBarrier();
}
builder.EndDebugRegion();
}, Nz::QueueType::Graphics);
systemGraph.Update();
frame.Present();
fps++;
if (fpsClock.GetMilliseconds() >= 1000)