• 使用暴风魔镜SDK来操作
  • 将魔镜的摄像头拖放到项目中:

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

  • 将MoJingVrHead的Script剪切到CamRoot中:

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

  • 这个时候能看到显示2个物体了,不过使用的Canvas还是显示一个:

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

调整Canvas的属性,使其显示2份:

  • 步骤一:将Render Mode改为Camera模式并且新建一个Camera进行测试,并且保证Canvas相对于飞机更靠近摄像头

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

  • 调整测试的Camera并设置如下:相当于只看UI层

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

    • 因为Canvas属于UI层,所以设置显示UI层;

      [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

    • 设置Don't clear则表示会继续显示其它layer的信息

      [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP
  • 在将Canvas的Render mode设置为world space如下,并且删除掉测试的Camera,则就显示正常了

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

  • 再将Canvas拷贝到Mojing的Camera下,这样Canvas就会跟随着Mojing一起移动了:

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP
  • 因为我们不需要Mojing的Camera来控制我们主体的位置,所以将Trach Position去掉:

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

注意,不建议将Render moder模式从Overlay直接改为world space,这样会导致Canvas大小不合适而比较难于调整


  • 添加VR模式下的操控方式,添加IntegrateInputManager,并且通过其Buttons的设置了解到OK就是单击手柄的返回按键

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

    代码中的用法CrossPlatformInputManager.GetButton("OK")
  • 程序运行后,游戏中的主体变小了,这是因为fov由60变为了96导致的,这和暴风魔镜的畸变设置有关:

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP

添加交互界面

  • 参考魔镜的Demo场景HeadControllerDemo添加
  • 因为魔镜中的摄像头位置不变,所以我们需要修改相应的代码,让其开始不激活,在主角消失之后才显示交互对话框,并且在OnEnable的时候来设置其位置
  • 通过转动这个点,来选择,也已经将Demo上传到了Github

    [Unity3d]3D项目转换为VR项目(暴风魔镜SDK)-LMLPHP
05-08 14:56