本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程。增加了Asset Bundle+ILRuntime热更新技术流程。

在Unity 3D模型展示专栏中自由观察物体使用的第三方脚本实现,这篇文章使用Unity为开发者提供专业的虚拟摄像机插件Cinemachine,虚拟摄像机可以实现电影级别的分镜,推拉式镜头等,需要2017以上的版本才能使用,配合TimeLine一起使用和Animator可以做些项目漫游、案例展示、行业工作标准流程演示等。
下面这个就是Cinemachine结合TimeLine做的案例

斜切进刀场景模拟

本篇文章只涉及其中一个虚拟摄像机cinemachineFreeLook的使用,首先需要在PackageManager中搜索并安装Cinemachine

在搜索框中搜索 Cinemachine进行安装即可。

安装之后,创建cinemachineFreeLook虚拟摄像机,并命名为CMFreeLook

Main Camera下增加一个名为CinemachineBrain组件,相当于虚拟相机的总管理。这里使用默认参数即可。

CMFreeLook组件参数进行如下设置。来调整观察的最佳位置

调整过程是运行时不断进行修正的…,调整上中下轨道范围。能够完美的从不同角度观察物体。

重点来了,如果是观察的物体提前创建好可以进行提前设置LookAtFollow以及Middle Rig等参数,由于本项目是动态创建的观察物体,所以需要使用脚本进行设置修改MyGameManager以上参数在此脚本中进行设置。

public class MyGameManager : MonoBehaviour
{public GameObject parentObj;public CinemachineFreeLook camera;// Start is called before the first frame updatevoid Start(){var tempGB = ResMgr.GetInstance().Load<GameObject>("Prefabs/Switch");tempGB.transform.SetParent(parentObj.transform);tempGB.name = "Switch";camera.LookAt = tempGB.transform;camera.Follow = tempGB.transform;tempGB.transform.position = new Vector3(5f, 0f, 50f);camera.GetRig(1).LookAt = tempGB.transform;}
}

说明:关于 camera.GetRig(1).LookAt GetRig是个数组索引值分别对应下面参数 GetRig(1)是对Middle Rig进行设置。

注意:cinemachineFreeLook默认是鼠标左键控制视角的,在此项目中用起来非常不便。所以需要使用脚本改变控制方式。

CMFreelookOnlyWhenRightMouseDown脚本内容:鼠标右键控制视角,鼠标滚轮控制焦距。


public class CMFreelookOnlyWhenRightMouseDown : MonoBehaviour
{private CinemachineFreeLook cinemachineFreeLook;// Start is called before the first frame updatevoid Start(){cinemachineFreeLook = GetComponent<CinemachineFreeLook>();CinemachineCore.GetInputAxis = GetAxisCustom;}public float GetAxisCustom(string axisName){if (axisName == "Mouse X"){if (Input.GetMouseButton(1)){return UnityEngine.Input.GetAxis("Mouse X");}else{return 0;}}else if (axisName == "Mouse Y"){if (Input.GetMouseButton(1)){return UnityEngine.Input.GetAxis("Mouse Y");}else{return 0;}}return UnityEngine.Input.GetAxis(axisName);}// Update is called once per framevoid FixedUpdate(){if (Input.GetAxis("Mouse ScrollWheel") < 0){if (cinemachineFreeLook.m_Lens.FieldOfView <= 62){cinemachineFreeLook.m_Lens.FieldOfView += 0.5f;}//cinemachineFreeLook.m_Lens.OrthographicSize}if (Input.GetAxis("Mouse ScrollWheel") > 0){if (cinemachineFreeLook.m_Lens.FieldOfView >= 4){cinemachineFreeLook.m_Lens.FieldOfView -= 0.5f;}}}
}

将其挂载到CMFreeLook上。

效果展示

Unity 3D模型展示框架篇之自由观察(Cinemachine)相关推荐

  1. Unity 3D模型展示框架篇之ILRuntime快速入门

    系列文章目录 Unity 3D模型展示框架篇之项目整理 Unity 3D模型展示框架篇之框架运用 Unity 3D模型展示框架篇之自由观察(Cinemachine) Unity 3D模型展示框架篇之资 ...

  2. Unity 3D模型展示框架篇之框架运用

    本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程.增加了Asset Bundle+ILRuntime热更新技术流程. 效果 ...

  3. Unity 3D模型展示框架篇之项目整理

    本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程.增加了Asset Bundle+ILRuntime热更新技术流程. 1. ...

  4. Unity 3D模型展示之webGL平台展现

    在之前的项目基础上我们已经打包后在PC端进行展示了.这篇文章主要介绍在切换到webGL上时效果展示不出来需要进行调整,特此记录一下. 1.平台切换 选择WebGL平台切换,没有的可以进行安装,安装之后 ...

  5. Unity 3D模型展示之UI布局

    整体布局情况 导入UI资源并统一将Texture Type设置为Sprite(2D and UI) 1.标题 将Text中的文本设置为'Unity 3D物体展示实例'. 添加Shadow与Outlin ...

  6. unity 3D模型展示旋转缩放

    目标: 在UI层上 自由观察3D 模型,实现鼠标控制模型的旋转,缩放&& 触摸屏手势控制模型的旋转缩放控制: 这里仅将控制代码挂载到相机上,通过对相机的控制来观察模型. 基本上为最小单 ...

  7. Unity 3D模型展示之自由观察模型

    效果展示 进行调整将灯光放到Main Camera下,旋转的时候光就一直打在这面. 1.观察模型脚本 public class Smooth3DCamera : MonoBehaviour {publ ...

  8. Unity 3D模型展示之模型透明效果

    效果展示 1.透明效果实现思路 简单点就是将模型的材质替换成透明材质.需要注意:1.指定范围内的模型进行透明化.2.一个模型会有多个材质,都需要进行透明化.3.还能将模型的材质恢复最初的效果.4.选中 ...

  9. Unity 3D模型展示之控制标注

    效果展示 标注隐藏显示 脚本SwitchOperation中增加控制隐藏显示的方法.在初始化数据时需要给用到的switchPart.info进行赋值. public void hideInfo(boo ...

最新文章

  1. 通过hibernate 查询出来的数据默认为持久状态,也就是说:你在后头作出的任何操作都会被hibernate自动同步更新到数据库
  2. mSystems:生物地球化学进入病毒时代-采用多样的方法研究病毒和生物地球化学循环...
  3. android查询竞价处理,公平可靠的竞价方式,应对越来越高的流量获取成本,如何解决推广费用过高的问题可能是...
  4. 数据结构与算法 / 排序算法(1)
  5. java状态模式和策略模式_Java状态和策略设计模式之间的差异
  6. bootbox.js
  7. mysql sqlite 分页查询_sqlite分页查询
  8. mysql where is_MySQL中条件放在where后面与放在on后面的区别
  9. maven项目动态替换配置中的值
  10. 《Spring 5 官方文档》5. 验证、数据绑定和类型转换(二)
  11. window下Oracle 11G安装文档
  12. 《MYSQL必知必会》—10~13.创建计算字段、使用数据处理函数、使用聚集函数汇总数据,使用GROUP BY与HAVING分组数据及过滤
  13. 必先利其器——Python机器学习环境搭建
  14. python实现密码破解
  15. 5步绘制软件开发流程图
  16. 测试用例的设计方法:等价类划分法
  17. python实现局域网内使用TCP服务器传输文件
  18. 带你理解JS中的Events事件
  19. Windows系统下隐藏的文件
  20. Chrome 浏览器书签功能很强大

热门文章

  1. solid works 插入两两相交直线确定的基准面作图
  2. baseservlet怎么写_BaseServlet
  3. ONSPlayer玩RPGMV没声音的解决方法
  4. mysql如何高效存储IPv4、IPv6地址
  5. java中x--与--x_GitHub - xsonorg/xco: XSON Common Object
  6. tensorflow中squeeze与expand_dims
  7. osgEarth示例分析——osgearth_manip
  8. Python常用字符编码
  9. 深度学习中的数据增强(上)
  10. 华为 AI 芯片诞生;马云重当中国首富;微软修复数据删除 Bug | 极客头条