Skip to content

Commit

Permalink
- removed AntTweakBar GUI
Browse files Browse the repository at this point in the history
- added imgui
- added PLY export
- added documentation of scene file format
  • Loading branch information
janbender committed Dec 13, 2022
1 parent 7556a7e commit aa62c44
Show file tree
Hide file tree
Showing 186 changed files with 66,299 additions and 65,384 deletions.
8 changes: 8 additions & 0 deletions CMake/DataCopyTargets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,11 @@ add_custom_target(CopyPBDScenes
COMMENT "Copying PBD scenes"
)
set_target_properties(CopyPBDScenes PROPERTIES FOLDER "Data copy")

add_custom_target(CopyImguiFonts
${CMAKE_COMMAND} -E copy_directory
${PROJECT_SOURCE_DIR}/extern/imgui/misc/fonts
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources/fonts
COMMENT "Copying fonts"
)
set_target_properties(CopyImguiFonts PROPERTIES FOLDER "Data copy")
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ else()
Ext_GenericParameters
PREFIX "${ExternalInstallDir}/GenericParameters"
GIT_REPOSITORY https://github.com/InteractiveComputerGraphics/GenericParameters.git
GIT_TAG "9f1570aad21017c0116adf6a42bc4a19547df6ec"
GIT_TAG "50b87678b19221eb7cb12a75fd1f5fa0a3cc0fc6"
INSTALL_DIR ${ExternalInstallDir}/GenericParameters
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${EXT_CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH=${ExternalInstallDir}/GenericParameters -DGENERICPARAMETERS_NO_TESTS:BOOL=1
)
Expand All @@ -85,7 +85,7 @@ add_subdirectory(Utils)
if (NOT PBD_LIBS_ONLY)
include(DataCopyTargets)
add_subdirectory(extern/glfw)
add_subdirectory(extern/AntTweakBar)
add_subdirectory(extern/imgui)
add_subdirectory(extern/md5)
add_subdirectory(Demos)
if (USE_PYTHON_BINDINGS)
Expand Down
6 changes: 6 additions & 0 deletions Changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2.2.0
- removed AntTweakBar GUI
- added imgui
- added PLY export
- added documentation of scene file format

2.1.5
- updated pybind11
- cleanup mesh loading code
Expand Down
2 changes: 2 additions & 0 deletions Common/Common.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ typedef double Real;
#define REAL_MIN DBL_MIN
#define RealParameter DoubleParameter
#define RealParameterType ParameterBase::DOUBLE
#define RealVectorParameter DoubleVectorParameter
#define RealVectorParameterType ParameterBase::VEC_DOUBLE
#else
typedef float Real;
Expand All @@ -22,6 +23,7 @@ typedef float Real;
#define REAL_MIN FLT_MIN
#define RealParameter FloatParameter
#define RealParameterType ParameterBase::FLOAT
#define RealVectorParameter FloatVectorParameter
#define RealVectorParameterType ParameterBase::VEC_FLOAT
#endif

Expand Down
14 changes: 8 additions & 6 deletions Demos/BarDemo/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(SIMULATION_LINK_LIBRARIES AntTweakBar glfw PositionBasedDynamics Simulation Utils)
set(SIMULATION_DEPENDENCIES AntTweakBar glfw PositionBasedDynamics Simulation Utils CopyPBDShaders)
set(SIMULATION_LINK_LIBRARIES imgui glfw PositionBasedDynamics Simulation Utils)
set(SIMULATION_DEPENDENCIES imgui glfw PositionBasedDynamics Simulation Utils CopyPBDShaders CopyImguiFonts)

if(WIN32)
set(SIMULATION_LINK_LIBRARIES opengl32.lib glu32.lib ${SIMULATION_LINK_LIBRARIES})
Expand All @@ -26,8 +26,12 @@ endif()
add_executable(BarDemo
main.cpp

../Common/TweakBarParameters.cpp
../Common/TweakBarParameters.h
../Common/LogWindow.cpp
../Common/LogWindow.h
../Common/Simulator_GUI_imgui.cpp
../Common/Simulator_GUI_imgui.h
../Common/imguiParameters.cpp
../Common/imguiParameters.h
../Common/DemoBase.cpp
../Common/DemoBase.h

Expand All @@ -37,8 +41,6 @@ add_executable(BarDemo
CMakeLists.txt
)

add_definitions(-DTW_NO_LIB_PRAGMA -DTW_STATIC -DFREEGLUT_LIB_PRAGMAS=0)

find_package( Eigen3 REQUIRED )
include_directories( ${EIGEN3_INCLUDE_DIR} )

Expand Down
131 changes: 17 additions & 114 deletions Demos/BarDemo/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include "Utils/Timing.h"
#include "Utils/FileSystem.h"
#include "Demos/Common/DemoBase.h"
#include "Demos/Common/TweakBarParameters.h"
#include "Simulation/Simulation.h"


Expand All @@ -30,30 +29,13 @@ void buildModel ();
void createMesh();
void render ();
void reset();
void TW_CALL setSimulationMethod(const void *value, void *clientData);
void TW_CALL getSimulationMethod(void *value, void *clientData);
void TW_CALL setStiffness(const void* value, void* clientData);
void TW_CALL getStiffness(void* value, void* clientData);
void TW_CALL setPoissonRatio(const void* value, void* clientData);
void TW_CALL getPoissonRatio(void* value, void* clientData);
void TW_CALL setVolumeStiffness(const void* value, void* clientData);
void TW_CALL getVolumeStiffness(void* value, void* clientData);
void TW_CALL setNormalizeStretch(const void* value, void* clientData);
void TW_CALL getNormalizeStretch(void* value, void* clientData);
void TW_CALL setNormalizeShear(const void* value, void* clientData);
void TW_CALL getNormalizeShear(void* value, void* clientData);


DemoBase *base;
const unsigned int width = 30;
const unsigned int depth = 5;
const unsigned int height = 5;
short simulationMethod = 2;
Real stiffness = 1.0;
Real poissonRatio = 0.3;
bool normalizeStretch = false;
bool normalizeShear = false;
Real volumeStiffness = 1.0;


// main
int main( int argc, char **argv )
Expand All @@ -71,21 +53,14 @@ int main( int argc, char **argv )

base->createParameterGUI();

// reset simulation when solid simulation method has changed
model->setSolidSimulationMethodChangedCallback([&]() { reset(); });

// OpenGL
MiniGL::setClientIdleFunc (timeStep);
MiniGL::addKeyFunc('r', reset);
MiniGL::setClientSceneFunc(render);
MiniGL::setViewport (40.0f, 0.1f, 500.0f, Vector3r (5.0, 10.0, 30.0), Vector3r (5.0, 0.0, 0.0));

TwType enumType2 = TwDefineEnum("SimulationMethodType", NULL, 0);
TwAddVarCB(MiniGL::getTweakBar(), "SimulationMethod", enumType2, setSimulationMethod, getSimulationMethod, &simulationMethod,
" label='Simulation method' enum='0 {None}, 1 {Volume constraints}, 2 {FEM based PBD}, 3 {FEM based XPBD}, \
4 {Strain based dynamics (no inversion handling)}, 5 {Shape matching (no inversion handling)}, 6 {XPBD volume constraints}' group=Simulation");
TwAddVarCB(MiniGL::getTweakBar(), "stiffness", TW_TYPE_REAL, setStiffness, getStiffness, model, " label='Stiffness' min=0.0 step=0.1 precision=4 group='Solid' ");
TwAddVarCB(MiniGL::getTweakBar(), "poissonRatio", TW_TYPE_REAL, setPoissonRatio, getPoissonRatio, model, " label='Poisson ratio' min=0.0 step=0.1 precision=4 group='Solid' ");
TwAddVarCB(MiniGL::getTweakBar(), "normalizeStretch", TW_TYPE_BOOL32, setNormalizeStretch, getNormalizeStretch, model, " label='Normalize stretch' group='Solid' ");
TwAddVarCB(MiniGL::getTweakBar(), "normalizeShear", TW_TYPE_BOOL32, setNormalizeShear, getNormalizeShear, model, " label='Normalize shear' group='Solid' ");
TwAddVarCB(MiniGL::getTweakBar(), "volumeStiffness", TW_TYPE_REAL, setVolumeStiffness, getVolumeStiffness, model, " label='Volume stiffness' min=0.0 step=0.1 precision=4 group='Solid' ");
MiniGL::mainLoop();
base->cleanup();

Expand Down Expand Up @@ -128,6 +103,8 @@ void timeStep ()
START_TIMING("SimStep");
Simulation::getCurrent()->getTimeStep()->step(*model);
STOP_TIMING_AVG;

base->step();
}

for (unsigned int i = 0; i < model->getTetModels().size(); i++)
Expand Down Expand Up @@ -167,19 +144,19 @@ void createMesh()
}

// init constraints
stiffness = 1.0;
if (simulationMethod == 3)
stiffness = 1000000;
if (simulationMethod == 6)
stiffness = 100000;

volumeStiffness = 1.0;
if (simulationMethod == 6)
volumeStiffness = 100000;
model->setSolidStiffness(1.0);
if (model->getSolidSimulationMethod() == 3)
model->setSolidStiffness(1000000);
if (model->getSolidSimulationMethod() == 6)
model->setSolidStiffness(100000);

model->setSolidVolumeStiffness(1.0);
if (model->getSolidSimulationMethod() == 6)
model->setSolidVolumeStiffness(100000);
for (unsigned int cm = 0; cm < model->getTetModels().size(); cm++)
{
model->addSolidConstraints(model->getTetModels()[cm], simulationMethod, stiffness,
poissonRatio, volumeStiffness, normalizeStretch, normalizeShear);
model->addSolidConstraints(model->getTetModels()[cm], model->getSolidSimulationMethod(), model->getSolidStiffness(),
model->getSolidPoissonRatio(), model->getSolidVolumeStiffness(), model->getSolidNormalizeStretch(), model->getSolidNormalizeShear());

model->getTetModels()[cm]->updateMeshNormals(pd);

Expand All @@ -188,77 +165,3 @@ void createMesh()
}
}

void TW_CALL setSimulationMethod(const void *value, void *clientData)
{
const short val = *(const short *)(value);
*((short*)clientData) = val;
reset();
}

void TW_CALL getSimulationMethod(void *value, void *clientData)
{
*(short *)(value) = *((short*)clientData);
}

void TW_CALL setStiffness(const void* value, void* clientData)
{
stiffness = *(const Real*)(value);
((SimulationModel*)clientData)->setConstraintValue<FEMTetConstraint, Real, &FEMTetConstraint::m_stiffness>(stiffness);
((SimulationModel*)clientData)->setConstraintValue<XPBD_FEMTetConstraint, Real, &XPBD_FEMTetConstraint::m_stiffness>(stiffness);
((SimulationModel*)clientData)->setConstraintValue<StrainTetConstraint, Real, &StrainTetConstraint::m_stretchStiffness>(stiffness);
((SimulationModel*)clientData)->setConstraintValue<StrainTetConstraint, Real, &StrainTetConstraint::m_shearStiffness>(stiffness);
((SimulationModel*)clientData)->setConstraintValue<DistanceConstraint, Real, &DistanceConstraint::m_stiffness>(stiffness);
((SimulationModel*)clientData)->setConstraintValue<DistanceConstraint_XPBD, Real, &DistanceConstraint_XPBD::m_stiffness>(stiffness);
((SimulationModel*)clientData)->setConstraintValue<ShapeMatchingConstraint, Real, &ShapeMatchingConstraint::m_stiffness>(stiffness);
}

void TW_CALL getStiffness(void* value, void* clientData)
{
*(Real*)(value) = stiffness;
}

void TW_CALL setVolumeStiffness(const void* value, void* clientData)
{
volumeStiffness = *(const Real*)(value);
((SimulationModel*)clientData)->setConstraintValue<VolumeConstraint, Real, &VolumeConstraint::m_stiffness>(volumeStiffness);
((SimulationModel*)clientData)->setConstraintValue<VolumeConstraint_XPBD, Real, &VolumeConstraint_XPBD::m_stiffness>(volumeStiffness);
}

void TW_CALL getVolumeStiffness(void* value, void* clientData)
{
*(Real*)(value) = volumeStiffness;
}

void TW_CALL getPoissonRatio(void* value, void* clientData)
{
*(Real*)(value) = poissonRatio;
}

void TW_CALL setPoissonRatio(const void* value, void* clientData)
{
poissonRatio = *(const Real*)(value);
((SimulationModel*)clientData)->setConstraintValue<FEMTetConstraint, Real, &FEMTetConstraint::m_poissonRatio>(poissonRatio);
((SimulationModel*)clientData)->setConstraintValue<XPBD_FEMTetConstraint, Real, &XPBD_FEMTetConstraint::m_poissonRatio>(poissonRatio);
}

void TW_CALL getNormalizeStretch(void* value, void* clientData)
{
*(bool*)(value) = normalizeStretch;
}

void TW_CALL setNormalizeStretch(const void* value, void* clientData)
{
normalizeStretch = *(const Real*)(value);
((SimulationModel*)clientData)->setConstraintValue<StrainTetConstraint, bool, &StrainTetConstraint::m_normalizeStretch>(normalizeStretch);
}

void TW_CALL getNormalizeShear(void* value, void* clientData)
{
*(bool*)(value) = normalizeShear;
}

void TW_CALL setNormalizeShear(const void* value, void* clientData)
{
normalizeShear = *(const Real*)(value);
((SimulationModel*)clientData)->setConstraintValue<StrainTetConstraint, bool, &StrainTetConstraint::m_normalizeShear>(normalizeShear);
}
14 changes: 8 additions & 6 deletions Demos/ClothDemo/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(SIMULATION_LINK_LIBRARIES AntTweakBar glfw PositionBasedDynamics Simulation Utils)
set(SIMULATION_DEPENDENCIES AntTweakBar glfw PositionBasedDynamics Simulation Utils CopyPBDShaders)
set(SIMULATION_LINK_LIBRARIES imgui glfw PositionBasedDynamics Simulation Utils)
set(SIMULATION_DEPENDENCIES imgui glfw PositionBasedDynamics Simulation Utils CopyPBDShaders CopyImguiFonts)

if(WIN32)
set(SIMULATION_LINK_LIBRARIES opengl32.lib glu32.lib ${SIMULATION_LINK_LIBRARIES})
Expand Down Expand Up @@ -27,8 +27,12 @@ endif()
add_executable(ClothDemo
main.cpp

../Common/TweakBarParameters.cpp
../Common/TweakBarParameters.h
../Common/LogWindow.cpp
../Common/LogWindow.h
../Common/Simulator_GUI_imgui.cpp
../Common/Simulator_GUI_imgui.h
../Common/imguiParameters.cpp
../Common/imguiParameters.h
../Common/DemoBase.cpp
../Common/DemoBase.h

Expand All @@ -38,8 +42,6 @@ add_executable(ClothDemo
CMakeLists.txt
)

add_definitions(-DTW_NO_LIB_PRAGMA -DTW_STATIC -DFREEGLUT_LIB_PRAGMAS=0)

find_package( Eigen3 REQUIRED )
include_directories( ${EIGEN3_INCLUDE_DIR} )
include_directories(${PROJECT_PATH}/extern/freeglut/include)
Expand Down
Loading

0 comments on commit aa62c44

Please sign in to comment.