Rendering Images
In order to render an image, it is necessary to first create a flat piece of geometry consisting of two triangles (usually called a quad or a card) and then apply the desired image as a texture. Panda3D provides convenience methods for creating such a card automatically.
Generating a card
CardMaker
is a convenience class that can be used to generate a card
with arbitrary dimensions. It can be used for rendering an image in the 3D or 2D
scene. The image should be loaded as a texture and then applied to the generated
card:
CardMaker cm("card");
NodePath card = render2d.attach_new_node(cm.generate());
PT(Texture) tex = TexturePool::load_texture("maps/noise.rgb");
card.set_texture(tex);
This will generate a card that causes the image to be stretched to cover the
entire screen. To preserve the aspect ratio of the image, it is necessary to
instead parent it to “aspect2d”, as well as use either
NodePath.set_scale()
or CardMaker.set_frame()
to adjust the
card dimensions to match the aspect ratio of the image.
See the CardMaker
class in the API reference for a full list of
methods to configure the generated card.
Transparency
To enable transparency in images, you must tell Panda3D to enable a transparency mode on the object, otherwise the transparent parts of the image will show up as black. This can be done using the following code:
card.set_transparency(TransparencyAttrib::M_alpha);
See the section on Transparency and Blending for some caveats about rendering objects with transparency.