|
![](/i/fill.gif) |
Alain <aze### [at] qwerty org> wrote:
> There is a way to have some non-uniform scaling, but it's more complicated.
> For that, you need to use an isosurface equivalent to your object and
> work on the function used to represent it.
Every time non-linear transformation of object comes up, isosurfaces are
suggested. However, isosurfaces are a viable solution in only very limited
cases. You can't simply take a complex CSG object and convert it to an
isosurface. Some objects are simply too complex, or have too much detail
in them in order to be renderable in a rational amount of time as an
isosurface (especially given that applying a non-linear transformation to
it will usually make it even slower to render). Texturing can also sometimes
pose a problem in certain cases, such as when different parts of the object
uses different textures, or they use texturing options not available for
isosurfaces (such as uv-mapping).
The most efficient and versatile solution would be to use a triangle mesh.
While technically speaking triangle meshes cannot be transformed non-linearly
either, this can be approximated by subdividing the mesh into smaller triangles
and transforming the vertex points (which is basically what all mesh-based
renderers do).
Of course POV-Ray itself offers little to no tools to create and modify
meshes in this way, so the only option is, basically, to use a third-party
mesh modeling tool to create the mesh.
There exist some mesh subdivision&transformation macros out there, but
they all assume that you have the vertex points in an array (as it's
currently not possible to extract the vertex points from a mesh object).
--
- Warp
Post a reply to this message
|
![](/i/fill.gif) |