PeriDyno 0.8.2
initializeObjIO.cpp
Go to the documentation of this file.
1#include "initializeObjIO.h"
2
3#include "NodeFactory.h"
4
5#include "ObjLoader.h"
6#include "GLWireframeVisualModule.h"
7#include "GLSurfaceVisualModule.h"
9
10#include "OBJexporter.h"
11#include "ObjPointLoader.h"
12#include "PLYexporter.h"
13
14namespace dyno
15{
16 std::atomic<OBJInitializer*> OBJInitializer::gInstance;
17 std::mutex OBJInitializer::gMutex;
18
20 {
21 OBJInitializer* ins = gInstance.load(std::memory_order_acquire);
22 if (!ins) {
23 std::lock_guard<std::mutex> tLock(gMutex);
24 ins = gInstance.load(std::memory_order_relaxed);
25 if (!ins) {
26 ins = new OBJInitializer();
27 ins->setName("ObjIO");
28 ins->setVersion("1.0");
29 ins->setDescription("A ObjIO library");
30
31 gInstance.store(ins, std::memory_order_release);
32 }
33 }
34
35 return ins;
36 }
37
39 {
41
42 auto page = factory->addPage(
43 "Modeling",
44 "ToolBarIco/Modeling/Modeling.png");
45
46 auto group = page->addGroup("Modeling");
47
48 group->addAction(
49 "Import OBJ",
50 "ToolBarIco/Modeling/TriangularMesh.png",
51 [=]()->std::shared_ptr<Node> {
52 auto node = std::make_shared<ObjMesh<DataType3f>>();
53
54 //auto pointrender = std::make_shared<GLPointVisualModule>();
55 //pointrender->setVisible(true);
56 //pointrender->setColor(Vec3f(1, 0, 0));
57 //node->stateTopology()->connect(pointrender->inPointSet());
58 //node->graphicsPipeline()->pushModule(pointrender);
59
60 //auto wirerender = std::make_shared<GLWireframeVisualModule>();
61 //wirerender->setVisible(true);
62 //wirerender->setColor(Vec3f(0, 1, 0));
63 //node->stateTopology()->connect(wirerender->inEdgeSet());
64 //node->graphicsPipeline()->pushModule(wirerender);
65
66 return node;
67 });
68
69 group->addAction(
70 "OBJ Point Loader",
71 "ToolBarIco/Modeling/ObjPointLoader.png",
72 [=]()->std::shared_ptr<Node> {
73 auto node = std::make_shared<ObjPoint<DataType3f>>();
74
75 return node;
76 });
77
78 group->addAction(
79 "Export OBJ",
80 "ToolBarIco/Modeling/OBJExport_v3.png",
81 [=]()->std::shared_ptr<Node> {
82 auto node = std::make_shared<OBJExporter<DataType3f>>();
83
84 auto module = std::make_shared<GLSurfaceVisualModule>();
85 module->setColor(Vec3f(0.8, 0.52, 0.25));
86 module->setVisible(true);
87 //node->stateTopology()->connect(module->inTriangleSet());
88 node->graphicsPipeline()->pushModule(module);
89
90 return node;
91 });
92
93
94 group->addAction(
95 "Ply Exporter",
96 "ToolBarIco/Modeling/OBJExport_v3.png",
97 [=]()->std::shared_ptr<Node> {
98 auto node = std::make_shared<PlyExporter<DataType3f>>();
99
100 auto module = std::make_shared<GLSurfaceVisualModule>();
101 module->setColor(Vec3f(0.8, 0.52, 0.25));
102 module->setVisible(true);
103 node->graphicsPipeline()->pushModule(module);
104
105 return node;
106 });
107
108 }
109}
110
112{
115
116 return nullptr;
117}
118
120{
123
124 return nullptr;
125}
126
#define PERIDYNO_API
Definition: Platform.h:25
static NodeFactory * instance()
Definition: NodeFactory.cpp:9
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
Definition: NodeFactory.cpp:54
void initializeActions() override
static std::mutex gMutex
static PluginEntry * instance()
static std::atomic< OBJInitializer * > gInstance
PERIDYNO_API dyno::PluginEntry * initDynoPlugin()
dyno::PluginEntry * initStaticPlugin()
RenderRef initialize(QWindow *window, bool defaultRender)
Definition: QtImGui.cpp:157
This is an implementation of AdditiveCCD based on peridyno.
Definition: Array.h:24
Vector< float, 3 > Vec3f
Definition: Vector3D.h:93
Definition: PluginEntry.h:14
void setDescription(std::string desc)
Definition: PluginEntry.cpp:36
void setVersion(std::string pluginVersion)
Definition: PluginEntry.cpp:31
void setName(std::string pluginName)
Definition: PluginEntry.cpp:26