17#include <Graphics/Matrix44.h>
19#include <pxr/base/gf/vec2i.h>
20#include <pxr/base/gf/vec3d.h>
21#include <pxr/base/gf/vec4f.h>
22#include <pxr/base/gf/matrix4d.h>
25namespace MAXUSD_NS_DEF {
27inline pxr::GfVec2i toUSD(IPoint2 p)
29 return pxr::GfVec2i(p.x, p.y);
32inline pxr::GfVec3d toUSD(Point3 p)
34 return pxr::GfVec3d(p.x, p.y, p.z);
37inline pxr::GfMatrix4d toUSD(Matrix3 m)
41 for (
int i = 0; i < 4; ++i)
43 r.SetRow3(i, toUSD(m.GetRow(i)));
46 r.SetColumn(3, pxr::GfVec4d(0, 0, 0, 1));
50inline pxr::GfMatrix4d toUSD(MaxSDK::Graphics::Matrix44 m)
53 for (
int i = 0; i < 4; ++i)
55 r.SetRow(i, pxr::GfVec4d(pxr::GfVec4f(m.m[i])));
61inline Point3 toMax(pxr::GfVec3d p)
63 return Point3(p[0], p[1], p[2]);
66inline MaxSDK::Graphics::Matrix44 toMax(
const pxr::GfMatrix4d& m)
68 MaxSDK::Graphics::Matrix44 r;
69 std::copy_n(m.data(), 16, &r.m[0][0]);
74inline Matrix3 toMaxMatrix3(
const MaxSDK::Graphics::Matrix44& mat)
77 const auto row1 = mat.m[0];
78 matrix3.SetRow(0, Point3(row1[0], row1[1], row1[2]));
79 const auto row2 = mat.m[1];
80 matrix3.SetRow(1, Point3(row2[0], row2[1], row2[2]));
81 const auto row3 = mat.m[2];
82 matrix3.SetRow(2, Point3(row3[0], row3[1], row3[2]));
83 const auto row4 = mat.m[3];
84 matrix3.SetRow(3, Point3(row4[0], row4[1], row4[2]));
88inline Matrix3 toMaxMatrix3(
const pxr::GfMatrix4d& mat)
91 const auto row1 = mat.GetRow3(0).data();
92 matrix3.SetRow(0, Point3(row1[0], row1[1], row1[2]));
93 const auto row2 = mat.GetRow3(1).data();
94 matrix3.SetRow(1, Point3(row2[0], row2[1], row2[2]));
95 const auto row3 = mat.GetRow3(2).data();
96 matrix3.SetRow(2, Point3(row3[0], row3[1], row3[2]));
97 const auto row4 = mat.GetRow3(3).data();
98 matrix3.SetRow(3, Point3(row4[0], row4[1], row4[2]));