Unity包围盒

Unity中,拖拽鼠标 框选游戏对象 代码中,要想求勾选框的位置,要让初始位置 startPos 加上 nowPos再除以2,这样得出的就是所沟壑的矩形的中心点(position);修改图片大小,在Image(勾选框)的锚点一致时,它的sizeDelta属性相当于图片自身宽高。(这里在Canvas下放置了一个失活的Image,在拖拽鼠标时激活 并修改Image的大小。2.判断物体位置,是否在勾选范围内,如果要勾选的对象是3D物体则把物体坐标转为UI坐标。1.获取鼠标起始点的位置,并实时获取鼠标当前位置,从而绘制勾选框的UI。 阅读详情

序

比如,目前导入了一个obj文件,想知道它的AABB包围盒是什么。

官方文档

Unity - Scripting API: Bounds (unity3d.com)

可以看到,包围盒有三个类别的:

Mesh.bounds

Unity - Scripting API: Mesh.bounds (unity3d.com)

不随gameobject的几何变换而变换,大概是直接用obj里的顶点坐标算出来的;也就是所谓的模型坐标系。

api怎么调用的?主要就是这几句:

试一试

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoundTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Mesh mesh = GetComponent<MeshFilter>().mesh;
        Bounds bounds = mesh.bounds;
        print(bounds.center); // 把文档里的属性,都打印出来看看
        print(bounds.size);
        print(bounds.min);
        print(bounds.max);
        print(bounds.extents);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

关于文档里面not change的演示:

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoundTest : MonoBehaviour
{
    private Mesh mesh;
    private Bounds bounds;

    // Start is called before the first frame update
    void Start()
    {

        mesh = GetComponent<MeshFilter>().mesh;
        // bounds = mesh.bounds; // 不能放到这里的,放在这里的话,每帧打印的都是同一个bounds;就算是rend.bounds,打印结果也不变
    }

    // Update is called once per frame
    void Update()
    {
        bounds = mesh.bounds; // 应该实时获取
        print(bounds.center);
    }
}

结果: 

Render.bounds

Unity - Scripting API: Renderer.bounds (unity3d.com)

主要是这么几句:

试一试

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoundTest : MonoBehaviour
{
    private Mesh mesh;
    private Renderer rend;

    private Bounds bounds;

    // Start is called before the first frame update
    void Start()
    {
        mesh = GetComponent<MeshFilter>().mesh;
        rend = GetComponent<Renderer>();
    }

    // Update is called once per frame
    void Update()
    {
        //bounds = mesh.bounds;
        bounds = rend.bounds; // 实时获取包围盒,才能看到变没变

        print(bounds.center);
    }
}

后记

知道这些,其实就差不多了。

更详细的可以看这些:

(87条消息) Unity Bounds的理解_一梭键盘任平生的博客-优快云博客

(87条消息) 【Unity3D】绘制物体外框线条盒子_unity 绘制线框_little_fat_sheep的博客-优快云博客

总结的很好的:

[Unity插件]包围盒BoundBoxes插件以及相关文章 给 物体 GameObject 添加 BoundBox 插件,在 Game视图下,可以显示出包含 其子物体的包围盒。 新建一个 3D 物体,添加 组件,即可。 参考资料: 1. Bounds(包围盒)概述与AABB包围盒应用 2. Untiy网格编程篇(一)包围盒效果 3. 4. 阅读详情

相关推荐

【Unity】 计算并绘制模型包围盒

在Unity中,Bounding Box是一个用于包围游戏对象的虚拟框架。它是一个立方体或一个轴对齐的边界框,完全包围了游戏对象的几何形状。包围盒可以用于执行碰撞检测、触发器检测、可视化和性能优化等任务。

灵境引路人 1930

Unity的Bounds(包围盒)简记

包围盒算法是一种求解离散点集最优包围空间的方法。基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。最常见的包围盒算法有AABB包围盒(Axis-aligned bounding box),包围球(Sphere),方向包围盒OBB(Oriented bounding box),固定方向凸包FDH(Fixed directions hulls或k-DOP)。

天富儿的博客 1万+

Unity中实现OBB包围盒算法 Unity3D

然后,我们在物体的局部坐标空间中计算包围盒的顶点,并将其转换到世界坐标空间。要使用这个OBB包围盒,只需将物体放置在"OBBBox"物体的子物体中,并为子物体添加所需的Collider组件(例如BoxCollider、MeshCollider等)。OBB(Oriented Bounding Box)包围盒是一种用于包围物体的3D框架,它可以根据物体的旋转进行自适应调整,以便更好地包围物体。首先,我们需要明确的是,我们将使用Unity中的Collider组件来表示物体的包围盒。希望以上内容对你有所帮助。

IoqDelphi的博客 1488

Unity Bounds(包围盒)

Unity Bounds(包围盒)

明明明的博客 911

告别复杂编码!用GNURadio + VLC + USRP三步搞定无线视频“直播”(附ffmpeg转码命令)

本文介绍了一种基于GNURadio、VLC和USRP的无线视频传输方案,无需复杂编码即可实现实时视频传输。通过三步流程(工具准备、音频验证、视频传输)和ffmpeg转码命令,帮助用户快速搭建系统,适用于教学演示和原型开发。方案特别强调实时显示效果和带宽优化技巧。

weixin_31714129的博客 359

Warning-[INFL_DELTA] Too many events zero delay loop

项目场景: 运用VCS工具执行仿真的时候,遇到如下错误提示,但仿真还在继续。 Warning-[INFL_DELTA] Too many events Possible zero delay loop. Too many events in the simulation at time 0 fs. 问题描述: 为什么会有这个问题; 什么导致了这个问题; 原因分析: 1、为什么会有这个问题 由于竞争条件或编码风格不明确,可能会产生零延时回路,导致仿真挂起或仿真时间无限。 2、什么导致了这个问题 举

hh199203的博客 1万+

Unity内实现OBB包围盒算法

前言 作为碰撞盒的检测,OBB是一个常用的办法。网上有很多文章是介绍原理的,具体可以查一下。 以下给出OBB的Unity实现版本。亲测可跑。 参考 :www.tuicool.com/articles/IN… 效果 实现 基础:对象拥有BoxCollider控件(用作包围盒)和MeshRenderer控件(模型) 步骤:1.更新BoxCollider 2.更新AABB 更新BoxCollide...

weixin_33861800的博客 3504

STM32F103单片机驱动TM1637数码管显示模块

最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。 使用的单片机是STM32F103C8T6最小系统 使用的数码管模块是TM1637四位数码管显示模块 实际运行效果 下面先看一下TM1637和数码管连接的具体线路图 实际使用的模块没有带按键,只用了4个数码管,模块和单片机连接只需要4根线VCC、GND、CLK、DIO。芯片和单片机通信使用的是I2C总线,下面就来说一下如何...

HXYDJ的博客 1万+

❤️UNITY实战进阶-OBB包围盒详解-6

❤️UNITY实战进阶-三维AABB包围盒详解-6_欲望如海水,越喝越渴。-优快云博客前言 碰撞检测问题在虚拟现实、计算机辅助设计与制造、游戏、机器人等方面都有着广泛的应用,而包围盒算法是进行碰撞检测的重要方法之一。 而常见的包围盒有:AABB包围盒(Axis-aligned bounding box)包围球(Sphere)OBB包围盒(Oriented bounding box)凸包包围盒(Convex Hull)...在Unity中的Collider包含:介绍在游戏中,为了简化物体之间的碰...htt

欲望如海水,越喝越渴。 4200

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3501

open3d将某一时间序列下的彩色图和深度图批量转换成点云(python)

必备条件需要3D相机生成的彩色图及深度图,注意要将深度图与彩色图对齐(一般3D相机自带对齐算子),以及3D相机的彩色图内参(相机自带内参获取功能)。有了此彩色图、对齐后的深度图以及相机内参就能使用open3d生成彩色点云了.

吾名招财的博客 315

Unity 计算包围盒

unity 计算包围盒

qq_26318597的博客 1322

2025_NIPS_Grounded Reinforcement Learning for Visual Reasoning

尽管基于思维链的强化学习已在数学、编程等任务中显著提升语言模型性能,但视觉推理面临额外复杂性——需模型引导视觉注意力、解读感知输入,并将抽象推理锚定到空间证据上。本文提出ViGoRL(视觉接地强化学习),这是一种通过强化学习训练的视觉语言模型,能将每个推理步骤明确锚定到特定视觉坐标。受人类视觉决策启发,ViGoRL学会生成空间接地的推理轨迹,在每个步骤引导视觉注意力聚焦任务相关区域。当需要细粒度探索时,我们提出的多轮强化学习框架允许模型随着推理展开动态缩放至预测坐标。

c_cpp_csharp的专栏 59

【unity知识】unity使用AABB(轴对齐包围盒)和OBB(定向包围盒)优化碰撞检测

本文探讨了Unity游戏开发中的两种碰撞检测包围盒技术:AABB(轴对齐包围盒)和OBB(有向包围盒)。AABB作为基础技术,具有计算简单、性能高效的特点,通过Unity内置的Bounds结构体实现,但不考虑物体旋转。OBB则更精确,能随物体旋转/缩放变化,采用分离轴定理(SAT)进行相交检测,需自定义实现。文章详细介绍了两种包围盒的数学表示、Unity实现方案,并提供了具体代码示例,为开发者选择适合的碰撞检测方案提供了技术参考。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1810

大厂面试:字节跳动大数据面试题及参考答案(10万字长文及多张原理图持续更新)

在 Spark 中,宽窄依赖是用来描述 RDD(弹性分布式数据集)之间的依赖关系的概念。窄依赖是指父 RDD 的每个分区最多被一个子 RDD 的分区使用,即子 RDD 的分区可以通过确定的规则从父 RDD 的分区计算得到,并且不需要跨节点进行数据传输。窄依赖通常可以在一个节点上进行计算,不需要进行数据的 shuffle 操作,因此性能较高。宽依赖是指父 RDD 的一个分区可能被多个子 RDD 的分区使用,即子 RDD 的分区需要通过跨节点的数据 shuffle 操作从父 RDD 的多个分区获取数据。

大模型大数据攻城狮的专栏 1651

【nerfStudio】1-在windows上安装nerfStudio

安装Git。安装Visual Studio 2022。在安装CUDA之前必须完成此步骤。必须在“桌面开发与C++”工作流程(在BuildTools版本中称为“C++构建工具”)中包含所需的组件。Nerfstudio要求。我们建议使用conda来管理依赖关系。在继续之前,请确保安装了Conda。 依赖关系 PyTorch 请注意,如果安装了低于2.0.1的PyTorch版本,则应卸载先前版本的pytorch、functorch和tiny-cuda-nn。 基于CUDA 11.8的Torch 2.0.1 安装基

dlhlSC的博客 1692

unity中出现包围盒

unity中出现绿色包围盒,只需要在inspector中的add component中添加box collider就可以出现物体的碰撞包围盒,而且包围盒是比较贴合的自适应型的, 如有错误,请诸位多多指教...

WUYIDUER的博客 2427

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Unity 代码实现OBB包围盒

可以理解为有方向的包围盒。

ysn11111的博客 665

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Unity Bounds包围盒详细教程-图文帮助初学者理解-Chianr

Bounds 包围盒教程 助力快速理解 Unity Bounds 包围盒,及使用场景 为初学者节省宝贵的时间,避免采坑! Bounds ——包围盒的官方解释我就不做赘述,看得懂,会用的也不会到处找攻略。 1理解包围盒是什么; 2学习求出包围盒8个顶点; 3使用包围盒划线; AABB包围盒 是比较简单的一类包围盒,Bounds是 struct 结构体 优点:构造比较简单,存储空间小,计算速度快,包围盒相交测试简单 缺点:紧密性差,轴对齐的意思是无法将 bounds 进行轴旋转

Chinar优快云的博客 1万+

Unity中的Bounds(包围盒)的使用

center:边界盒的中心(世界坐标) extents:边界框的范围,总是size的一半 max:(世界坐标)边界盒的最大点,这个值总是等于center+extents min:(世界坐标)边界盒的最小点,这个值总是等于center - extents size:边界盒的总大小 Public Functions(公告函数): Encapsulate:重新计算最大最小点 Contains:可判断点是...

weixin_42977419的博客 1万+

【Unity实战技巧】教你4招计算UI物体的包围盒(Bounds)

使用Unity做UI的框选、对齐等功能时常用到包围盒(Bounds)的计算。如果UI在无旋转的情况下,只要知道UI的中心坐标和其大小(UI矩形宽高)就很容易计算出它的包围盒;一旦UI经过旋转之后,此时的包围盒的size并不等于该UI矩形的宽高,所以是需要经过一定的数学运算才能求出此时包围盒的size。本人在实际开发过程中,总结了4种Unity中如何计算UI物体的包围盒的方法(分有无旋转两种情况),详见博客内容。......

他在试图用代码书写这个世界,字里行间温柔尽显。勿忘初心,努力做有价值的技术文章。 3748

unity 获取物体的AABB包围盒,并根据包围盒自动创建碰撞盒

以上代码传入一个gameobject,返回一个这个gameobject下所有物体的共同的最小包围盒。根据包围盒创建碰撞盒。

吴梓穆的博客 986

unity使用顶点偏移shader后物体包围盒中心点的偏移

unity使用顶点偏移shader后物体包围盒位置的偏移 这里只做一下笔记,总结。 顶点偏移shader主要是将游戏中的点在经过一系列坐标转化过程中所做的偏移的shader。 有2种做法,要么在观察坐标系偏移,要么在其次坐标系偏移。 假如在开发一个跑酷游戏,游戏的跑道是一个纵深弯曲的曲面,上面有各种金币,道具。 虽然说金币及道具顶点实现了偏移,但包围盒不会,所以还得再项目里实现位置坐标转...

C_yuxuan的博客 1652

unity 在Game视图绘制一个物体的包围盒。

关于物体边界包围盒的绘制

weixin_44556485的博客 330

Unity 网格编程立方体线框,包围盒,

项目需要一个可以任意大小的包围盒,有shader可以直接实现,但是注意是任意大小, 这个shader一旦进行缩放就会有拉伸, 尝试过算上缩放值,可是由于UV的不规则性,,一直无法达到满意的效果,所以用脚本编网格的方式实现了 shader代码如下 Shader "JaffHan/Wireframe" { Properties { _Color("Color",Color)=(1.0

习惯冬天的静谧 1554
上一篇: box的符号距离函数
下一篇: VS2019同时编辑多行
averagePerson
博客等级 码龄5年 381粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值