12#include "Module/CalculateNorm.h"
13#include "ColorMapping.h"
24 std::lock_guard<std::mutex> tLock(
gMutex);
25 ins =
gInstance.load(std::memory_order_relaxed);
28 ins->setName(
"Particle System");
29 ins->setVersion(
"1.0");
30 ins->setDescription(
"A particle system library");
32 gInstance.store(ins, std::memory_order_release);
44 void ParticleSystemInitializer::initializeActions()
46 NodeFactory* factory = NodeFactory::instance();
48 auto page = factory->addPage(
50 "ToolBarIco/ParticleSystem/ParticleSystem.png");
52 auto group = page->addGroup(
"Particle System");
56 "ToolBarIco/ParticleSystem/ParticleEmitterSquare.png",
57 [=]()->std::shared_ptr<Node> {
58 auto emitter = std::make_shared<SquareEmitter>();
60 auto wireRender = std::make_shared<GLWireframeVisualModule>();
61 wireRender->setColor(
Color(0, 1, 0));
62 emitter->stateOutline()->connect(wireRender->inEdgeSet());
63 emitter->graphicsPipeline()->pushModule(wireRender);
69 "ToolBarIco/ParticleSystem/ParticleFluid.png",
70 [=]()->std::shared_ptr<Node> {
71 auto fluid = std::make_shared<ParticleFluid>();
73 auto calculateNorm = std::make_shared<CalculateNorm>();
74 fluid->stateVelocity()->connect(calculateNorm->inVec());
75 fluid->graphicsPipeline()->pushModule(calculateNorm);
77 auto colorMapper = std::make_shared<ColorMapping>();
78 colorMapper->varMax()->setValue(5.0f);
79 calculateNorm->outNorm()->connect(colorMapper->inScalar());
80 fluid->graphicsPipeline()->pushModule(colorMapper);
82 auto pointRender = std::make_shared<GLPointVisualModule>();
83 pointRender->varColorMode()->setCurrentKey(GLPointVisualModule::PER_VERTEX_SHADER);
84 fluid->statePointSet()->connect(pointRender->inPointSet());
85 colorMapper->outColor()->connect(pointRender->inColor());
87 fluid->graphicsPipeline()->pushModule(pointRender);
static std::atomic< ParticleSystemInitializer * > gInstance
static PluginEntry * instance()
ParticleSystemInitializer()
dyno::PluginEntry * initStaticPlugin()
PERIDYNO_API dyno::PluginEntry * initDynoPlugin()
RenderRef initialize(QWindow *window, bool defaultRender)
This is an implementation of AdditiveCCD based on peridyno.