Unity函数可以立即从3D管道访问2D盒子吗?

2024-02-15

在 Unity 中,假设你有一个 3D 对象,

当然,获得 AABB 很简单,Unity 有直接的函数,

(您可能必须以通常的方式“添加渲染器的所有边界框”,没有问题。)

因此,Unity 确实有一个直接功能,可以在每一帧的内部网格/渲染管道之外立即为您提供 3D AABB 框。

现在,对于所讨论的相机,按照定位,AABB 确实覆盖了某个 2D 边界框......

事实上...是否有某种内置的直接方法可以在 Unity 中找到橙色 2D 框?

问题 - Unity 是否有一个函数可以立即从管道中给出 2D 平截头体盒?

(请注意,要手动执行此操作,您只需为 AABB 的 8 个点制作光线(或使用世界来屏幕空间,如 Draco 提到的,相同);将它们封装在 2D 中以制作橙色框。)

我不需要手动解决方案,我问引擎是否每帧都以某种方式从管道中提供此解决方案?

有电话吗?

(确实,如果有这个就更好了……)

我的感觉是其中一个或全部

  • 特别是闭塞系统
  • 着色器
  • 渲染器

肯定会知道橙色框,甚至可能知道图形卡上管道内的蓝色框,就像它知道给定网格的 AABB 一样。

我们知道 Unity 可以让您在给定网格的每一帧立即点击 AABB 3D 框:事实上,Unity 是否给出了如此处所示的“2D 平截头体边界”?


据我所知,没有built in为了这。

然而,自己找到极端确实很容易。获取网格物体的边界框(屏幕截图中显示的长方体)就是这样做的,您只需在变换后的空间中进行即可。

  1. 循环遍历网格的所有顶点,执行以下操作:
  2. 转换 https://docs.unity3d.com/ScriptReference/Transform.TransformPoint.html从本地空间到世界空间的点(这处理缩放和旋转)
  3. 转换 https://docs.unity3d.com/ScriptReference/Camera.WorldToScreenPoint.html从世界空间到屏幕空间的点
  4. 确定新点的 X 和 Y 是否高于/低于存储的最小/最大值,如果是,则用新值更新存储的最小/最大值
  5. 循环完所有顶点后,您将得到 4 个值:min-X、min-Y、max-X 和 max-Y。现在您可以构建边界矩形

您可能还希望首先执行礼品包装 https://stackoverflow.com/questions/18416861/how-to-find-convex-hull-in-a-3-dimensional-space首先对模型进行分析,并且仅处理生成的凸包(因为不属于凸包的任何点都不会位于凸包的边界之外)。如果您打算在模型在屏幕上移动、缩放或旋转时绘制此屏幕空间矩形,并且必须重新计算边界框,那么您将需要执行此操作并缓存结果。

请注意,这确实not如果模型有效animates(例如,如果您的人形机器人站起来并进行开合跳)。求解动画情况要困难得多,因为您必须将每个动画的每一帧视为原始网格体的一部分,以便进行凸包求解(以确保您的动画不会移动网格体的一部分)在凸包之外),通过幂增加复杂性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity函数可以立即从3D管道访问2D盒子吗? 的相关文章

  • 如何在Unity中使用MediaCapture类访问相机预览帧?

    我正在尝试在 Unity 应用程序的脚本中访问 Hololens 的相机预览帧 但遇到一些问题 我想使用 MediaCapture 类访问相机预览 我知道它可以在 UWP 应用程序中实现 但我想在 Unity 中实现 在 UWP 应用程序中
  • Unity构建错误

    所以我制作了我的游戏并尝试构建它 我收到一些对我来说毫无意义的错误 这是错误 UnityEditor BuildPlayerWindow BuildMethodException 2 个错误 在 UnityEditor BuildPlaye
  • 在无头模式下独立运行 Unity,同时捕获屏幕截图

    我需要创建一个在无头模式下运行的统一项目 使用 batchmode 命令 但它必须捕获屏幕截图 例如每一秒并将它们写到一个文件中 我知道在无头模式下 您需要强制调用 Camera Render 才能渲染任何内容 在捕获第一个屏幕截图后 时间
  • 为什么宇宙飞船与盒子对撞机相撞后不再回头?

    我希望当发生碰撞时将宇宙飞船转回来 但他们继续前进 开箱即用的对撞机和地形 使克隆船在碰撞时我想返回的脚本 using System using UnityEngine using Random UnityEngine Random usi
  • 由于对象的当前状态,操作无效 - Linq on List

    对列表运行 Linq 查询时会引发此错误 我使用 Unity3D 3 0 和 C Unity3D 使用 Mono 2 6 据我所知 Unity3D是单线程的 它的工作原理是将继承基类的 脚本 c cs 文件 附加到 GameObject 此
  • Unity3D:在 AA 解析后绘制粒子以提高性能

    我正在尝试评估 MSAA 对 Unity 中含有大量粒子的场景的影响 为此 我需要 使用 8x MSAA 绘制场景中的所有非粒子对象 使用上一个通道中解析的深度缓冲区来渲染所有 将非遮挡粒子系统转移到较小的渲染目标上 将 2 的颜色缓冲区与
  • Unity InputField OnValueChanged事件显示InputField.text少一个字符

    我有一个InputField我用它作为搜索栏 我无法自动搜索OnValueChanged因为最初 文本字段将是 现在如果我输入任何字符a the inputField text还是 代替a因此 在添加下一个字符之前不会进行搜索 有没有办法在
  • 投影 3D 网格的 2D 轮廓算法

    给定 一个 3D 网格 由一组顶点和三角形定义 并用这些点构建网格 问题 找到任意平面上投影的任意旋转网格的二维轮廓 投影很容易 挑战在于找到平面中投影三角形边的 外壳 我需要一些有关研究该算法的输入 指针的帮助 为简单起见 我们可以假设
  • Unity-3d-5 将 16:9 的图像缩放至其他分辨率

    所以我创建了一个蛇游戏 其边框是用 2d 精灵创建的 我将游戏窗口设置为 16 9 在此分辨率下图像看起来不错 然而 扩展到其他任何东西开始让游戏看起来很奇怪 我想要调整游戏窗口的大小 如何让我的精灵根据当前分辨率拉伸和收缩 我已经尝试创建
  • 使用 GitHub 时防止将大文本文件添加到提交

    我们想要防止 非常大的文本文件 每个文件 gt 50MB 被提交到git代替git lfs 因为它们夸大了 git 历史 问题是 其中 99 大小差异的原因 这些是 YAML 文件 它们支持通过 Base64 编码进行二进制序列化 我们无法
  • UV 展开运行时优化

    我正在尝试在运行时创建 UV 我使用 BOX 类型 UV 类似于 3ds max 中的 BOX UVW 并基于面方向进行计算 我知道将其创建为运行时不是一个好的选择 但我别无选择 它是在计算后保存的 所以我做了一次 但我花了 40 秒处理
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • 在我的 Unity 应用程序中检测来电

    我试图让我的游戏在接到电话时暂停 我想知道我使用的任何函数是否可以做到这一点 我在我的源代码中使用了它们 但它们都不起作用 void OnApplicationPause bool paused if paused true if isPa
  • CSS3DObject 始终位于 WebGL Mesh 前面

    我正在混合CSS3D Renderer with WebGL Renderer to add HTML3D 空间中的元素WebGL场景 这CSS3DObject在前面WebGL网格即使WebGL Renderer具有较高的 z index
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 在浏览器中以低延迟捕获声音输入

    是否可以在浏览器中捕获低延迟的声音输入 主要用于录制吉他 我知道这也取决于硬件 但我们假设硬件足够好 我尝试使用 Web Audio API 但它的延迟有点糟糕 是否还有其他技术可以在浏览器中提供高性能的声音输入捕获 可以使用Unity3D
  • 如何将平面上的 3D 点转换为 UV 坐标?

    我有一个 3d 点 定义为 x0 y0 z0 该点属于一个平面 定义为 a b c d normal a b c and ax by cz d 0 如何将 3d 点转换或映射为一对 u v 坐标 这一定是非常简单的事情 但我无法弄清楚 首先
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • 在unity3D中显示数学方程

    我想使用它的 GUI 系统统一显示数学方程 有办法吗 我正在使用 C 语言在 Unity 中进行编程 如果我还可以使用 C 代码显示数学符号 这对我来说会很有用 谢谢 自 2016 年起 您可以使用TEXDraw https assetst

随机推荐

  • 在SQL中查找最长的连续递增数字序列

    对于这个例子 假设我有一个包含两个字段的表 AREA varchar 30 and OrderNumber INT 该表有以下数据 AREA OrderNumber Fontana 32 Fontana 42 Fontana 76 Font
  • 跟踪编译器中 AST 节点的源位置 (ocaml)

    我正在使用 ocamllex yacc 在 ocaml 中编写编译器 一切进展顺利 但我遇到了设计问题 对于我创建的每个 AST 节点 最好能获得有关源代码中该节点的行 字符位置的信息 这对于稍后向用户提供错误消息很有用 现在 我可以向我的
  • kubectl 无法连接到服务器:x509:由未知机构签名的证书

    我在一台机器 Windows 上运行 kubectl 时遇到错误 k8s集群运行在CentOs 7 kubernetes cluster 1 7上 师傅 工人 这是我的 kube config apiVersion v1 clusters
  • Chrome 移动设备上的字体问题,字体大小呈现得更大

    我在使用 Chrome 移动设备时遇到问题 某些文本的字体大小比 CSS 中的字体大小大 我检查了开发人员工具 发现这些文本继承了正确的字体大小 但在计算样式中仍然渲染了 5px 大 我找到这个帖子修复 Mobile Safari iPho
  • mongodb - 查找具有最接近整数值的文档

    假设我有一个文档集合 其比率属性是浮点数 ratio 1 437 如何编写一个查询来查找与给定整数最接近的值的单个文档 而不使用驱动程序将它们全部加载到内存中并找到具有最小值的文档abs x ratio 有趣的问题 我不知道你是否可以在单个
  • 将 data.table 聚合到原始值间隔的行

    我有一些data table金额列如下 n 1e5 set seed 1 dt lt data table id 1 n amount pmax 0 rnorm n mean 5e3 sd 1e4 给出的中断向量如下 breaks lt a
  • 在数组中查找与另一种颜色最接近的颜色的最佳算法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Ionic / Bower / cordova - 忽略构建文件

    我的项目结构如下 MyApp hooks platforms android ios www js css templates lib including all bower components 眼下 www lib目录正在占用21 8
  • 离线 3D 交互式饼图

    我想构建一个 3D 交互式饼图 首先我使用谷歌图表 但不幸的是这不能离线工作 我使用了 jpgraph jscharts 和 rgraph 中的图表 但没有达到我想要的效果 我想要一个图表 它必须是免费的 可以离线工作 并且与谷歌图表具有大
  • 通过 UILabel 文本的第一行将图像居中

    我想将图像居中到 UILabel 文本第一行的 Y 位置中心 我使用砌体来设置自动布局约束 如下所示 haveReadIndicatorImgView mas makeConstraints MASConstraintMaker make
  • 没有 Spring 的 Spring JDBC 模板

    是否有像 Spring JDBC Template 这样的 Java 库 具有相同质量的代码和文档以及类似的数据访问异常层次结构 但不依赖于其他 Spring 模块 根据 core beans context 模块http mvnrepos
  • java程序要求用户输入第二大和最大的数字

    java program that asks user to input a number and print the 1st and 2nd largest numbers import java util Scanner public
  • 类型双关语与联盟成员访问

    按照这个https stackoverflow com a 1812932 1814023 https stackoverflow com a 1812932 1814023 writing one member of union and
  • PHP 将 JSON 数据从 Android 插入 MySQL 数据库

    我有一个 Android 应用程序 它通过 HTTP POST 方法将数据发送到 PHP 脚本 并尝试解析数据以存储到 MySQL 中 Android 应用程序不是我编写的 但我可以访问下面包含的源代码 它发送打包为 JSON 数组的数据
  • 注解:通过注解限制对类的引用

    我认为这是不可能的 但也许我错了 所以我问你 是否可以 如果我定义一个仅接受扩展某些接口或类的类引用的注释 这是可能的 Class
  • 如何模拟第三方React Native NativeModules?

    组件正在导入包含本机模块的库 这是一个人为的例子 import React from react import View from react native import Answers from react native fabric e
  • foreach 中的 Stringbuilder 比 for 和 String.Join() 中的 Stringbuilder 在集合上更糟糕?

    在这里看到一个关于连接字符串的问题 我做了一些测试 并了解到在 foreach 中连接字符串比使用 for 循环和使用数组中的索引要慢 由于对数组进行边界检查 for 循环不应该更慢吗 对 strings i 进行边界检查 foreach
  • 将框架转换为库

    我想在 iOS 应用程序中使用下面链接中找到的框架 我让它在模拟器中工作 但经过一番挖掘后 您似乎无法在设备上使用框架 尤其是通过 App Store 分发时 如果我错了 请纠正我 https github com mirek YAML f
  • 提交后,信息应发送至电子邮件[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的网页上有一个 查询 选项卡 查询选项卡包含以下信息 Name Email Number Details 单击 提交 按钮后 上述详细信息
  • Unity函数可以立即从3D管道访问2D盒子吗?

    在 Unity 中 假设你有一个 3D 对象 当然 获得 AABB 很简单 Unity 有直接的函数 您可能必须以通常的方式 添加渲染器的所有边界框 没有问题 因此 Unity 确实有一个直接功能 可以在每一帧的内部网格 渲染管道之外立即为