GeometryUtility.CalculateBounds
Declaration
public static Bounds CalculateBounds(Vector3[] positions, Matrix4x4 transform);Параметры
| Параметр | Описание |
|---|---|
| должностей | Массив, в котором хранится расположение трехмерных позиций. |
| преобразование | Матрица, которая изменяет положение, вращение и размер вычисления границ. |
Возвращаемое значение
Границы Рассчитывает предельный блок, выравниваемый по оси.
Описание
Вычисляет границу из заданного массива positions и матрицы преобразования.
GeometryUtility.CalculateBounds генерирует а Bounds Параметр positions хранит массив трехмерных точек. Каждая точка находится внутри генерируемого выравниваемого по оси граничного поля. Параметр transform обеспечивает преобразование Matrix4x4 который использует Vector3 положение, вращение кватерниона и Vector3 шкала.
Приведенный ниже пример показывает как использовать CalculateBounds. A LightProbeGroup пропусков positions в CalculateBounds. Примерный код создает границу с восемью светочувствительными зондами. По умолчанию светочувствительные зонды являются одним элементом из каждого угла кубика единиц.
Чтобы запустить пример:
- Создайте Project и добавьте пустой GameObject, названный
GameObject. - Добавьте куб 3D как дочерний куб
GameObjectи назвайте егоCube. - Добавить компонент LightProbeGroup в
Cube. - Добавьте скрипт ниже к
Cube. - Запустите
Projectи переключитесь обратно на видScene.
В представлении Scene виден LightProbeGroup. Во время игры вращение изменяется в Awake. Восемь жёлтых сфер, обозначающих LightProbeGroup, меняют положение, а Cube выглядит повёрнутым. Режим Scene показывает Cube, повёрнутый по осям x, y и z, и отображает его в Local tool handle. Вращение Cube изменяет положения восьми LightProbeGroup Light Probes. Режим Scene поворачивает и масштабирует вид так, чтобы показать Light Probes. Кроме того, 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); } }