Skip to content

Commit ce05160

Browse files
committed
Merge branch 'master' into issues_O
2 parents 15fed97 + b279394 commit ce05160

File tree

2 files changed

+41
-14
lines changed

2 files changed

+41
-14
lines changed

src/Interface/Modules/Render/ViewScene.cc

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@ void ViewSceneDialog::newGeometryValue()
125125
LOG_DEBUG("ViewSceneDialog::asyncExecute after locking");
126126

127127
itemManager_->removeAll();
128+
129+
std::shared_ptr<Render::SRInterface> spire = mSpire.lock();
130+
if (spire == nullptr)
131+
return;
132+
spire->removeAllGeomObjects();
133+
128134
// Grab the geomData transient value.
129135
auto geomDataTransient = state_->getTransientValue(Parameters::GeomData);
130136
if (geomDataTransient && !geomDataTransient->empty())
@@ -143,23 +149,23 @@ void ViewSceneDialog::newGeometryValue()
143149
}
144150

145151
int port = 0;
146-
std::vector<std::string> validObjects;
152+
//std::vector<std::string> validObjects;
147153
for (auto it = geomData->begin(); it != geomData->end(); ++it, ++port)
148154
{
149155
boost::shared_ptr<Core::Datatypes::GeometryObject> obj = *it;
150156
spire->handleGeomObject(obj, port);
151-
validObjects.push_back(obj->objectName);
157+
//validObjects.push_back(obj->objectName);
152158
itemManager_->addItem(QString::fromStdString(obj->objectName));
153159
}
154-
spire->gcInvalidObjects(validObjects);
155-
}
160+
//spire->gcInvalidObjects(validObjects);
161+
}/*
156162
else
157163
{
158164
std::shared_ptr<Render::SRInterface> spire = mSpire.lock();
159165
if (spire == nullptr)
160166
return;
161167
spire->removeAllGeomObjects();
162-
}
168+
}*/
163169
//TODO IMPORTANT: we need some call somewhere to clear the transient geometry list once spire/ES has received the list of objects. They take up lots of memory...
164170
//state_->setTransientValue(Parameters::GeomData, boost::shared_ptr<std::list<boost::shared_ptr<Core::Datatypes::GeometryObject>>>(), false);
165171
}

src/Modules/Visualization/ShowField.cc

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -415,20 +415,41 @@ void ShowFieldModule::renderFacesLinear(
415415
//TODO fix so the withNormals tp be woth lighting is called correctly, and the meshes are fixed.
416416
if (withNormals)
417417
{
418-
Core::Geometry::Vector edge1 = points[1] - points[0];
419-
Core::Geometry::Vector edge2 = points[2] - points[1];
420-
Core::Geometry::Vector norm = Cross(edge1, edge2);
421-
422-
for (size_t i = 0; i < nodes.size(); i++)
418+
if (points.size() == 4)
423419
{
424-
normals[i] = norm;
420+
Core::Geometry::Vector edge1 = points[1] - points[0];
421+
Core::Geometry::Vector edge2 = points[2] - points[1];
422+
Core::Geometry::Vector edge3 = points[3] - points[2];
423+
Core::Geometry::Vector edge4 = points[0] - points[3];
424+
425+
Core::Geometry::Vector norm = Cross(edge1, edge2) + Cross(edge2, edge3) + Cross(edge3, edge4) + Cross(edge4, edge1);
426+
427+
norm.normalize();
428+
429+
for (size_t i = 0; i < nodes.size(); i++)
430+
{
431+
normals[i] = norm;
432+
}
425433
}
426-
/*
427-
for (size_t i = 0; i < nodes.size(); i++)
434+
else
428435
{
436+
Core::Geometry::Vector edge1 = points[1] - points[0];
437+
Core::Geometry::Vector edge2 = points[2] - points[1];
438+
Core::Geometry::Vector norm = Cross(edge1, edge2);
439+
440+
norm.normalize();
441+
442+
for (size_t i = 0; i < nodes.size(); i++)
443+
{
444+
normals[i] = norm;
445+
}
446+
/*
447+
for (size_t i = 0; i < nodes.size(); i++)
448+
{
429449
mesh->get_normal(normals[i], nodes[i]);
450+
}
451+
*/
430452
}
431-
*/
432453
}
433454

434455
// Default color single face no matter the element data.

0 commit comments

Comments
 (0)