USDLoaderImplTinyusdzHelper.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #ifndef ASSIMP_BUILD_NO_USD_IMPORTER
  2. #include "USDLoaderImplTinyusdzHelper.h"
  3. #include "../../../contrib/tinyusdz/assimp_tinyusdz_logging.inc"
  4. namespace {
  5. //const char *const TAG = "tinyusdz helper";
  6. }
  7. using ChannelType = tinyusdz::tydra::AnimationChannel::ChannelType;
  8. std::string Assimp::tinyusdzAnimChannelTypeFor(ChannelType animChannel) {
  9. switch (animChannel) {
  10. case ChannelType::Transform: {
  11. return "Transform";
  12. }
  13. case ChannelType::Translation: {
  14. return "Translation";
  15. }
  16. case ChannelType::Rotation: {
  17. return "Rotation";
  18. }
  19. case ChannelType::Scale: {
  20. return "Scale";
  21. }
  22. case ChannelType::Weight: {
  23. return "Weight";
  24. }
  25. default:
  26. return "Invalid";
  27. }
  28. }
  29. using tinyusdz::tydra::NodeType;
  30. std::string Assimp::tinyusdzNodeTypeFor(NodeType type) {
  31. switch (type) {
  32. case NodeType::Xform: {
  33. return "Xform";
  34. }
  35. case NodeType::Mesh: {
  36. return "Mesh";
  37. }
  38. case NodeType::Camera: {
  39. return "Camera";
  40. }
  41. case NodeType::Skeleton: {
  42. return "Skeleton";
  43. }
  44. case NodeType::PointLight: {
  45. return "PointLight";
  46. }
  47. case NodeType::DirectionalLight: {
  48. return "DirectionalLight";
  49. }
  50. case NodeType::EnvmapLight: {
  51. return "EnvmapLight";
  52. }
  53. default:
  54. return "Invalid";
  55. }
  56. }
  57. aiMatrix4x4 Assimp::tinyUsdzMat4ToAiMat4(const double matIn[4][4]) {
  58. aiMatrix4x4 matOut;
  59. matOut.a1 = matIn[0][0];
  60. matOut.a2 = matIn[0][1];
  61. matOut.a3 = matIn[0][2];
  62. matOut.a4 = matIn[0][3];
  63. matOut.b1 = matIn[1][0];
  64. matOut.b2 = matIn[1][1];
  65. matOut.b3 = matIn[1][2];
  66. matOut.b4 = matIn[1][3];
  67. matOut.c1 = matIn[2][0];
  68. matOut.c2 = matIn[2][1];
  69. matOut.c3 = matIn[2][2];
  70. matOut.c4 = matIn[2][3];
  71. matOut.d1 = matIn[3][0];
  72. matOut.d2 = matIn[3][1];
  73. matOut.d3 = matIn[3][2];
  74. matOut.d4 = matIn[3][3];
  75. // matOut.a1 = matIn[0][0];
  76. // matOut.a2 = matIn[1][0];
  77. // matOut.a3 = matIn[2][0];
  78. // matOut.a4 = matIn[3][0];
  79. // matOut.b1 = matIn[0][1];
  80. // matOut.b2 = matIn[1][1];
  81. // matOut.b3 = matIn[2][1];
  82. // matOut.b4 = matIn[3][1];
  83. // matOut.c1 = matIn[0][2];
  84. // matOut.c2 = matIn[1][2];
  85. // matOut.c3 = matIn[2][2];
  86. // matOut.c4 = matIn[3][2];
  87. // matOut.d1 = matIn[0][3];
  88. // matOut.d2 = matIn[1][3];
  89. // matOut.d3 = matIn[2][3];
  90. // matOut.d4 = matIn[3][3];
  91. return matOut;
  92. }
  93. aiVector3D Assimp::tinyUsdzScaleOrPosToAssimp(const std::array<float, 3> &scaleOrPosIn) {
  94. return aiVector3D(scaleOrPosIn[0], scaleOrPosIn[1], scaleOrPosIn[2]);
  95. }
  96. aiQuaternion Assimp::tinyUsdzQuatToAiQuat(const std::array<float, 4> &quatIn) {
  97. // tinyusdz "quat" is x,y,z,w
  98. // aiQuaternion is w,x,y,z
  99. return aiQuaternion(
  100. quatIn[3], quatIn[0], quatIn[1], quatIn[2]);
  101. }
  102. #endif // !! ASSIMP_BUILD_NO_USD_IMPORTER