From e666ddbec0b4c15aa2027f1d346169da10bd94bb Mon Sep 17 00:00:00 2001 From: zhouhang95 <765229842@qq.com> Date: Tue, 12 Dec 2023 15:22:29 +0800 Subject: [PATCH] abc list --- projects/Alembic/GetAlembicPrim.cpp | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/projects/Alembic/GetAlembicPrim.cpp b/projects/Alembic/GetAlembicPrim.cpp index 4aa160ab3a..573f97f808 100644 --- a/projects/Alembic/GetAlembicPrim.cpp +++ b/projects/Alembic/GetAlembicPrim.cpp @@ -230,6 +230,44 @@ ZENDEFNODE(AllAlembicPrim, { {"alembic"}, }); +struct AlembicPrimList : INode { + virtual void apply() override { + auto abctree = get_input("abctree"); + auto prims = std::make_shared(); + int use_xform = get_input2("use_xform"); + if (use_xform) { + prims = get_xformed_prims(abctree); + } else { + abctree->visitPrims([&] (auto const &p) { + auto np = std::static_pointer_cast(p->clone()); + prims->arr.push_back(np); + }); + } + for (auto &prim: prims->arr) { + auto _prim = std::dynamic_pointer_cast(prim); + if (get_input2("flipFrontBack")) { + flipFrontBack(_prim); + } + if (get_input2("triangulate") == 1) { + zeno::primTriangulate(_prim.get()); + } + } + set_output("prims", std::move(prims)); + } +}; + +ZENDEFNODE(AlembicPrimList, { + { + {"bool", "flipFrontBack", "1"}, + {"ABCTree", "abctree"}, + {"bool", "use_xform", "0"}, + {"bool", "triangulate", "0"}, + }, + {"prims"}, + {}, + {"alembic"}, +}); + struct GetAlembicCamera : INode { virtual void apply() override { auto abctree = get_input("abctree");