文章目录
- 1. 概念
- 2. 动态计算正确的模型中心点Center
- 3. 重置模型物体的轴心为中心
1. 概念
在 Unity 面板的左上角有两个按钮,在本文中主要研究 Pivot/Center
- Pivot(轴心):模型的真实位置,是由建模软件设定的可在模型软件中更改,如果选中了场景中多个物体则坐标是第一个选择的Pivot坐标,transform.position 获取的就是 pivot ,是模型旋转、缩放的参考点
对于Unity中可创建的2D,3D资源是不能更改轴心点的,对于导入的资源可以进行修改
- 2D:可以在Project->选择2D精灵图片->Import Settings->Pivot
- 3D:可以在模型软件中更改Pivot的坐标,也就是更改模型的轴
Center(中心):由Unity根据模型的 mesh 计算出来的中心位置,是选择的所有物体的物理上的中心,如果选择了多个物体则坐标是所有选择的物体的中心,getComponent().bounds.center 获取的是center坐标
2. 动态计算正确的模型中心点Center
using UnityEngine; public class Util : MonoBehaviour { ///
/// 重新计算中心点 /// /// 要重新计算中心点的游戏物体 public static void RecalculateCenter(GameObject go) { if (go.GetComponent() == null) { Debug.LogWarning("游戏物体身上没有MeshRenderer组件"); return; } Vector3 center = go.GetComponent ().bounds.center; GameObject newGo = new GameObject(go.name); newGo.transform.position = center; go.transform.SetParent(newGo.transform); } } 3. 重置模型物体的轴心为中心
遇到的问题:因为在Unity开发中经常会遇到模型物体的轴心点偏离模型很远的情况,导致我们在操作位置,旋转,缩放时很麻烦,我们很希望轴心点是物体模型的网格中心
解决方法:
1.在建模软件(3dmax,maya等)里面设置后导出.个人觉得麻烦…
2.自己创建一个空物体拖拽至目标模型的网格中心,然后将目标模型物体拖拽入创建的空物体中,来达到重置轴心的目的(但将空物体拖拽至目标模型的网格中心还是有些困难的,主要是得自己用眼色去判断…)
3.写脚本(最方便)
using UnityEngine; using UnityEditor; public class MyTool : ScriptableObject { //重置模型的轴心为中心 [MenuItem("Tools/MyTool/ResetPivot")] static void ResetPivot() { //获取选中的物体 GameObject target = Selection.activeGameObject; string dialogTitle = "Tools/MyTool/ResetPivot"; if (target == null) { EditorUtility.DisplayDialog(dialogTitle, "没有选中需要重置轴心的物体!!!", "确定"); return; } //获取目标物体下所有网格渲染 MeshRenderer[] meshRenderers = target.GetComponentsInChildren
(true); if (meshRenderers.Length == 0) { EditorUtility.DisplayDialog(dialogTitle, "选中的物体不是有效模型物体!!!", "确定"); return; } //将所有的网格渲染的边界进行合并 Bounds centerBounds = meshRenderers[0].bounds; for (int i=1;i centerBounds.Encapsulate(meshRenderers[i].bounds); } //创建目标的父物体 Transform targetParent = new GameObject(target.name + "-Parent").transform; //如果目标原来已有父物体,则将创建目标父物体的父物体设为原父物体; Transform originalParent = target.transform.parent; if (originalParent != null) { targetParent.SetParent(originalParent); } //设置目标父物体的位置为合并后的网格渲染边界中心 targetParent.position = centerBounds.center; //设置目标物体的父物体 target.transform.parent = targetParent; Selection.activeGameObject = targetParent.gameObject; EditorUtility.DisplayDialog(dialogTitle, "重置模型物体的轴心完成!", "确定"); } } 使用方法:
选择需要重置轴心的的物体,然后使用上方的Tools/MyTool下的的ResetPivot按钮就好了
- Pivot(轴心):模型的真实位置,是由建模软件设定的可在模型软件中更改,如果选中了场景中多个物体则坐标是第一个选择的Pivot坐标,transform.position 获取的就是 pivot ,是模型旋转、缩放的参考点
猜你喜欢
- 22天前(安徽民宿发展报告)首届安徽省乡村民宿创意设计大赛启动
- 22天前(香港航空三亚航线复航了吗)香港航空三亚航线复航
- 22天前(哈弗h9优惠9万是真的吗)热浪来袭,哈弗H9超值补贴火热加码
- 22天前(万达酒店及度假村连续五年荣获“中国饭店集团60强”)万达酒店及度假村连续五年荣获“中国饭店集团60强”
- 22天前(七尚酒店百度百科)Lohkah七尚酒店首度开创充满新知的闽地研学旅程
- 22天前(重庆恐龙化石遗址)重庆黔江恐龙化石抢救性发掘新闻发布会举行
- 22天前(马尔代夫华尔道夫酒店多少钱)Chef Zhao就任马尔代夫伊挞富士岛华尔道夫酒店Li Long中餐厅新主厨
- 22天前(澳涞坞是什么)从最美山庄到世界舞台:澳涞山庄见证世界十佳旅居城市评选
- 22天前(中国最好的避暑山庄)2025中国十大避暑山庄评选揭晓,澳涞山庄夺魁
- 22天前(澳涞坞是什么)从本土品牌到全球舞台:澳涞山庄获国际顶级产业资源加持
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章