Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

GeometryUtility.CalculateBounds

Объявление

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

Параметры

positions Массив, в котором хранится расположение трехмерных позиций.
transform Матрица, меняющая положение, поворот и размер расчета границ.

Возвращает

Bounds Вычисляет выровненный по оси ограничивающий прямоугольник.

Описание

Рассчитывает ограничивающую рамку из заданного массива позиций и матрицы преобразования.

GeometryUtility.CalculateBounds создает ограничивающую рамку Границы. Параметр positions хранит массив трехмерных точек. Каждая точка находится внутри сгенерированного выровненного по осям ограничивающего прямоугольника. Параметр transform обеспечивает преобразование Matrix4x4, в котором используется положение Vector3, вращение кватерниона и масштабирование Vector3.

В приведенном ниже примере показано, как использовать CalculateBounds. Группа LightProbeGroup передает positions в CalculateBounds. Пример кода создает ограничивающую рамку с восемью Light Probes. По умолчанию световые зонды располагаются по одной единице от каждого угла единичного куба.

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

  1. Create a Project and add an empty GameObject called GameObject.
  2. Add a 3D cube as a child of GameObject and call it Cube.
  3. Add a LightProbeGroup component to Cube.
  4. Add the script below to Cube.
  5. Run the Project and switch back to the Scene view.

В представлении Scene вы можете увидеть LightProbeGroup. Когда игра запускается, поворот меняется в Awake. Восемь желтых сфер, обозначающих LightProbeGroup, меняют положение, и куб кажется повернутым. В режиме 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); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3