CameraSensorDescription.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "CameraSensorDescription.h"
  9. #include "CameraUtilities.h"
  10. #include <AzCore/Math/MatrixUtils.h>
  11. namespace ROS2
  12. {
  13. CameraSensorDescription::CameraSensorDescription(
  14. const AZStd::string& cameraName,
  15. const AZStd::string& effectiveNamespace,
  16. const CameraSensorConfiguration& configuration,
  17. const SensorConfiguration& sensorConfiguration)
  18. : m_cameraConfiguration(configuration)
  19. , m_sensorConfiguration(sensorConfiguration)
  20. , m_cameraName(cameraName)
  21. , m_cameraNamespace(effectiveNamespace)
  22. , m_viewToClipMatrix(CameraUtils::MakeClipMatrix(
  23. m_cameraConfiguration.m_width,
  24. m_cameraConfiguration.m_height,
  25. m_cameraConfiguration.m_verticalFieldOfViewDeg,
  26. m_cameraConfiguration.m_nearClipDistance,
  27. m_cameraConfiguration.m_farClipDistance))
  28. , m_cameraIntrinsics(CameraUtils::MakeCameraIntrinsics(
  29. m_cameraConfiguration.m_width, m_cameraConfiguration.m_height, m_cameraConfiguration.m_verticalFieldOfViewDeg))
  30. {
  31. ValidateParameters();
  32. }
  33. void CameraSensorDescription::ValidateParameters() const
  34. {
  35. AZ_Assert(
  36. m_cameraConfiguration.m_verticalFieldOfViewDeg > 0.0f && m_cameraConfiguration.m_verticalFieldOfViewDeg < 180.0f,
  37. "Vertical fov should be in range 0.0 < FoV < 180.0 degrees");
  38. AZ_Assert(
  39. m_cameraConfiguration.m_width > 0 && m_cameraConfiguration.m_height > 0, "Camera resolution dimensions should be above zero");
  40. AZ_Assert(!m_cameraName.empty(), "Camera name cannot be empty");
  41. AZ_Assert(m_cameraConfiguration.m_nearClipDistance > 0.0f, "Near clip distance should be greater than zero");
  42. AZ_Assert(m_cameraConfiguration.m_farClipDistance > m_cameraConfiguration.m_nearClipDistance , "Far clip distance should be greater than the near plane distance");
  43. AZ_Assert(
  44. m_cameraConfiguration.m_farClipDistance > m_cameraConfiguration.m_nearClipDistance,
  45. "Far clip distance should be greater than near clip distance");
  46. }
  47. } // namespace ROS2