texture3D
texture3D
在指定的三维坐标(XYZ)处从一个3D纹理数据体中采样一个数据值(如颜色、密度),从而能够渲染具有内部结构的体积现象。
核心优势
它通过允许着色器查询一个空间内部的属性(而不仅仅是表面),来实现真正的体积渲染(如云、烟、火)和实体程序化材质(如大理石)。
常见用途
体积云、烟雾或星云渲染
医学与科学数据可视化 (MRI, CT)
具有内部纹理的实体程序化材质(如大理石、木纹)
如何调整
通过变换三维采样坐标(`uvNode`)进行调整。要改变体积内特征的大小,可将坐标输入乘以一个系数(如 `positionLocal.mul(0.5)`)。要对体积进行动画,可将一个基于时间的向量加到坐标上(如 `positionLocal.add(vec3(0, timerLocal(), 0))`)以创造流动或演变的效果。
代码示例
1
2// 使用物体的局部坐标采样3D纹理,使材质如同从数据体中雕刻而成
3const noise = texture3D( myVolumeTexture, positionLocal );
4
5// 对采样坐标进行动画,以创建流动的雾效
6const animatedPos = positionLocal.add( vec3( 0, timerLocal( -0.1 ), 0 ) );
7const flowingFog = texture3D( myVolumeTexture, animatedPos );