Panda3D
|
This class aids in the visualization and manipulation of PfmFile objects. More...
Public Types | |
enum | ColumnType { CT_texcoord2 = 0, CT_texcoord3 = 1, CT_vertex1 = 2, CT_vertex2 = 3, CT_vertex3 = 4, CT_normal3 = 5, CT_blend1 = 6, CT_aux_vertex1 = 7, CT_aux_vertex2 = 8, CT_aux_vertex3 = 9 } |
enum | MeshFace { MF_front = 1, MF_back = 2, MF_both = 3 } |
Public Member Functions | |
__init__ (PfmFile pfm) | |
The PfmVizzer constructor receives a reference to a PfmFile which it will operate on. More... | |
__init__ (const PfmVizzer) | |
addVisColumn (PfmVizzer::ColumnType source, PfmVizzer::ColumnType target, InternalName name, const TransformState transform, const Lens lens, const PfmFile undist_lut) | |
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(). More... | |
double | calcMaxUDisplacement () |
Computes the maximum amount of shift, in pixels either left or right, of any pixel in the distortion map. More... | |
double | calcMaxVDisplacement () |
Computes the maximum amount of shift, in pixels either up or down, of any pixel in the distortion map. More... | |
clearAuxPfm () | |
Removes the auxiliary PfmFile from this PfmVizzer. More... | |
clearFlatTexcoordName () | |
Resets the flat_texcoord_name to empty, so that additional texture coordinates are not created. More... | |
clearVisBlend () | |
Removes the blending map set by a prior call to set_vis_blend(). More... | |
clearVisColumns () | |
Removes all of the previously-added vis columns in preparation for building a new list. More... | |
extrude (const Lens lens) | |
Converts each (u, v, depth) point of the Pfm file to an (x, y, z) point, by reversing project(). More... | |
NodePath | generateVisMesh (PfmVizzer::MeshFace face) |
Creates a triangle mesh with the points of the pfm as 3-d coordinates in space, and texture coordinates ranging from 0 . More... | |
NodePath | generateVisPoints () |
Creates a point cloud with the points of the pfm as 3-d coordinates in space, and texture coordinates ranging from 0 . More... | |
const PfmFile | getAuxPfm () |
Returns the reference to the auxiliary PfmFile queried by this PfmVizzer. More... | |
InternalName | getFlatTexcoordName () |
Returns the flat_texcoord_name. More... | |
bool | getKeepBeyondLens () |
Returns the keep_beyond_lens flag. More... | |
PfmFile | getPfm () |
Returns the reference to the PfmFile manipulated by this PfmVizzer. More... | |
const PfmFile | getPfm () |
Returns the reference to the PfmFile manipulated by this PfmVizzer. More... | |
bool | getVis2d () |
Returns the vis_2d flag. More... | |
const PNMImage | getVisBlend () |
Returns the blending map set by the most recent call to set_vis_blend(), or NULL if there is no blending map in effect. More... | |
bool | getVisInverse () |
Returns the vis_inverse flag. More... | |
makeDisplacement (PNMImage result, double max_u, double max_v, bool for_32bit) | |
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. More... | |
makeDisplacement (PfmFile result, double max_u, double max_v, bool for_32bit) | |
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. More... | |
project (const Lens lens, const PfmFile undist_lut) | |
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. More... | |
setAuxPfm (const PfmFile pfm) | |
Assigns an auxiliary PfmFile to this PfmVizzer. More... | |
setFlatTexcoordName (InternalName 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. More... | |
setKeepBeyondLens (bool keep_beyond_lens) | |
Sets the keep_beyond_lens flag. More... | |
setVis2d (bool vis_2d) | |
Sets the vis_2d flag. More... | |
setVisBlend (const PNMImage 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(). More... | |
setVisInverse (bool vis_inverse) | |
Sets the vis_inverse flag. More... | |
This class aids in the visualization and manipulation of PfmFile objects.
enum ColumnType |
enum MeshFace |
__init__ | ( | PfmFile | pfm | ) |
__init__ | ( | const | PfmVizzer | ) |
addVisColumn | ( | PfmVizzer::ColumnType | source, |
PfmVizzer::ColumnType | target, | ||
InternalName | name, | ||
const TransformState | transform, | ||
const Lens | lens, | ||
const PfmFile | undist_lut | ||
) |
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.
double calcMaxUDisplacement | ( | ) |
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.
double calcMaxVDisplacement | ( | ) |
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.
clearFlatTexcoordName | ( | ) |
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().
clearVisBlend | ( | ) |
Removes the blending map set by a prior call to set_vis_blend().
clearVisColumns | ( | ) |
Removes all of the previously-added vis columns in preparation for building a new list.
See add_vis_column().
extrude | ( | const Lens | lens | ) |
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.
NodePath generateVisMesh | ( | PfmVizzer::MeshFace | face | ) |
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.
NodePath generateVisPoints | ( | ) |
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.
const PfmFile getAuxPfm | ( | ) |
InternalName getFlatTexcoordName | ( | ) |
Returns the flat_texcoord_name.
See set_flat_texcoord_name().
bool getKeepBeyondLens | ( | ) |
Returns the keep_beyond_lens flag.
See set_keep_beyond_lens().
bool getVis2d | ( | ) |
Returns the vis_2d flag.
See set_vis_2d().
const PNMImage getVisBlend | ( | ) |
Returns the blending map set by the most recent call to set_vis_blend(), or NULL if there is no blending map in effect.
bool getVisInverse | ( | ) |
Returns the vis_inverse flag.
See set_vis_inverse().
makeDisplacement | ( | PNMImage | result, |
double | max_u, | ||
double | max_v, | ||
bool | for_32bit | ||
) |
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.
makeDisplacement | ( | PfmFile | result, |
double | max_u, | ||
double | max_v, | ||
bool | for_32bit | ||
) |
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.
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.
setAuxPfm | ( | const PfmFile | 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.
setFlatTexcoordName | ( | InternalName | 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().
setKeepBeyondLens | ( | bool | 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.
setVis2d | ( | bool | 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().
setVisBlend | ( | const PNMImage | 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()).
setVisInverse | ( | bool | 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().