MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/PositionBasedDynamics / readTetModels

Method readTetModels

Utils/SceneLoader.cpp:319–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

317}
318
319void SceneLoader::readTetModels(const nlohmann::json &j, const std::string &key, const std::string &basePath, SceneData &sceneData)
320{
321 const nlohmann::json &child = j[key];
322
323 for (auto& tetModel : child)
324 {
325 std::string nodeFileName, eleFileName;
326 if (readValue<std::string>(tetModel, "nodeFile", nodeFileName) &&
327 readValue<std::string>(tetModel, "eleFile", eleFileName))
328 {
329 if (FileSystem::isRelativePath(nodeFileName))
330 {
331 nodeFileName = basePath + "/" + nodeFileName;
332 }
333
334 if (FileSystem::isRelativePath(eleFileName))
335 {
336 eleFileName = basePath + "/" + eleFileName;
337 }
338
339 std::string visFileName = "";
340 if (readValue<std::string>(tetModel, "visFile", visFileName))
341 {
342 if (FileSystem::isRelativePath(visFileName))
343 {
344 visFileName = basePath + "/" + visFileName;
345 }
346 }
347
348 sceneData.m_tetModelData.emplace_back(TetModelData());
349 TetModelData &data = sceneData.m_tetModelData.back();
350 data.m_modelFileNodes = nodeFileName;
351 data.m_modelFileElements = eleFileName;
352 data.m_modelFileVis = visFileName;
353
354 // id
355 data.m_id = 0;
356 readValue(tetModel, "id", data.m_id);
357
358 // translation
359 data.m_x.setZero();
360 readVector(tetModel, "translation", data.m_x);
361
362 // rotation axis
363 Vector3r axis;
364 axis.setZero();
365 Real angle = 0.0;
366 if (readVector(tetModel, "rotationAxis", axis) &&
367 readValue<Real>(tetModel, "rotationAngle", angle))
368 {
369 axis.normalize();
370 data.m_q = Quaternionr(AngleAxisr(angle, axis));
371 }
372 else
373 data.m_q = Quaternionr(1.0, 0.0, 0.0, 0.0);
374
375 // scale
376 data.m_scale = Vector3r(1.0, 1.0, 1.0);

Callers

nothing calls this directly

Calls 9

TetModelDataClass · 0.85
backMethod · 0.80
setZeroMethod · 0.45
normalizeMethod · 0.45
findMethod · 0.45
endMethod · 0.45
reserveMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected