Unity 中 Pivot 与 Center,重置模型物体的轴心为中心

文章目录

  • 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
{/// <summary>/// 重新计算中心点/// </summary>/// <param name="go">要重新计算中心点的游戏物体</param>public static void RecalculateCenter(GameObject go){if (go.GetComponent<MeshRenderer>() == null){Debug.LogWarning("游戏物体身上没有MeshRenderer组件");return;}Vector3 center = go.GetComponent<MeshRenderer>().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<MeshRenderer>(true);if (meshRenderers.Length == 0){EditorUtility.DisplayDialog(dialogTitle, "选中的物体不是有效模型物体!!!", "确定");return;}//将所有的网格渲染的边界进行合并Bounds centerBounds = meshRenderers[0].bounds;for (int i=1;i<meshRenderers.Length;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按钮就好了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/98492.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈夫曼编码实现文件的压缩和解压

程序示例精选 哈夫曼编码实现文件的压缩和解压 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《哈夫曼编码实现文件的压缩和解压》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0…

签到系统怎么设计

背景 相信签到系统大家都有接触过&#xff0c;更多的是使用。但是有思考过这种系统是怎么设计的吗&#xff1f;比方说我统计一下每个月中每天的签到情况&#xff0c;怎么设计呢&#xff1f;今天一篇文章告诉你。 首先&#xff0c;我们熟悉的思维是&#xff1a;我设计一个数据…

MySQL主从复制和读写分离搭建

目录 一、主从复制原理 1、MySql支持从复制类型 2、主从复制的原理⭐⭐⭐ 4、mysql主从复制延迟 异步、同步、半同步复制&#xff1a; 二、主从复制实验 1、mysql 时间同步 1.1 主服务设置被同步的时间 1.2 两台从服务器设置时间同步&#xff08;两台服务器一样配置&am…

VSCode 配置 C 语言编程环境

目录 一、下载 mingw64 二、配置环境变量 三、三个配置文件 四、格式化代码 1、安装插件 2、保存时自动格式化 3、左 { 不换行 上了两年大学&#xff0c;都还没花心思去搭建 C 语言编程环境&#xff0c;惭愧&#xff0c;惭愧。 一、下载 mingw64 mingw64 是著名的 C/C…

练习2:88. 合并两个有序数组

这里写自定义目录标题 题目解体思路代码 题目 给你两个按非递减顺序排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m和 n &#xff0c;分别表示 nums1 和 nums2中的元素数目。 请你合并nums2 到 nums1 中&#xff0c;使合并后的数组同样按非递减顺序排列。 注意&a…

JVM类加载器

一、类与类加载器 类加载器虽然只用于实现类的加载动作&#xff0c;但它在Java程序中起到的作用却远超类加载阶段。对于 任意一个类&#xff0c;都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性&#xff0c;每一个类加载器&#xff0c;都拥有一个独…

骨传导耳机危害有哪些?骨传导耳机值得入手吗?

事实上&#xff0c;只要是正常使用&#xff0c;骨传导耳机并不会对身体造成伤害&#xff0c;并且在众多耳机种类中&#xff0c;骨传导耳机可以说是相对健康的一种耳机&#xff0c;这种耳机最独特的地方便是声波不经过外耳道和鼓膜&#xff0c; 而是直接将人体骨骼结构作为传声介…

Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率

在发布会签到系统中使用django开发了发布会签到系统, 本文对该系统进行测试。 django.test django.test是Django框架中的一个模块,提供了用于编写和运行测试的工具和类。 django.test模块包含了一些用于测试的类和函数,如: TestCase:这是一个基类,用于编写Django测试用…

【Spring】SpringBoot的10个参数验证技巧

这里写目录标题 前言1.使用验证注解2 使用自定义验证注解3 在服务器端验证4 提供有意义的错误信息5 将 i18n 用于错误消息messages.properties6 使用分组验证7 对复杂逻辑使用跨域验证8 对验证错误使用异常处理9 测试你的验证逻辑10 考虑客户端验证总结 前言 参数验证很重要&am…

webpack实战:某网站JS逆向分析

文章目录 1. 写在前面2. 抓包分析3. 扣加密代码 1. 写在前面 好的逆向能够帮助我们了解加密实现&#xff0c;然后根据加密方式&#xff08;md5,base64,res,des,rsa…)还原加密算法的过程。可以看看我之前的这篇文章&#xff1a;快速定位查找加密方式特征与技巧 目标站点&#…

利用python制作AI图片优化工具

将模糊图片4K高清化效果如下&#xff1a; 优化前的图片 优化后如下图&#xff1a; 优化后图片变大变清晰了效果很明显 软件界面如下&#xff1a; 所用工具和代码&#xff1a; 1、所需软件包 网盘链接&#xff1a;https://pan.baidu.com/s/1CMvn4Y7edDTR4COfu4FviA提取码&…

Bert和LSTM:情绪分类中的表现

一、说明 这篇文章的目的是评估和比较 2 种深度学习算法&#xff08;BERT 和 LSTM&#xff09;在情感分析中进行二元分类的性能。评估将侧重于两个关键指标&#xff1a;准确性&#xff08;衡量整体分类性能&#xff09;和训练时间&#xff08;评估每种算法的效率&#xff09;。…