Processo de simulação do FmFX FmTaskFuncStepVelocityRebuildBvh

FmTaskFuncStepVelocityRebuildBvhÉ definido em FEMFX / amd_femfx / src / Simulation / FEMFXSimulate.cpp , que conclui principalmente o cálculo da velocidade (posição) na simulação e a atualização do bvh.

A parte principal do conteúdo do sentimento FmTaskFuncTetMeshStepVelocityRebuildBvhe as FmTaskFuncRbStepVelocityRebuildBvhduas partes.


Entre eles, FmTaskFuncTetMeshStepVelocityRebuildBvho conteúdo é o cálculo de software.

Nota: O software também distingue se os objetos de software são objetos KINEMATIC. (Objeto KINEMATIC significa que o movimento do objeto é conduzido pelo mundo exterior, ou seja, o estado do movimento e a trajetória do objeto são definidos diretamente de acordo com a entrada externa)

O conteúdo principal é:

FmStepVelocityImplicitEuler(scene, tetMesh, solverData, gravityVector, kRayleighMassDamping, kRayleighStiffnessDamping, tetMesh->extForceSpeedLimit, timestep, scene->params.epsilonCg);

FmBuildHierarchy(tetMesh, timestep, aabbPadding);

FmAddDeformationConstraints(tetMesh, constraintsBuffer, timestep);

Especificamente:
FmStepVelocityImplicitEulerpara as etapas da solução:

// Take a simulation step using current dynamic state, external forces, constraints set in tetMeshState.
// Also resets vertex flag FM_VERT_FLAG_FRACTURED and tetQuatSum

FmBuildHierarchy Para estabelecer o nível:

// For CCD, must build after integration computes new velocities.

FmAddDeformationConstraints Para adicionar restrições de deformação:

// Add constraints to prevent excessive deformation.
// Expects that unconstrained end-of-step velocities have been updated.
// There are up to three constraints per tetrahedron, and using the same 3D constraints and 3x3 Jacobian submatrices as for contacts and glue.
// This allows some benefit from SIMD but wastes space when fewer dimensions are needed.
// Reference: Perez et al., "Strain Limiting for Soft Finger Contact Simulation"

O conteúdo específico precisa de mais análises.


Além disso, FmTaskFuncRbStepVelocityRebuildBvho básico é calcular o movimento do corpo rígido sob o efeito de restrição (gravidade), calcular a velocidade, posição e similares e atualizar o objeto de colisão aabb e assim por diante.

Acho que você gosta

Origin www.cnblogs.com/wghou09/p/12699520.html
Recomendado
Clasificación