Giter Site home page Giter Site logo

femfx's Introduction

AMD FEMFX v0.1.0

FEMFX is a multithreaded CPU library for deformable material physics, using the Finite Element Method (FEM). Solid objects are represented as a mesh of tetrahedral elements, and each element has material parameters that control stiffness, how volume changes with deformation, and stress limits where fracture or plastic (permanent) deformation occur. The model supports a wide range of materials and interactions between materials. We intend for these features to complement rather than replace traditional rigid body physics. The system is designed with the following considerations:

  • Fidelity: realistic-looking wood, metal, plastic, even glass, because they bend and break according to stress as real materials do.
  • Deformation effects: non-rigid use cases such as soft-body objects, bending or warping objects. It is not just a visual effect, but materials will resist or push back on other objects.
  • Changing material on the fly: you can change the settings to make the same object behave very differently, e.g., turn gelatinous or melt
  • Interesting physics interactions for gameplay or puzzles

The library uses extensive multithreading to utilize multicore CPUs and benefit from the trend of increasing CPU core counts.

Included in this release

  • Source code for FEMFX library
  • Houdini plugin for content creation
  • Sample code for loading and preprocessing content for rendering
  • Sample threading utilities
  • A basic graphical sample

In a separate release, we provide a plugin for Unreal Engine that demonstrates more advanced rendering of FEM objects. Instructions for access are here: https://github.com/GPUOpen-LibrariesAndSDKs/GameEngineIntegrations

Dependencies The sample code has some dependencies on external frameworks which must be downloaded separately:

System requirements

  • AMD Ryzen™ 7 2700X Processor or equivalent
  • Windows® 10
  • Visual Studio 2017 or Visual Studio 2019

Files:

  1. Documentation
    • amd_femfx\docs\
  2. Library
    • amd_femfx\inc\ : Public API (Look first at AMD_FEMFX.h)
    • amd_femfx\src\ : Implementation files
  3. Sample code
    • samples\FEMFXViewer\ : Basic sample; displays tetrahedral meshes and debug information
    • samples\common\TestScenes.*: Setup for tech demo scenes used by FEMFXViewer
    • samples\common\FemResource.* : Container for the data loaded from a .FEM file
    • samples\common\LoadFem.*: Code for parsing a .FEM and loading into an FEMResource
    • samples\common\RenderTetAssignment.* : Assigns rendering mesh vertices to tetrahedra for skinning
    • samples\ExampleRigidBodies\ : Basic demonstration of interfacing an external rigid body system with FEMFX library
    • samples\sample_task_system\ : Sample task system library interfaced with FEMFX
  4. Houdini plugin for content creation
    • houdini16.5\AMD_FEM_Assets.otl
  5. External dependencies
  6. Some individual components
    • amd_femfx\inc\Vectormath\ : 3D vector/matrix math
    • amd_femfx\src\PrimitiveCollision\ : Triangle and box collision operations, intersection and CCD
    • amd_femfx\src\Common\FEMFXSvd3x3.* : 3x3 SVD
    • amd_femfx\src\Threading\ : Async parallel-for and task graph support
    • samples\sample_task_system\TL* : Async task system implementation

femfx's People

Contributors

elarsen-amd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

femfx's Issues

how to make .FEM meshes without houdini.

Hey there,

is it possible for you guys to make a tutorial on how to make .FEM models on Blender
i am currently able to open the project but i cannot seem to be able to make any meshes

readme UE4 branch link 404 error

As title states, the link to the unreal engine 4 plugin branch isn't working anymore.
May I say fantastic looking plugin, can't wait to play with this!
Thanks for your efforts.

Compatibility with Linux or OSX ?

Hi,

Before digging into the code I wanted to know if there is a known limitation on OSX or Linux, does the code depend on windows specific libraries?

Thanks

TestScenes Assets

Hello, is it possible to get the assets for the "TestScenes.cpp" for example:

  • car-body-tets
  • car-hood-tets
  • tractor_tire_tets.1
  • materialblock.1
  • duck.1.node
  • duck.1.ele

There are quite a few files not just the ones I listed... I guess they are node and ele extensions?

Plugin for Unreal Engine with linked GitHub account is not available (EM: 404)

I followed the below guide on how to link UE with my GitHub account, and after receiving a confirmation email about successful linkage, the UE plugin and demo is still hidden/unavailable.

https://www.unrealengine.com/en-US/ue4-on-github

On GPUOpen, the below is stated:
"The Unreal Engine plugin is available here https://github.com/GPUOpenSoftware/UnrealEngine/tree/FEMFX-4.18. This link will only work for those with access permissions to the UE4 repository."

Source code of the Houdini plugin

I was wondering if there's any chance to release the source code of the Houdini plugin to tinker with. This project is very promising, but as it stands, I see no simple way of generating .fem metadata without using Houdini, and even using Houdini I found it very difficult to import and export simple arbitrary models for testing in UE4.

Are there plans to create other methods to create content for UE4? Perhaps a plugin for either a free alternative such as Blender or perhaps a tool to create content from within UE4? Can someone explain what the general goal is of this project and if there are people who have created content other than the developers, and have succesfully imported it into UE4? I would love to hear from you.

Is it possible to combine Plasticity & Fracture?

I'm looking for a solution to implement the simplest metal deformation with the following tearing. Is it possible to implement with this library? Does anyone know how to implement sush behaviour with MATERIAL_DEMO_SCENE (rectangular panel)?

Ex.: Projectile holes, explosion deformation, rope/resin tearing

Image of Metal

Rope

Tank deformed

How to do raycasting?

Hi, thanks for this library! I'm writing a basic game engine, and was trying to figure out how to do raycasting. I couldn't find a method for this like PhysX's PxScene::raycast. Do you have recommendations on how to implement that method with this library?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.