*VDB란?
VDBs are an open standard volume representation optimized for very sparse volume data, usually only having bottom-level voxel data in a “narrow band”, using a 4-level tree of tiles that can be constant at any level. The top level can be an arbitrary resolution, but the other levels are a fixed power-of-two resolution in each tile, down to voxels at the bottom. Unlike most other primitive types, the parametric space of a VDB is not limited to the range (0,0,0) to (1,1,1). The space is identical to the bottom level voxel index space, and voxel indices can be negative, depending on the shift of the top level grid. This allows adding of new voxel data anywhere (up to roundoff error considerations), without changing the parametric coordinates of existing data. The transform of the VDB grid, (including any frustum transform), transforms directly from voxel index space to physical space.
VDBs most often represent “signed distance fields” (SDFs), also referred to as a “level set”. However, often only the narrow band has correct signed distances to the implied surface, whereas the constant tile data values outside of the narrow band may only have the correct sign, not an actual distance. Some VDBs instead represent “fog volumes”, where the values represent densities or other values. Outside of the range of occupied tiles, there is a “background value” of any given VDB.
Like volume primitives, VDBs only have one vertex, so there is only interpolation of P and voxel values. Unlike volume primitives, a voxel’s data in a VDB can be a 32-bit or 64-bit floating-point number, a 32-bit integer, a boolean, a vector of three 32-bit or 64-bit floating-point numbers, or a vector of three 32-bit integers. From the HDK, VDB grids that are created directly, instead of part of a primitive, they can have other data types.
*Temperature and Density
-Higher Temperate = More the smoke Rises
-Density means just density.
-오브젝트를 생성하고 이를 density volume으로 바꿔주는 방법은 여러가지가 있음.
scatter해서 point를 만들거나 그냥 pointsfromvolume 써서 이를 AttributeWrangle 노드로 density랑 temperature attribute 만들어도 되고,
VDBfromPolygons 써서 density attribute 만들어도 되고,
pyrosource 그냥 써서 바로 density랑 temperature 만들어줘도 됌
*VDBfromPolygons 노드
Smoke를 만들려면 density와 temperature가 필요한데 이 노드는 polygons의 값을 받아 density volume을 생성해준다.
Distance VDB의 경우 SDF를 생성해주고 이건 surface field이다. density가 필요하면 Fog VDB을 켜만 된다.
*Global Substeps (PyroSlover 노드)
-숫자를 올릴수록 효과의 외곽선 부분이 부드러워짐
*Adevection-Reflection (PyroSlover 노드)
-attempts to inject energy lost due to the pressure projection back into the simulation. Enabling this option may exhibit better vortex retainment in the flow. 이걸 켜면 좀 turbulence가 생김. single과 double의 차이는 아직 모르겠음
*Voxel Size (PyroSlover 노드)
-voxel size가 작을수록 더 디테일해지지만 느려짐. voxel size 관련 파라미터는 PyroSolver에도 있고 Volume Rasterize Attribute도 있고 PyroSource에도 Particle Seperation라고 있음. 그래서 PyroSolver의 파라미터 값 copy해서 Volume Rasterize Attribute랑 PyroSource에 Paste Relative Reference로 연결해줘도 좋음.
*Dissipation (PyroSlover 노드)
-연기가 얼마나 빨리 사라질지 정해주는 기능. 연기의 lifetime같은 느낌. 숫자가 클수록 빨리 사라진다.
*Disturbance (PyroSlover 노드의 Shape)
-Base Block Size: 이게 커질수록 노이즈가 심해짐. 난 언리얼 머티리얼 그래프처럼 사이즈가 커지면 노이즈 모양도 커지는 그런 의미인줄 알았는데 반대였음. Base Block Size가 커지면 더 자글자글해짐.
-Pulse Length : noise animating. 숫자가 커질수록 noise가 왔다갔 많이 움직임. 덜 stationary함. 그리고 노이즈가 좀 느려져서 오래 남아있게 됌. 숫자가 적으면 부드럽고 빨리 없어짐.
-Roughness : 노이즈 모서리 부분의 roughness가 커지면 노이즈의 외곽선이 더 선해짐
*Turbulance (PyroSlover 노드의 Shape)
-Grain : Disturbance의 Roughness와 비슷함 값이 커질수록 roughness가 더 커
'Houdini' 카테고리의 다른 글
후디니로 함수 그리기 / Ch() (0) | 2024.01.28 |
---|---|
[Udemy] 27-28강. 후디니 Pyro Smoke Introduction (0) | 2024.01.18 |
[Udemy] 25강. Dual Surface (Delaunay & Voronoi) (0) | 2024.01.18 |
[Udemy] 24강. SpiderWeb 만들기 (0) | 2024.01.17 |
[Udemy] 21-23강. Oil Barrel과 $ 만들기 (0) | 2024.01.17 |