8 #include "imstkSurfaceMesh.h" 9 #include "imstkTetrahedralMesh.h" 10 #include "imstkMeshIO.h" 14 #include "imstkPlane.h" 15 #include "imstkRenderMaterial.h" 16 #include "imstkSphere.h" 18 using namespace imstk;
23 std::vector<std::shared_ptr<CollidingObject>> generateSolidsScene1()
25 std::vector<std::shared_ptr<CollidingObject>> solids;
29 geometry->setWidth(40.0);
31 geometry->setNormal(Vec3d(0.0, 1.0, -0.5));
34 obj->setVisualGeometry(geometry);
35 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::DarkGray);
36 obj->setCollidingGeometry(geometry);
37 solids.push_back(obj);
41 geometry->setWidth(40.0);
43 geometry->setNormal(Vec3d(0.0, 1.0, 1.0));
46 obj->setVisualGeometry(geometry);
47 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::LightGray);
48 obj->setCollidingGeometry(geometry);
49 solids.push_back(obj);
53 geometry->setRadius(2.0);
57 obj->setVisualGeometry(geometry);
58 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::Red);
59 obj->setCollidingGeometry(geometry);
60 solids.push_back(obj);
69 std::vector<std::shared_ptr<CollidingObject>> generateSolidsScene2()
71 std::vector<std::shared_ptr<CollidingObject>> solids;
75 geometry->setWidth(40.0);
77 geometry->setNormal(Vec3d(0.0, 1.0, -0.5));
80 obj->setVisualGeometry(geometry);
81 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::DarkGray);
82 obj->setCollidingGeometry(geometry);
83 solids.push_back(obj);
87 geometry->setWidth(40.0);
89 geometry->setNormal(Vec3d(0.0, 1.0, 1.0));
92 obj->setVisualGeometry(geometry);
93 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::LightGray);
94 obj->setCollidingGeometry(geometry);
95 solids.push_back(obj);
104 std::vector<std::shared_ptr<CollidingObject>> generateSolidsScene3()
106 std::vector<std::shared_ptr<CollidingObject>> solids;
110 geometry->setWidth(14.0);
112 geometry->setNormal(Vec3d(0.0, 1.0, 0.0));
115 obj->setVisualGeometry(geometry);
116 obj->getVisualModel(0)->getRenderMaterial()->setColor(
Color(0.2, 0.2, 0.2, 1.0));
117 obj->setCollidingGeometry(geometry);
118 solids.push_back(obj);
122 geometry->setWidth(14.0);
124 geometry->setNormal(Vec3d(0.0, 0.0, 1.0));
127 obj->setVisualGeometry(geometry);
128 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::LightGray);
129 obj->setCollidingGeometry(geometry);
130 solids.push_back(obj);
134 geometry->setWidth(14.0);
136 geometry->setNormal(Vec3d(0.0, 0.0, -1.0));
139 obj->setVisualGeometry(geometry);
140 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::LightGray);
141 obj->setCollidingGeometry(geometry);
142 solids.push_back(obj);
146 geometry->setWidth(14.0);
148 geometry->setNormal(Vec3d(-1.0, 0.0, 0.0));
151 obj->setVisualGeometry(geometry);
152 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::LightGray);
153 obj->setCollidingGeometry(geometry);
154 solids.push_back(obj);
158 geometry->setWidth(14.0);
160 geometry->setNormal(Vec3d(1.0, 0.0, 0.0));
163 obj->setVisualGeometry(geometry);
164 obj->getVisualModel(0)->getRenderMaterial()->setColor(Color::LightGray);
165 obj->setCollidingGeometry(geometry);
166 solids.push_back(obj);
175 std::vector<std::shared_ptr<CollidingObject>> generateSolidsScene4(
const std::shared_ptr<Scene>& scene)
177 std::vector<std::shared_ptr<CollidingObject>> solids;
180 auto surfaceObject = std::make_shared<SceneObject>(
"SurfaceObj");
181 auto surfMesh = std::dynamic_pointer_cast<
SurfaceMesh>(
MeshIO::read(iMSTK_DATA_ROOT
"/cylinder/cylinder.stl"));
184 auto material = std::make_shared<RenderMaterial>();
185 material->setDisplayMode(RenderMaterial::DisplayMode::Wireframe);
186 material->setColor(
Color(Color::Red, 0.1));
187 auto surfMeshModel = surfaceObject->addComponent<
VisualModel>();
188 surfMeshModel->setGeometry(surfMesh);
189 surfMeshModel->setRenderMaterial(material);
192 scene->addSceneObject(surfaceObject);
208 auto obj = std::make_shared<CollidingObject>(
"cylinder");
210 obj->setCollidingGeometry(surfMesh);
211 scene->addSceneObject(obj);
212 solids.push_back(obj);
217 std::vector<std::shared_ptr<CollidingObject>> generateSolids(
const std::shared_ptr<Scene>& scene)
222 return generateSolidsScene1();
224 return generateSolidsScene2();
226 return generateSolidsScene3();
228 return generateSolidsScene4(scene);
230 LOG(FATAL) <<
"Invalid scene index";
std::shared_ptr<T> obj = std::make_shared<T>(); equivalent, convenience class for STL shared allocati...
void setPosition(const Vec3d p)
Set the local position.
Represents a set of triangles & vertices via an array of Vec3d double vertices & Vec3i integer indice...
static std::shared_ptr< PointSet > read(const std::string &filePath)
Read external file.
Contains geometric, material, and render information.