正文
这是一篇没有什么好说的文章,来自于各方引用,我只是把他们拼起来让大家更快的知道如何完成这样的操作。
- 在 Houdini 生成自定义的 3D Volume Texture
- UE4 中 3D Volume Texture 生成距离场
一、生成 3D Volume Texture
在 Houdini 中使用自定义模型生成满意的云形态。
确保安装了 GameDevTool
建立节点 rop_volume_texture
节点设置好自己想要输出的图像大小,并打开 Preview
检查结果。
二、UE4 采样体积纹理
以下就是来自Ryan 的内容。使用这段代码在 custom
中即可 raymarch 我们输出的体积纹理。
float numFrames = XYFrames * XYFrames;
float accumdist = 0;
float3 localcamvec = normalize( mul( CamVec, GetPrimitiveData(Parameters.PrimitiveId).WorldToLocal));
float StepSize = 1 / MaxSteps;
for (int i = 0; i < MaxSteps; i++)
{
float cursample = PseudoVolumeTexture(Tex, TexSampler, saturate(CurPos), XYFrames, numFrames).r;
accumdist += cursample * StepSize;
CurPos += -localcamvec * StepSize;
}
return accumdist;
- 节点连接
这段代码在 4.22 后有效,主要的问题是
localcamvec
变量后面转换为 local 空间的操作这一步在 4.22 后可用。 4.22 之前请输入
float3 localcamvec = normalize( mul(Parameters.CameraVector, Primitive.WorldToLocal) );