unity 获取复杂物体(模型)中心点

这篇具有很好参考价值的文章主要介绍了unity 获取复杂物体(模型)中心点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity 获取复杂物体(模型)中心点

1.获取物体中心点

        public Vector3 GetCenter(GameObject target)
        {




            Renderer[] mrs = target.gameObject.GetComponentsInChildren<Renderer>();
            
            Vector3 center = target.transform.position;
            
            if (mrs.Length != 0)
            {
            
            
                Bounds bounds = new Bounds(center, Vector3.zero);
                
                foreach (Renderer mr in mrs)
                {
                
                    bounds.Encapsulate(mr.bounds);

                }
                
                center = bounds.center;
            }
            return center;
 
        }

2.获取物体包围盒(通过Renderer)

        public Bounds GetBounds(GameObject target, bool include_children = true)
        {
 
            Renderer[] mrs = target.gameObject.GetComponentsInChildren<Renderer>();
            Vector3 center = target.transform.position;

            Bounds bounds = new Bounds(center, Vector3.zero);

            if (include_children)
            {

                if (mrs.Length != 0)
                {

                    foreach (Renderer mr in mrs)
                    {

                        bounds.Encapsulate(mr.bounds);
                    }
                }
            }
            else
            {
                Renderer rend = target.GetComponentInChildren<Renderer>();
                if (rend)
                {
                    bounds = rend.bounds;
                }
            }
 
            return bounds;
 
        }

3.获取物体包围盒(通过MeshFilter)

        public Bounds GetLocalBounds(GameObject target, bool include_children = true)
        {
 
            MeshFilter[] mfs = target.gameObject.GetComponentsInChildren<MeshFilter>();
            Vector3 center = target.transform.localPosition;
            Bounds bounds = new Bounds(center, Vector3.zero);
            if (include_children)
            {
                if (mfs.Length != 0)
                {
                    foreach (MeshFilter mf in mfs)
                    {
                        if (mf.mesh)
                        {
                            bounds.Encapsulate(mf.mesh.bounds);
                        }
                    }
                }
            }
            else
            {
                MeshFilter mf = target.GetComponentInChildren<MeshFilter>();
                if (mf && mf.mesh)
                {
                    bounds = mf.mesh.bounds;
                }
            }
 
            return bounds;
 
        }

文章来源地址https://www.toymoban.com/news/detail-785612.html

到了这里,关于unity 获取复杂物体(模型)中心点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4中修改模型的中心点

    在UE4中的模型中心点一般都在模型的中点,如果是门这样的模型,我们就不能绕中心点旋转了,不然会觉得很奇怪。但是默认的静态网格体中心点都在物体中心,那我们怎么办?有两种方法: 1.我们就需要移动物体的中心点 2.在三维建模软件中移动模型中心点 下面我们就讨论

    2023年04月08日
    浏览(43)
  • Unity中如何修改精灵(Sprite)的中心点(Pivot)位置

    在Unity中,精灵(Sprite)是游戏中最常用的图形资源之一。精灵的中心点(Pivot)决定了它的旋转和缩放的中心位置。默认情况下,精灵的中心点位于其包围盒(Bounding Box)的中心。然而,在某些情况下,我们可能需要将精灵的中心点设置为不同的位置,以便更好地适应特定的需求

    2024年02月04日
    浏览(38)
  • 【赏】three.js如何确定3dtile格式的模型的中心点和缩放比例

    three.js如何确定3dtile格式的模型的中心点和缩放比例。 有多个3dtile格式的模型(tileset.json + b3dm),请问如何确定合适的比例?即在three.js中如何确定像机的位置和缩放比例? 在three.js中确定3D模型的中心点和缩放比例通常需要以下步骤: 加载3D模型。使用three.js的加载器(例如

    2024年02月08日
    浏览(40)
  • 【Unity细节】为什么UI移动了锚点,中心点和位置,运行的时候还是不在设置的位置当中

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 此时我已经将锚点设置为左上角,但是运行时它不在左上角,而是在中间 它的父对象不

    2024年02月05日
    浏览(57)
  • PCL圆柱中心轴线提取、中心点提取

    适用于 圆柱中心轴线计算,轴线的端点、中心点计算 附代码完整实现及测试代码。 相关链接: C++ PCL点云圆柱结构提取/立杆结构提取

    2024年02月14日
    浏览(29)
  • 直线围绕中心点旋转(类似时钟)

    2024年04月09日
    浏览(38)
  • uniapp小程序地图设置中心点位置向上偏移

    图示: id=\\\"map\\\" ref=\\\"map\\\"

    2024年02月11日
    浏览(41)
  • WPF中有中心点的slider滑动条

    想要实现的效果 原生滑动条 需要认识一下滑动条的组成 在原生控件中生成“资源字典”对应的样式 然后在track所在的列进行添砖加瓦 由于track在row=\\\"1\\\"的位置,只需要在这个位置上面添加一个Ellipse和Line Ellipse是来描述固定在滑动条上的中心点的位置 line是来描述Thumb从中心点

    2024年02月08日
    浏览(32)
  • vue canvas拖拽,鼠标中心点缩放,标记点位等

    vue实现canvas画布建立图片,坐标建立,可进行拖拽,鼠标中心点位缩放,标记点位等功能 直接上源码 仅供学习使用

    2024年02月17日
    浏览(29)
  • Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin

      在 Android双击图片放大移动图中双击点到ImageView区域中心,Kotlin-CSDN博客 基础上,这次使用ScaleGestureDetector检测两根手指的缩放动作,记录两根手指的中心点位置,根据ScaleGestureDetector检测到的缩放因子(系数),放大原图,并移动放大前两根手指中心点在原图的位置移动到

    2024年01月23日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包