panda3d.core.MeshDrawer

from panda3d.core import MeshDrawer
class MeshDrawer

Bases: TypedObject

Mesh drawer creates a single geom object that can be shaped with different draw commands. This is an efficient way to render bunch of billboards, particles, fast changing triangles. Its implemented by recycling same geom over and over again. Max budget specifies how many triangles are allowed. Some uses of this class can be : particle system, radar icons, health bars, 2d icons, 2d ui, bullets, missile trails. Any that can be drawn with triangles can be drawn with this class. At the low level this uses the GeomVertexRewriter’s. The internal geom consists of vertex, normal, uv and color channels.

Inheritance diagram

Inheritance diagram of MeshDrawer

__init__() → None

Creates the MeshDrawer low level system.

begin(camera: NodePath, render: NodePath) → None

Pass the current camera node and the root node. Passing the camera is required to generate bill boards that face it.

billboard(pos: LVector3, frame: LVector4, size: float, color: LVector4) → None

Draws a billboard - particle with no rotation. Billboards always face the camera. Frame contains u,v,u-size,v-size quadruple.

blendedParticle(pos: LVector3, frame1: LVector4, frame2: LVector4, blend: float, size: float, color: LVector4, rotation: float) → None

Works just like particle but accepts 2 frames and a blend (from 0 to 1) component between them Frame contains u,v,u-size,v-size quadruple.

crossSegment(start: LVector3, stop: LVector3, frame: LVector4, thickness: float, color: LVector4) → None

Draws a segment a line with a thickness. This segment does not use the bill boarding behavior and instead draws 2 planes in a cross. Stars at start and ends at stop. Frame contains u,v,u-size,v-size quadruple.

end() → None

Finish the drawing and clearing off the remaining vertexes.

explosion(pos: LVector3, frame: LVector4, size: float, color: LVector4, seed: int, number: int, distance: float) → None

Draws number of particles in a sphere like emitter. Frame contains u,v,u-size,v-size quadruple.

geometry(node: NodePath) → None

Draws the geometry that is inside this node path into the MeshDrawer object. This performs a similar functions as RigidBodyCombiner but for very dynamic situations that share the same texture like physcal chunks of explosions. It can be a little slow

getBudget() → int

Gets the total triangle budget of the drawer

static getClassType() → TypeHandle
Return type

TypeHandle

getRoot() → NodePath

Returns the root NodePath. You should use this node to reparent mesh drawer onto the scene might also want to disable depth draw or enable transparency.

Return type

NodePath

linkSegment(pos: LVector3, frame: LVector4, thickness: float, color: LVector4) → None

Stars or continues linked segment. Control position, frame, thickness and color with parameters. Frame contains u,v,u-size,v-size quadruple.

linkSegmentEnd(frame: LVector4, color: LVector4) → None

Finish drawing linked segments, needs at least two calls to link_segment before it can end the linked segment. Frame contains u,v,u-size,v-size quadruple.

particle(pos: LVector3, frame: LVector4, size: float, color: LVector4, rotation: float) → None

Draws a particle that is sort of like a bill board but has an extra rotation component. Frame contains u,v,u-size,v-size quadruple.

segment(start: LVector3, stop: LVector3, frame: LVector4, thickness: float, color: LVector4) → None

Draws a segment a line with a thickness. That has billboarding effect. Frame contains u,v,u-size,v-size quadruple.

setBudget(budget: int) → None

Sets the total triangle budget of the drawer. This will not be exceeded. Don’t set some thing too large because it will be slow

stream(start: LVector3, stop: LVector3, frame: LVector4, size: float, color: LVector4, number: int, offset: float) → None

Draws a number of particles in a big line with a shift dictated by the offset. Frame contains u,v,u-size,v-size quadruple.

tri(v1: LVector3, c1: LVector4, uv1: LVector2, v2: LVector3, c2: LVector4, uv2: LVector2, v3: LVector3, c3: LVector4, uv3: LVector2) → None

Draws a triangle with the given parameters.

unevenSegment(start: LVector3, stop: LVector3, frame: LVector4, thickness_start: float, color_start: LVector4, thickness_stop: float, color_stop: LVector4) → None

Draws a segment a line with different thickness and color on both sides. Stars at start and ends at stop. Frame contains u,v,u-size,v-size quadruple.