VisualizationSettings

Visualization settings

This section includes hierarchical structures for visualization settings, e.g., drawing of nodes, bodies, connectors, loads and markers and furthermore openGL, window and save image options. For further information, see Visualization settings dialog.

VSettingsGeneral

General settings for visualization that influence all windows, default values, autofit, multithreading, etc.

Reached as SC.visualizationSettings.general.

VSettingsGeneral has the following items:

name

type

default

description

autoFitScene

bool

True

automatically fit scene within startup after SC.renderer.Start()

axesTiling

PInt

12

global number of segments for drawing cylinders for axes and cones for arrows (reduce this number, e.g. to 4, if many axes are drawn)

backgroundColor

Float4

[1.0,1.0,1.0,1.0]

red, green, blue and alpha values for background color of render window (white=[1,1,1,1]; black = [0,0,0,1])

backgroundColorBottom

Float4

[0.8,0.8,1.0,1.0]

red, green, blue and alpha values for bottom background color in case that useGradientBackground = True

boundingBoxZoomAllFactor

PFloat

1.2

factor on boundingBox for zoom all (without minimum offset)

boundingBoxZoomAllOffset

UFloat

0.01

minimum offset to bounding box of scene in window - width or height, whatever is smaller; adjust for very small or large scenes; may be negative

circleTiling

PInt

16

global number of segments for circles; if smaller than 2, 2 segments are used (flat); the circles of the 2D cable contacts (ObjectContactCircleCable2D, ObjectContactFrictionCircleCable2D), large compared to the cable, take 4 times as many

coordinateSystemSize

PFloat

5.

size of coordinate system relative to font size

cylinderTiling

PInt

16

global number of segments for cylinders; if smaller than 2, 2 segments are used (flat); also around the rope of a reeving system and the wire of a spring drawn as a tube; the disc of ObjectJointRollingDisc and ObjectConnectorRollingDiscPenalty, large compared to the joint, takes 4 times as many; space curves use connectors.curveTiling

displayScaleFactor

PFloat

1.

factor on the texts of the render window, multiplied with the display scaling of the system (monitor scaling, e.g. 150 percent on Windows, fractional scaling on Linux), which GLFW reads (glfwGetWindowContentScale; on Linux from GLFW 3.3.6 on) and follows when it changes; acts while the renderer runs; the dialogs are scaled with dialogs.fontScaling

graphicsUpdateInterval

UFloat

0.1

interval of graphics update during simulation in seconds; 0.1 = 10 frames per second; low numbers might slow down computation speed

limitWindowToScreenSize

bool

True

True: size for render window of respective view is limited to screen size; False: larger window sizes (e.g. for rendering) allowed according to renderWindowSize

minSceneSize

PFloat

0.1

minimum scene size for initial scene size and for autoFitScene, to avoid division by zero; SET GREATER THAN ZERO

pointSize

PFloat

0.01

global point size (absolute)

reallyQuitTimeLimit

UReal

900

number of seconds after which user is asked a security question before stopping simulation and closing renderer; set to 0 in order to always get asked; set to 1e10 to (nearly) never get asked

rendererPrecision

PInt

4

precision of general floating point numbers shown in render window: total number of digits used (max. 16)

rendererStartupTimeout

PInt

2500

OpenGL render windows startup timeout in ms (change might be necessary if CPU is very slow)

renderWindowString

String

‘’

string shown in render window (use this, e.g., for debugging, etc.; written below EXUDYN, similar to information in simulationSettings.solution.file)

showHelpOnStartup

UInt

5

seconds to show help message on startup (0=deactivate)

showSolutionInformation

bool

True

true = show solution information (from simulationSettings.solution)

showSolverInformation

bool

True

true = solver name and further information shown in render window

showSolverTime

bool

True

true = solver current time shown in render window

sphereTiling

PInt

16

global number of segments of a half circle for the spheres of connectors and joints and for graphics.Sphere and graphics.Spheres with nTiles=-1 (the default); used as power of 2 (rounded down), as the spheres are drawn from display lists; if smaller than 2, 2 segments are used

textAlwaysInFront

bool

True

if true, text for item numbers and other item-related text is drawn in front; this may be unwanted in case that you only with to see numbers of objects in front; currently does not work with perspective

textColor

Float4

[0.,0.,0.,1.0]

general text color (default); used for system texts in render window

textHasBackground

bool

False

if true, text for item numbers and other item-related text have a background (depending on text color), allowing for better visibility if many numbers are shown; the text itself is black; therefore, dark background colors are ignored and shown as white

textOffsetFactor

UFloat

0.005

This is an additional out of plane offset for item texts (node number, etc.); the factor is relative to the maximum scene size and is only used, if textAlwaysInFront=False; this factor allows to draw text, e.g., in front of nodes

threadSafeGraphicsUpdate

bool

True

true = updating of visualization is threadsafe, but slower for complicated models; deactivate this to speed up computation, but activate for generation of animations; may be improved in future by adding a safe visualizationUpdate state

useBitmapText

bool

True

if true, texts are displayed using pre-defined bitmaps for the text; may increase the complexity of your scene, e.g., if many (>10000) node numbers shown

useGradientBackground

bool

False

true = use vertical gradient for background;

useMultiThreadedRendering

bool

True

true = rendering is done in separate thread; false = no separate thread, which may be more stable but has lagging interaction for large models (do not interact with models during simulation); you MUST set this parameter BEFORE call to SC.renderer.Start(); MAC OS: uses always false, because MAC OS does not support multi threaded GLFW

zoomAllUseBoundingBox

bool

True

if true, use exact scene bounding box (but not including texts) for zoom; does not include perspective effects!

VSettingsContourAdvanced

Advanced settings for contour plots.

Reached as SC.visualizationSettings.contour.advanced.

VSettingsContourAdvanced has the following items:

name

type

default

description

colorBarPrecision

PInt

4

precision of floating point values shown in color bar; total number of digits used (max. 16)

colorBarTiling

PInt

12

number of tiles (segements) shown in the colorbar for the contour plot

contourColor0

Float4

[0.1,0.1,0.9,1.]

RGBA color for relative value 0 used for contour plot; alpha is ignored

contourColor1

Float4

[0.1,0.9,0.9,1.]

RGBA color for relative value 0.25 used for contour plot; alpha is ignored

contourColor2

Float4

[0.1,0.9,0.1,1.]

RGBA color for relative value 0.25 used for contour plot; alpha is ignored

contourColor3

Float4

[0.9,0.9,0.1,1.]

RGBA color for relative value 0.25 used for contour plot; alpha is ignored

contourColor4

Float4

[0.9,0.1,0.1,1.]

RGBA color for relative value 0.25 used for contour plot; alpha is ignored

contourColorMax

Float4

[0.9,0.9,0.9,1.]

RGBA color if relative value in contour plot is larger than 1 (if automaticRange=False); alpha is ignored

contourColorMin

Float4

[0.1,0.1,0.1,1.]

RGBA color if relative value in contour plot is smaller than 0 (if automaticRange=False); alpha is ignored

showColorBar

bool

True

show the colour bar with minimum and maximum values for the contour plot

VSettingsContour

Settings for contour plots; use these options to visualize field data, such as displacements, stresses, strains, etc. for bodies, nodes and finite elements.

Reached as SC.visualizationSettings.contour.

VSettingsContour has the following items:

name

type

default

description

advanced

VSettingsContourAdvanced

advanced settings for contour

alphaTransparency

float

1

default value for contour alpha transparency (RGB color computed from contour value)

automaticRange

bool

True

if true, the contour plot value range is chosen automatically to the maximum range

maxValue

float

1

maximum value for contour plot; set manually, if automaticRange == False

minValue

float

0

minimum value for contour plot; set manually, if automaticRange == False

nodesColored

bool

True

if true, the contour color is also applied to nodes (except mesh nodes), otherwise node drawing is not influenced by contour settings

outputVariable

OutputVariableType

OutputVariableType::_None

selected contour plot output variable type; select OutputVariableType._None to deactivate contour plotting.

outputVariableComponent

Int

0

select the component of the chosen output variable; e.g., for displacements, 3 components are available: 0 == x, 1 == y, 2 == z component; for stresses, 6 components are available, see OutputVariableType description; to draw the norm of a outputVariable, set component to -1; if a certain component is not available by certain objects or nodes, no value is drawn (using default color)

reduceRange

bool

True

if true, the contour plot value range is also reduced; better for static computation; in dynamic computation set this option to false, it can reduce visualization artifacts; you should also set minVal to max(float) and maxVal to min(float)

rigidBodiesColored

bool

True

if true, the contour color is also applied to triangular faces of rigid bodies and mass points, otherwise the rigid body drawing are not influenced by contour settings; for general rigid bodies (except for ObjectGround), Position, Displacement, DisplacementLocal(=0), Velocity, VelocityLocal, AngularVelocity, and AngularVelocityLocal are available; may slow down visualization!

VSettingsNodes

Visualization settings for nodes.

Reached as SC.visualizationSettings.nodes.

VSettingsNodes has the following items:

name

type

default

description

basisSize

float

0.2

size of basis for nodes

defaultColor

Float4

[0.2,0.2,1.,1.]

default RGBA color for nodes; 4th value is alpha-transparency

defaultSize

float

-1.

global node size; if -1.f, node size is relative to openGL.initialMaxSceneSize

drawNodesAsPoint

bool

True

simplified/faster drawing of nodes; uses general->pointSize as drawing size; if drawNodesAsPoint==True, the basis of the node will be drawn with lines

show

bool

True

flag to decide, whether the nodes are shown

showBasis

bool

False

show basis (three axes) of coordinate system in 3D nodes

showNodalSlopes

bool

False

draw nodal slope vectors, e.g. in ANCF beam finite elements

showNumbers

bool

False

flag to decide, whether the node number is shown

tiling

PInt

4

tiling for node if drawn as sphere; used to lower the amount of triangles to draw each node; if drawn as circle, this value is multiplied with 4

VSettingsBeams

Visualization settings for beam finite elements.

Reached as SC.visualizationSettings.bodies.beams.

VSettingsBeams has the following items:

name

type

default

description

axialTiling

PInt

8

number of segments to discretise the beams axis

crossSectionFilled

bool

True

if implemented for element, cross section is drawn as solid (filled) instead of wire-frame; NOTE: some quantities may not be interpolated correctly over cross section in visualization; equivalent to drawSolid of shells

crossSectionTiling

PInt

4

number of quads drawn over height of beam, if drawn as flat objects; leads to higher accuracy of components drawn over beam height or with, but also to larger CPU costs for drawing

drawVertical

bool

False

draw contour plot outputVariables ‘vertical’ along beam height; contour.outputVariable must be set accordingly

drawVerticalColor

Float4

[0.2,0.2,0.2,1.]

color for outputVariable to be drawn along cross section (vertically)

drawVerticalFactor

UFloat

1.

factor for outputVariable to be drawn along cross section (vertically)

drawVerticalLines

bool

True

draw additional vertical lines for better visibility

drawVerticalOffset

float

0.

offset for vertical drawn lines; offset is added before multiplication with drawVerticalFactor

drawVerticalValues

bool

False

show values at vertical lines; note that these numbers are interpolated values and may be different from values evaluated directly at this point!

reducedAxialInterploation

bool

True

if True, the interpolation along the beam axis may be lower than the beam element order; this may, however, show more consistent values than a full interpolation, e.g. for strains or forces

VSettingsShells

Visualization settings for plate/shell finite elements.

Reached as SC.visualizationSettings.bodies.shells.

VSettingsShells has the following items:

name

type

default

description

contourZeta

float

1.

thickness coordinate in [-1,1] at which the contour is evaluated: the top surface (and the mid surface without drawSolid) at +|contourZeta|, the bottom surface at -|contourZeta|; 0 is the mid surface, 1 the outer fibre

drawNormal

bool

False

if True, the contour value is drawn along the normal of the mid surface, n = r_x x r_y normalized, as lines: an envelope through the points p + drawNormalFactor * value * n, positive values on the side of the normal; contour.outputVariable must be set

drawNormalColor

Float4

[0.2,0.2,0.2,1.]

color of the lines drawn with drawNormal

drawNormalFactor

UFloat

1.

factor of the contour value drawn along the normal with drawNormal

drawNormalLines

bool

True

with drawNormal, also draw the lines from the mid surface to the envelope

drawSolid

bool

True

if true: to draw plates/shells as 3D objects; false: only the element surface is drawn; equivalent to crossSectionFilled in beams

inPlaneTiling

PInt

4

number of segments along each local direction of an element, which is drawn as inPlaneTiling x inPlaneTiling quads (at least 2), for its shape and for the points at which the contour is evaluated

reducedInterpolation

bool

True

if True, the contour of the strain-type outputs StrainLocal, StressLocal, CurvatureLocal, ForceLocal and TorqueLocal is interpolated bilinearly from the values at the four corners of each element, as beams.reducedAxialInterploation does along a beam; if False, it is evaluated at each point of the drawing

thicknessFactor

PFloat

1.

a factor multiplied with the thickness of shells/plates only for visualization (e.g. to make some effects more visible)

VSettingsKinematicTree

Visualization settings for kinematic trees.

Reached as SC.visualizationSettings.bodies.kinematicTree.

VSettingsKinematicTree has the following items:

name

type

default

description

frameSize

float

0.2

size of COM and joint frames

showCOMframes

bool

False

if True, a frame is attached to every center of mass

showFramesNumbers

bool

False

if True, numbers are drawn for joint frames (O[i]J[j]) and COM frames (O[i]COM[j]) for object [i] and local joint [j]

showJointFrames

bool

True

if True, a frame is attached to the origin of every joint frame

VSettingsBodies

Visualization settings for bodies.

Reached as SC.visualizationSettings.bodies.

VSettingsBodies has the following items:

name

type

default

description

beams

VSettingsBeams

visualization settings for beams (e.g. ANCFCable or other beam elements)

kinematicTree

VSettingsKinematicTree

visualization settings for kinematic tree

shells

VSettingsShells

visualization settings for plates and shells

defaultColor

Float4

[0.3,0.3,1.,1.]

default RGBA color for bodies; 4th value is alpha-transparency

defaultSize

Float3

[1.,1.,1.]

global body size of xyz-cube

deformationScaleFactor

float

1

global deformation scale factor for the drawing of superelements (FFRF, FFRFreducedOrder, GenericODE2 with a mesh): their mesh nodes and the markers on them are drawn with the local deformation scaled by it (#1813)

show

bool

True

flag to decide, whether the bodies are shown

showNumbers

bool

False

flag to decide, whether the body(=object) number is shown

VSettingsConnectors

Visualization settings for connectors.

Reached as SC.visualizationSettings.connectors.

VSettingsConnectors has the following items:

name

type

default

description

contactPointsDefaultSize

float

0.02

DEPRECATED: do not use! global contact points size; if -1.f, connector size is relative to maxSceneSize

curveTiling

PInt

32

number of segments of a full turn of a space curve drawn by a connector: a winding of a spring, the arc of a rope on a sheave (ObjectConnectorReevingSystemSprings); an arc gets the share of its angle, at least one segment; circles and cylinders take the tilings of general

defaultColor

Float4

[0.2,0.2,1.,1.]

default RGBA color for connectors; 4th value is alpha-transparency

defaultSize

float

0.1

global connector size; if -1.f, connector size is relative to maxSceneSize

drawSimplified

bool

True

draw connectors with lines: the windings of springs, ObjectConnectorDistance; False draws the windings as a tube with a tenth of the spring radius and the distance connector as a rod of its drawSize

jointAxesLength

float

0.2

global joint axes length

jointAxesRadius

float

0.02

global joint axes radius

show

bool

True

flag to decide, whether the connectors are shown

showContact

bool

False

flag to decide, whether contact points, lines, etc. are shown for special cable-circle contacts; for spheres, triangles, tori, see visualizationSettings.contact

showJointAxes

bool

False

flag to decide, whether contact joint axes of 3D joints are shown

showNumbers

bool

False

flag to decide, whether the connector(=object) number is shown

springNumberOfWindings

PInt

8

number of windings for springs drawn as helical spring

VSettingsMarkers

Visualization settings for markers.

Reached as SC.visualizationSettings.markers.

VSettingsMarkers has the following items:

name

type

default

description

basisSize

float

0.2

size of the frame of the markers

defaultColor

Float4

[0.1,0.5,0.1,1.]

default RGBA color for markers; 4th value is alpha-transparency

defaultSize

float

-1.

global marker size; if -1.f, marker size is relative to maxSceneSize

drawSimplified

bool

True

draw markers with simplified symbols

show

bool

True

flag to decide, whether the markers are shown

showBasis

bool

False

show the frame (three axes) of the markers with position and orientation; with drawSimplified as three lines in red, green and blue, else as three arrows, whose heads are half as long as those of a node basis

showNumbers

bool

False

flag to decide, whether the marker numbers are shown

VSettingsLoads

Visualization settings for loads.

Reached as SC.visualizationSettings.loads.

VSettingsLoads has the following items:

name

type

default

description

defaultColor

Float4

[0.7,0.1,0.1,1.]

default RGBA color for loads; 4th value is alpha-transparency

defaultRadius

float

0.005

global radius of load axis if drawn in 3D

defaultSize

float

0.2

global load size; if -1.f, load size is relative to maxSceneSize

drawSimplified

bool

True

draw loads with simplified symbols

drawWithUserFunction

bool

True

draw loads with the value of their user function, time dependent; make sure that fixedLoadSize=false, while otherwise only the direction will change; a symbolic user function is always drawn so, a Python user function only with general.useMultiThreadedRendering=False, because the render thread cannot call Python; otherwise the load is drawn with its loadVector

fixedLoadSize

bool

True

if true, the load is drawn with a fixed vector length in direction of the load vector, independently of the load size

loadSizeFactor

float

0.1

if fixedLoadSize=false, then this scaling factor is used to draw the load vector

show

bool

True

flag to decide, whether the loads are shown

showNumbers

bool

False

flag to decide, whether the load numbers are shown

VSettingsTraces

Visualization settings for traces of sensors. Note that a large number of time points (influenced by simulationSettings.solution.sensors.writePeriod) may lead to slow graphics.

Reached as SC.visualizationSettings.sensors.traces.

VSettingsTraces has the following items:

name

type

default

description

lineWidth

UFloat

2.

line width for traces

listOfPositionSensors

ArrayIndex

[]

list of position sensors which can be shown as trace inside render window if sensors have storeInternal=True; if this list is empty and showPositionTrace=True, then all available sensors are shown

listOfTriadSensors

ArrayIndex

[]

list of sensors of with OutputVariableType RotationMatrix; this non-empty list needs to coincide in length with the listOfPositionSensors to be shown if showTriads=True; the triad is drawn at the related position

listOfVectorSensors

ArrayIndex

[]

list of sensors with 3D vector quantities; this non-empty list needs to coincide in length with the listOfPositionSensors to be shown if showVectors=True; the vector quantity is drawn relative to the related position

positionsShowEvery

PInt

1

integer value i; out of available sensor data, show every i-th position

sensorsMbsNumber

Index

0

number of main system which is used to for sensor lists; if only 1 mbs is in the SystemContainer, use 0; if there are several mbs, it needs to specify the number

showCurrent

bool

True

show current trace position (and especially vector quantity) related to current visualization state; this only works in solution viewer if sensor values are stored at time grid points of the solution file (up to a precision of 1e-10) and may therefore be temporarily unavailable

showFuture

bool

False

show trace future to current visualization state if already computed (e.g. in SolutionViewer)

showPast

bool

True

show trace previous to current visualization state

showPositionTrace

bool

False

show position trace of all position sensors if listOfPositionSensors=[] or of specified sensors; sensors need to activate storeInternal=True

showTriads

bool

False

if True, show basis vectors from rotation matrices provided by sensors

showVectors

bool

False

if True, show vector quantities according to description in showPositionTrace

timeSpan

UReal

0

maximum trace time span of past or future trace; given in seconds of simulation time; if zero, it is unused

traceColors

ArrayFloat

[0.2,0.2,0.2,1., 0.8,0.2,0.2,1., 0.2,0.8,0.2,1., 0.2,0.2,0.8,1., 0.2,0.8,0.8,1., 0.8,0.2,0.8,1., 0.8,0.4,0.1,1.]

RGBA float values for traces in one array; using 6x4 values gives different colors for 6 traces; in case of triads, the 0/1/2-axes are drawn in red, green, and blue

triadSize

float

0.1

length of triad axes if shown

triadsShowEvery

PInt

1

integer value i; out of available sensor data, show every i-th triad

vectorScaling

float

0.01

scaling of vector quantities; if, e.g., loads, this factor has to be adjusted significantly

vectorsShowEvery

PInt

1

integer value i; out of available sensor data, show every i-th vector

VSettingsSensors

Visualization settings for sensors.

Reached as SC.visualizationSettings.sensors.

VSettingsSensors has the following items:

name

type

default

description

traces

VSettingsTraces

settings for showing (position/triad) sensor traces and vector plots in the render window

defaultColor

Float4

[0.6,0.6,0.1,1.]

default RGBA color for sensors; 4th value is alpha-transparency

defaultSize

float

-1.

global sensor size; if -1.f, sensor size is relative to maxSceneSize

drawSimplified

bool

True

draw sensors with simplified symbols

show

bool

True

flag to decide, whether the sensors are shown

showNumbers

bool

False

flag to decide, whether the sensor numbers are shown

VSettingsContact

Global visualization settings for GeneralContact. This allows to easily switch on/off during visualization; also used for contact objects, such as ObjectContactSphereSphere or ObjectContactSphereTriangle.

Reached as SC.visualizationSettings.contact.

VSettingsContact has the following items:

name

type

default

description

colorBoundingBoxes

Float4

[0.9,0.1,0.1,1.]

RGBA color for boudnding boxes, see showBoundingBoxes

colorSearchTree

Float4

[0.1,0.1,0.9,1.]

RGBA color for search tree, see showSearchTree

colorSpheres

Float4

[0.8,0.5,0.2,1.]

RGBA color for contact spheres, see showSpheres

colorTori

Float4

[0.8,0.2,0.8,1.]

RGBA color for contact tori, see showTori

colorTriangles

Float4

[0.5,0.5,0.5,1.]

RGBA color for contact triangles, see showTriangles

contactForcesFactor

float

0.001

factor used for scaling of contact forces is showContactForces=True

contactPointsDefaultSize

float

0.001

global contact points size; if -1.f, connector size is relative to maxSceneSize; used for some contacts, e.g., in ContactFrictionCircle

showBoundingBoxes

bool

False

show computed bounding boxes of all GeneralContacts; Warning: avoid for large number of contact objects!

showContactForces

bool

False

if True, contact forces are drawn for certain contact models

showContactForcesValues

bool

False

if True and showContactForces=True, numerical values for contact forces are shown at certain points

showSearchTree

bool

False

show outer box of search tree for all GeneralContacts

showSearchTreeCells

bool

False

show all cells of search tree; empty cells have colorSearchTree, cells with contact objects have higher red value; Warning: avoid for large number of search tree cells!

showSpheres

bool

False

show contact spheres (SpheresWithMarker, …)

showTori

bool

False

show each contact torus

showTriangles

bool

False

show contact triangles (TrianglesRigidBodyBased, …)

tilingCurves

PInt

8

tiling for nonlinear/polynomial curves; higher values give smoother curves

tilingSpheres

PInt

4

tiling for spheres; higher values give smoother spheres, but may lead to lower frame rates

VSettingsCamera

Settings for camera like perspective, marker tracking, clipping plane, etc. Note that some options may also be found in openGL settings.

Reached as SC.visualizationSettings.view0.camera, SC.visualizationSettings.view1.camera, SC.visualizationSettings.view2.camera, SC.visualizationSettings.view3.camera.

VSettingsCamera has the following items:

name

type

default

description

cameraPosition

Float3

[0.,0.,0.]

if modelCentricView=True: offset to camera position in model view (and, if used, relative to tracked marker - instead of a tracked marker position, you could also just change the camera position in camera-centric views); camera rotation follows modelRotation in renderState

clippingPlaneDistance

float

0.

distance of clipping plane on normal vector; see also clippingPlaneNormal and openGL.advanced.clippingPlaneColor

clippingPlaneNormal

Float3

[0.,0.,0.]

normal vector of clipping plane, e.g. [0,0,1] to set a xy-clipping plane; the clipped half-space is in direction of the normal; use [0,0,0] to deactivate clipping plane; Note that clipping is mainly made for triangles in order to visualize hidden objects and currently it only fully clips triangles, but does not exactly cut them; see also clippingPlaneDistance and openGL.advanced.clippingPlaneColor

modelCentricView

bool

True

True: rotations and translations are applied to model, while camera stays far enough away from the model and always captures the whole model (everything is in front of camera plane); False: camera moves and rotates while model stays in physical space; only geometry in front of camera is visible; note that the behavior of trackMarker changes with modelCentricView and some features are not available in case of modelCentricView=False.

nearFarPlaneOffset

Float3

[0.,0.,0.]

the three values are [nearPlaneOffset, farPlaneOffset, flag]; if flag=0, the offsets are ignored and computed automatically, using x = 2 * maxSceneSize * zMaxSceneFactor, setting near plane to -x and far plane to +x in case of modelCentricView=True and setting near plane to 0.01 (minimal offset to eye point) and far plane to +x if modelCentricView=False; if flag=1, the near and far plane values are just overwritten; note that positive values for near plane make objects in front of the camera invisible while negative values make objects behind the camera plane visible; in case of camera-centric view, the eyepoint can be shifted backwards using cameraPosition accordingly.

perspective

UFloat

0.

parameter prescribes amount of perspective (0=no perspective=orthographic projection; positive values increase perspective; feasible values are 0.001 (little perspective) … 1 (extreme: 5), where larger values are possible but should be used with care; NOTE that the relation to the common field of view (FOV) angle alpha, with alpha=90°, is given by perspective = tan(alpha/2) = 1; mouse coordinates (F3) can not be shown with perspective>0

trackMarker

Int

-1

if valid marker index is provided and marker provides position (and orientation), the centerpoint of the scene follows the marker (and orientation); depends on trackMarkerPosition and trackMarkerOrientation; by default, only position is tracked

trackMarkerMbsNumber

Index

0

number of main system which is used to track marker; if only 1 mbs is in the SystemContainer, use 0; if there are several mbs, it needs to specify the number

trackMarkerOrientation

Float3

[0.,0.,0.]

choose which orientation axes (x,y,z) are tracked; currently can only be all zero or all one

trackMarkerPosition

Float3

[1.,1.,1.]

choose which coordinates or marker are tracked (x,y,z)

useRaytracer

bool

False

True: use (software) raytracer for this view; False: use standard OpenGL renderer

VSettingsScene

Settings change scene representation (show edges, show faces, global transparency), adding world basis, etc., in particular settings that are individual to each view. Note that some scene settings that are global to all views may be found in general and in openGL settings.

Reached as SC.visualizationSettings.view0.scene, SC.visualizationSettings.view1.scene, SC.visualizationSettings.view2.scene, SC.visualizationSettings.view3.scene.

VSettingsScene has the following items:

name

type

default

description

drawCoordinateSystem

UInt

2

0 = no coordinate system shown, 1 = draw lines with text, 2 = draw arrows, 3 = draw arrows with text

drawWorldBasis

bool

False

true = draw world basis coordinate system at (0,0,0)

facesTransparent

bool

False

True: show faces transparent independent of transparency (A)-value in color of objects; allow to show otherwise hidden node/marker/object numbers

showFaceEdges

bool

False

True: show edges of triangles; using the options showFaces=false and showFaceEdges=true gives are wire frame representation

showFaces

bool

True

True: show faces of triangles, etc.; using the options showFaces=false and showFaceEdges=true gives are wireframe representation

showLines

bool

True

True: show lines (other lines than face and mesh edges)

showMeshEdges

bool

True

True: show edges of finite elements; independent of showFaceEdges

showMeshFaces

bool

True

True: show faces of finite elements; independent of showFaces

worldBasisSize

PFloat

1.

size of world basis coordinate system

VSettingsWindow

Settings for window that are individual to each view; in particular initial size, and behavior. Note that some of the settings are only used during creation of the window.

Reached as SC.visualizationSettings.view0.window, SC.visualizationSettings.view1.window, SC.visualizationSettings.view2.window, SC.visualizationSettings.view3.window.

VSettingsWindow has the following items:

name

type

default

description

alwaysOnTop

bool

False

True: render window of respective view will be always on top of all other windows

globalFontSize

PFloat

12.

general text font size (roughly measured in pixels); if useWindowsDisplayScaleFactor=True, the the textSize is multplied with the windows display scaling (monitor scaling; content scaling) factor for larger texts on on high resolution displays; for bitmap fonts, the maximum size of any font (standard/large/huge) is limited to 256 (which is not recommended, especially if you do not have a powerful graphics card)

lockModelView

bool

False

True: all movements (with mouse/keys), rotations, zoom are disabled; the view is either based on initial values (or on the current state) ==> initial zoom, rotation and center point need to be adjusted, approx. 0.4*maxSceneSize is a good value

maximize

bool

False

True: render window of respective view will be maximized at startup

renderWindowPosition

Index2

[-1,-1]

position of the top left corner of the render window of this view, in pixels; a NEGATIVE coordinate - which is the default - means that the window manager places the window, as it did before this setting existed. Set both to place the window, or store them in ~/.exudyn/config.json to have every run start there, see Section User settings that persist between runs. NOTE: this is the position of the OpenGL area, not of the title bar, so a small value hides part of the title bar and 0 hides it completely - which still leaves the escape key, and is a way to have a view without one. The position is only used while the window is created, and one that lies outside the screens you have now puts the window where you cannot reach it

renderWindowSize

Index2

[1024,768]

initial size of the render window of this view, in pixels

showComputationInfo

bool

True

true = show (hide) all computation information including Exudyn and version

showMouseCoordinates

bool

False

True: show OpenGL coordinates and distance to last left mouse button pressed position in renderer status message; switched on/off with key ‘F3’; only works for axis-aligned ortho-projections

showRenderStateInfo

bool

False

True: show renderer.state infos regarding zoom, offset and rotation in renderer status message; switched on/off with ‘CTRL-F3’

showWindow

bool

True

True: render window of respective view is shown when created; False: window will be iconified when created (e.g. if you are starting multiple computations automatically)

storeRenderWindowGeometry

bool

False

True: when the render window of this view closes, where it was is written into renderWindowSize and renderWindowPosition - so that storing the settings keeps the window where you left it, see Section User settings that persist between runs. False (default): the settings are only ever what you set, which is why diff to default does not report a window position after every run

VSettingsView

Settings for view including camera, scene, window, and advanced options to setup a view or view window.

Reached as SC.visualizationSettings.view0, SC.visualizationSettings.view1, SC.visualizationSettings.view2, SC.visualizationSettings.view3.

VSettingsView has the following items:

name

type

default

description

camera

VSettingsCamera

settings for camera like perspective, marker tracking or clipping plane

scene

VSettingsScene

settings which change scene representation, showing edges, faces or world basis

window

VSettingsWindow

visualization settings for window that are individual to each view

VSettingsWindowDeprecated

OpenGL Window and interaction settings for visualization; handle changes with care, as they might lead to unexpected results or crashes.

Reached as SC.visualizationSettings.window.

VSettingsWindowDeprecated has the following items:

(none: this structure has no items in the Python interface. A deprecated item keeps working and is described where it moved to.)

VSettingsDialogs

Settings related to dialogs (e.g., visualization settings dialog).

Reached as SC.visualizationSettings.dialogs.

VSettingsDialogs has the following items:

name

type

default

description

alphaTransparency

UFloat

0.94

alpha-transparency of dialogs; recommended range 0.7 (very transparent) - 1 (not transparent at all)

alwaysTopmost

bool

True

True: dialogs are always topmost (otherwise, they are sometimes hidden)

columnWidthName

UFloat

0.31

width of the name column of a settings dialog, as a fraction of the width of the dialog; the description column takes what the three columns leave

columnWidthType

UFloat

0.11

width of the type column of a settings dialog, as a fraction of the width of the dialog

columnWidthValue

UFloat

0.18

width of the value column of a settings dialog, as a fraction of the width of the dialog

fontScaling

UFloat

0.

factor on the font of the dialogs, relative to the display scaling of the system (monitor scaling on Windows, fractional scaling on Linux), which the dialogs follow anyway; 0 = 1 (on MacOS a fixed factor for the settings tree); every widget of the dialogs takes it - text, buttons, edit fields and the settings tree

multiThreadedDialogs

bool

True

True: During dialogs, the OpenGL render windows will still get updates of changes in dialogs, etc., which may cause problems on some platforms or for some (complicated) models; False: changes of dialogs will take effect when dialogs are closed

openTreeView

bool

False

True: all sub-trees of the visusalization dialog are opened when opening the dialog; False: only some sub-trees are opened

storeDialogPositions

bool

False

True: a dialog stores its size and position in ~/.exudyn/config.json when it closes, so that the next dialog of the same kind starts with them. A geometry that IS stored - by this flag, by the store button of the settings dialog, or by a script - is used whenever such a dialog opens, whatever this flag says: the size always, the position only if the window would still be reachable on the current screen. See Section User settings that persist between runs

VSettingsMaterial

Settings for rendering materials, in particular for the Raytracer (may be available also in the OpenGL renderer in the future). This material (widely follows Phong model) can be either accessed via SC.renderer.materials or directly in visualizationSettings.raytracer.material0, material1, etc.; the ten materials of the raytracer each start from their own values, which are listed at material0 to material9.

Reached as SC.visualizationSettings.raytracer.material.

VSettingsMaterial has the following items:

name

type

default

description

alpha

UFloat

1.

alpha-transparency, same as in alpha channel in RGBA colors; 1=opaque, 0=fully transparent; leads to extra rendering costs per transparent pixel

baseColor

Float3

[0.5,0.5,0.5]

RGB default material color if face color has R-color channel -1

emission

Float3

[0.,0.,0.]

RGB emissive material color (enlightened material)

ior

UFloat

1.

index of refraction for transparent materials (1=no refraction), >1 represents refraction

name

String

‘undefined’

material name for easier handling

reflectivity

UFloat

0.

controls reflectivity of material; 0=no reflections (rough, e.g. rubber), 1=fully reflective (mirror); this leads to large extra rendering costs per visible reflective pixel

shininess

UFloat

32.

controls shininess of specular component of lights; values < 5 is not very shiny, while > 50 is very shiny

specular

Float3

[0.5,0.5,0.5]

RGB specular material color

VSettingsRaytracerAdvanced

Advanced settings for raytracer.

Reached as SC.visualizationSettings.raytracer.advanced.

VSettingsRaytracerAdvanced has the following items:

name

type

default

description

backgroundColorReflections

Float4

[0.4,0.4,0.4,1.]

scene RGBA color for background that is hit by reflection material; while openGL.backgroundColor is used for rays that do not hit an object, this background may - if black or white - not be a suitable color for computing reflections; this is generally needed, as our scenes are usually not inside a closed geometry (like inside a room); this color is also used if maxReflectionDepth is reached

searchTreeFactor

PInt

1

This factor can be used to increase the number of search tree bins, which can improve performance in case of inequilibrated scense; range=1..128

shadowScalingFactor

UInt

3

if lightRadiusVariations>1, this defines the downscaling factor of the shadow map, where 2 means that the resolution is 2 times smaller than the image resolution; additionally, multisampling is not used for shadow map computation if shadowScalingFactor>0, thus reducing the computational effort for shadow computation also in case of 1; range=0..16; larger values cause significant artifacts at shadow boundaries

shadowSmoothingSteps

UInt

3

if lightRadiusVariations>1, this defines the number of smoothing steps at the low-resolution shadow map; smoothing reduces shadow artifacts caused by smaller values of lightRadiusVariations; range=0..32; smoothing steps may cause artifacts at shadow boundaries; only works for lights with a position (the 4th component of the light position should be 1)

showText

bool

True

True: show any kind of status text, node numbers, object numbers, etc. (depending on settings); False: do not show any text in raytracer, independently of settings

tilesPerThread

PInt

12

Total number of sub-tiles per thread, used to evenly distribute rendering load to threads

zBiasLines

float

0.001

offset for lines to draw in front of faces; relative to scene radius

VSettingsRaytracer

Settings for raytracer (software renderer) which can be used as alternative to classic OpenGL rendering; this option may be erased in future in favor of a modern GPU rendering. To activate the raytracer, simply switch the enable flag to True. The raytracer uses CPU-based rendering and is therefore comparably slow (may take seconds to render one frame). Thus, take care with the window dimension (start with small window size like 400 x 300) and use openGL.multiSampling=1. Note that many parameters are used from openGL settings, like backgroundColor, lineWidth, multiSampling, shadow (only on/off), and lights. See the options to improve appearance and performance.

Reached as SC.visualizationSettings.raytracer.

VSettingsRaytracer has the following items:

name

type

default

description

advanced

VSettingsRaytracerAdvanced

advanced settings for raytracer

material0

VSettingsMaterial

settings for material0; starts from name=’default’, baseColor=[0.4, 0.4, 0.9], specular=[0.6, 0.6, 0.6]; every other value is the default of the type

material1

VSettingsMaterial

settings for material1; starts from name=’matt’, baseColor=[0., 1., 0.], specular=[0.3, 0.3, 0.3], shininess=5.0; every other value is the default of the type

material2

VSettingsMaterial

settings for material2; starts from name=’steel’, baseColor=[0.6, 0.6, 0.6], specular=[0.3, 0.33, 0.4], shininess=25.0, reflectivity=0.1; every other value is the default of the type

material3

VSettingsMaterial

settings for material3; starts from name=’plastic’, baseColor=[1., 0., 0.], specular=[0.4, 0.45, 0.45], shininess=20.0, reflectivity=0.1; every other value is the default of the type

material4

VSettingsMaterial

settings for material4; starts from name=’chrome’, baseColor=[0.75, 0.75, 0.75], specular=[0.6, 0.62, 0.67], shininess=60.0, reflectivity=0.25; every other value is the default of the type

material5

VSettingsMaterial

settings for material5; starts from name=’shiny’, baseColor=[1., 0.5, 0.], specular=[0.7, 0.65, 0.7], shininess=100.0, reflectivity=0.5; every other value is the default of the type

material6

VSettingsMaterial

settings for material6; starts from name=’transparent’, baseColor=[0.75, 0.75, 0.75], specular=[0.4, 0.4, 0.45], shininess=20.0, ior=1.05, alpha=0.3; every other value is the default of the type

material7

VSettingsMaterial

settings for material7; starts from name=’glass’, baseColor=[0.8, 0.8, 0.8], specular=[0.6, 0.68, 0.63], shininess=50.0, reflectivity=0.6, ior=1.5, alpha=0.15; every other value is the default of the type

material8

VSettingsMaterial

settings for material8; starts from name=’mirror’, baseColor=[0.8, 0.8, 0.8], specular=[0.4, 0.4, 0.4], shininess=50.0, reflectivity=0.8; every other value is the default of the type

material9

VSettingsMaterial

settings for material9; starts from name=’emission’, baseColor=[0.85, 0.85, 0.7], specular=[0.6, 0.6, 0.6], shininess=20.0, emission=[0.8, 0.8, 0.7]; every other value is the default of the type

globalFogColor

Float4

[0.5,0.5,0.5,1.]

scene RGBA fog color

globalFogDensity

UFloat

0.

global fog density; fog is deactivated if fogDensity=0, otherwise it is a density relative to scene max size; as it is relative, the factor has to be relatively high to be visible (usually >1)

imageSizeFactor

PInt

1

Special size factor (1-16) to allow drawing with smaller resolution (faster); use this for long rendering times for adjustments, etc.

keepWindowActive

bool

False

Special flag, handle with care; True: sends some glfw functions to keep window reactive for long render times (>2 seconds); otherwise, the rendering may not finish due to timeout

lightRadiusVariations

PInt

1

if lightRadiusVariations>1, this defines the number of positions that are used to compute the effect of distributed lights (larger is slower but better quality); range=1..256; avoid squares of integers; good values: 1 (hard shadow boundaries), 6, 13, 20, 31, 72, 130, 240; for lower values, use shadowSmoothingSteps=2..8

maxReflectionDepth

UInt

2

Maximum number of reflections computed for one ray (note that for each transparent face passed, the reflection depth is reduced by 1); maximum is 32 (but should not be more than 2-4 usually!)

maxTransparencyDepth

UInt

2

Maximum number of transparent faces that can be passed (note that for each reflection, the transparency depth is reduced by 1); maximum is 32 (but should not be more than 2-4 usually!)

multiSampling

PInt

1

Multi-sampling used for rendering of faces, lines and text; increases image quality along edges (lines, etc.) but INCREASES rendering costs dramatically (multiSampling=3 => 3x3=9 times slower); also used for shadow if shadowScalingFactor=0; values only accepted in range [1..4]

numberOfThreads

PInt

8

Number of CPU-threads (max: 256) used for software rendering (should be approx. the number of available threads)

verbose

Index

0

1: print out some debug information on rendering, in particular rendering timings and counter; 2 and higher: advanced debug information

VSettingsOpenGLAdvanced

Advanced settings for openGL.

Reached as SC.visualizationSettings.openGL.advanced.

VSettingsOpenGLAdvanced has the following items:

name

type

default

description

clippingPlaneColor

Float4

[0.7,0.5,0.5,0.]

RGBA color for clipping plane; if alpha-channel is 0, the cutting plane is not drawn; if alpha-channel is 1, the clippingPlaneColor is used; if alpha-channel is 2, the color of the object interior is used as clipping plane color (which may look strange in case of object-in-object); see also view.camera for clipping plane options

curvedTriangleMaxTiling

UInt

8

maximum number of subdivisions per edge of a 6-node (curved) triangle; see curvedTriangleTilingAngle

curvedTriangleTilingAngle

UFloat

15.

6-node (curved) triangles of a TriangleList (key triangles6) are drawn as flat triangles, split when they are drawn: each edge is subdivided until the angle between its end tangents, and between the given normals of its nodes, falls below this angle (in degrees), at most curvedTriangleMaxTiling times, and the inside follows its three edges - 15 degrees give 24 segments around a full cylinder, and a surface curved in one direction is not subdivided along the other; 0 draws each as 1 flat triangle; used by the raytracer as well

depthSorting

bool

False

True (slower): sort triangles by Z-depth to remove transparency artifacts: only works if triangles do not intersect or come close (you may like to refine triangle meshes); False: no depth-sort (faster)

enableLighting

bool

True

generally enable lighting (otherwise, colors of objects are used); OpenGL: glEnable(GL_LIGHTING)

faceNormalsColor

Float4

[0.8,0.2,0.2,1.]

global RGBA color for face normals

initialCenterPoint

Float3

[0.,0.,0.]

centerpoint of scene (3D) at renderer startup; overwritten if autoFitScene = True; only used in case that modelCentricView=True

initialMaxSceneSize

PFloat

1.

initial maximum scene size (auto: diagonal of cube with maximum scene coordinates); used for ‘zoom all’ functionality and for visibility of objects; overwritten if autoFitScene = True

initialModelRotation

StdArray33F

[[1.,0.,0.], [0.,1.,0.], [0.,0.,1.]]

initial model rotation matrix for OpenGl; in python use e.g.: initialModelRotation=[[1,0,0],[0,1,0],[0,0,1]]; only used in case that modelCentricView=True

initialZoom

UFloat

1.

initial zoom of scene; overwritten/ignored if autoFitScene = True

lightModelLocalViewer

bool

False

True: the camera origin is used to compute shininess effects (more realistic); maps to OpenGL glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,…)

lightModelTwoSide

bool

False

enlighten also backside of object; may cause problems on some graphics cards and lead to slower performance; maps to OpenGL glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,…)

lineSmooth

bool

True

draw lines smooth

polygonOffset

float

0.05

general polygon offset for polygons, except for shadows; use this parameter to draw polygons behind lines to reduce artifacts for very large or small models

shadeModelSmooth

bool

True

True: turn on smoothing for shaders, which uses vertex normals to smooth surfaces

shadowPolygonOffset

PFloat

0.1

some special drawing parameter for shadows which should be handled with care; defines some offset needed by openGL to avoid aritfacts for shadows and depends on maxSceneSize; this value may need to be reduced for larger models in order to achieve more accurate shadows, it may be needed to be increased for thin bodies

showBoundingBox

bool

False

show scene bounding box (red), as available in renderState.boundingBox; NOTE that the bounding box is only updated with ZoomAll or at startup; this is a debug flag and it may show reasongs for strange ZoomAll behavior, as ZoomAll should zoom to the bounding box; does only work for perspective=0

textLineSmooth

bool

False

draw lines for representation of text smooth

textLineWidth

UFloat

1.

width of lines used for representation of text

vertexNormalsColor

Float4

[0.8,0.2,0.2,1.]

global RGBA color for vertex normals

VSettingsLight

Settings for lights.

Reached as SC.visualizationSettings.openGL.light.

VSettingsLight has the following items:

name

type

default

description

constantAttenuation

float

1.

constant attenuation coefficient of this light, this is a constant factor that attenuates the light source; attenuation factor = 1/(kc +kld + kqd*d); (kc,kl,kq)=(1,0,0) means no attenuation; only used for lights, where last component of light position is 1

diffuse

float

0.5

diffuse value of this light

enable

bool

True

turn this light on or off; the four lights light0 to light3 of visualizationSettings.openGL are OpenGL GL_LIGHT0 to GL_LIGHT3, and each of them can cast a shadow - see shadow below

lightRadius

float

0.1

only used by raytracers: radius of light used to compute smooth shadows (approximated by raytracer.lightRadiusVariations); if lightRadiusVariations>1, this value defines the radius of the light, converting point lights into distributed lights (slower)

linearAttenuation

float

0.

linear attenuation coefficient of this light, this is a linear factor for attenuation of the light source with distance

position

Float4

[2.,2.,10.,0.]

4D position vector of this light; the 4th value should be 0 for directional lights that are (almost) infinitely far away, like the sun, but 1 for position-based lights (and for the attenuation factor to be computed); if this light casts a shadow, its position decides where the shadow falls, so it has to be at a reasonable place for the scene; see opengl manuals

quadraticAttenuation

float

0.

quadratic attenuation coefficient of this light, this is a quadratic factor for attenuation of the light source with distance

shadow

UFloat

0.

in OpenGL renderer, the shadow parameter \(\in [0 ... 1]\) prescribes the amount of shadow of this light that is added to the scene, using its position (or only its direction); every light can cast a shadow and the effects accumulate; if this parameter is different from 0, rendering of triangles becomes approx. 5 times more expensive, so take care in case of complex scenes; for complex object, such as spheres with fine resolution or for particle systems, the present approach has limitations and leads to artifacts and unrealistic shadows; for raytracer, shadow is included by a physics-based model for each light if shadow>0, accumulating effects of each light source; the openGL renderer computes shadows with shadow volumes and approximates a directional light by enlarging its direction to a multiple of maxSceneSize, while the raytracer uses the direction itself

specular

float

0.5

specular value of this light

useCameraFrame

bool

False

set False to set light positions and directions relative to model frame; True: lights are in camera frame, not following the visual transformations; this was True up to Exudyn 1.9.174

VSettingsOpenGL

OpenGL settings for 2D and 3D rendering - with many settings also used for raytracer. For further details and backgrounds also see OpenGL 1.3 functionality on the web.

Reached as SC.visualizationSettings.openGL.

VSettingsOpenGL has the following items:

name

type

default

description

advanced

VSettingsOpenGLAdvanced

advanced settings for openGL

light0

VSettingsLight

settings for light0 and shadow

light1

VSettingsLight

settings for light1 and shadow; starts from diffuse=0.25, specular=0.25, position=[2., 2., -10., 0.]; every other value is the default of the type

light2

VSettingsLight

settings for light2 and shadow; starts from diffuse=0.2, specular=0.2, enable=False; every other value is the default of the type

light3

VSettingsLight

settings for light3 and shadow; starts from diffuse=0.2, specular=0.2, enable=False; every other value is the default of the type

drawFaceNormals

bool

False

draws triangle normals, e.g. at center of triangles; used for debugging of faces

drawNormalsLength

PFloat

0.1

length of normals; used for debugging

drawVertexNormals

bool

False

draws vertex normals; used for debugging

faceEdgesColor

Float4

[0.2,0.2,0.2,1.]

global RGBA color for face edges

faceTransparencyGlobal

UFloat

0.4

in case that facesTransparent=True this represents the max alpha-transparency

lightModelAmbient

Float4

[0.4,0.4,0.4,1.]

global ambient light (needed for faces that are close to orthogonal to light or faces in shadow region); maps to OpenGL glLightModeli(GL_LIGHT_MODEL_AMBIENT,[r,g,b,a]); also used by raytracer

lineWidth

UFloat

1.

width of lines used for representation of lines, circles, points, etc.

materialShininess

float

32.

shininess of material

materialSpecular

Float4

[0.6,0.6,0.6,1.]

RGBA specular color of material

multiSampling

PInt

1

NOTE: this parameter must be set before starting renderer; later changes are not affecting visualization; multi sampling turned off (<=1) or turned on to given values (2, 3, 4, 8 or 16); increases the graphics buffers and might crash due to graphics card memory limitations; only works if supported by hardware; if it does not work, try to change 3D graphics hardware settings!

zMaxSceneFactor

PFloat

2.

factor multiplied with maxSceneSize to avoid clipping of modelview; larger values reduce clipping of near or far objects, but may lead to artifacts (so-called Z-fighting)

VSettingsExportImages

Functionality to export images of view0 to files (PNG or TGA format) which can be used to create animations; in order to activate image recording during the solution process, set SolutionSettings.recordImagesInterval accordingly.

Reached as SC.visualizationSettings.exportImages.

VSettingsExportImages has the following items:

name

type

default

description

heightAlignment

PInt

2

alignment of exported image height; using a value of 2 helps to reduce problems with video conversion (additional horizontal lines are lost)

saveImageFileCounter

UInt

0

current value of the counter which is used to consecutively save frames (images) with consecutive numbers

saveImageFileName

FileName

‘images/frame’

filename (without extension!) and (relative) path for image file(s) with consecutive numbering (e.g., frame0000.png, frame0001.png,…); ; directory will be created if it does not exist

saveImageFormat

String

‘PNG’

format of an exported image, PNG or TGA; TGA has the highest compatibility with all platforms. The drawing elements of a scene as data - lines, triangles, texts, each with the item that drew it - are SC.renderer.GetGraphicsData()

saveImageSingleFile

bool

False

True: only save single files with given filename, not adding numbering; False: add numbering to files, see saveImageFileName

saveImageTimeOut

PInt

5000

timeout in milliseconds for saving a frame as image to disk; this is the amount of time waited for redrawing; increase for very complex scenes

widthAlignment

PInt

4

alignment of exported image width; using a value of 4 helps to reduce problems with video conversion (additional vertical lines are lost)

VSettingsInteractiveAdvanced

Advanced settings for interactive.

Reached as SC.visualizationSettings.interactive.advanced.

VSettingsInteractiveAdvanced has the following items:

name

type

default

description

highlightColor

Float4

[0.8,0.05,0.05,0.75]

RGBA color for highlighted item; 4th value is alpha-transparency

highlightOtherColor

Float4

[0.5,0.5,0.5,0.4]

RGBA color for other items (which are not highlighted); 4th value is alpha-transparency

joystickScaleRotation

float

200.

rotation scaling factor for joystick input

joystickScaleTranslation

float

6.

translation scaling factor for joystick input

keypressRotationStep

float

5.

rotation increment per keypress in degree (full rotation = 360 degree)

keypressTranslationStep

float

0.1

translation increment per keypress relative to window size

mouseMoveRotationFactor

float

1.

rotation increment per 1 pixel mouse movement in degree

pauseWithSpacebar

bool

True

True: during simulation, space bar can be pressed to pause simulation

selectionHighlights

bool

True

True: enable mouse click to highlights item (default: red)

selectionLeftMouse

bool

True

True: enable left mouse click on items to show basic information

selectionLeftMouseItemTypes

Index

31

binary flags (1,2,4,8,16) for (Node,Object,Marker,Load,Sensor) that are identified with left mouse click selection

selectionRightMouse

bool

True

True: enable right mouse click on items to show dictionary (read only!)

selectionRightMouseGraphicsData

bool

False

True: right mouse click on items also shows GraphicsData information for inspectation (may sometimes be very large and may not fit into dialog for large graphics objects!)

zoomStepFactor

float

1.15

change of zoom per keypress (keypad +/-) or mouse wheel increment

VSettingsInteractive

Functionality to interact with render window; includes special rotation and zoom factors, item-highlighting, marker tracking, item selection and keyPressUserFunction.

Reached as SC.visualizationSettings.interactive.

VSettingsInteractive has the following items:

name

type

default

description

advanced

VSettingsInteractiveAdvanced

advanced interactive visualization settings

autoRotateModelView

bool

False

True: rotate model view with autorotation

autoRotationVelocity

Float3

[0.,0.,1.047198]

Angular velocity vector for auto-rotation of scene (only visualization view is rotated, not the model itself!)

highlightItemIndex

Int

-1

index of item that shall be highlighted (e.g., to find item which cauess problems); if set -1, no item is highlighted

highlightItemType

ItemType

ItemType::_None

item type (Node, Object, …) that shall be highlighted (e.g., to find item which cauess problems)

highlightMbsNumber

UInt

0

index of main system (mbs) for which the item shall be highlighted; number is related to the ID in SystemContainer (first mbs = 0, second = 1, …)

ignoreKeys

bool

False

True: ignore keyboard input except escape and ‘F2’ keys; used for interactive mode, e.g., to perform kinematic analysis; This flag can be switched with key ‘F2’; if ignoreKeys=True, then keyPressUserFunction can be used!

keyPressUserFunction

KeyPressUserFunction

0

add a Python function f(key, action, mods) here, which is called every time a key is pressed; set this parameter to 0 (int) in order to deactivate it; the user function is only called if interactive.ignoreKeys=True; function shall return true, if key has been processed; Example: def f(key, action, mods): print('key=',key); use chr(key) to convert key codes [32 …96] to ascii; special key codes (>256) are provided in the exudyn.KeyCode enumeration type; key action needs to be checked (0=released, 1=pressed, 2=repeated); mods provide information (binary) for SHIFT (1), CTRL (2), ALT (4), Super keys (8), CAPSLOCK (16)

logMouseCoordinates

bool

True

True: if showMouseCoordinates=True, also log mouse coordinates (transformed to model coordinates); only works for axis-aligned ortho-projections and shows the coordinates of the current plane

useJoystickInput

bool

True

True: read joystick input (use 6-axis joystick with lowest ID found when starting renderer window) and interpret as (x,y,z) position and (rotx, roty, rotz) rotation: as available from 3Dconnexion space mouse and maybe others as well; set to False, if external joystick makes problems …

VisualizationSettings

Top structure for all visualization settings in Exudyn.

Reached as SC.visualizationSettings.

VisualizationSettings has the following items:

name

type

default

description

bodies

VSettingsBodies

body visualization settings

connectors

VSettingsConnectors

connector visualization settings

contact

VSettingsContact

contact visualization settings

contour

VSettingsContour

contour plot visualization settings

dialogs

VSettingsDialogs

dialogs settings

exportImages

VSettingsExportImages

settings for exporting (saving) images to files in order to create animations

general

VSettingsGeneral

general visualization settings

interactive

VSettingsInteractive

Settings for interaction with renderer

loads

VSettingsLoads

load visualization settings

markers

VSettingsMarkers

marker visualization settings

nodes

VSettingsNodes

node visualization settings

openGL

VSettingsOpenGL

OpenGL rendering settings

raytracer

VSettingsRaytracer

Raytracer settings (builds on OpenGL rendering settings)

sensors

VSettingsSensors

sensor visualization settings

view0

VSettingsView

Settings for main view 0

view1

VSettingsView

Settings for sub-view 1

view2

VSettingsView

Settings for sub-view 2

view3

VSettingsView

Settings for sub-view 3

The following parameter changes have been made:

  • visualizationSettings.general.drawCoordinateSystem → visualizationSettings.view0.scene.drawCoordinateSystem (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.general.drawWorldBasis → visualizationSettings.view0.scene.drawWorldBasis (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.general.linuxDisplayScaleFactor → visualizationSettings.general.displayScaleFactor (changed in version 1.12.445, expires: 2031)

  • visualizationSettings.general.showComputationInfo → visualizationSettings.view0.window.showComputationInfo (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.general.textSize → visualizationSettings.view0.window.globalFontSize (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.general.useWindowsDisplayScaleFactor → visualizationSettings.openGL.dummyBool (changed in version 1.12.445, expires: 2031)

  • visualizationSettings.general.worldBasisSize → visualizationSettings.view0.scene.worldBasisSize (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.contour.colorBarPrecision → visualizationSettings.contour.advanced.colorBarPrecision (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.contour.colorBarTiling → visualizationSettings.contour.advanced.colorBarTiling (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.contour.showColorBar → visualizationSettings.contour.advanced.showColorBar (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.alwaysOnTop → visualizationSettings.view0.window.alwaysOnTop (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.ignoreKeys → visualizationSettings.interactive.ignoreKeys (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.keyPressUserFunction → visualizationSettings.interactive.keyPressUserFunction (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.limitWindowToScreenSize → visualizationSettings.general.limitWindowToScreenSize (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.maximize → visualizationSettings.view0.window.maximize (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.reallyQuitTimeLimit → visualizationSettings.general.reallyQuitTimeLimit (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.renderWindowSize → visualizationSettings.view0.window.renderWindowSize (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.showMouseCoordinates → visualizationSettings.view0.window.showMouseCoordinates (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.showRenderStateInfo → visualizationSettings.view0.window.showRenderStateInfo (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.showWindow → visualizationSettings.view0.window.showWindow (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.window.startupTimeout → visualizationSettings.general.rendererStartupTimeout (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.dialogs.fontScalingMacOS → visualizationSettings.dialogs.fontScaling (changed in version 1.12.15, expires: 2032)

  • visualizationSettings.raytracer.ambientLightColor → visualizationSettings.openGL.lightModelAmbient (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.backgroundColorReflections → visualizationSettings.raytracer.advanced.backgroundColorReflections (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.enable → visualizationSettings.view0.camera.useRaytracer (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.lightRadius → visualizationSettings.openGL.light0.lightRadius (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.searchTreeFactor → visualizationSettings.raytracer.advanced.searchTreeFactor (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.shadowScalingFactor → visualizationSettings.raytracer.advanced.shadowScalingFactor (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.shadowSmoothingSteps → visualizationSettings.raytracer.advanced.shadowSmoothingSteps (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.showText → visualizationSettings.raytracer.advanced.showText (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.tilesPerThread → visualizationSettings.raytracer.advanced.tilesPerThread (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.zBiasLines → visualizationSettings.raytracer.advanced.zBiasLines (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.raytracer.zOffsetCamera → visualizationSettings.openGL.dummy (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.clippingPlaneColor → visualizationSettings.openGL.advanced.clippingPlaneColor (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.clippingPlaneDistance → visualizationSettings.view0.camera.clippingPlaneDistance (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.clippingPlaneNormal → visualizationSettings.view0.camera.clippingPlaneNormal (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.depthSorting → visualizationSettings.openGL.advanced.depthSorting (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.enableLight0 → visualizationSettings.openGL.light0.enable (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.enableLight1 → visualizationSettings.openGL.light1.enable (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.enableLighting → visualizationSettings.openGL.advanced.enableLighting (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.facesTransparent → visualizationSettings.view0.scene.facesTransparent (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.initialCenterPoint → visualizationSettings.openGL.advanced.initialCenterPoint (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.initialMaxSceneSize → visualizationSettings.openGL.advanced.initialMaxSceneSize (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.initialModelRotation → visualizationSettings.openGL.advanced.initialModelRotation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.initialZoom → visualizationSettings.openGL.advanced.initialZoom (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0ambient → visualizationSettings.openGL.dummy (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0constantAttenuation → visualizationSettings.openGL.light0.constantAttenuation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0diffuse → visualizationSettings.openGL.light0.diffuse (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0linearAttenuation → visualizationSettings.openGL.light0.linearAttenuation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0position → visualizationSettings.openGL.light0.position (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0quadraticAttenuation → visualizationSettings.openGL.light0.quadraticAttenuation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light0specular → visualizationSettings.openGL.light0.specular (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1ambient → visualizationSettings.openGL.dummy (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1constantAttenuation → visualizationSettings.openGL.light1.constantAttenuation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1diffuse → visualizationSettings.openGL.light1.diffuse (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1linearAttenuation → visualizationSettings.openGL.light1.linearAttenuation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1position → visualizationSettings.openGL.light1.position (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1quadraticAttenuation → visualizationSettings.openGL.light1.quadraticAttenuation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.light1specular → visualizationSettings.openGL.light1.specular (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.lightModelLocalViewer → visualizationSettings.openGL.advanced.lightModelLocalViewer (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.lightModelTwoSide → visualizationSettings.openGL.advanced.lightModelTwoSide (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.lightPositionsInCameraFrame → visualizationSettings.openGL.light0.useCameraFrame (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.lineSmooth → visualizationSettings.openGL.advanced.lineSmooth (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.materialAmbientAndDiffuse → visualizationSettings.openGL.materialSpecular (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.perspective → visualizationSettings.view0.camera.perspective (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.polygonOffset → visualizationSettings.openGL.advanced.polygonOffset (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.shadeModelSmooth → visualizationSettings.openGL.advanced.shadeModelSmooth (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.shadow → visualizationSettings.openGL.light0.shadow (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.shadowPolygonOffset → visualizationSettings.openGL.advanced.shadowPolygonOffset (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.showFaceEdges → visualizationSettings.view0.scene.showFaceEdges (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.showFaces → visualizationSettings.view0.scene.showFaces (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.showLines → visualizationSettings.view0.scene.showLines (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.showMeshEdges → visualizationSettings.view0.scene.showMeshEdges (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.showMeshFaces → visualizationSettings.view0.scene.showMeshFaces (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.textLineSmooth → visualizationSettings.openGL.advanced.textLineSmooth (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.openGL.textLineWidth → visualizationSettings.openGL.advanced.textLineWidth (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.highlightColor → visualizationSettings.interactive.advanced.highlightColor (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.highlightOtherColor → visualizationSettings.interactive.advanced.highlightOtherColor (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.joystickScaleRotation → visualizationSettings.interactive.advanced.joystickScaleRotation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.joystickScaleTranslation → visualizationSettings.interactive.advanced.joystickScaleTranslation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.keypressRotationStep → visualizationSettings.interactive.advanced.keypressRotationStep (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.keypressTranslationStep → visualizationSettings.interactive.advanced.keypressTranslationStep (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.lockModelView → visualizationSettings.view0.window.lockModelView (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.mouseMoveRotationFactor → visualizationSettings.interactive.advanced.mouseMoveRotationFactor (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.pauseWithSpacebar → visualizationSettings.interactive.advanced.pauseWithSpacebar (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.selectionHighlights → visualizationSettings.interactive.advanced.selectionHighlights (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.selectionLeftMouse → visualizationSettings.interactive.advanced.selectionLeftMouse (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.selectionLeftMouseItemTypes → visualizationSettings.interactive.advanced.selectionLeftMouseItemTypes (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.selectionRightMouse → visualizationSettings.interactive.advanced.selectionRightMouse (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.selectionRightMouseGraphicsData → visualizationSettings.interactive.advanced.selectionRightMouseGraphicsData (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.trackMarker → visualizationSettings.view0.camera.trackMarker (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.trackMarkerMbsNumber → visualizationSettings.view0.camera.trackMarkerMbsNumber (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.trackMarkerOrientation → visualizationSettings.view0.camera.trackMarkerOrientation (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.trackMarkerPosition → visualizationSettings.view0.camera.trackMarkerPosition (changed in version 1.10.80, expires: 2030)

  • visualizationSettings.interactive.zoomStepFactor → visualizationSettings.interactive.advanced.zoomStepFactor (changed in version 1.10.80, expires: 2030)