zoukankan      html  css  js  c++  java
  • FEMFX 仿真流程之 FmUpdateUnconstrained

    FmUpdateUnconstrained 是基于 FEMFX 仿真流程中的第一个重要环节,位于 FEMFX/amd_femfx/src/Simulation/FEMFXSimulate.cpp 中,在位于 AMD_FEMFC.h 的函数声明中,是这样解释该函数的内容的:

    // Rebuild meshes after fracture, solve end velocity without regard for constraints, and rebuild hierarchies.
    // If FM_ASYNC_THREADING and followTaskFunc non-NULL, this call will execute asynchronously, and may return before tasks are complete. 
    // These tasks will execute followTaskFunc with followTaskData (and index 0) when complete.
    void FmUpdateUnconstrained(FmScene* scene, float timestep, FmTaskFuncCallback followTaskFunc, void* followTaskData);
    

    翻译一下,大致包含了这么几部分内容:在产生碎片后重新建立网格对象(需要 new 一些新的 tetMesh 对象);在不考虑约束的情况下求解模型的(位置)、速度等;重新建立模型的等级信息;


    在函数 FmUpdateUnconstrained 中,主要实现的内容具体为:

    1、一些参数的计算和设置

    2、FmWakeIslandsChangedBetweenSteps(scene);

    解释:Complete waking of any islands marked between steps

    3、FmFindMeshConnectedComponents(scene);

    解释:// Recompute mesh connected components after any fracture in the last step.
    // This will create new tet mesh objects, and must be done before contact determination so that contact report tet and object ids are valid

    4、FmCollectTetMeshIds(scene);FmCollectRigidBodyIds(scene);

    解释:Make arrays of active and sleeping object ids

    5、写入了一些参数

    6、FmTaskFuncStepVelocityRebuildBvh

    该函数是通过如下形式执行的:

    FmTaskDataStepVelocityRebuildBvh taskData(scene, numTetMeshes, numRigidBodies);
    scene->taskSystemCallbacks.ParallelFor("ImplicitSolveBvhBuild", FmTaskFuncStepVelocityRebuildBvh, &taskData, numTasks);
    

    后面会补充一些详细的说明。

  • 相关阅读:
    ASP.NET 点击前台服务器按钮后, 刷新. 重新执行 按钮事件
    动态绑定数据日历jquery
    前端及移动端学习 笔记 -待更新
    jq 兼容性 ie7,ie8
    jQuery中的$(window).load()与$(document).ready()
    SqlServer中循环和条件语句示例!
    调用一般处理程序 提供接口api
    background-position: -24px 0px
    中奖名单滚动
    在此上下文中不允许使用子查询
  • 原文地址:https://www.cnblogs.com/wghou09/p/12699354.html
Copyright © 2011-2022 走看看