1262 lines
51 KiB
Text
1262 lines
51 KiB
Text
|
1565844261
|
||
|
3 3
|
||
|
12 libp3distort 4 2YN4 10 panda3d.fx
|
||
|
65
|
||
|
64 15 CylindricalLens 0 4 129 32 CylindricalLens::CylindricalLens 0 1 1 22
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
46
|
||
|
inline CylindricalLens::CylindricalLens(void);
|
||
|
|
||
|
65 14 get_class_type 0 4 129 31 CylindricalLens::get_class_type 0 1 2 0
|
||
|
56
|
||
|
static TypeHandle CylindricalLens::get_class_type(void);
|
||
|
|
||
|
66 16 ~CylindricalLens 0 4 129 33 CylindricalLens::~CylindricalLens 0 0 0
|
||
|
40
|
||
|
CylindricalLens::~CylindricalLens(void);
|
||
|
|
||
|
67 11 FisheyeLens 0 4 131 24 FisheyeLens::FisheyeLens 0 1 3 22
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
38
|
||
|
inline FisheyeLens::FisheyeLens(void);
|
||
|
|
||
|
68 14 get_class_type 0 4 131 27 FisheyeLens::get_class_type 0 1 4 0
|
||
|
52
|
||
|
static TypeHandle FisheyeLens::get_class_type(void);
|
||
|
|
||
|
69 12 ~FisheyeLens 0 4 131 25 FisheyeLens::~FisheyeLens 0 0 0
|
||
|
32
|
||
|
FisheyeLens::~FisheyeLens(void);
|
||
|
|
||
|
70 16 ProjectionScreen 0 4 132 34 ProjectionScreen::ProjectionScreen 0 1 5 22
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
74
|
||
|
explicit ProjectionScreen::ProjectionScreen(std::string const &name = "");
|
||
|
|
||
|
71 13 set_projector 0 4 132 31 ProjectionScreen::set_projector 0 1 6 370
|
||
|
/**
|
||
|
* Specifies the LensNode that is to serve as the projector for this screen.
|
||
|
* The relative position of the LensNode to the ProjectionScreen, as well as
|
||
|
* the properties of the lens associated with the LensNode, determines the
|
||
|
* UV's that will be assigned to the geometry within the ProjectionScreen.
|
||
|
*
|
||
|
* The NodePath must refer to a LensNode (or a Camera).
|
||
|
*/
|
||
|
64
|
||
|
void ProjectionScreen::set_projector(NodePath const &projector);
|
||
|
|
||
|
72 13 get_projector 0 4 132 31 ProjectionScreen::get_projector 0 1 7 141
|
||
|
/**
|
||
|
* Returns the NodePath to the LensNode that is to serve as the projector for
|
||
|
* this screen, or empty if no projector is associated.
|
||
|
*/
|
||
|
67
|
||
|
inline NodePath const &ProjectionScreen::get_projector(void) const;
|
||
|
|
||
|
73 16 clear_undist_lut 0 4 132 34 ProjectionScreen::clear_undist_lut 0 1 8 80
|
||
|
/**
|
||
|
* Removes the distortion lookup table from the projector, if specified.
|
||
|
*/
|
||
|
53
|
||
|
inline void ProjectionScreen::clear_undist_lut(void);
|
||
|
|
||
|
74 14 set_undist_lut 0 4 132 32 ProjectionScreen::set_undist_lut 0 1 9 314
|
||
|
/**
|
||
|
* Applies a distortion lookup table to the projector. This mapping warps the
|
||
|
* lens effect by passing each ray through an indirection table: the point
|
||
|
* (u,v) in the indicated lookup table stores the actual (u,v) that the lens
|
||
|
* produces.
|
||
|
*
|
||
|
* This does not affect the operation of generate_screen().
|
||
|
*/
|
||
|
72
|
||
|
inline void ProjectionScreen::set_undist_lut(PfmFile const &undist_lut);
|
||
|
|
||
|
75 14 has_undist_lut 0 4 132 32 ProjectionScreen::has_undist_lut 0 1 10 113
|
||
|
/**
|
||
|
* Returns true if a valid distortion lookup table was provided via
|
||
|
* set_undist_lut(), false otherwise.
|
||
|
*/
|
||
|
57
|
||
|
inline bool ProjectionScreen::has_undist_lut(void) const;
|
||
|
|
||
|
76 14 get_undist_lut 0 4 132 32 ProjectionScreen::get_undist_lut 0 1 11 85
|
||
|
/**
|
||
|
* Returns the distortion lookup table provided via set_undist_lut(), if any.
|
||
|
*/
|
||
|
67
|
||
|
inline PfmFile const &ProjectionScreen::get_undist_lut(void) const;
|
||
|
|
||
|
77 15 generate_screen 0 4 132 33 ProjectionScreen::generate_screen 0 1 12 1183
|
||
|
/**
|
||
|
* Synthesizes a polygon mesh based on the projection area of the indicated
|
||
|
* projector. This generates and returns a new GeomNode but does not
|
||
|
* automatically parent it to the ProjectionScreen node; see
|
||
|
* regenerate_screen().
|
||
|
*
|
||
|
* The specified projector need not be the same as the projector given to the
|
||
|
* ProjectionScreen with set_projector() (although this is often what you
|
||
|
* want).
|
||
|
*
|
||
|
* num_x_verts and num_y_verts specify the number of vertices to make in the
|
||
|
* grid across the horizontal and vertical dimension of the projector,
|
||
|
* respectively; distance represents the approximate distance of the screen
|
||
|
* from the lens center.
|
||
|
*
|
||
|
* The fill_ratio parameter specifies the fraction of the image to cover. If
|
||
|
* it is 1.0, the entire image is shown full-size; if it is 0.9, 10% of the
|
||
|
* image around the edges is not part of the grid (and the grid is drawn
|
||
|
* smaller by the same 10%). This is intended to work around graphics drivers
|
||
|
* that tend to show dark edges or other unsatisfactory artifacts around the
|
||
|
* edges of textures: render the texture larger than necessary by a certain
|
||
|
* fraction, and make the screen smaller by the inverse fraction.
|
||
|
*/
|
||
|
195
|
||
|
PointerTo< GeomNode > ProjectionScreen::generate_screen(NodePath const &projector, std::string const &screen_name, int num_x_verts, int num_y_verts, PN_stdfloat distance, PN_stdfloat fill_ratio);
|
||
|
|
||
|
78 17 regenerate_screen 0 4 132 35 ProjectionScreen::regenerate_screen 0 1 13 136
|
||
|
/**
|
||
|
* Removes all the children from the ProjectionScreen node, and adds the newly
|
||
|
* generated child returned by generate_screen().
|
||
|
*/
|
||
|
180
|
||
|
void ProjectionScreen::regenerate_screen(NodePath const &projector, std::string const &screen_name, int num_x_verts, int num_y_verts, PN_stdfloat distance, PN_stdfloat fill_ratio);
|
||
|
|
||
|
79 14 make_flat_mesh 0 4 132 32 ProjectionScreen::make_flat_mesh 0 1 14 647
|
||
|
/**
|
||
|
* Generates a deep copy of the hierarchy at the ProjectionScreen node and
|
||
|
* below, with vertices flattened into two dimensions as if they were seen by
|
||
|
* the indicated camera node.
|
||
|
*
|
||
|
* This is useful for rendering an image as seen through a non-linear lens.
|
||
|
* The resulting mesh will have vertices in the range [-1, 1] in both x and y,
|
||
|
* and may be then rendered with an ordinary orthographic lens, to generate
|
||
|
* the effect of seeing the image through the specified non-linear lens.
|
||
|
*
|
||
|
* The returned node has no parent; it is up to the caller to parent it
|
||
|
* somewhere or store it so that it does not get dereferenced and deleted.
|
||
|
*/
|
||
|
105
|
||
|
PointerTo< PandaNode > ProjectionScreen::make_flat_mesh(NodePath const &this_np, NodePath const &camera);
|
||
|
|
||
|
80 17 set_texcoord_name 0 4 132 35 ProjectionScreen::set_texcoord_name 0 1 15 269
|
||
|
/**
|
||
|
* Specifies the name of the texture coordinates that are generated by this
|
||
|
* particular ProjectionScreen. This can be used in the presence of
|
||
|
* multitexturing to compute the UV's for just a subset of all of the active
|
||
|
* stages of the multitexture pipeline.
|
||
|
*/
|
||
|
82
|
||
|
inline void ProjectionScreen::set_texcoord_name(std::string const &texcoord_name);
|
||
|
|
||
|
81 17 get_texcoord_name 0 4 132 35 ProjectionScreen::get_texcoord_name 0 1 16 148
|
||
|
/**
|
||
|
* Returns the name of the texture coordinates that will be generated by this
|
||
|
* particular ProjectionScreen, as set by set_texcoord_name().
|
||
|
*/
|
||
|
67
|
||
|
inline std::string ProjectionScreen::get_texcoord_name(void) const;
|
||
|
|
||
|
82 14 set_invert_uvs 0 4 132 32 ProjectionScreen::set_invert_uvs 0 1 17 439
|
||
|
/**
|
||
|
* Some OpenGL graphics drivers are known to invert the framebuffer image when
|
||
|
* they copy it to texture. (This is arguably a problem with the OpenGL spec,
|
||
|
* which seems to be unclear about the proper ordering of pixels in this
|
||
|
* operation.)
|
||
|
*
|
||
|
* In any case, set this true to compensate for this effect by inverting the
|
||
|
* UV's of the projection screen. The default is taken from the Configrc
|
||
|
* variable project-invert-uvs.
|
||
|
*/
|
||
|
62
|
||
|
inline void ProjectionScreen::set_invert_uvs(bool invert_uvs);
|
||
|
|
||
|
83 14 get_invert_uvs 0 4 132 32 ProjectionScreen::get_invert_uvs 0 1 18 135
|
||
|
/**
|
||
|
* Returns whether this screen is compensating for a graphics driver inverting
|
||
|
* the framebuffer image. See set_invert_uvs().
|
||
|
*/
|
||
|
57
|
||
|
inline bool ProjectionScreen::get_invert_uvs(void) const;
|
||
|
|
||
|
84 15 set_texcoord_3d 0 4 132 33 ProjectionScreen::set_texcoord_3d 0 1 19 322
|
||
|
/**
|
||
|
* Set this true to force 3-D texture coordinates to be created for the
|
||
|
* geometry. When this is true and the geometry has only 2-D texture
|
||
|
* coordinates, those texture coordinates are dumped in favor of 3-D
|
||
|
* coordinates. When this is false, whatever texture coordinates already
|
||
|
* exist are preserved as-is.
|
||
|
*/
|
||
|
64
|
||
|
inline void ProjectionScreen::set_texcoord_3d(bool texcoord_3d);
|
||
|
|
||
|
85 15 get_texcoord_3d 0 4 132 33 ProjectionScreen::get_texcoord_3d 0 1 20 33
|
||
|
/**
|
||
|
* See set_texcoord_3d().
|
||
|
*/
|
||
|
58
|
||
|
inline bool ProjectionScreen::get_texcoord_3d(void) const;
|
||
|
|
||
|
86 15 set_vignette_on 0 4 132 33 ProjectionScreen::set_vignette_on 0 1 21 471
|
||
|
/**
|
||
|
* Specifies whether vertex-based vignetting should be on. When this is
|
||
|
* enabled, vertex color will be set on the screen vertices to color the
|
||
|
* screen two distinct colors, usually white and black, for the parts of the
|
||
|
* screen in front of and outside the lens' frustum, respectively. When this
|
||
|
* is not enabled, the screen color will be left alone.
|
||
|
*
|
||
|
* This effect generally looks terrible, but it does at least make the
|
||
|
* boundaries of the lens clear.
|
||
|
*/
|
||
|
64
|
||
|
inline void ProjectionScreen::set_vignette_on(bool vignette_on);
|
||
|
|
||
|
87 15 get_vignette_on 0 4 132 33 ProjectionScreen::get_vignette_on 0 1 22 101
|
||
|
/**
|
||
|
* Returns true if vertex-based vignetting is on, false otherwise. See
|
||
|
* set_vignette_on().
|
||
|
*/
|
||
|
58
|
||
|
inline bool ProjectionScreen::get_vignette_on(void) const;
|
||
|
|
||
|
88 18 set_vignette_color 0 4 132 36 ProjectionScreen::set_vignette_color 0 1 23 244
|
||
|
/**
|
||
|
* Specifies the color the screen will be painted at the portions outside of
|
||
|
* the lens' frustum; i.e. where the lens can't see it or illuminate it.
|
||
|
* This color is only used if the vignette_on flag is true; see
|
||
|
* set_vignette_on().
|
||
|
*/
|
||
|
79
|
||
|
inline void ProjectionScreen::set_vignette_color(LColor const &vignette_color);
|
||
|
|
||
|
89 18 get_vignette_color 0 4 132 36 ProjectionScreen::get_vignette_color 0 1 24 131
|
||
|
/**
|
||
|
* Returns the color the screen will be painted at the portions outside of the
|
||
|
* lens' frustum. See set_vignette_color().
|
||
|
*/
|
||
|
70
|
||
|
inline LColor const &ProjectionScreen::get_vignette_color(void) const;
|
||
|
|
||
|
90 15 set_frame_color 0 4 132 33 ProjectionScreen::set_frame_color 0 1 25 244
|
||
|
/**
|
||
|
* Specifies the color the screen will be painted at the portions outside of
|
||
|
* the lens' frustum; i.e. where the lens can't see it or illuminate it.
|
||
|
* This color is only used if the vignette_on flag is true; see
|
||
|
* set_vignette_on().
|
||
|
*/
|
||
|
73
|
||
|
inline void ProjectionScreen::set_frame_color(LColor const &frame_color);
|
||
|
|
||
|
91 15 get_frame_color 0 4 132 33 ProjectionScreen::get_frame_color 0 1 26 128
|
||
|
/**
|
||
|
* Returns the color the screen will be painted at the portions outside of the
|
||
|
* lens' frustum. See set_frame_color().
|
||
|
*/
|
||
|
67
|
||
|
inline LColor const &ProjectionScreen::get_frame_color(void) const;
|
||
|
|
||
|
92 18 set_auto_recompute 0 4 132 36 ProjectionScreen::set_auto_recompute 0 1 27 229
|
||
|
/**
|
||
|
* Sets the auto_recompute flag. When this is true, the ProjectionScreen will
|
||
|
* always be recomputed if necessary before the frame is drawn; when it is
|
||
|
* false, an explicit call to recompute_if_stale() may be required.
|
||
|
*/
|
||
|
70
|
||
|
inline void ProjectionScreen::set_auto_recompute(bool auto_recompute);
|
||
|
|
||
|
93 18 get_auto_recompute 0 4 132 36 ProjectionScreen::get_auto_recompute 0 1 28 232
|
||
|
/**
|
||
|
* Returns the auto_recompute flag. When this is true, the ProjectionScreen
|
||
|
* will always be recomputed if necessary before the frame is drawn; when it
|
||
|
* is false, an explicit call to recompute_if_stale() may be required.
|
||
|
*/
|
||
|
61
|
||
|
inline bool ProjectionScreen::get_auto_recompute(void) const;
|
||
|
|
||
|
94 9 recompute 0 4 132 27 ProjectionScreen::recompute 0 1 29 375
|
||
|
/**
|
||
|
* Recomputes all the UV's for geometry below the ProjectionScreen node, as if
|
||
|
* the texture were projected from the associated projector.
|
||
|
*
|
||
|
* This function is normally called automatically whenever the relevant
|
||
|
* properties change, so it should not normally need to be called directly by
|
||
|
* the user. However, it does no harm to call this if there is any doubt.
|
||
|
*/
|
||
|
39
|
||
|
void ProjectionScreen::recompute(void);
|
||
|
|
||
|
95 15 get_last_screen 0 4 132 33 ProjectionScreen::get_last_screen 0 1 30 290
|
||
|
/**
|
||
|
* Returns an UpdateSeq corresponding to the last time a screen mesh was
|
||
|
* generated for the ProjectionScreen. Each time generate_screen() is called,
|
||
|
* this number is incremented; this allows other objects (like
|
||
|
* NonlinearImager) to know when they need to recompute themselves.
|
||
|
*/
|
||
|
70
|
||
|
inline UpdateSeq const &ProjectionScreen::get_last_screen(void) const;
|
||
|
|
||
|
96 18 recompute_if_stale 0 4 132 36 ProjectionScreen::recompute_if_stale 0 2 31 32 438
|
||
|
/**
|
||
|
* Calls recompute() only if the relative transform between the
|
||
|
* ProjectionScreen and the projector has changed, or if any other relevant
|
||
|
* property has changed. Returns true if recomputed, false otherwise.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Calls recompute() only if the relative transform between the
|
||
|
* ProjectionScreen and the projector has changed, or if any other relevant
|
||
|
* property has changed. Returns true if recomputed, false otherwise.
|
||
|
*/
|
||
|
116
|
||
|
bool ProjectionScreen::recompute_if_stale(void);
|
||
|
bool ProjectionScreen::recompute_if_stale(NodePath const &this_np);
|
||
|
|
||
|
97 14 get_class_type 0 4 132 32 ProjectionScreen::get_class_type 0 1 33 0
|
||
|
57
|
||
|
static TypeHandle ProjectionScreen::get_class_type(void);
|
||
|
|
||
|
98 15 NonlinearImager 0 4 134 32 NonlinearImager::NonlinearImager 0 2 34 35 10
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
115
|
||
|
NonlinearImager::NonlinearImager(void);
|
||
|
inline NonlinearImager::NonlinearImager(NonlinearImager const &) = default;
|
||
|
|
||
|
99 16 ~NonlinearImager 0 4 134 33 NonlinearImager::~NonlinearImager 0 0 10
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
40
|
||
|
NonlinearImager::~NonlinearImager(void);
|
||
|
|
||
|
100 10 add_screen 0 4 134 27 NonlinearImager::add_screen 0 2 36 37 763
|
||
|
/**
|
||
|
* This version of this method is deprecated and will soon be removed. Use
|
||
|
* the version that takes two parameters instead.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Adds a new ProjectionScreen to the list of screens that will be processed
|
||
|
* by the NonlinearImager. Each ProjectionScreen represents a view into the
|
||
|
* world. It must be based on a linear camera (or whatever kind of camera is
|
||
|
* respected by the graphics engine).
|
||
|
*
|
||
|
* Each ProjectionScreen object should already have some screen geometry
|
||
|
* created.
|
||
|
*
|
||
|
* As each frame is rendered, an offscreen image will be rendered from the
|
||
|
* source camera associated with each ProjectionScreen, and the resulting
|
||
|
* image will be applied to the screen geometry.
|
||
|
*
|
||
|
* The return value is the index number of the new screen.
|
||
|
*/
|
||
|
140
|
||
|
int NonlinearImager::add_screen(ProjectionScreen *screen);
|
||
|
int NonlinearImager::add_screen(NodePath const &screen, std::string const &name);
|
||
|
|
||
|
101 11 find_screen 0 4 134 28 NonlinearImager::find_screen 0 1 38 141
|
||
|
/**
|
||
|
* Returns the index number of the first appearance of the indicated screen
|
||
|
* within the imager's list, or -1 if it does not appear.
|
||
|
*/
|
||
|
63
|
||
|
int NonlinearImager::find_screen(NodePath const &screen) const;
|
||
|
|
||
|
102 13 remove_screen 0 4 134 30 NonlinearImager::remove_screen 0 1 39 78
|
||
|
/**
|
||
|
* Removes the screen with the indicated index number from the imager.
|
||
|
*/
|
||
|
47
|
||
|
void NonlinearImager::remove_screen(int index);
|
||
|
|
||
|
103 18 remove_all_screens 0 4 134 35 NonlinearImager::remove_all_screens 0 1 40 47
|
||
|
/**
|
||
|
* Removes all screens from the imager.
|
||
|
*/
|
||
|
47
|
||
|
void NonlinearImager::remove_all_screens(void);
|
||
|
|
||
|
104 15 get_num_screens 0 4 134 32 NonlinearImager::get_num_screens 0 1 41 76
|
||
|
/**
|
||
|
* Returns the number of screens that have been added to the imager.
|
||
|
*/
|
||
|
49
|
||
|
int NonlinearImager::get_num_screens(void) const;
|
||
|
|
||
|
105 10 get_screen 0 4 134 27 NonlinearImager::get_screen 0 1 42 68
|
||
|
/**
|
||
|
* Returns the nth screen that has been added to the imager.
|
||
|
*/
|
||
|
54
|
||
|
NodePath NonlinearImager::get_screen(int index) const;
|
||
|
|
||
|
106 10 get_buffer 0 4 134 27 NonlinearImager::get_buffer 0 1 43 190
|
||
|
/**
|
||
|
* Returns the offscreen buffer that is automatically created for the nth
|
||
|
* projection screen. This may return NULL if the screen is inactive or if it
|
||
|
* has not been rendered yet.
|
||
|
*/
|
||
|
61
|
||
|
GraphicsOutput *NonlinearImager::get_buffer(int index) const;
|
||
|
|
||
|
107 16 set_texture_size 0 4 134 33 NonlinearImager::set_texture_size 0 1 44 285
|
||
|
/**
|
||
|
* Sets the width and height of the texture used to render the scene for the
|
||
|
* indicated screen. This must be less than or equal to the window size, and
|
||
|
* it should be a power of two.
|
||
|
*
|
||
|
* In general, the larger the texture, the greater the detail of the rendered
|
||
|
* scene.
|
||
|
*/
|
||
|
73
|
||
|
void NonlinearImager::set_texture_size(int index, int width, int height);
|
||
|
|
||
|
108 17 set_source_camera 0 4 134 34 NonlinearImager::set_source_camera 0 1 45 229
|
||
|
/**
|
||
|
* Specifies the camera that will be used to render the image for this
|
||
|
* particular screen.
|
||
|
*
|
||
|
* The parameter must be a NodePath whose node is a Camera. The camera itself
|
||
|
* indicates the scene that is to be rendered.
|
||
|
*/
|
||
|
82
|
||
|
void NonlinearImager::set_source_camera(int index, NodePath const &source_camera);
|
||
|
|
||
|
109 17 set_screen_active 0 4 134 34 NonlinearImager::set_screen_active 0 1 46 144
|
||
|
/**
|
||
|
* Sets the active flag on the indicated screen. If the active flag is true,
|
||
|
* the screen will be used; otherwise, it will not appear.
|
||
|
*/
|
||
|
64
|
||
|
void NonlinearImager::set_screen_active(int index, bool active);
|
||
|
|
||
|
110 17 get_screen_active 0 4 134 34 NonlinearImager::get_screen_active 0 1 47 59
|
||
|
/**
|
||
|
* Returns the active flag on the indicated screen.
|
||
|
*/
|
||
|
57
|
||
|
bool NonlinearImager::get_screen_active(int index) const;
|
||
|
|
||
|
111 10 add_viewer 0 4 134 27 NonlinearImager::add_viewer 0 1 48 615
|
||
|
/**
|
||
|
* Adds the indicated DisplayRegion as a viewer into the NonlinearImager room.
|
||
|
* The camera associated with the DisplayRegion at the time add_viewer() is
|
||
|
* called is used as the initial viewer camera; it may have a nonlinear lens,
|
||
|
* like a fisheye or cylindrical lens.
|
||
|
*
|
||
|
* This sets up a special scene graph for this DisplayRegion alone and sets up
|
||
|
* the DisplayRegion with a specialty camera. If future changes to the camera
|
||
|
* are desired, you should use the set_viewer_camera() interface.
|
||
|
*
|
||
|
* All viewers must share the same GraphicsEngine.
|
||
|
*
|
||
|
* The return value is the index of the new viewer.
|
||
|
*/
|
||
|
51
|
||
|
int NonlinearImager::add_viewer(DisplayRegion *dr);
|
||
|
|
||
|
112 11 find_viewer 0 4 134 28 NonlinearImager::find_viewer 0 1 49 123
|
||
|
/**
|
||
|
* Returns the index number of the indicated DisplayRegion within the list of
|
||
|
* viewers, or -1 if it is not found.
|
||
|
*/
|
||
|
58
|
||
|
int NonlinearImager::find_viewer(DisplayRegion *dr) const;
|
||
|
|
||
|
113 13 remove_viewer 0 4 134 30 NonlinearImager::remove_viewer 0 1 50 78
|
||
|
/**
|
||
|
* Removes the viewer with the indicated index number from the imager.
|
||
|
*/
|
||
|
47
|
||
|
void NonlinearImager::remove_viewer(int index);
|
||
|
|
||
|
114 18 remove_all_viewers 0 4 134 35 NonlinearImager::remove_all_viewers 0 1 51 47
|
||
|
/**
|
||
|
* Removes all viewers from the imager.
|
||
|
*/
|
||
|
47
|
||
|
void NonlinearImager::remove_all_viewers(void);
|
||
|
|
||
|
115 17 set_viewer_camera 0 4 134 34 NonlinearImager::set_viewer_camera 0 1 52 584
|
||
|
/**
|
||
|
* Specifies the LensNode that is to serve as the viewer for this screen. The
|
||
|
* relative position of the LensNode to the NonlinearImager, as well as the
|
||
|
* properties of the lens associated with the LensNode, determines the UV's
|
||
|
* that will be assigned to the geometry within the NonlinearImager.
|
||
|
*
|
||
|
* It is not necessary to call this except to change the camera after a viewer
|
||
|
* has been added, since the default is to use whatever camera is associated
|
||
|
* with the DisplayRegion at the time the viewer is added.
|
||
|
*
|
||
|
* The NodePath must refer to a LensNode (or a Camera).
|
||
|
*/
|
||
|
82
|
||
|
void NonlinearImager::set_viewer_camera(int index, NodePath const &viewer_camera);
|
||
|
|
||
|
116 17 get_viewer_camera 0 4 134 34 NonlinearImager::get_viewer_camera 0 1 53 98
|
||
|
/**
|
||
|
* Returns the NodePath to the LensNode that is to serve as nth viewer for
|
||
|
* this screen.
|
||
|
*/
|
||
|
61
|
||
|
NodePath NonlinearImager::get_viewer_camera(int index) const;
|
||
|
|
||
|
117 16 get_viewer_scene 0 4 134 33 NonlinearImager::get_viewer_scene 0 1 54 451
|
||
|
/**
|
||
|
* Returns a pointer to the root node of the internal scene graph for the nth
|
||
|
* viewer, which is used to render all of the screen meshes for this viewer.
|
||
|
*
|
||
|
* This is the scene graph in which the screen meshes within the dark room
|
||
|
* have been flattened into the appropriate transformation according to the
|
||
|
* viewer's lens properties (and position relative to the screens). It is
|
||
|
* this scene graph that is finally rendered to the window.
|
||
|
*/
|
||
|
60
|
||
|
NodePath NonlinearImager::get_viewer_scene(int index) const;
|
||
|
|
||
|
118 15 get_num_viewers 0 4 134 32 NonlinearImager::get_num_viewers 0 1 55 76
|
||
|
/**
|
||
|
* Returns the number of viewers that have been added to the imager.
|
||
|
*/
|
||
|
49
|
||
|
int NonlinearImager::get_num_viewers(void) const;
|
||
|
|
||
|
119 10 get_viewer 0 4 134 27 NonlinearImager::get_viewer 0 1 56 84
|
||
|
/**
|
||
|
* Returns the nth viewer's DisplayRegion that has been added to the imager.
|
||
|
*/
|
||
|
60
|
||
|
DisplayRegion *NonlinearImager::get_viewer(int index) const;
|
||
|
|
||
|
120 13 get_dark_room 0 4 134 30 NonlinearImager::get_dark_room 0 1 57 566
|
||
|
/**
|
||
|
* Returns the NodePath to the root of the dark room scene. This is the scene
|
||
|
* in which all of the ProjectionScreens and the viewer cameras reside. It's
|
||
|
* a standalone scene with a few projection screens arranged artfully around
|
||
|
* one or more viewers; it's so named because it's a little virtual theater.
|
||
|
*
|
||
|
* Normally this scene is not rendered directly; it only exists as an abstract
|
||
|
* concept, and to define the relation between the ProjectionScreens and the
|
||
|
* viewers. But it may be rendered to help visualize the NonlinearImager's
|
||
|
* behavior.
|
||
|
*/
|
||
|
52
|
||
|
NodePath NonlinearImager::get_dark_room(void) const;
|
||
|
|
||
|
121 19 get_graphics_engine 0 4 134 36 NonlinearImager::get_graphics_engine 0 1 58 109
|
||
|
/**
|
||
|
* Returns the GraphicsEngine that all of the viewers added to the
|
||
|
* NonlinearImager have in common.
|
||
|
*/
|
||
|
65
|
||
|
GraphicsEngine *NonlinearImager::get_graphics_engine(void) const;
|
||
|
|
||
|
122 9 recompute 0 4 134 26 NonlinearImager::recompute 0 1 59 62
|
||
|
/**
|
||
|
* Forces a regeneration of all the mesh objects, etc.
|
||
|
*/
|
||
|
38
|
||
|
void NonlinearImager::recompute(void);
|
||
|
|
||
|
123 11 OSphereLens 0 4 135 24 OSphereLens::OSphereLens 0 1 60 22
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
38
|
||
|
inline OSphereLens::OSphereLens(void);
|
||
|
|
||
|
124 14 get_class_type 0 4 135 27 OSphereLens::get_class_type 0 1 61 0
|
||
|
52
|
||
|
static TypeHandle OSphereLens::get_class_type(void);
|
||
|
|
||
|
125 12 ~OSphereLens 0 4 135 25 OSphereLens::~OSphereLens 0 0 0
|
||
|
32
|
||
|
OSphereLens::~OSphereLens(void);
|
||
|
|
||
|
126 11 PSphereLens 0 4 136 24 PSphereLens::PSphereLens 0 1 62 22
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
38
|
||
|
inline PSphereLens::PSphereLens(void);
|
||
|
|
||
|
127 14 get_class_type 0 4 136 27 PSphereLens::get_class_type 0 1 63 0
|
||
|
52
|
||
|
static TypeHandle PSphereLens::get_class_type(void);
|
||
|
|
||
|
128 12 ~PSphereLens 0 4 136 25 PSphereLens::~PSphereLens 0 0 0
|
||
|
32
|
||
|
PSphereLens::~PSphereLens(void);
|
||
|
|
||
|
63
|
||
|
1 0 0 7 3 137 66 0 10 /**
|
||
|
*
|
||
|
*/ 0
|
||
|
2 0 0 7 4 139 0 0 0 0
|
||
|
3 0 0 7 7 140 69 0 10 /**
|
||
|
*
|
||
|
*/ 0
|
||
|
4 0 0 7 8 139 0 0 0 0
|
||
|
5 0 0 7 12 142 0 0 10 /**
|
||
|
*
|
||
|
*/ 1 4 name 1 141
|
||
|
6 0 0 4 13 146 0 0 370 /**
|
||
|
* Specifies the LensNode that is to serve as the projector for this screen.
|
||
|
* The relative position of the LensNode to the ProjectionScreen, as well as
|
||
|
* the properties of the lens associated with the LensNode, determines the
|
||
|
* UV's that will be assigned to the geometry within the ProjectionScreen.
|
||
|
*
|
||
|
* The NodePath must refer to a LensNode (or a Camera).
|
||
|
*/ 2 4 this 3 142 9 projector 1 143
|
||
|
7 0 0 6 14 143 0 0 141 /**
|
||
|
* Returns the NodePath to the LensNode that is to serve as the projector for
|
||
|
* this screen, or empty if no projector is associated.
|
||
|
*/ 1 4 this 3 147
|
||
|
8 0 0 4 15 146 0 0 80 /**
|
||
|
* Removes the distortion lookup table from the projector, if specified.
|
||
|
*/ 1 4 this 3 142
|
||
|
9 0 0 4 16 146 0 0 314 /**
|
||
|
* Applies a distortion lookup table to the projector. This mapping warps the
|
||
|
* lens effect by passing each ray through an indirection table: the point
|
||
|
* (u,v) in the indicated lookup table stores the actual (u,v) that the lens
|
||
|
* produces.
|
||
|
*
|
||
|
* This does not affect the operation of generate_screen().
|
||
|
*/ 2 4 this 3 142 10 undist_lut 1 149
|
||
|
10 0 0 6 17 152 0 0 113 /**
|
||
|
* Returns true if a valid distortion lookup table was provided via
|
||
|
* set_undist_lut(), false otherwise.
|
||
|
*/ 1 4 this 3 147
|
||
|
11 0 0 6 18 149 0 0 85 /**
|
||
|
* Returns the distortion lookup table provided via set_undist_lut(), if any.
|
||
|
*/ 1 4 this 3 147
|
||
|
12 0 0 7 19 157 0 0 1183 /**
|
||
|
* Synthesizes a polygon mesh based on the projection area of the indicated
|
||
|
* projector. This generates and returns a new GeomNode but does not
|
||
|
* automatically parent it to the ProjectionScreen node; see
|
||
|
* regenerate_screen().
|
||
|
*
|
||
|
* The specified projector need not be the same as the projector given to the
|
||
|
* ProjectionScreen with set_projector() (although this is often what you
|
||
|
* want).
|
||
|
*
|
||
|
* num_x_verts and num_y_verts specify the number of vertices to make in the
|
||
|
* grid across the horizontal and vertical dimension of the projector,
|
||
|
* respectively; distance represents the approximate distance of the screen
|
||
|
* from the lens center.
|
||
|
*
|
||
|
* The fill_ratio parameter specifies the fraction of the image to cover. If
|
||
|
* it is 1.0, the entire image is shown full-size; if it is 0.9, 10% of the
|
||
|
* image around the edges is not part of the grid (and the grid is drawn
|
||
|
* smaller by the same 10%). This is intended to work around graphics drivers
|
||
|
* that tend to show dark edges or other unsatisfactory artifacts around the
|
||
|
* edges of textures: render the texture larger than necessary by a certain
|
||
|
* fraction, and make the screen smaller by the inverse fraction.
|
||
|
*/ 7 4 this 3 142 9 projector 1 143 11 screen_name 1 141 11 num_x_verts 1 154 11 num_y_verts 1 154 8 distance 1 155 10 fill_ratio 1 155
|
||
|
13 0 0 4 20 146 0 0 136 /**
|
||
|
* Removes all the children from the ProjectionScreen node, and adds the newly
|
||
|
* generated child returned by generate_screen().
|
||
|
*/ 7 4 this 3 142 9 projector 1 143 11 screen_name 1 141 11 num_x_verts 1 154 11 num_y_verts 1 154 8 distance 1 155 10 fill_ratio 1 155
|
||
|
14 0 0 7 21 158 0 0 647 /**
|
||
|
* Generates a deep copy of the hierarchy at the ProjectionScreen node and
|
||
|
* below, with vertices flattened into two dimensions as if they were seen by
|
||
|
* the indicated camera node.
|
||
|
*
|
||
|
* This is useful for rendering an image as seen through a non-linear lens.
|
||
|
* The resulting mesh will have vertices in the range [-1, 1] in both x and y,
|
||
|
* and may be then rendered with an ordinary orthographic lens, to generate
|
||
|
* the effect of seeing the image through the specified non-linear lens.
|
||
|
*
|
||
|
* The returned node has no parent; it is up to the caller to parent it
|
||
|
* somewhere or store it so that it does not get dereferenced and deleted.
|
||
|
*/ 3 4 this 3 142 7 this_np 1 143 6 camera 1 143
|
||
|
15 0 0 4 22 146 0 0 269 /**
|
||
|
* Specifies the name of the texture coordinates that are generated by this
|
||
|
* particular ProjectionScreen. This can be used in the presence of
|
||
|
* multitexturing to compute the UV's for just a subset of all of the active
|
||
|
* stages of the multitexture pipeline.
|
||
|
*/ 2 4 this 3 142 13 texcoord_name 1 141
|
||
|
16 0 0 6 23 141 0 0 148 /**
|
||
|
* Returns the name of the texture coordinates that will be generated by this
|
||
|
* particular ProjectionScreen, as set by set_texcoord_name().
|
||
|
*/ 1 4 this 3 147
|
||
|
17 0 0 4 24 146 0 0 439 /**
|
||
|
* Some OpenGL graphics drivers are known to invert the framebuffer image when
|
||
|
* they copy it to texture. (This is arguably a problem with the OpenGL spec,
|
||
|
* which seems to be unclear about the proper ordering of pixels in this
|
||
|
* operation.)
|
||
|
*
|
||
|
* In any case, set this true to compensate for this effect by inverting the
|
||
|
* UV's of the projection screen. The default is taken from the Configrc
|
||
|
* variable project-invert-uvs.
|
||
|
*/ 2 4 this 3 142 10 invert_uvs 1 152
|
||
|
18 0 0 6 25 152 0 0 135 /**
|
||
|
* Returns whether this screen is compensating for a graphics driver inverting
|
||
|
* the framebuffer image. See set_invert_uvs().
|
||
|
*/ 1 4 this 3 147
|
||
|
19 0 0 4 26 146 0 0 322 /**
|
||
|
* Set this true to force 3-D texture coordinates to be created for the
|
||
|
* geometry. When this is true and the geometry has only 2-D texture
|
||
|
* coordinates, those texture coordinates are dumped in favor of 3-D
|
||
|
* coordinates. When this is false, whatever texture coordinates already
|
||
|
* exist are preserved as-is.
|
||
|
*/ 2 4 this 3 142 11 texcoord_3d 1 152
|
||
|
20 0 0 6 27 152 0 0 33 /**
|
||
|
* See set_texcoord_3d().
|
||
|
*/ 1 4 this 3 147
|
||
|
21 0 0 4 28 146 0 0 471 /**
|
||
|
* Specifies whether vertex-based vignetting should be on. When this is
|
||
|
* enabled, vertex color will be set on the screen vertices to color the
|
||
|
* screen two distinct colors, usually white and black, for the parts of the
|
||
|
* screen in front of and outside the lens' frustum, respectively. When this
|
||
|
* is not enabled, the screen color will be left alone.
|
||
|
*
|
||
|
* This effect generally looks terrible, but it does at least make the
|
||
|
* boundaries of the lens clear.
|
||
|
*/ 2 4 this 3 142 11 vignette_on 1 152
|
||
|
22 0 0 6 29 152 0 0 101 /**
|
||
|
* Returns true if vertex-based vignetting is on, false otherwise. See
|
||
|
* set_vignette_on().
|
||
|
*/ 1 4 this 3 147
|
||
|
23 0 0 4 30 146 0 0 244 /**
|
||
|
* Specifies the color the screen will be painted at the portions outside of
|
||
|
* the lens' frustum; i.e. where the lens can't see it or illuminate it.
|
||
|
* This color is only used if the vignette_on flag is true; see
|
||
|
* set_vignette_on().
|
||
|
*/ 2 4 this 3 142 14 vignette_color 1 159
|
||
|
24 0 0 6 31 159 0 0 131 /**
|
||
|
* Returns the color the screen will be painted at the portions outside of the
|
||
|
* lens' frustum. See set_vignette_color().
|
||
|
*/ 1 4 this 3 147
|
||
|
25 0 0 4 32 146 0 0 244 /**
|
||
|
* Specifies the color the screen will be painted at the portions outside of
|
||
|
* the lens' frustum; i.e. where the lens can't see it or illuminate it.
|
||
|
* This color is only used if the vignette_on flag is true; see
|
||
|
* set_vignette_on().
|
||
|
*/ 2 4 this 3 142 11 frame_color 1 159
|
||
|
26 0 0 6 33 159 0 0 128 /**
|
||
|
* Returns the color the screen will be painted at the portions outside of the
|
||
|
* lens' frustum. See set_frame_color().
|
||
|
*/ 1 4 this 3 147
|
||
|
27 0 0 4 34 146 0 0 229 /**
|
||
|
* Sets the auto_recompute flag. When this is true, the ProjectionScreen will
|
||
|
* always be recomputed if necessary before the frame is drawn; when it is
|
||
|
* false, an explicit call to recompute_if_stale() may be required.
|
||
|
*/ 2 4 this 3 142 14 auto_recompute 1 152
|
||
|
28 0 0 6 35 152 0 0 232 /**
|
||
|
* Returns the auto_recompute flag. When this is true, the ProjectionScreen
|
||
|
* will always be recomputed if necessary before the frame is drawn; when it
|
||
|
* is false, an explicit call to recompute_if_stale() may be required.
|
||
|
*/ 1 4 this 3 147
|
||
|
29 0 0 4 36 146 0 0 375 /**
|
||
|
* Recomputes all the UV's for geometry below the ProjectionScreen node, as if
|
||
|
* the texture were projected from the associated projector.
|
||
|
*
|
||
|
* This function is normally called automatically whenever the relevant
|
||
|
* properties change, so it should not normally need to be called directly by
|
||
|
* the user. However, it does no harm to call this if there is any doubt.
|
||
|
*/ 1 4 this 3 142
|
||
|
30 0 0 6 37 164 0 0 290 /**
|
||
|
* Returns an UpdateSeq corresponding to the last time a screen mesh was
|
||
|
* generated for the ProjectionScreen. Each time generate_screen() is called,
|
||
|
* this number is incremented; this allows other objects (like
|
||
|
* NonlinearImager) to know when they need to recompute themselves.
|
||
|
*/ 1 4 this 3 147
|
||
|
31 0 0 6 38 152 0 0 218 /**
|
||
|
* Calls recompute() only if the relative transform between the
|
||
|
* ProjectionScreen and the projector has changed, or if any other relevant
|
||
|
* property has changed. Returns true if recomputed, false otherwise.
|
||
|
*/ 1 4 this 3 142
|
||
|
32 0 0 6 38 152 0 0 218 /**
|
||
|
* Calls recompute() only if the relative transform between the
|
||
|
* ProjectionScreen and the projector has changed, or if any other relevant
|
||
|
* property has changed. Returns true if recomputed, false otherwise.
|
||
|
*/ 2 4 this 3 142 7 this_np 1 143
|
||
|
33 0 0 7 39 139 0 0 0 0
|
||
|
34 0 0 7 41 167 99 0 10 /**
|
||
|
*
|
||
|
*/ 0
|
||
|
35 0 0 7 41 167 99 0 0 1 6 param0 0 168
|
||
|
36 0 0 6 43 154 0 0 628 /**
|
||
|
* Adds a new ProjectionScreen to the list of screens that will be processed
|
||
|
* by the NonlinearImager. Each ProjectionScreen represents a view into the
|
||
|
* world. It must be based on a linear camera (or whatever kind of camera is
|
||
|
* respected by the graphics engine).
|
||
|
*
|
||
|
* Each ProjectionScreen object should already have some screen geometry
|
||
|
* created.
|
||
|
*
|
||
|
* As each frame is rendered, an offscreen image will be rendered from the
|
||
|
* source camera associated with each ProjectionScreen, and the resulting
|
||
|
* image will be applied to the screen geometry.
|
||
|
*
|
||
|
* The return value is the index number of the new screen.
|
||
|
*/ 3 4 this 3 167 6 screen 1 143 4 name 1 141
|
||
|
37 0 0 6 43 154 0 0 133 /**
|
||
|
* This version of this method is deprecated and will soon be removed. Use
|
||
|
* the version that takes two parameters instead.
|
||
|
*/ 2 4 this 3 167 6 screen 1 142
|
||
|
38 0 0 6 44 154 0 0 141 /**
|
||
|
* Returns the index number of the first appearance of the indicated screen
|
||
|
* within the imager's list, or -1 if it does not appear.
|
||
|
*/ 2 4 this 3 168 6 screen 1 143
|
||
|
39 0 0 4 45 146 0 0 78 /**
|
||
|
* Removes the screen with the indicated index number from the imager.
|
||
|
*/ 2 4 this 3 167 5 index 1 154
|
||
|
40 0 0 4 46 146 0 0 47 /**
|
||
|
* Removes all screens from the imager.
|
||
|
*/ 1 4 this 3 167
|
||
|
41 0 0 6 47 154 0 0 76 /**
|
||
|
* Returns the number of screens that have been added to the imager.
|
||
|
*/ 1 4 this 3 168
|
||
|
42 0 0 7 48 170 0 0 68 /**
|
||
|
* Returns the nth screen that has been added to the imager.
|
||
|
*/ 2 4 this 3 168 5 index 1 154
|
||
|
43 0 0 7 50 172 0 0 190 /**
|
||
|
* Returns the offscreen buffer that is automatically created for the nth
|
||
|
* projection screen. This may return NULL if the screen is inactive or if it
|
||
|
* has not been rendered yet.
|
||
|
*/ 2 4 this 3 168 5 index 1 154
|
||
|
44 0 0 4 52 146 0 0 285 /**
|
||
|
* Sets the width and height of the texture used to render the scene for the
|
||
|
* indicated screen. This must be less than or equal to the window size, and
|
||
|
* it should be a power of two.
|
||
|
*
|
||
|
* In general, the larger the texture, the greater the detail of the rendered
|
||
|
* scene.
|
||
|
*/ 4 4 this 3 167 5 index 1 154 5 width 1 154 6 height 1 154
|
||
|
45 0 0 4 53 146 0 0 229 /**
|
||
|
* Specifies the camera that will be used to render the image for this
|
||
|
* particular screen.
|
||
|
*
|
||
|
* The parameter must be a NodePath whose node is a Camera. The camera itself
|
||
|
* indicates the scene that is to be rendered.
|
||
|
*/ 3 4 this 3 167 5 index 1 154 13 source_camera 1 143
|
||
|
46 0 0 4 54 146 0 0 144 /**
|
||
|
* Sets the active flag on the indicated screen. If the active flag is true,
|
||
|
* the screen will be used; otherwise, it will not appear.
|
||
|
*/ 3 4 this 3 167 5 index 1 154 6 active 1 152
|
||
|
47 0 0 6 55 152 0 0 59 /**
|
||
|
* Returns the active flag on the indicated screen.
|
||
|
*/ 2 4 this 3 168 5 index 1 154
|
||
|
48 0 0 6 56 154 0 0 615 /**
|
||
|
* Adds the indicated DisplayRegion as a viewer into the NonlinearImager room.
|
||
|
* The camera associated with the DisplayRegion at the time add_viewer() is
|
||
|
* called is used as the initial viewer camera; it may have a nonlinear lens,
|
||
|
* like a fisheye or cylindrical lens.
|
||
|
*
|
||
|
* This sets up a special scene graph for this DisplayRegion alone and sets up
|
||
|
* the DisplayRegion with a specialty camera. If future changes to the camera
|
||
|
* are desired, you should use the set_viewer_camera() interface.
|
||
|
*
|
||
|
* All viewers must share the same GraphicsEngine.
|
||
|
*
|
||
|
* The return value is the index of the new viewer.
|
||
|
*/ 2 4 this 3 167 2 dr 1 173
|
||
|
49 0 0 6 57 154 0 0 123 /**
|
||
|
* Returns the index number of the indicated DisplayRegion within the list of
|
||
|
* viewers, or -1 if it is not found.
|
||
|
*/ 2 4 this 3 168 2 dr 1 173
|
||
|
50 0 0 4 58 146 0 0 78 /**
|
||
|
* Removes the viewer with the indicated index number from the imager.
|
||
|
*/ 2 4 this 3 167 5 index 1 154
|
||
|
51 0 0 4 59 146 0 0 47 /**
|
||
|
* Removes all viewers from the imager.
|
||
|
*/ 1 4 this 3 167
|
||
|
52 0 0 4 60 146 0 0 584 /**
|
||
|
* Specifies the LensNode that is to serve as the viewer for this screen. The
|
||
|
* relative position of the LensNode to the NonlinearImager, as well as the
|
||
|
* properties of the lens associated with the LensNode, determines the UV's
|
||
|
* that will be assigned to the geometry within the NonlinearImager.
|
||
|
*
|
||
|
* It is not necessary to call this except to change the camera after a viewer
|
||
|
* has been added, since the default is to use whatever camera is associated
|
||
|
* with the DisplayRegion at the time the viewer is added.
|
||
|
*
|
||
|
* The NodePath must refer to a LensNode (or a Camera).
|
||
|
*/ 3 4 this 3 167 5 index 1 154 13 viewer_camera 1 143
|
||
|
53 0 0 7 61 170 0 0 98 /**
|
||
|
* Returns the NodePath to the LensNode that is to serve as nth viewer for
|
||
|
* this screen.
|
||
|
*/ 2 4 this 3 168 5 index 1 154
|
||
|
54 0 0 7 62 170 0 0 451 /**
|
||
|
* Returns a pointer to the root node of the internal scene graph for the nth
|
||
|
* viewer, which is used to render all of the screen meshes for this viewer.
|
||
|
*
|
||
|
* This is the scene graph in which the screen meshes within the dark room
|
||
|
* have been flattened into the appropriate transformation according to the
|
||
|
* viewer's lens properties (and position relative to the screens). It is
|
||
|
* this scene graph that is finally rendered to the window.
|
||
|
*/ 2 4 this 3 168 5 index 1 154
|
||
|
55 0 0 6 63 154 0 0 76 /**
|
||
|
* Returns the number of viewers that have been added to the imager.
|
||
|
*/ 1 4 this 3 168
|
||
|
56 0 0 7 64 173 0 0 84 /**
|
||
|
* Returns the nth viewer's DisplayRegion that has been added to the imager.
|
||
|
*/ 2 4 this 3 168 5 index 1 154
|
||
|
57 0 0 7 66 170 0 0 566 /**
|
||
|
* Returns the NodePath to the root of the dark room scene. This is the scene
|
||
|
* in which all of the ProjectionScreens and the viewer cameras reside. It's
|
||
|
* a standalone scene with a few projection screens arranged artfully around
|
||
|
* one or more viewers; it's so named because it's a little virtual theater.
|
||
|
*
|
||
|
* Normally this scene is not rendered directly; it only exists as an abstract
|
||
|
* concept, and to define the relation between the ProjectionScreens and the
|
||
|
* viewers. But it may be rendered to help visualize the NonlinearImager's
|
||
|
* behavior.
|
||
|
*/ 1 4 this 3 168
|
||
|
58 0 0 7 67 176 0 0 109 /**
|
||
|
* Returns the GraphicsEngine that all of the viewers added to the
|
||
|
* NonlinearImager have in common.
|
||
|
*/ 1 4 this 3 168
|
||
|
59 0 0 4 68 146 0 0 62 /**
|
||
|
* Forces a regeneration of all the mesh objects, etc.
|
||
|
*/ 1 4 this 3 167
|
||
|
60 0 0 7 70 177 125 0 10 /**
|
||
|
*
|
||
|
*/ 0
|
||
|
61 0 0 7 71 139 0 0 0 0
|
||
|
62 0 0 7 74 178 128 0 10 /**
|
||
|
*
|
||
|
*/ 0
|
||
|
63 0 0 7 75 139 0 0 0 0
|
||
|
50
|
||
|
129 15 CylindricalLens 0 141313 15 CylindricalLens 15 CylindricalLens 0 0 0 1 64 66 0 1 65 0 0 1 0 130 0 0 0 0 678
|
||
|
/**
|
||
|
* A cylindrical lens. This is the kind of lens generally used for extremely
|
||
|
* wide panoramic shots. It behaves like a normal perspective lens in the
|
||
|
* vertical direction, but it is non-linear in the horizontal dimension: a
|
||
|
* point on the film corresponds to a point in space in linear proportion to
|
||
|
* its angle to the camera, not to its straight-line distance from the center.
|
||
|
*
|
||
|
* This allows up to 360 degree lenses in the horizontal dimension, with
|
||
|
* relatively little distortion. The distortion is not very apparent between
|
||
|
* two relatively nearby points on the film, but it becomes increasingly
|
||
|
* evident as you compare points widely spaced on the film.
|
||
|
*/
|
||
|
|
||
|
130 4 Lens 0 2048 4 Lens 4 Lens 0 0 0 0 0 0 0 0 0 0 0 0 398
|
||
|
/**
|
||
|
* A base class for any number of different kinds of lenses, linear and
|
||
|
* otherwise. Presently, this includes perspective and orthographic lenses.
|
||
|
*
|
||
|
* A Lens object is the main part of a Camera node, which defines the
|
||
|
* fundamental interface to point-of-view for rendering. Lenses are also used
|
||
|
* in other contexts, however; for instance, a Spotlight is also defined using
|
||
|
* a lens.
|
||
|
*/
|
||
|
|
||
|
131 11 FisheyeLens 0 141313 11 FisheyeLens 11 FisheyeLens 0 0 0 1 67 69 0 1 68 0 0 1 0 130 0 0 0 0 241
|
||
|
/**
|
||
|
* A fisheye lens. This nonlinear lens introduces a spherical distortion to
|
||
|
* the image, which is minimal at small angles from the lens, and increases at
|
||
|
* larger angles from the lens. The field of view may extend to 360 degrees.
|
||
|
*/
|
||
|
|
||
|
132 16 ProjectionScreen 0 75777 16 ProjectionScreen 16 ProjectionScreen 0 0 0 1 70 0 0 27 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 0 0 1 0 133 0 0 0 0 932
|
||
|
/**
|
||
|
* A ProjectionScreen implements a simple system for projective texturing.
|
||
|
* The ProjectionScreen node is the parent of a hierarchy of geometry that is
|
||
|
* considered a "screen"; the ProjectionScreen will automatically recompute
|
||
|
* all the UV's (for a particular texture stage) on its subordinate geometry
|
||
|
* according to the relative position and lens parameters of the indicated
|
||
|
* LensNode.
|
||
|
*
|
||
|
* All this does is recompute UV's; the caller is responsible for applying the
|
||
|
* appropriate texture(s) to the geometry.
|
||
|
*
|
||
|
* This does not take advantage of any hardware-assisted projective texturing;
|
||
|
* all of the UV's are computed in the CPU. (Use NodePath::project_texture()
|
||
|
* to enable hardware-assisted projective texturing.) However, the
|
||
|
* ProjectionScreen interface does support any kind of lens, linear or
|
||
|
* nonlinear, that might be defined using the Lens interface, including
|
||
|
* fisheye and cylindrical lenses.
|
||
|
*/
|
||
|
|
||
|
133 9 PandaNode 0 2048 9 PandaNode 9 PandaNode 0 0 0 0 0 0 0 0 0 0 0 0 175
|
||
|
/**
|
||
|
* A basic node of the scene graph or data graph. This is the base class of
|
||
|
* all specialized nodes, and also serves as a generic node with no special
|
||
|
* properties.
|
||
|
*/
|
||
|
|
||
|
134 15 NonlinearImager 0 26625 15 NonlinearImager 15 NonlinearImager 0 0 0 1 98 99 0 23 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 3 179 180 181 0 0 0 0 2315
|
||
|
/**
|
||
|
* This class object combines the rendered output of a 3-d from one or more
|
||
|
* linear (e.g. perspective) cameras, as seen through a single, possibly
|
||
|
* nonlinear camera.
|
||
|
*
|
||
|
* This can be used to generate real-time imagery of a 3-d scene using a
|
||
|
* nonlinear camera, for instance a fisheye camera, even though the underlying
|
||
|
* graphics engine may only support linear cameras. It can also pre-distort
|
||
|
* imagery to compensate for off-axis projectors, and/or curved screens of any
|
||
|
* complexity.
|
||
|
*
|
||
|
|
||
|
*
|
||
|
* A NonlinearImager may be visualized as a dark room into which a number of
|
||
|
* projection screens have been placed, of arbitrary size and shape and at any
|
||
|
* arbitrary position and orientation to each other. Onto each of these
|
||
|
* screens is projected the view as seen by a normal perspective camera that
|
||
|
* exists in the world (that is, under render).
|
||
|
*
|
||
|
* There also exist in the room one or more (possibly nonlinear) cameras,
|
||
|
* called viewers, that observe these screens. The image of the projection
|
||
|
* screens seen by each viewer is finally displayed on the viewer's associated
|
||
|
* DisplayRegion. By placing the viewer(s) appropriately relative to the
|
||
|
* screens, and by choosing suitable lens properties for the viewer(s), you
|
||
|
* can achieve a wide variety of distortion effects.
|
||
|
*
|
||
|
|
||
|
*
|
||
|
* There are several different LensNode (Camera) objects involved at each
|
||
|
* stage in the process. To help keep them all straight, different words are
|
||
|
* used to refer to each different kind of Camera used within this object.
|
||
|
* The camera(s) under render, that capture the original view of the world to
|
||
|
* be projected onto the screens, are called source cameras, and are set per
|
||
|
* screen via set_source_camera(). The LensNode that is associated with each
|
||
|
* screen to project the image as seen from the screen's source camera is
|
||
|
* called a projector; these are set via the ProjectionScreen::set_projector()
|
||
|
* interface. Finally, the cameras that view the whole configuration of
|
||
|
* screens are called viewers; each of these is associated with a
|
||
|
* DisplayRegion, and they are set via set_viewer_camera().
|
||
|
*
|
||
|
* Of all these lenses, only the source cameras must use linear (that is,
|
||
|
* perspective or orthographic) lenses. The projectors and viewers may be any
|
||
|
* arbitrary lens, linear or otherwise.
|
||
|
*/
|
||
|
|
||
|
135 11 OSphereLens 0 141313 11 OSphereLens 11 OSphereLens 0 0 0 1 123 125 0 1 124 0 0 1 0 130 0 0 0 0 374
|
||
|
/**
|
||
|
* A OSphereLens is a special nonlinear lens that doesn't correspond to any
|
||
|
* real physical lenses. It's primarily useful for generating 360-degree
|
||
|
* wraparound images while avoiding the distortion associated with fisheye
|
||
|
* images.
|
||
|
*
|
||
|
* A OSphereLens is similar to a Cylindrical lens and PSphereLens, except that
|
||
|
* it is orthographic in the vertical direction.
|
||
|
*/
|
||
|
|
||
|
136 11 PSphereLens 0 141313 11 PSphereLens 11 PSphereLens 0 0 0 1 126 128 0 1 127 0 0 1 0 130 0 0 0 0 603
|
||
|
/**
|
||
|
* A PSphereLens is a special nonlinear lens that doesn't correspond to any
|
||
|
* real physical lenses. It's primarily useful for generating 360-degree
|
||
|
* wraparound images while avoiding the distortion associated with fisheye
|
||
|
* images.
|
||
|
*
|
||
|
* A PSphereLens is similar to a cylindrical lens, except it is also curved in
|
||
|
* the vertical direction. This allows it to extend to both poles in the
|
||
|
* vertical direction. The mapping is similar to what many modeling packages
|
||
|
* call a sphere mapping: the x coordinate is proportional to azimuth, while
|
||
|
* the y coordinate is proportional to altitude.
|
||
|
*/
|
||
|
|
||
|
137 17 CylindricalLens * 0 8576 17 CylindricalLens * 17 CylindricalLens * 0 0 129 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
138 10 TypeHandle 0 16779264 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 732
|
||
|
/**
|
||
|
* TypeHandle is the identifier used to differentiate C++ class types. Any
|
||
|
* C++ classes that inherit from some base class, and must be differentiated
|
||
|
* at run time, should store a static TypeHandle object that can be queried
|
||
|
* through a static member function named get_class_type(). Most of the time,
|
||
|
* it is also desirable to inherit from TypedObject, which provides some
|
||
|
* virtual functions to return the TypeHandle for a particular instance.
|
||
|
*
|
||
|
* At its essence, a TypeHandle is simply a unique identifier that is assigned
|
||
|
* by the TypeRegistry. The TypeRegistry stores a tree of TypeHandles, so
|
||
|
* that ancestry of a particular type may be queried, and the type name may be
|
||
|
* retrieved for run-time display.
|
||
|
*/
|
||
|
|
||
|
139 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 138 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
140 13 FisheyeLens * 0 8576 13 FisheyeLens * 13 FisheyeLens * 0 0 131 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
141 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
142 18 ProjectionScreen * 0 8576 18 ProjectionScreen * 18 ProjectionScreen * 0 0 132 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
143 16 NodePath const * 0 8576 16 NodePath const * 16 NodePath const * 0 0 144 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
144 14 NodePath const 0 8832 14 NodePath const 14 NodePath const 0 0 145 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
145 8 NodePath 0 2048 8 NodePath 8 NodePath 0 0 0 0 0 0 0 0 0 0 0 0 762
|
||
|
/**
|
||
|
* NodePath is the fundamental system for disambiguating instances, and also
|
||
|
* provides a higher-level interface for manipulating the scene graph.
|
||
|
*
|
||
|
* A NodePath is a list of connected nodes from the root of the graph to any
|
||
|
* sub-node. Each NodePath therefore uniquely describes one instance of a
|
||
|
* node.
|
||
|
*
|
||
|
* NodePaths themselves are lightweight objects that may easily be copied and
|
||
|
* passed by value. Their data is stored as a series of NodePathComponents
|
||
|
* that are stored on the nodes. Holding a NodePath will keep a reference
|
||
|
* count to all the nodes in the path. However, if any node in the path is
|
||
|
* removed or reparented (perhaps through a different NodePath), the NodePath
|
||
|
* will automatically be updated to reflect the changes.
|
||
|
*/
|
||
|
|
||
|
146 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
147 24 ProjectionScreen const * 0 8576 24 ProjectionScreen const * 24 ProjectionScreen const * 0 0 148 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
148 22 ProjectionScreen const 0 8832 22 ProjectionScreen const 22 ProjectionScreen const 0 0 132 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
149 15 PfmFile const * 0 8576 15 PfmFile const * 15 PfmFile const * 0 0 150 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
150 13 PfmFile const 0 8832 13 PfmFile const 13 PfmFile const 0 0 151 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
151 7 PfmFile 0 2048 7 PfmFile 7 PfmFile 0 0 0 0 0 0 0 0 0 0 0 0 155
|
||
|
/**
|
||
|
* Defines a pfm file, a 2-d table of floating-point numbers, either
|
||
|
* 3-component or 1-component, or with a special extension, 2- or 4-component.
|
||
|
*/
|
||
|
|
||
|
152 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
153 8 GeomNode 0 2048 8 GeomNode 8 GeomNode 0 0 0 0 0 0 0 0 0 0 0 0 208
|
||
|
/**
|
||
|
* A node that holds Geom objects, renderable pieces of geometry. This is the
|
||
|
* primary kind of leaf node in the scene graph; almost all visible objects
|
||
|
* will be contained in a GeomNode somewhere.
|
||
|
*/
|
||
|
|
||
|
154 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
155 11 PN_stdfloat 0 2105344 11 PN_stdfloat 11 PN_stdfloat 0 0 156 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
156 5 float 0 8194 5 float 5 float 0 2 0 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
157 10 GeomNode * 0 8576 10 GeomNode * 10 GeomNode * 0 0 153 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
158 11 PandaNode * 0 8576 11 PandaNode * 11 PandaNode * 0 0 133 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
159 14 LColor const * 0 8576 14 LColor const * 14 LColor const * 0 0 160 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
160 12 LColor const 0 8832 12 LColor const 12 LColor const 0 0 161 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
161 6 LColor 0 2105344 6 LColor 6 LColor 0 0 162 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
162 7 LColorf 0 2105344 7 LColorf 7 LColorf 0 0 163 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
163 10 LVecBase4f 0 2048 10 LVecBase4f 10 LVecBase4f 0 0 0 0 0 0 0 0 0 0 0 0 77
|
||
|
/**
|
||
|
* This is the base class for all three-component vectors and points.
|
||
|
*/
|
||
|
|
||
|
164 17 UpdateSeq const * 0 8576 17 UpdateSeq const * 17 UpdateSeq const * 0 0 165 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
165 15 UpdateSeq const 0 8832 15 UpdateSeq const 15 UpdateSeq const 0 0 166 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
166 9 UpdateSeq 0 2048 9 UpdateSeq 9 UpdateSeq 0 0 0 0 0 0 0 0 0 0 0 0 761
|
||
|
/**
|
||
|
* This is a sequence number that increments monotonically. It can be used to
|
||
|
* track cache updates, or serve as a kind of timestamp for any changing
|
||
|
* properties.
|
||
|
*
|
||
|
* A special class is used instead of simply an int, so we can elegantly
|
||
|
* handle such things as wraparound and special cases. There are two special
|
||
|
* cases. Firstly, a sequence number is 'initial' when it is first created.
|
||
|
* This sequence is older than any other sequence number. Secondly, a
|
||
|
* sequence number may be explicitly set to 'old'. This is older than any
|
||
|
* other sequence number except 'initial'. Finally, we have the explicit
|
||
|
* number 'fresh', which is newer than any other sequence number. All other
|
||
|
* sequences are numeric and are monotonically increasing.
|
||
|
*/
|
||
|
|
||
|
167 17 NonlinearImager * 0 8576 17 NonlinearImager * 17 NonlinearImager * 0 0 134 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
168 23 NonlinearImager const * 0 8576 23 NonlinearImager const * 23 NonlinearImager const * 0 0 169 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
169 21 NonlinearImager const 0 8832 21 NonlinearImager const 21 NonlinearImager const 0 0 134 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
170 10 NodePath * 0 8576 10 NodePath * 10 NodePath * 0 0 145 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
171 14 GraphicsOutput 0 2048 14 GraphicsOutput 14 GraphicsOutput 0 0 0 0 0 0 0 0 0 0 0 0 727
|
||
|
/**
|
||
|
* This is a base class for the various different classes that represent the
|
||
|
* result of a frame of rendering. The most common kind of GraphicsOutput is
|
||
|
* a GraphicsWindow, which is a real-time window on the desktop, but another
|
||
|
* example is GraphicsBuffer, which is an offscreen buffer.
|
||
|
*
|
||
|
* The actual rendering, and anything associated with the graphics context
|
||
|
* itself, is managed by the associated GraphicsStateGuardian (which might
|
||
|
* output to multiple GraphicsOutput objects).
|
||
|
*
|
||
|
* GraphicsOutputs are not actually writable to bam files, of course, but they
|
||
|
* may be passed as event parameters, so they inherit from
|
||
|
* TypedWritableReferenceCount instead of TypedReferenceCount for that
|
||
|
* convenience.
|
||
|
*/
|
||
|
|
||
|
172 16 GraphicsOutput * 0 8576 16 GraphicsOutput * 16 GraphicsOutput * 0 0 171 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
173 15 DisplayRegion * 0 8576 15 DisplayRegion * 15 DisplayRegion * 0 0 174 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
174 13 DisplayRegion 0 2048 13 DisplayRegion 13 DisplayRegion 0 0 0 0 0 0 0 0 0 0 0 0 399
|
||
|
/**
|
||
|
* A rectangular subregion within a window for rendering into. Typically,
|
||
|
* there is one DisplayRegion that covers the whole window, but you may also
|
||
|
* create smaller DisplayRegions for having different regions within the
|
||
|
* window that represent different scenes. You may also stack up
|
||
|
* DisplayRegions like panes of glass, usually for layering 2-d interfaces on
|
||
|
* top of a 3-d scene.
|
||
|
*/
|
||
|
|
||
|
175 14 GraphicsEngine 0 2048 14 GraphicsEngine 14 GraphicsEngine 0 0 0 0 0 0 0 0 0 0 0 0 498
|
||
|
/**
|
||
|
* This class is the main interface to controlling the render process. There
|
||
|
* is typically only one GraphicsEngine in an application, and it synchronizes
|
||
|
* rendering to all all of the active windows; although it is possible to have
|
||
|
* multiple GraphicsEngine objects if multiple synchronicity groups are
|
||
|
* required.
|
||
|
*
|
||
|
* The GraphicsEngine is responsible for managing the various cull and draw
|
||
|
* threads. The application simply calls engine->render_frame() and considers
|
||
|
* it done.
|
||
|
*/
|
||
|
|
||
|
176 16 GraphicsEngine * 0 8576 16 GraphicsEngine * 16 GraphicsEngine * 0 0 175 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
177 13 OSphereLens * 0 8576 13 OSphereLens * 13 OSphereLens * 0 0 135 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
178 13 PSphereLens * 0 8576 13 PSphereLens * 13 PSphereLens * 0 0 136 0 0 0 0 0 0 0 0 0 0
|
||
|
|
||
|
0
|
||
|
0
|
||
|
3
|
||
|
179 11 get_screens 0 104 105 28 NonlinearImager::get_screens 0
|
||
|
|
||
|
180 11 get_buffers 0 104 106 28 NonlinearImager::get_buffers 0
|
||
|
|
||
|
181 11 get_viewers 0 118 119 28 NonlinearImager::get_viewers 0
|
||
|
|