MCPcopy Create free account
hub / github.com/RenderKit/embree / set_motion_vector

Method set_motion_vector

tutorials/common/scenegraph/scenegraph.cpp:1014–1069  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1012 }
1013
1014 void SceneGraph::set_motion_vector(Ref<SceneGraph::Node> node, const Vec3fa& dP)
1015 {
1016 if (Ref<SceneGraph::TransformNode> xfmNode = node.dynamicCast<SceneGraph::TransformNode>()) {
1017 set_motion_vector(xfmNode->child, dP);
1018 }
1019 else if (Ref<SceneGraph::GroupNode> groupNode = node.dynamicCast<SceneGraph::GroupNode>())
1020 {
1021 for (size_t i=0; i<groupNode->children.size(); i++)
1022 set_motion_vector(groupNode->children[i],dP);
1023 }
1024 else if (Ref<SceneGraph::TriangleMeshNode> mesh = node.dynamicCast<SceneGraph::TriangleMeshNode>())
1025 {
1026 avector<Vec3fa> positions1;
1027 for (auto& P : mesh->positions.back())
1028 positions1.push_back(P+dP);
1029 mesh->positions.push_back(std::move(positions1));
1030 }
1031 else if (Ref<SceneGraph::QuadMeshNode> mesh = node.dynamicCast<SceneGraph::QuadMeshNode>())
1032 {
1033 avector<Vec3fa> positions1;
1034 for (auto& P : mesh->positions.back())
1035 positions1.push_back(P+dP);
1036 mesh->positions.push_back(std::move(positions1));
1037 }
1038 else if (Ref<SceneGraph::GridMeshNode> mesh = node.dynamicCast<SceneGraph::GridMeshNode>())
1039 {
1040 avector<Vec3fa> positions1;
1041 for (auto& P : mesh->positions.back())
1042 positions1.push_back(P+dP);
1043 mesh->positions.push_back(std::move(positions1));
1044 }
1045 else if (Ref<SceneGraph::HairSetNode> mesh = node.dynamicCast<SceneGraph::HairSetNode>())
1046 {
1047 avector<Vec3ff> positions1;
1048 for (auto& P : mesh->positions.back())
1049 positions1.push_back(P+Vec3ff(dP,0.0f));
1050 mesh->positions.push_back(std::move(positions1));
1051 }
1052 else if (Ref<SceneGraph::PointSetNode> mesh = node.dynamicCast<SceneGraph::PointSetNode>())
1053 {
1054 avector<Vec3ff> positions1;
1055 for (auto& P : mesh->positions.back())
1056 positions1.push_back(P+Vec3ff(dP,0.0f));
1057 mesh->positions.push_back(std::move(positions1));
1058
1059 if (mesh->normals.size())
1060 mesh->normals.push_back(mesh->normals[0]);
1061 }
1062 else if (Ref<SceneGraph::SubdivMeshNode> mesh = node.dynamicCast<SceneGraph::SubdivMeshNode>())
1063 {
1064 avector<Vec3fa> positions1;
1065 for (auto& P : mesh->positions.back())
1066 positions1.push_back(P+dP);
1067 mesh->positions.push_back(std::move(positions1));
1068 }
1069 }
1070
1071 void SceneGraph::set_motion_vector(Ref<SceneGraph::Node> node, const avector<Vec3fa>& motion_vector)

Callers 11

runMethod · 0.45
runMethod · 0.45
runMethod · 0.45
runMethod · 0.45
run_buildMethod · 0.45
runMethod · 0.45
runMethod · 0.45
setupMethod · 0.45
setupMethod · 0.45
setupMethod · 0.45

Calls 3

sizeMethod · 0.45
push_backMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected