35 void CSetOfTexturedTriangles::render_texturedobj()
const
37 #if MRPT_HAS_OPENGL_GLUT
44 float ax, ay, az, bx,
by,
bz;
47 for (it = m_triangles.begin(); it != m_triangles.end(); ++it)
51 ax = it->m_v2.m_x - it->m_v1.m_x;
52 ay = it->m_v2.m_y - it->m_v1.m_y;
53 az = it->m_v2.m_z - it->m_v1.m_z;
55 bx = it->m_v3.m_x - it->m_v1.m_x;
56 by = it->m_v3.m_y - it->m_v1.m_y;
57 bz = it->m_v3.m_z - it->m_v1.m_z;
61 glTexCoord2d(
float(it->m_v1.m_u)/r_width,
float(it->m_v1.m_v)/r_height);
glVertex3f(it->m_v1.m_x, it->m_v1.m_y, it->m_v1.m_z);
62 glTexCoord2d(
float(it->m_v2.m_u)/r_width,
float(it->m_v2.m_v)/r_height);
glVertex3f(it->m_v2.m_x, it->m_v2.m_y, it->m_v2.m_z);
63 glTexCoord2d(
float(it->m_v3.m_u)/r_width,
float(it->m_v3.m_v)/r_height);
glVertex3f(it->m_v3.m_x, it->m_v3.m_y, it->m_v3.m_z);
84 writeToStreamRender(out);
85 writeToStreamTexturedObject(out);
92 m_triangles[i].writeToStream(out);
108 readFromStreamRender(
in);
111 readFromStreamTexturedObject(
in);
115 in >> CTexturedObject::m_textureImage;
116 in >> CTexturedObject::m_enableTransparency;
117 if (CTexturedObject::m_enableTransparency)
119 in >> CTexturedObject::m_textureImageAlpha;
120 assignImage( CTexturedObject::m_textureImage, CTexturedObject::m_textureImageAlpha );
123 assignImage( CTexturedObject::m_textureImage );
128 m_triangles.resize(
n);
131 m_triangles[i].readFromStream(
in);
137 CRenderizableDisplayList::notifyChange();
143 throw std::runtime_error(
"TODO: TraceRay not implemented in CSetOfTexturedTriangles");
148 bb_min =
mrpt::math::TPoint3D(std::numeric_limits<double>::max(),std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
149 bb_max =
mrpt::math::TPoint3D(-std::numeric_limits<double>::max(),-std::numeric_limits<double>::max(),-std::numeric_limits<double>::max());
151 for (
size_t i=0;i<m_triangles.size();i++)
169 m_pose.composePoint(bb_min, bb_min);
170 m_pose.composePoint(bb_max, bb_max);
174 CSetOfTexturedTriangles::TVertex::TVertex( ) :
175 m_x(0.0), m_y(0.0), m_z(0.0), m_u(0), m_v(0)
179 m_x(
x), m_y(
y), m_z(
z), m_u(u), m_v(
v)
183 out << m_x << m_y << m_z << m_u << m_v;
186 in >> m_x >> m_y >> m_z >> m_u >> m_v;
193 m_v1(
v1), m_v2(
v2), m_v3(
v3)
197 m_v1.writeToStream(out); m_v2.writeToStream(out); m_v3.writeToStream(out);
200 m_v1.readFromStream(
in); m_v2.readFromStream(
in); m_v3.readFromStream(
in);
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
A renderizable object suitable for rendering with OpenGL's display lists.
A set of textured triangles.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
const Scalar * const_iterator
GLAPI void GLAPIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)
GLAPI void GLAPIENTRY glBegin(GLenum mode)
GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z)
GLAPI void GLAPIENTRY glTexCoord2d(GLdouble s, GLdouble t)
GLAPI void GLAPIENTRY glEnd(void)
GLAPI void GLAPIENTRY glShadeModel(GLenum mode)
GLfloat GLfloat GLfloat v2
GLfloat GLfloat GLfloat GLfloat v3
bool BASE_IMPEXP traceRay(const std::vector< TPolygonWithPlane > &vec, const mrpt::poses::CPose3D &pose, double &dist)
Fast ray tracing method using polygons' properties.
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
This base provides a set of functions for maths stuff.
The namespace for 3D scene representation and rendering.
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values,...
void keep_max(T &var, const K test_val)
If the second argument is above the first one, set the first argument to this higher value.
void keep_min(T &var, const K test_val)
If the second argument is below the first one, set the first argument to this lower value.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
unsigned __int32 uint32_t
double z
X,Y,Z coordinates.
void writeToStream(mrpt::utils::CStream &out) const
void readFromStream(mrpt::utils::CStream &in)
TTriangle()
Default constructor.
void writeToStream(mrpt::utils::CStream &out) const
TVertex()
Default constructor
void readFromStream(mrpt::utils::CStream &in)