Handles.DrawTexture3DSDF
Declaration
public static void DrawTexture3DSDF(Texture texture, float stepScale = 1.0f, float surfaceOffset = 0.0f, Gradient customColorRamp = null);Параметры
| Параметр | Описание |
|---|---|
| текстура | Объемная текстура для рисования. |
| stepScale | Число, на которое умножается размер шага луча. Размер шага луча — это расстояние между двумя соседними пикселями. Значение по умолчанию — 1. |
| surfaceOffset | Интенсивность пикселей, в которой отображается поверхность. Когда это значение положительное, Unity расширит отображаемую поверхность. Когда это значение отрицательное, Unity отобразит пустое пространство как поверхность, а поверхность как пустое пространство. Значение по умолчанию 0. |
| customColorRamp | Настраиваемый градиент, Unity используется в качестве цветовой рампы. Если это не указано, Unity использования Цветовая рампа Google Turbo. |
Описание
Рисует текстуру 3D с использованием режима отображения Поля Знакового Расстояния в пространстве 3D.
Этот режим визуализации поддерживает только ненаправленные поля расстояния со знаком.
Коридор SDF визуализирован с помощью цветовой рампы Google Turbo.
using UnityEditor; using UnityEngine;
[ExecuteInEditMode] public class Reference : MonoBehaviour { public Texture3D texture; public float stepScale = 1; public float surfaceOffset; public bool useCustomColorRamp;
// We should initialize this gradient before using it as a custom color ramp public Gradient customColorRampGradient; }
[CanEditMultipleObjects] [CustomEditor(typeof(Reference))] public class Handle : Editor { private void OnSceneViewGUI(SceneView sv) { Object[] objects = targets; foreach (var obj in objects) { Reference reference = obj as Reference; if (reference != null && reference.texture != null) { Handles.matrix = reference.transform.localToWorldMatrix; Handles.DrawTexture3DSDF(reference.texture, reference.stepScale, reference.surfaceOffset, reference.useCustomColorRamp ? reference.customColorRampGradient : null); } } }
void OnEnable() { SceneView.duringSceneGui += OnSceneViewGUI; }
void OnDisable() { SceneView.duringSceneGui -= OnSceneViewGUI; } }
Дополнительные ресурсы: ,Handles.DrawTexture3DSlice,, ,Handles.DrawTexture3DVolume,, ,Texture3D,, ,Gradient,.