PfmVizzer

class PfmVizzer

This class aids in the visualization and manipulation of PfmFile objects.

Inheritance diagram

digraph inheritance306fb0c095 { bgcolor=transparent; rankdir=BT; size="8.0, 12.0"; "DTOOL_SUPER_BASE" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=11,height=0.25,shape=box,style=""]; "PfmVizzer" [URL="acron.core.PfmVizzer.html#acron.core.PfmVizzer",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=11,height=0.25,shape=box,style="",target="_top",tooltip="/**"]; "DTOOL_SUPER_BASE" -> "PfmVizzer" [arrowsize=0.75,style=""]; }
enum ColumnType
enumerator CT_texcoord2 = 0
enumerator CT_texcoord3 = 1
enumerator CT_vertex1 = 2
enumerator CT_vertex2 = 3
enumerator CT_vertex3 = 4
enumerator CT_normal3 = 5
enumerator CT_blend1 = 6
enumerator CT_aux_vertex1 = 7
enumerator CT_aux_vertex2 = 8
enumerator CT_aux_vertex3 = 9
enum MeshFace
enumerator MF_front = 1
enumerator MF_back = 2
enumerator MF_both = 3
PfmVizzer.__init__()

The PfmVizzer constructor receives a reference to a PfmFile which it will operate on. It does not keep ownership of this reference; it is your responsibility to ensure the PfmFile does not destruct during the lifetime of the PfmVizzer.

PfmVizzer.add_vis_column()

Adds a new vis column specification to the list of vertex data columns that will be generated at the next call to generate_vis_points() or generate_vis_mesh(). This advanced interface supercedes the higher-level set_vis_inverse(), set_flat_texcoord_name(), and set_vis_2d().

If you use this advanced interface, you must specify explicitly the complete list of data columns to be created in the resulting GeomVertexData, by calling add_vis_column() each time. For each column, you specify the source of the column in the PFMFile, the target column and name in the GeomVertexData, and an optional transform matrix and/or lens to transform and project the point before generating it.

The private implementation of the public add_vis_column(), this adds the column to the indicated specific vector.

PfmVizzer.calc_max_u_displacement()

Computes the maximum amount of shift, in pixels either left or right, of any pixel in the distortion map. This can be passed to make_displacement(); see that function for more information.

PfmVizzer.calc_max_v_displacement()

Computes the maximum amount of shift, in pixels either up or down, of any pixel in the distortion map. This can be passed to make_displacement(); see that function for more information.

PfmVizzer.clear_aux_pfm()

Removes the auxiliary PfmFile from this PfmVizzer.

PfmVizzer.clear_flat_texcoord_name()

Resets the flat_texcoord_name to empty, so that additional texture coordinates are not created.

This may be used in lieu of the lower-level add_vis_column().

PfmVizzer.clear_vis_blend()

Removes the blending map set by a prior call to set_vis_blend().

PfmVizzer.clear_vis_columns()

Removes all of the previously-added vis columns in preparation for building a new list. See add_vis_column().

PfmVizzer.extrude()

Converts each (u, v, depth) point of the Pfm file to an (x, y, z) point, by reversing project(). If the original file is only a 1-d file, assumes that it is a depth map with implicit (u, v) coordinates.

This method is only valid for a linear lens (e.g. a PerspectiveLens or OrthographicLens). Non-linear lenses don’t necessarily compute a sensible depth coordinate.

PfmVizzer.generate_vis_mesh()

Creates a triangle mesh with the points of the pfm as 3-d coordinates in space, and texture coordinates ranging from 0 .. 1 based on the position within the pfm grid.

PfmVizzer.generate_vis_points()

Creates a point cloud with the points of the pfm as 3-d coordinates in space, and texture coordinates ranging from 0 .. 1 based on the position within the pfm grid.

PfmVizzer.get_aux_pfm()

Returns the reference to the auxiliary PfmFile queried by this PfmVizzer. This contains the values that will be reflected in CT_aux_vertex3 etc. See set_aux_pfm().

PfmVizzer.get_flat_texcoord_name()

Returns the flat_texcoord_name. See set_flat_texcoord_name().

PfmVizzer.get_keep_beyond_lens()

Returns the keep_beyond_lens flag. See set_keep_beyond_lens().

PfmVizzer.get_pfm()

Returns the reference to the PfmFile manipulated by this PfmVizzer.

Returns the reference to the PfmFile manipulated by this PfmVizzer.

PfmVizzer.get_vis_2d()

Returns the vis_2d flag. See set_vis_2d().

PfmVizzer.get_vis_blend()

Returns the blending map set by the most recent call to set_vis_blend(), or NULL if there is no blending map in effect.

PfmVizzer.get_vis_inverse()

Returns the vis_inverse flag. See set_vis_inverse().

PfmVizzer.make_displacement()

Assuming the underlying PfmFile is a 2-d distortion mesh, with the U and V in the first two components and the third component unused, this computes an AfterEffects-style displacement map that represents the same distortion. The indicated PNMImage will be filled in with a displacement map image, with horizontal shift in the red channel and vertical shift in the green channel, where a fully bright (or fully black) pixel indicates a shift of max_u or max_v pixels.

Use calc_max_u_displacement() and calc_max_v_displacement() to compute suitable values for max_u and max_v.

This generates an integer 16-bit displacement image. It is a good idea, though not necessarily essential, to check “Preserve RGB” in the interpret footage section for each displacement image. Set for_32bit true if this is meant to be used in a 32-bit project file, and false if it is meant to be used in a 16-bit project file.

Assuming the underlying PfmFile is a 2-d distortion mesh, with the U and V in the first two components and the third component unused, this computes an AfterEffects-style displacement map that represents the same distortion. The indicated PNMImage will be filled in with a displacement map image, with horizontal shift in the red channel and vertical shift in the green channel, where a fully bright (or fully black) pixel indicates a shift of max_u or max_v pixels.

Use calc_max_u_displacement() and calc_max_v_displacement() to compute suitable values for max_u and max_v.

This generates a 32-bit floating-point displacement image. It is essential to check “Preserve RGB” in the interpret footage section for each displacement image. Set for_32bit true if this is meant to be used in a 32-bit project file, and false if it is meant to be used in a 16-bit project file.

PfmVizzer.project()

Adjusts each (x, y, z) point of the Pfm file by projecting it through the indicated lens, converting each point to a (u, v, w) texture coordinate. The resulting file can be generated to a mesh (with set_vis_inverse(true) and generate_vis_mesh()) that will apply the lens distortion to an arbitrary texture image.

PfmVizzer.set_aux_pfm()

Assigns an auxiliary PfmFile to this PfmVizzer. This file will be queried by column types CT_aux_vertex1/2/3, but has no other meaning to the vizzer. This size of this PfmFile should exactly match the base PfmFile. No reference count is held and no copy is made; the caller is responsible for ensuring that the auxiliary PfmFile will persist throughout the lifetime of the PfmVizzer it is assigned to.

PfmVizzer.set_flat_texcoord_name()

If the flat_texcoord_name is specified, it is the name of an additional vertex column that will be created for the “flat” texture coordinates, i.e. the original 0..1 values that correspond to the 2-D index position of each point in the original pfm file.

These are the same values that will be assigned to the default texture coordinates if the vis_inverse flag is not true.

This may be used in lieu of the lower-level add_vis_column().

PfmVizzer.set_keep_beyond_lens()

Sets the keep_beyond_lens flag. When this flag is true, points that fall outside of the normal lens range in project() or in add_vis_column() will be retained anyway; when it is false, these points will be discarded.

PfmVizzer.set_vis_2d()

Sets the vis_2d flag. When this flag is true, only the first two (x, y) value of each depth point is considered meaningful; the z component is ignored. This is only relevant for generating visualizations.

This may be used in lieu of the lower-level add_vis_column().

PfmVizzer.set_vis_blend()

Specifies a blending map–a grayscale image–that will be applied to the vertex color during generate_vis_mesh() and generate_vis_points(). The image size must exactly match the mesh size of the PfmVizzer.

Ownership of the pointer is not kept by the PfmVizzer; it is your responsibility to ensure it does not destruct during the lifetime of the PfmVizzer (or at least not before your subsequent call to generate_vis_mesh()).

PfmVizzer.set_vis_inverse()

Sets the vis_inverse flag. When this flag is true, vis meshes and point clouds are generated with the 3-d depth value in the texture coordinates, and the 2-d index value in the vertex position. When it is false, meshes are generated normally, with the 3-d depth value in the vertex position and the 2-d index value in the texture coordinates.

This may be used in lieu of the lower-level add_vis_column().