Unity 6.3
0 онлайн 0 гостей 3 в системе
Вход

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. Примерный код создает границу с восемью светочувствительными зондами. По умолчанию светочувствительные зонды являются одним элементом из каждого угла кубика единиц.

Чтобы запустить пример:

  1. Создайте Project и добавьте пустой GameObject, названный GameObject.
  2. Добавьте куб 3D как дочерний куб GameObject и назвайте его Cube.
  3. Добавить компонент LightProbeGroup в Cube.
  4. Добавьте скрипт ниже к Cube.
  5. Запустите 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); } }