refactor: update Puppet transform logic to support AffineTransform world matrices and improve selection highlighting
This commit is contained in:
@@ -162,6 +162,12 @@ void init_math(py::module_ &m) {
|
||||
.def_readwrite("direction_error", &HError3f::direction_error);
|
||||
|
||||
// 3. Dynamic Vectors (uLib::Vector)
|
||||
py::class_<TRS, AffineTransform, std::shared_ptr<TRS>>(m, "TRS")
|
||||
.def(py::init<>())
|
||||
.def_readwrite("position", &TRS::position)
|
||||
.def_readwrite("rotation", &TRS::rotation)
|
||||
.def_readwrite("scaling", &TRS::scaling);
|
||||
|
||||
py::bind_vector<uLib::Vector<Scalari>>(m, "Vector_i")
|
||||
.def("MoveToVRAM", &uLib::Vector<Scalari>::MoveToVRAM)
|
||||
.def("MoveToRAM", &uLib::Vector<Scalari>::MoveToRAM);
|
||||
@@ -268,7 +274,7 @@ void init_math(py::module_ &m) {
|
||||
|
||||
// 5. Core Math Structures
|
||||
py::class_<AffineTransform, std::shared_ptr<AffineTransform>>(m,
|
||||
"AffineTransform")
|
||||
"AffineTransform")
|
||||
.def(py::init<>())
|
||||
.def("GetWorldMatrix", &AffineTransform::GetWorldMatrix)
|
||||
.def("SetPosition", &AffineTransform::SetPosition)
|
||||
@@ -278,23 +284,46 @@ void init_math(py::module_ &m) {
|
||||
.def("SetRotation", &AffineTransform::SetRotation)
|
||||
.def("GetRotation", &AffineTransform::GetRotation)
|
||||
.def("Rotate",
|
||||
py::overload_cast<const Matrix3f>(&AffineTransform::Rotate))
|
||||
py::overload_cast<const Matrix3f&>(&AffineTransform::Rotate))
|
||||
.def("Rotate",
|
||||
py::overload_cast<float, Vector3f>(&AffineTransform::Rotate))
|
||||
.def("Rotate", py::overload_cast<Vector3f>(&AffineTransform::Rotate))
|
||||
.def("EulerYZYRotate", &AffineTransform::EulerYZYRotate)
|
||||
.def("FlipAxes", &AffineTransform::FlipAxes);
|
||||
.def("FlipAxes", &AffineTransform::FlipAxes)
|
||||
.def("SetWorldMatrix", &AffineTransform::SetWorldMatrix);
|
||||
|
||||
py::class_<Geometry, AffineTransform, std::shared_ptr<Geometry>>(m, "Geometry")
|
||||
py::class_<TRS, AffineTransform, std::shared_ptr<TRS>>(m, "TRS")
|
||||
.def(py::init<>())
|
||||
.def("GetWorldPoint", py::overload_cast<const Vector4f>(
|
||||
&Geometry::GetWorldPoint, py::const_))
|
||||
.def("GetWorldPoint",
|
||||
py::overload_cast<float, float, float>(&Geometry::GetWorldPoint))
|
||||
.def("GetLocalPoint", py::overload_cast<const Vector4f>(
|
||||
&Geometry::GetLocalPoint, py::const_))
|
||||
.def("GetLocalPoint",
|
||||
py::overload_cast<float, float, float>(&Geometry::GetLocalPoint));
|
||||
.def(py::init<const Matrix4f &>())
|
||||
.def_readwrite("position", &TRS::position)
|
||||
.def_readwrite("rotation", &TRS::rotation)
|
||||
.def_readwrite("scaling", &TRS::scaling)
|
||||
.def("SetPosition", &TRS::SetPosition)
|
||||
.def("SetRotation", &TRS::SetRotation)
|
||||
.def("SetOrientation", &TRS::SetOrientation)
|
||||
.def("SetScale", &TRS::SetScale)
|
||||
.def("FromMatrix", &TRS::FromMatrix)
|
||||
.def("GetMatrix", &TRS::GetMatrix);
|
||||
|
||||
py::class_<Geometry, Object, std::shared_ptr<Geometry>>(m, "Geometry")
|
||||
.def("GetParent", &Geometry::GetParent)
|
||||
.def("SetParent", &Geometry::SetParent)
|
||||
.def("GetWorldPoint", py::overload_cast<const Vector4f>(&Geometry::GetWorldPoint, py::const_))
|
||||
.def("GetWorldPoint", py::overload_cast<float, float, float>(&Geometry::GetWorldPoint, py::const_))
|
||||
.def("GetLocalPoint", py::overload_cast<const Vector4f>(&Geometry::GetLocalPoint, py::const_))
|
||||
.def("GetLocalPoint", py::overload_cast<float, float, float>(&Geometry::GetLocalPoint, py::const_));
|
||||
|
||||
py::class_<LinearGeometry, Geometry, std::shared_ptr<LinearGeometry>>(m, "LinearGeometry")
|
||||
.def(py::init<>())
|
||||
.def("Translate", &LinearGeometry::Translate)
|
||||
.def("Rotate", &LinearGeometry::Rotate)
|
||||
.def("Scale", &LinearGeometry::Scale)
|
||||
.def("SetPosition", &LinearGeometry::SetPosition)
|
||||
.def("GetPosition", &LinearGeometry::GetPosition)
|
||||
.def("EulerYZYRotate", &LinearGeometry::EulerYZYRotate)
|
||||
.def("FlipAxes", &LinearGeometry::FlipAxes)
|
||||
.def("GetTransform", &LinearGeometry::GetTransform)
|
||||
.def("SetTransform", &LinearGeometry::SetTransform);
|
||||
|
||||
py::class_<ContainerBox, AffineTransform, Object, std::shared_ptr<ContainerBox>>(
|
||||
m, "ContainerBox")
|
||||
@@ -427,7 +456,7 @@ void init_math(py::module_ &m) {
|
||||
.def("__getitem__",
|
||||
py::overload_cast<const Vector3i &>(&VoxImage<Voxel>::operator[]));
|
||||
|
||||
py::class_<TriangleMesh>(m, "TriangleMesh")
|
||||
py::class_<TriangleMesh, TRS, std::shared_ptr<TriangleMesh>>(m, "TriangleMesh")
|
||||
.def(py::init<>())
|
||||
.def("AddPoint", &TriangleMesh::AddPoint)
|
||||
.def("AddTriangle",
|
||||
@@ -439,7 +468,7 @@ void init_math(py::module_ &m) {
|
||||
.def("GetTriangle", &TriangleMesh::GetTriangle)
|
||||
.def("GetNormal", &TriangleMesh::GetNormal);
|
||||
|
||||
py::class_<QuadMesh>(m, "QuadMesh")
|
||||
py::class_<QuadMesh, TRS, std::shared_ptr<QuadMesh>>(m, "QuadMesh")
|
||||
.def(py::init<>())
|
||||
.def("AddPoint", &QuadMesh::AddPoint)
|
||||
.def("AddQuad",
|
||||
|
||||
Reference in New Issue
Block a user