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

Matrix4x4.MultiplyPoint3x4

Объявление

public Vector3 MultiplyPoint3x4(Vector3 point);

Описание

Преобразует позицию по этой матрице (быстро).

Возвращает позицию v, преобразованную текущей матрицей преобразования. Эта функция является более быстрой версией MultiplyPoint; но он может обрабатывать только обычные 3D-преобразования. MultiplyPoint работает медленнее, но также может обрабатывать проективные преобразования.

Смотрите так же: MultiplyPoint, MultiplyVector.

using UnityEngine; public class ExampleScript : MonoBehaviour { // Растягиваем сетку под произвольным углом вокруг оси X. // Угол и величина растяжения. float rotAngle; float stretch; MeshFilter mf; Vector3[] origVerts; Vector3[] newVerts; void Start() { // Получить компонент фильтра Mesh, сохранить исходные вершины // и делаем новый массив вершин для обработки. mf = GetComponent< MeshFilter > (); origVerts = mf.mesh.vertices; newVerts = new Vector3[origVerts.Length]; } void Update() { // Создать матрицу вращения из Quaternion. Quaternion rot = Quaternion.Euler(rotAngle, 0, 0); Matrix4x4 m = Matrix4x4.TRS(Vector3.zero, rot, Vector3.one); // Получить обратную матрицу (т.е. отменить поворот). Matrix4x4 inv = m.inverse; // Для каждой вершины... for (var i = 0; i < origVerts.Length; i++) { // Повернуть вершину и масштабировать ее вдоль новой оси Y. var pt = m.MultiplyPoint3x4(origVerts[i]); pt.y *= stretch; // Вернуть вершине исходное вращение (но с // масштабирование все еще применяется). newVerts[i] = inv.MultiplyPoint3x4(pt); } // Скопируйте преобразованные вершины обратно в меш. mf.mesh.vertices = newVerts; } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3