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

CommandBuffer.SetViewMatrix

Объявление

public void SetViewMatrix(Matrix4x4 view);

Параметры

view Матрица просмотра (от мира до камеры).

Описание

Добавьте команду для установки матрицы представления. Матрица просмотра — это матрица, которая трансформируется из мирового пространства в пространство камеры.

При настройке матрицы просмотра и проекции более эффективно использовать SetViewProjectionMatrices.

Примечание. Пространство камеры в Unity соответствует соглашению OpenGL, поэтому отрицательная ось Z направлена камерой вперед. Это отличается от обычного соглашения Unity, где передняя часть камеры является положительной осью Z. Если вы вручную создаете матрицу представления, например, с помощью обратной Matrix4x4.LookAt, вам необходимо масштабировать ее на -1 по оси Z, чтобы получить правильное просмотреть матрицу.

using UnityEngine; using UnityEngine.Rendering; // Attach this script to a Camera and pick a mesh to render. // When you enter Play mode, a command buffer renders a green mesh at // origin position. [RequireComponent(typeof(Camera))] public class ExampleScript : MonoBehaviour { public Mesh mesh; void Start() { var material = new Material(Shader.Find("Hidden/Internal-Colored")); material.SetColor("_Color", Color.green); var tr = transform; var camera = GetComponent<Camera>(); // Code below does the same as what camera.worldToCameraMatrix would do. Doing // it "manually" here to illustrate how a view matrix is constructed. // // Matrix that looks from camera's position, along the forward axis. var lookMatrix = Matrix4x4.LookAt(tr.position, tr.position + tr.forward, tr.up); // Matrix that mirrors along Z axis, to match the camera space convention. var scaleMatrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, new Vector3(1, 1, -1)); // Final view matrix is inverse of the LookAt matrix, and then mirrored along Z. var viewMatrix = scaleMatrix * lookMatrix.inverse; var buffer = new CommandBuffer(); buffer.SetViewMatrix(viewMatrix); buffer.SetProjectionMatrix(camera.projectionMatrix); buffer.DrawMesh(mesh, Matrix4x4.identity, material); camera.AddCommandBuffer(CameraEvent.BeforeSkybox, buffer); } }

Смотрите так же: SetProjectionMatrix, SetViewProjectionMatrices, Camera.worldToCameraMatrix, Matrix4x4.LookAt.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3