August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)

Kamaelia.Visualisation.PhysicsGraph3D.TopologyViewer3DWithParams

Generic 3D Topology Viewer With more Parameters supports

Extend TopologyViewer3D by supporting additional parameters of "ADD" and "UPDATE" commands.

Example Usage

A simple console driven topology viewer:

Pipeline( ConsoleReader(),
          lines_to_tokenlists(),
          TopologyViewer3DWithParams(),
        ).run()

Then at runtime try typing these commands to change the topology in real time:

>>> DEL ALL
>>> ADD NODE 1 "1st node" (0,0,-10) teapot
>>> ADD NODE 2 "2nd node" randompos sphere image=../../../Docs/cat.gif
>>> ADD NODE 3 "3rd node" randompos - bgcolour=(255,255,0);bgcolour=(0,255,255)
>>> UPDATE NODE 1 name=1st;bgcolour=(0,255,0)
>>> UPDATE NODE 3 name=3rd;bgcolour=(255,0,0);fgcolour=(0,0,255);fontsize=100
>>> ADD NODE 1:1 "1st child node of the 1st node" " ( 0 , 0 , -10 ) " -
>>> ADD NODE 1:2 "2nd child node of the 1st node" randompos - "fontsize = 20"
>>> ADD LINK 1 2
>>> ADD LINK 3 2
>>> DEL LINK 1 2
>>> ADD LINK 1:1 1:2
>>> DEL NODE 1

How does it work?

Extend TopologyViewer3D by supporting additional parameters of "ADD" and "UPDATE" commands.

The format of "ADD" commands: [ "ADD", "NODE", <id>, <name>, <positionSpec>, <particle type>, <parameters> ]

The format of "UPDATE" commands: [ "UPDATE", "NODE", <id>, <parameters> ]

The format of parameters: pa=pa_value;pb=pb_value

Add quotation if there are spaces within parameters.

Available parameters:

  • bgcolour -- Colour of surfaces behind text label (default=(230,230,230)), only apply to label texture
  • fgcolour -- Colour of the text label (default=(0,0,0), only apply to label texture
  • sidecolour -- Colour of side planes (default=(200,200,244)), only apply to CuboidParticle3D
  • bgcolourselected -- Background colour when the particle is selected (default=(0,0,0)
  • bgcolourselected -- Frontground colour when the particle is selected (default=(244,244,244))
  • sidecolourselected -- Side colour when the particle is selected (default=(0,0,100))
  • margin -- Margin size in pixels (default=8)
  • fontsize -- Font size for label text (default=50)
  • pixelscaling -- Factor to convert pixels to units in 3d, ignored if size is specified (default=100)
  • thickness -- Thickness of button widget, ignored if size is specified (default=0.3)
  • image -- The uri of image, image texture instead of label texture is used if specified

See Kamaelia.PhysicsGraph3D.TopologyViewer3D.TopologyViewer3D for more information.


Kamaelia.Visualisation.PhysicsGraph3D.TopologyViewer3DWithParams.TopologyViewer3DWithParams

class TopologyViewer3DWithParams(Kamaelia.Visualisation.PhysicsGraph3D.TopologyViewer3D.TopologyViewer3D)

TopologyViewer3DWithParams(...) -> new TopologyViewer3DWithParams component.

A component that takes incoming topology (change) data and displays it live using pygame OpenGL. A simple physics model assists with visual layout. Particle types, appearance and physics interactions can be customised.

It extends TopologyViewer3D by supporting additional parameters of "ADD" commands.

Keyword arguments (in order):

  • screensize -- (width,height) of the display area (default = (800,600))
  • fullscreen -- True to start up in fullscreen mode (default = False)
  • caption -- Caption for the pygame window (default = "Topology Viewer")
  • particleTypes -- dict("type" -> klass) mapping types of particle to classes used to render them (default = {"-":RenderingParticle})
  • initialTopology -- (nodes,bonds) where bonds=list((src,dst)) starting state for the topology (default=([],[]))
  • laws -- Physics laws to apply between particles (default = SimpleLaws(bondlength=100))
  • simCyclesPerRedraw -- number of physics sim cycles to run between each redraw (default=1)
  • border -- Minimum distance from edge of display area that new particles appear (default=100)

Inboxes

Outboxes

Methods defined here

Warning!

You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self, **argd)

x.__init__(...) initializes x; see x.__class__.__doc__ for signature

doCommand(self, msg)

Proceses a topology command tuple: [ "ADD", "NODE", <id>, <name>, <positionSpec>, <particle type> ] [ "DEL", "NODE", <id> ] [ "ADD", "LINK", <id from>, <id to> ] [ "DEL", "LINK", <id from>, <id to> ] [ "DEL", "ALL" ] [ "GET", "ALL" ]

updateParticle(self, node_id, **params)

updateParticle(node_id, **params) -> updates the given node's parameters/attributes if it exists

  • node_id -- an id for an already existing node
  • params -- the updated parameters/attributes dictionary of the particle, e.g. name, texture, colour and size

Methods inherited from Kamaelia.Visualisation.PhysicsGraph3D.TopologyViewer3D.TopologyViewer3D :

Feedback

Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!

Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.

-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT