hairparticle simulation rewrite and multisegment fix; added indirect debug draw features; added custom lod selection for shadow maps;
This commit is contained in:
@@ -114,7 +114,7 @@ void HairParticleWindow::Create(EditorComponent* _editor)
|
||||
widthSlider.SetTooltip("Set hair strand width multiplier. This only scales the hair particles horizontally.");
|
||||
AddWidget(&widthSlider);
|
||||
|
||||
stiffnessSlider.Create(0, 20, 5, 1000, "Stiffness: ");
|
||||
stiffnessSlider.Create(0, 10, 0.5f, 100, "Stiffness: ");
|
||||
stiffnessSlider.SetSize(XMFLOAT2(wid, hei));
|
||||
stiffnessSlider.SetPos(XMFLOAT2(x, y += step));
|
||||
stiffnessSlider.OnSlide([&](wi::gui::EventArgs args) {
|
||||
@@ -127,11 +127,29 @@ void HairParticleWindow::Create(EditorComponent* _editor)
|
||||
hair->stiffness = args.fValue;
|
||||
hair->SetDirty();
|
||||
}
|
||||
});
|
||||
});
|
||||
stiffnessSlider.SetEnabled(false);
|
||||
stiffnessSlider.SetTooltip("Set hair strand stiffness, how much it tries to get back to rest position.");
|
||||
AddWidget(&stiffnessSlider);
|
||||
|
||||
dragSlider.Create(0, 1, 0.5f, 100, "Drag: ");
|
||||
dragSlider.SetSize(XMFLOAT2(wid, hei));
|
||||
dragSlider.SetPos(XMFLOAT2(x, y += step));
|
||||
dragSlider.OnSlide([&](wi::gui::EventArgs args) {
|
||||
wi::scene::Scene& scene = editor->GetCurrentScene();
|
||||
for (auto& x : editor->translator.selected)
|
||||
{
|
||||
wi::HairParticleSystem* hair = scene.hairs.GetComponent(x.entity);
|
||||
if (hair == nullptr)
|
||||
continue;
|
||||
hair->drag = args.fValue;
|
||||
hair->SetDirty();
|
||||
}
|
||||
});
|
||||
dragSlider.SetEnabled(false);
|
||||
dragSlider.SetTooltip("Set hair strand drag, how much its movement slows down over time.");
|
||||
AddWidget(&dragSlider);
|
||||
|
||||
randomnessSlider.Create(0, 1, 0.2f, 1000, "Randomness: ");
|
||||
randomnessSlider.SetSize(XMFLOAT2(wid, hei));
|
||||
randomnessSlider.SetPos(XMFLOAT2(x, y += step));
|
||||
@@ -150,22 +168,23 @@ void HairParticleWindow::Create(EditorComponent* _editor)
|
||||
randomnessSlider.SetTooltip("Set hair length randomization factor. This will affect randomness of hair lengths.");
|
||||
AddWidget(&randomnessSlider);
|
||||
|
||||
//segmentcountSlider.Create(1, 10, 1, 9, "Segment Count: ");
|
||||
//segmentcountSlider.SetSize(XMFLOAT2(wid, hei));
|
||||
//segmentcountSlider.SetPos(XMFLOAT2(x, y += step));
|
||||
//segmentcountSlider.OnSlide([&](wi::gui::EventArgs args) {
|
||||
// wi::scene::Scene& scene = editor->GetCurrentScene();
|
||||
// for (auto& x : editor->translator.selected)
|
||||
// {
|
||||
// wi::HairParticleSystem* hair = scene.hairs.GetComponent(x.entity);
|
||||
// if (hair == nullptr)
|
||||
// continue;
|
||||
// hair->segmentCount = (uint32_t)args.iValue;
|
||||
// }
|
||||
//});
|
||||
//segmentcountSlider.SetEnabled(false);
|
||||
//segmentcountSlider.SetTooltip("Set hair strand segment count. This will affect simulation quality and performance.");
|
||||
//AddWidget(&segmentcountSlider);
|
||||
segmentcountSlider.Create(1, 10, 1, 9, "Segments: ");
|
||||
segmentcountSlider.SetSize(XMFLOAT2(wid, hei));
|
||||
segmentcountSlider.SetPos(XMFLOAT2(x, y += step));
|
||||
segmentcountSlider.OnSlide([&](wi::gui::EventArgs args) {
|
||||
wi::scene::Scene& scene = editor->GetCurrentScene();
|
||||
for (auto& x : editor->translator.selected)
|
||||
{
|
||||
wi::HairParticleSystem* hair = scene.hairs.GetComponent(x.entity);
|
||||
if (hair == nullptr)
|
||||
continue;
|
||||
hair->segmentCount = (uint32_t)args.iValue;
|
||||
hair->SetDirty();
|
||||
}
|
||||
});
|
||||
segmentcountSlider.SetEnabled(false);
|
||||
segmentcountSlider.SetTooltip("Set the number of segments that make up one strand.");
|
||||
AddWidget(&segmentcountSlider);
|
||||
|
||||
randomSeedSlider.Create(1, 12345, 1, 12344, "Random seed: ");
|
||||
randomSeedSlider.SetSize(XMFLOAT2(wid, hei));
|
||||
@@ -384,9 +403,10 @@ void HairParticleWindow::SetEntity(Entity entity)
|
||||
lengthSlider.SetValue(hair->length);
|
||||
widthSlider.SetValue(hair->width);
|
||||
stiffnessSlider.SetValue(hair->stiffness);
|
||||
dragSlider.SetValue(hair->drag);
|
||||
randomnessSlider.SetValue(hair->randomness);
|
||||
countSlider.SetValue((float)hair->strandCount);
|
||||
//segmentcountSlider.SetValue((float)hair->segmentCount);
|
||||
segmentcountSlider.SetValue((float)hair->segmentCount);
|
||||
randomSeedSlider.SetValue((float)hair->randomSeed);
|
||||
viewDistanceSlider.SetValue(hair->viewDistance);
|
||||
uniformitySlider.SetValue(hair->uniformity);
|
||||
@@ -503,9 +523,11 @@ void HairParticleWindow::ResizeLayout()
|
||||
add_fullwidth(infoLabel);
|
||||
add(meshComboBox);
|
||||
add(countSlider);
|
||||
add(segmentcountSlider);
|
||||
add(lengthSlider);
|
||||
add(widthSlider);
|
||||
add(stiffnessSlider);
|
||||
add(dragSlider);
|
||||
add(randomnessSlider);
|
||||
add(randomSeedSlider);
|
||||
add(viewDistanceSlider);
|
||||
|
||||
Reference in New Issue
Block a user