OmniProcamUnity文件总结

文件构成

  • Lib
    • libOmniProCam
    • libOmniProCamCalibration
  • OmniProcam
    • Projection
      • Camera
      • ProjectionTarget
      • RenderTexture
      • Shader
    • DebugUI
    • LibOmniProCamManager

其中,在lib里面有calibration用的接口,在里面设定好了投影仪需要的参数数量和相机需要的参数数量。在lib里面直接放了老师写好的dll,所以其实cs文件是在访问这些dll的内容

Camera

  • 目的:初始化相机

变量

  • 创建一个class:cameraInitializer,继承了Monobehaviour
    • MonoBehaviour是每一个unity的script的基础类
  • public的gameobject,用来决定setup哪个相机,这个相机直接从unity的UI里面拽进去
  • protected的camera类,targetcamera
    • projected可以在这个class以及所有继承这个class的里面被访问,但是private只能在这个class中被访问
    • Camera是unity里面一个表示相机的类
  • 创建了两个float的数组,大小和之前设置好的相机参数,和投影仪参数一样
  • 初始化三个4x4的矩阵,分别是相机的intrinsic,extrinsic以及相机的投影矩阵
    • Matrix4x4可以表示transformation的矩阵,包括平移旋转等等

函数

  • void Awake()
    • 功能
      • 在开始之前初始化variable或者game state,在整个stript里面只被call一次
      • 在所有的object初始化结束之后
      • 通常在start之前被call
    • 效果
      • 初始化了calibration
      • 设定好了目标的相机,并且把这个相机setup
  • protected void setupCamera(Camera targetCamera, int cameraIndex)
    • 直接call了dll里面写好的功能(但是这里得到的是projector的,为什么?),得到了各种参数
    • 关于GChandle
    • 然后把distortion和都记录下来了,直接把translation和rotation(相机的外矩阵)赋值给了目标相机、这样目标相机就能直接移动到应该到的位置上了
  • 另外两个函数可以返回这里目前没有用到的distortion k(4个)和c(2个)

device