diff --git a/zeno/src/nodes/prim/TransformPrimitive.cpp b/zeno/src/nodes/prim/TransformPrimitive.cpp index 736b09f903..8a685f111d 100644 --- a/zeno/src/nodes/prim/TransformPrimitive.cpp +++ b/zeno/src/nodes/prim/TransformPrimitive.cpp @@ -358,9 +358,16 @@ struct PrimitiveTransform : zeno::INode { auto path = get_input2("path"); std::string pivotType = get_input2("pivot"); - auto select = get_from_list(path, iObject); - if (select.has_value()) { - transformObj(select.value(), matrix, pivotType, translate, rotation, scaling); + + if (std::dynamic_pointer_cast(iObject)) { + iObject = iObject->clone(); + transformObj(iObject, matrix, pivotType, translate, rotation, scaling); + } + else { + auto select = get_from_list(path, iObject); + if (select.has_value()) { + transformObj(select.value(), matrix, pivotType, translate, rotation, scaling); + } } set_output("outPrim", std::move(iObject));