图解流程
flowchart TB
subgraph 3D Texture Atlas
A["<b>3D Texture Position</b><br/>生成位置 Atlas 贴图"]
B["<b>3D Volume Mask</b><br/>定义体积形状<br/>(可选Cube/Cylinder/Sphere)"]
C["<b>3D Perlin Noise</b><br/>3D 柏林噪波"]
D["<b>3D Texture SDF</b><br/>转到SDF"]
A --> B
A --> C
B --> D
Z[这些节点的纹理都是用 3D Texture Atlas 表示]
end
D --> E["<b>3D Texture Volume Render</b>"]
C --> E
各节点的数据定义
3D Texture Position
存储每个体素的位置坐标:
R = x / sizeX
G = y / sizeY
B = z / sizeZ3D Volume Mask
这个节点的输出应该是以离散切片的方式表达几何形状,但理论上直接使用 0/1 bitmask 就足以表达了,但现实是输出是呈现从前后向中心渐变的。目前不太理解这个渐变是何意味,使用 Levels 抹掉渐变或直接用 Tile Generator 替换这个节点一样能达成效果。
3D Texture SDF
存储体素到物体表面的最近距离,并且是有符号的:
内部 = 负数
表面 = 0
外部 = 正数然后 remap 到 0~1 存储到纹理中。