步骤
参考RuiHuang_art在b站的教学视频
- world property: 加入一个太空背景的贴图
- 光源:改成sun light
- strength改成12: 单位是 $W/m^2$
- volume改成3: 控制在volume shader时的影响?
- render: 用eevee
- 设置volumetrics参数
- 打开volumetric shadows
- start, end: 相对相机的体积效果范围, 设为(3.3m->200m)
- tile size: volume块大小
- 设置volumetrics参数
- shader:
- 用principled volume : 把mesh包含的部分看成volume块
- color:
- 用texture Coordinate 生成volume的坐标
- Image Texture 把2d的木星贴图映射到3d的volume上
- 用Hue/Saturation/Value Node 调颜色
- density: 一个从里到外逐渐稀薄的球形+被纹理的影响
- 用texture Coordinate 生成volume的坐标
- object生成一个在中心的坐标系
- 用 Image Texture 生成一个按照贴图纹理亮度的scale, 模拟气体的效果
- 用Mulitiply node的Factor node调整受纹理影响的强度
- 用invert node 调整: 亮的纹理密度低(凹陷), 暗得纹理密度高(突出), 如果Fac设置成1就会反过来
- Fac参数: 类似$\alpha \frac{1}{x}+(1-\alpha) x$ ?
- 这部分应该可以优化, 不是用multiply 而是用其他方式做纹理的distortion?
- 用gradient texture 设置渐变的密度
- 用 Color Ramp 做一个动态范围的压缩:
- 我们想要一个(实体->气态->空) 的渐变, 中间density在0-1之间的部分, 是气态部分
- 调整value参数, 也就是最后输入的密度
- 用texture Coordinate 生成volume的坐标
- color:
- 视频里还另外加了一个底色, 但是看起来没什么影响
- 用principled volume : 把mesh包含的部分看成volume块
- 相机: Camera-> Data
- Focal Length 调大到60mm: 调整物体在镜头内的大小
- 结果: 和视频里的结果不完全一样, 不清楚是哪里的问题😮💨
shader流程

texture Coordinate 的设置
texture coordinate不同模式的区别是坐标系的原点位置不一样: generate模式的原点是在mesh的bounding box一角, 而object模式的原点是在bounding box的中心(从名字是看不出来..也没看源码验证, 都是我猜的)
- 用gradient texture 调整密度时, 输入的是vector的模长
- 如果generate模式 , 密度最大的点在box的一角, 得到
; - 用object模式 , 密度最大的点在中心, 得到
, 也就是我们需要的行星的形态
- 如果generate模式 , 密度最大的点在box的一角, 得到
- 而我们用Image Texture 设置颜色的映射时, Sphere的映射方法默认是围绕点 $(0.5,0.5,0.5)$ 进行映射, 这个时候我们就需要在generate模式的坐标系下映射
- Sphere的映射方法:

- 把贴图
映射到
- Sphere的映射方法:
