版本:Unity 6 (6000.0)
语言简体中文
  • C#

Handles.DrawTexture3DVolume

提出更改建议

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们不能接受所有提交,但我们会阅读来自我们用户的所有建议更改,并在适用的情况下进行更新。

关闭

提交失败

出于某种原因,无法提交您建议的更改。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void DrawTexture3DVolume(纹理 texture, float opacity = 1.0f, float qualityModifier = 1.0f, 过滤模式 filterMode = FilterMode.Bilinear, bool useColorRamp = false, 渐变 customColorRamp = null);

参数

texture 要绘制的体积纹理。
opacity 非线性的体积不透明度修改器。使用此修改器控制可视化效果的不透明度。有效值为 0-1(包括 0 和 1)。值为 1 表示完全不透明,而值为 0 表示完全透明。默认值为 1。
qualityModifier 设置每个纹理像素的采样数量。值越大,渲染质量越高。默认值为 1。
filterMode 设置要使用的纹理滤镜模式。
useColorRamp 启用色阶可视化。
customColorRamp Unity 用作色阶的自定义渐变。如果未指定,Unity 将使用 Google Turbo 色阶

描述

在 3D 空间中使用体积渲染模式绘制 3D 纹理。


使用渐变渲染的茶壶,该渐变具有透明的黑色轮廓。


应用了火焰渐变的噪音体积。

using UnityEditor;
using UnityEngine;

[ExecuteInEditMode] public class Reference : MonoBehaviour { public Texture3D texture; public float alpha = 1; public float quality = 1; public FilterMode filterMode; public bool useColorRamp; 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.DrawTexture3DVolume(reference.texture, reference.alpha, reference.quality, reference.filterMode, reference.useColorRamp, reference.useCustomColorRamp ? reference.customColorRampGradient : null); } } }

void OnEnable() { SceneView.duringSceneGui += OnSceneViewGUI; }

void OnDisable() { SceneView.duringSceneGui -= OnSceneViewGUI; } }