PfmVizzer¶
from panda3d.core import PfmVizzer
-
class
PfmVizzer
¶ This class aids in the visualization and manipulation of
PfmFile
objects.Inheritance diagram
-
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¶
-
enumerator
-
__init__
(pfm: PfmFile)¶ The
PfmVizzer
constructor receives a reference to aPfmFile
which it will operate on. It does not keep ownership of this reference; it is your responsibility to ensure thePfmFile
does not destruct during the lifetime of thePfmVizzer
.
-
__init__
(param0: PfmVizzer)
-
addVisColumn
(source: ColumnType, target: ColumnType, name: InternalName, transform: TransformState, lens: Lens, undist_lut: PfmFile)¶ Adds a new vis column specification to the list of vertex data columns that will be generated at the next call to
generateVisPoints()
orgenerateVisMesh()
. This advanced interface supercedes the higher-levelsetVisInverse()
,setFlatTexcoordName()
, andsetVis2d()
.If you use this advanced interface, you must specify explicitly the complete list of data columns to be created in the resulting
GeomVertexData
, by callingaddVisColumn()
each time. For each column, you specify the source of the column in the PFMFile, the target column and name in theGeomVertexData
, and an optional transform matrix and/or lens to transform and project the point before generating it.
-
calcMaxUDisplacement
() → float¶ Computes the maximum amount of shift, in pixels either left or right, of any pixel in the distortion map. This can be passed to
makeDisplacement()
; see that function for more information.
-
calcMaxVDisplacement
() → float¶ Computes the maximum amount of shift, in pixels either up or down, of any pixel in the distortion map. This can be passed to
makeDisplacement()
; 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
addVisColumn()
.
-
clearVisBlend
()¶ Removes the blending map set by a prior call to
setVisBlend()
.
-
clearVisColumns
()¶ Removes all of the previously-added vis columns in preparation for building a new list. See
addVisColumn()
.
-
extrude
(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
orOrthographicLens
). Non-linear lenses don’t necessarily compute a sensible depth coordinate.
-
generateVisMesh
(face: MeshFace) → NodePath¶ 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.
-
generateVisPoints
() → NodePath¶ 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.
-
getAuxPfm
() → PfmFile¶ Returns the reference to the auxiliary
PfmFile
queried by thisPfmVizzer
. This contains the values that will be reflected in CT_aux_vertex3 etc. SeesetAuxPfm()
.
-
getFlatTexcoordName
() → InternalName¶ Returns the flat_texcoord_name. See
setFlatTexcoordName()
.
-
getKeepBeyondLens
() → bool¶ Returns the keep_beyond_lens flag. See
setKeepBeyondLens()
.
-
getVis2d
() → bool¶ Returns the vis_2d flag. See
setVis2d()
.
-
getVisBlend
() → PNMImage¶ Returns the blending map set by the most recent call to
setVisBlend()
, or NULL if there is no blending map in effect.
-
getVisInverse
() → bool¶ Returns the vis_inverse flag. See
setVisInverse()
.
-
makeDisplacement
(result: PNMImage, max_u: float, max_v: float, for_32bit: bool)¶ 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 indicatedPNMImage
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
calcMaxUDisplacement()
andcalcMaxVDisplacement()
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
(result: PfmFile, max_u: float, max_v: float, for_32bit: bool) 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 indicatedPNMImage
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
calcMaxUDisplacement()
andcalcMaxVDisplacement()
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.
-
project
(lens: Lens, undist_lut: PfmFile)¶ 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
generateVisMesh()
) that will apply the lens distortion to an arbitrary texture image.
-
setAuxPfm
(pfm: PfmFile)¶ Assigns an auxiliary
PfmFile
to thisPfmVizzer
. This file will be queried by column types CT_aux_vertex1/2/3, but has no other meaning to the vizzer. This size of thisPfmFile
should exactly match the basePfmFile
. No reference count is held and no copy is made; the caller is responsible for ensuring that the auxiliaryPfmFile
will persist throughout the lifetime of thePfmVizzer
it is assigned to.
-
setFlatTexcoordName
(flat_texcoord_name: InternalName)¶ 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
addVisColumn()
.
-
setKeepBeyondLens
(keep_beyond_lens: bool)¶ Sets the keep_beyond_lens flag. When this flag is true, points that fall outside of the normal lens range in
project()
or inaddVisColumn()
will be retained anyway; when it is false, these points will be discarded.
-
setVis2d
(vis_2d: bool)¶ 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
addVisColumn()
.
-
setVisBlend
(vis_blend: PNMImage)¶ Specifies a blending map–a grayscale image–that will be applied to the vertex color during
generateVisMesh()
andgenerateVisPoints()
. The image size must exactly match the mesh size of thePfmVizzer
.Ownership of the pointer is not kept by the
PfmVizzer
; it is your responsibility to ensure it does not destruct during the lifetime of thePfmVizzer
(or at least not before your subsequent call togenerateVisMesh()
).
-
setVisInverse
(vis_inverse: bool)¶ 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
addVisColumn()
.
-
enum