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

AssetPostprocessor.OnPreprocessCameraDescription(CameraDescription,Camera, AnimationClip[])

Параметры

Параметр Описание
описание CameraDescription, который описывает импортированные свойства камеры и анимации.
камера Камера, созданная импортером моделей.
анимации Клипы анимации, созданные импортером моделей.

Описание

Добавьте эту функцию в подкласс, чтобы получать уведомление при импорте камеры из Импортера моделей.

Unity вызывает эту функцию только тогда, когда ModelImporter.importCameras является true. Эта функция позволяет вам управлять свойствами камеры и анимацией во время процесса импорта модели. Структура CameraDescription содержит все данные камеры из импортированного файла. Вы можете использовать ее для заполнения камеры, ее GameObject и анимационных клипов.

// The following code example shows how Unity uses this function to set up a perspective camera from an imported FBX file.

using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEditor.AssetImporters;

public class SetupCameraFromCameraDescription : AssetPostprocessor { // Increment the version number, when the AssetPostprocessors code/behavior is changed static readonly uint k_Version = 0; public override uint GetVersion() { return k_Version; }

void OnPreprocessCameraDescription(CameraDescription description, Camera camera, AnimationClip[] clips) { var modelImporter = assetImporter as ModelImporter; var globalScale = modelImporter.globalScale;

description.TryGetProperty("NearPlane", out float nearPlane); description.TryGetProperty("FarPlane", out float farPlane); description.TryGetProperty("ApertureMode", out int apertureMode); description.TryGetProperty("FilmWidth", out float filmWidth); description.TryGetProperty("FilmHeight", out float filmHeight); description.TryGetProperty("FocalLength", out float focalLength);

if (nearPlane >= 0) camera.nearClipPlane = nearPlane * globalScale; if (farPlane >= 0) camera.farClipPlane = farPlane * globalScale;

float fov = 0; switch (apertureMode) { case 0: description.TryGetProperty("FieldOfViewY", out fov); camera.fieldOfView = fov; break; case 1: description.TryGetProperty("FieldOfView", out float alphaH); alphaH /= 2; float focal = (filmWidth * 25.4f) / 2 / Mathf.Tan(alphaH * Mathf.Deg2Rad); float alphaV = Mathf.Atan((filmHeight * 25.4f) / 2 / focal) * Mathf.Rad2Deg; camera.fieldOfView = alphaV * 2; break; case 2: description.TryGetProperty("FieldOfView", out fov); camera.fieldOfView = fov; break; case 3:

if (focalLength != .0f) { float apertureWidth = filmHeight * 25.4f; fov = Mathf.Atan((apertureWidth / focalLength) * 0.5f) * 2.0f * Mathf.Rad2Deg; } break; }

camera.fieldOfView = fov; } }