Skip to content

Commit

Permalink
Update DynamicStrands.hpp
Browse files Browse the repository at this point in the history
  • Loading branch information
edisonlee0212 committed Oct 14, 2024
1 parent 02e4978 commit 9266add
Showing 1 changed file with 14 additions and 8 deletions.
22 changes: 14 additions & 8 deletions EvoEngine_Plugins/EcoSysLab/include/StrandModel/DynamicStrands.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ class DynamicStrands {
DynamicStrands();
#pragma region Initialization
struct InitializeParameters {
bool static_root = true;
float wood_density = 1.f;
float youngs_modulus;
float torsion_modulus;
float youngs_modulus = 1.f;
float torsion_modulus = 1.f;
GlobalTransform root_transform{};
};
template <typename StrandGroupData, typename StrandData, typename StrandSegmentData>
Expand Down Expand Up @@ -163,12 +164,17 @@ void DynamicStrands::InitializeStrandsGroup(const InitializeParameters& initiali

segment.x0 = segment.x;

segment.mass = segment.radius * segment.radius * glm::pi<float>() * initialize_parameters.wood_density;
segment.inv_mass = 1.f / segment.mass;
const float inertia = .2f * segment.mass * segment.radius * segment.radius;
segment.inertia_tensor = glm::vec3(inertia, inertia, 2.f * inertia);
segment.inv_inertia_tensor = 1.f / segment.inertia_tensor;

if (initialize_parameters.static_root) {
segment.mass = segment.inv_mass = 0.0f;
segment.inertia_tensor = segment.inv_inertia_tensor = glm::vec3(0.0f);
}else {
segment.mass = segment.radius * segment.radius * glm::pi<float>() * initialize_parameters.wood_density;
segment.inv_mass = 1.f / segment.mass;
const float inertia = .2f * segment.mass * segment.radius * segment.radius;
segment.inertia_tensor = glm::vec3(inertia, inertia, 2.f * inertia);
segment.inv_inertia_tensor = 1.f / segment.inertia_tensor;
}

segment.length = strand_group.GetStrandSegmentLength(static_cast<int>(i));
});
Upload();
Expand Down

0 comments on commit 9266add

Please sign in to comment.