Classes | |
struct | Line |
Public Member Functions | |
ViewPort3D (int width, int height, bool wireframe=false, bool useLights=true, bool useFeedback=false) | |
Dims | getDims () |
void | setWireframeMode (bool val) |
rendering options | |
void | setLightsMode (bool val) |
void | setFeedbackMode (bool val) |
void | initFrame () |
Initialize a rendering frame. | |
void | initProjection () |
void | initCtx () |
Initialize the opengl context. | |
Image< PixRGB< byte > > | getFrame () |
Render and get a the frame from the buffer. | |
Image< PixRGB< float > > | getFrameFloat () |
std::vector< ViewPort3D::Line > | getFrameLines () |
Render the frame and return lines instread of a frame. | |
Image< float > | getDepthFrame () |
Get the depth Frame. | |
Point3D< float > | getPosition (Point3D< float > loc) |
Get the position of an point in image space to world space. | |
void | setProjectionMatrix (const double cameraParam[3][4]) |
Build a projection matrix based on real camera parameters. | |
void | setProjectionMatrix (float fovy, float aspect, float zmin, float zmax) |
Build a projection matrix based on precpective parameters. | |
int | paramDecompMat (const double source[3][4], double cpara[3][4], double trans[3][4]) |
Decompose a matrix. | |
void | setCamera (const Point3D< float > pos, const Point3D< float > rot) |
Setup the camera viewport. | |
void | setCamera (const double trans[3][4]) |
void | setLights () |
Setup the lights. | |
void | setColor (const PixRGB< byte > color) |
void | drawGrid (Dims size, Dims step, float height=0) |
void | drawLine (const Point3D< float > &p1, const Point3D< float > &p2) |
void | drawRectangle (const Point3D< float > pos, const Point3D< float > rot, const float width, const float height, const PixRGB< byte > color) |
void | drawCircle (const Point3D< float > pos, const Point3D< float > rot, const float radius, const PixRGB< byte > color) |
void | drawDisk (const Point3D< float > pos, const Point3D< float > rot, const float radius, const PixRGB< byte > color) |
void | drawEllipse (const Point3D< float > pos, const Point3D< float > rot, const float radiusX, const float radiusY, const PixRGB< byte > color) |
void | drawBox (const Point3D< float > pos, const Point3D< float > rot, const Point3D< float > size, const PixRGB< byte > color) |
void | drawExtrudedContour (const std::vector< Point2D< float > > &contour, const Point3D< float > pos, const Point3D< float > rot, const float thickness, const PixRGB< byte > color) |
Draw an extruded contour. | |
void | drawSphere (const Point3D< float > pos, const Point3D< float > rot, const Point3D< float > size, const PixRGB< byte > color) |
Draw a sphere. | |
void | drawCylinder (const Point3D< float > pos, const Point3D< float > rot, const float radius, const float length, const PixRGB< byte > color) |
Draw a cylinder. | |
void | drawCone (const Point3D< float > pos, const Point3D< float > rot, const float radius, const float length, const PixRGB< byte > color) |
Draw a cone. | |
void | drawCappedCylinder (const Point3D< float > pos, const Point3D< float > rot, const float radius, const float length, const PixRGB< byte > color) |
Draw a Capped cylinder. | |
void | drawGround (const Point2D< float > size, const PixRGB< byte > color) |
Draw the ground. | |
uint | generateSphere (int quality) |
Generate a unit sphere and save it in a list for faster processing. | |
std::vector< Point2D< float > > | triangulate (const std::vector< Point2D< float > > &contour) |
Triangulate a polygon. | |
bool | snip (const std::vector< Point2D< float > > &contour, int u, int v, int w, int n, int *V) |
void | drawPatch (double p1[3], double p2[3], double p3[3], int level) |
uint | addTexture (const Image< PixRGB< byte > > &textureImg) |
Add a texture from Image and return its id in texture memory. | |
uint | addTexture (const Image< float > &textureImg) |
void | bindTexture (const uint texId) |
Bind a texture id to current set. | |
void | loadTexture (const Image< PixRGB< byte > > &textureImg, uint texId) |
Load texture to an exsisting id. | |
void | printInfoLog (GLhandleARB obj) |
Shader support. | |
GLhandleARB | createShader (const char *prog, int type) |
Shader support. | |
void | progToTexture (const GLhandleARB prog, const int texId=-1) |
Render a program into a texture (-1 use current texture). |
Definition at line 66 of file ViewPort3D.H.
Add a texture from Image and return its id in texture memory.
Definition at line 1506 of file ViewPort3D.C.
void ViewPort3D::bindTexture | ( | const uint | texId | ) |
Bind a texture id to current set.
Definition at line 1580 of file ViewPort3D.C.
GLhandleARB ViewPort3D::createShader | ( | const char * | prog, | |
int | type | |||
) |
void ViewPort3D::drawExtrudedContour | ( | const std::vector< Point2D< float > > & | contour, | |
const Point3D< float > | pos, | |||
const Point3D< float > | rot, | |||
const float | thickness, | |||
const PixRGB< byte > | color | |||
) |
Draw an extruded contour.
Definition at line 1360 of file ViewPort3D.C.
References sqrt(), triangulate(), and Point3D< T >::x.
void ViewPort3D::drawPatch | ( | double | p1[3], | |
double | p2[3], | |||
double | p3[3], | |||
int | level | |||
) |
This is recursively subdivides a triangular area (vertices p1,p2,p3) into smaller triangles, and then draws the triangles. All triangle vertices are normalized to a distance of 1.0 from the origin (p1,p2,p3 are assumed to be already normalized). Note this is not super-fast because it draws triangles rather than triangle strips.
Definition at line 1047 of file ViewPort3D.C.
References sqrt().
Referenced by generateSphere().
void ViewPort3D::drawSphere | ( | const Point3D< float > | pos, | |
const Point3D< float > | rot, | |||
const Point3D< float > | size, | |||
const PixRGB< byte > | color | |||
) |
Draw a sphere.
Definition at line 964 of file ViewPort3D.C.
References generateSphere(), and Point3D< T >::x.
uint ViewPort3D::generateSphere | ( | int | quality | ) |
Generate a unit sphere and save it in a list for faster processing.
Definition at line 999 of file ViewPort3D.C.
References drawPatch().
Referenced by drawSphere().
Image< float > ViewPort3D::getDepthFrame | ( | ) |
Get the depth Frame.
Definition at line 411 of file ViewPort3D.C.
References Image< T >::getArrayPtr(), and NO_INIT.
Render and get a the frame from the buffer.
Definition at line 382 of file ViewPort3D.C.
References Image< T >::getArrayPtr(), and NO_INIT.
std::vector< ViewPort3D::Line > ViewPort3D::getFrameLines | ( | ) |
Render the frame and return lines instread of a frame.
Definition at line 425 of file ViewPort3D.C.
References Point2D< T >::i.
Get the position of an point in image space to world space.
Definition at line 489 of file ViewPort3D.C.
References Point3D< T >::x.
void ViewPort3D::initCtx | ( | ) |
Initialize the opengl context.
Definition at line 218 of file ViewPort3D.C.
void ViewPort3D::initFrame | ( | ) |
Initialize a rendering frame.
Definition at line 224 of file ViewPort3D.C.
References setLights(), and Point3D< T >::x.
Load texture to an exsisting id.
Definition at line 1566 of file ViewPort3D.C.
References Image< T >::getArrayPtr(), Image< T >::getHeight(), and Image< T >::getWidth().
int ViewPort3D::paramDecompMat | ( | const double | source[3][4], | |
double | cpara[3][4], | |||
double | trans[3][4] | |||
) |
Decompose a matrix.
Definition at line 594 of file ViewPort3D.C.
Referenced by setProjectionMatrix().
void ViewPort3D::printInfoLog | ( | GLhandleARB | obj | ) |
void ViewPort3D::progToTexture | ( | const GLhandleARB | prog, | |
const int | texId = -1 | |||
) |
Render a program into a texture (-1 use current texture).
Definition at line 1668 of file ViewPort3D.C.
Setup the camera viewport.
Definition at line 360 of file ViewPort3D.C.
void ViewPort3D::setLights | ( | ) |
void ViewPort3D::setProjectionMatrix | ( | float | fovy, | |
float | aspect, | |||
float | zmin, | |||
float | zmax | |||
) |
Build a projection matrix based on precpective parameters.
Definition at line 517 of file ViewPort3D.C.
void ViewPort3D::setProjectionMatrix | ( | const double | cameraParam[3][4] | ) |
Build a projection matrix based on real camera parameters.
Definition at line 538 of file ViewPort3D.C.
References paramDecompMat().
void ViewPort3D::setWireframeMode | ( | bool | val | ) | [inline] |
rendering options
Definition at line 86 of file ViewPort3D.H.
std::vector< Point2D< float > > ViewPort3D::triangulate | ( | const std::vector< Point2D< float > > & | contour | ) |
Triangulate a polygon.
Definition at line 1443 of file ViewPort3D.C.
References area().
Referenced by drawExtrudedContour().