public static Bounds CalculateBounds (Vector3[] positions, Matrix4x4 transform);

参数

positions存储 3D 位置所在位置的数组。
transform用于更改包围盒计算位置、旋转和大小的矩阵。

返回

Bounds 计算轴对齐的包围盒。

描述

根据给定的 positions 数组和变换矩阵计算包围盒。

GeometryUtility.CalculateBounds 生成一个 Bounds 包围盒。positions 参数存储一个 3D 点数组。每个点都位于生成的轴对齐包围盒内。transform 参数提供了一个变换 Matrix4x4,其中使用 Vector3 位置、四元数旋转和 Vector3 缩放。

以下示例显示了如何使用 CalculateBounds。一个 LightProbeGrouppositions 传入 CalculateBounds。示例代码使用八个光照探针创建一个包围盒。默认情况下,光照探针距单位立方体每个角为一个单位。

要运行该示例,请执行以下操作:
1.创建一个项目并添加一个名为 GameObjectGameObject
2.添加一个 3D 立方体作为 GameObject 的子项并将其命名为 Cube
3.将一个 LightProbeGroup 组件添加到 Cube
4.将以下脚本添加到 Cube
5.运行 Project 并切回到 Scene 视图。

Scene 视图中,您可以看到 LightProbeGroup。当游戏运行时,旋转在 Awake 中变化。八个黄色球体指示 LightProbeGroup 改变位置,Cube 显示为旋转。Scene 模式显示 Cube 在 x、y 和 z 轴上旋转,并显示在本地工具手柄中。旋转 Cube 会改变八个 LightProbeGroup 光照探针的位置。Scene 模式进行旋转并缩放以显示光照探针。此外,Cube 也旋转且 LightProbeGroup 进行更新。如果重新缩放 /Cube/,LightProbeGroup 将改变大小。

using UnityEngine;
using System.Collections;

// GeometryUtility.CalculateBounds - example

public class Example : MonoBehaviour { void Awake() { transform.position = new Vector3(0.0f, 0.0f, 0.0f); transform.Rotate(10.0f, 30.0f, -50.0f, Space.Self);

Debug.Log(transform.localToWorldMatrix); }

void OnDrawGizmosSelected() { LightProbeGroup lightProbeGroup = GetComponent<LightProbeGroup>();

Vector3 center = transform.position; Bounds bounds = GeometryUtility.CalculateBounds(lightProbeGroup.probePositions, transform.localToWorldMatrix); Gizmos.color = new Color(1, 1, 1, 0.25f); Gizmos.DrawCube(center, bounds.size); Gizmos.DrawWireCube(center, bounds.size); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961