diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2020-03-17 18:48:00 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2020-03-18 13:23:05 +0300 |
commit | 006025ead0b89de671363816cd0e962f10d21c50 (patch) | |
tree | 7126736cb18cbfef6239cdaff1894171252a5d44 /intern/cycles/blender/blender_volume.cpp | |
parent | fd53b72871e045dfebfb9ddbe2b3c491491aa913 (diff) |
Cycles: support for different 3D transform per volume grid
This is not yet fully supported by automatic volume bounds but works fine in
most cases that will have mostly matching bounds.
Ref T73201
Diffstat (limited to 'intern/cycles/blender/blender_volume.cpp')
-rw-r--r-- | intern/cycles/blender/blender_volume.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_volume.cpp b/intern/cycles/blender/blender_volume.cpp index 237c5d061e8..7f393fcb819 100644 --- a/intern/cycles/blender/blender_volume.cpp +++ b/intern/cycles/blender/blender_volume.cpp @@ -15,6 +15,7 @@ */ #include "render/colorspace.h" +#include "render/image.h" #include "render/mesh.h" #include "render/object.h" @@ -68,6 +69,15 @@ class BlenderSmokeLoader : public ImageLoader { metadata.height = resolution.y * amplify; metadata.depth = resolution.z * amplify; + /* Create a matrix to transform from object space to mesh texture space. + * This does not work with deformations but that can probably only be done + * well with a volume grid mapping of coordinates. */ + BL::Mesh b_mesh(b_ob.data()); + float3 loc, size; + mesh_texture_space(b_mesh, loc, size); + metadata.transform_3d = transform_translate(-loc) * transform_scale(size); + metadata.use_transform_3d = true; + return true; } |