User Tools

Site Tools


animation:keyboard

Keyboard Sensor

Eindimensionale Animationen lassen sich durch die Zeitdimension des Managers darstellen. Der Manager und auch einige andere Animationsobjekte haben einen Dialer, mit dem man in der Zeit vor- und zurück laufen lassen kann.

Hat man gleichzeitg zwei Freiheitsgrade zu erproben, reicht die Zeit nicht aus. In einen solchen Fall kann man durch den zweidimensionalen Raum navigieren. Am einfachsten ist die Nutzung der xy-Ebene.

Sieht man ein 2D-Bild als Landkarte, kann man sein “Schiff” oder den Kontrollpunkt durch die Klippen lenken.

Der Keyboard Sensor erlaubt dieses Navigieren. Er nutzt ein paar wenig benötigte Tasten zum Bewegen in der Ebene.

Will man zu bestimmten Punkten springen, selektiert man diese vorher mit der Maus und hat dann die Taste H, um dorthin zu springen.

Die Position des Sensors ist jederzeit aus seiner Property Placement auszulesen. Der Placer kann auf die Information zugreifen und damit andere Objekte bewegen.

Der Keyboard Sensor muss interaktiv über sein KontextMenü gestartet und auch wieder deaktiviert werden, da er in die Tastenbelegung des Programms eingreift.

The keyboard sensor can be used to run 2D animations interactive using the keys or vertex selection by mouse.

This allows exact positioning on top of a 2D diagram representation of data. (Example: Collision Diagram)

up == +y, right == +x

Keys

T = up, V = down, G = right, F = left

Z = right up, B = right down, C = left down, R = left up

H = jump to a selected vertex

Beispieldatei für das Video:

import Keyboard, Placer
reload(Keyboard)

App.newDocument("Keybord Sensor")
App.setActiveDocument("Keybord Sensor")
App.ActiveDocument=App.getDocument("Keybord Sensor")

# visualization point
V=App.ActiveDocument.addObject("Part::Vertex","Keybord Control Point")
V.ViewObject.PointSize=10
V.ViewObject.PointColor=(1.0,.0,.0)

# slaves
s=App.ActiveDocument.addObject("Part::Sphere","Sphere")
b=App.ActiveDocument.addObject("Part::Box","Box")
t=App.ActiveDocument.addObject("Part::Torus","Torus")

s.ViewObject.ShapeColor=(1.0,1.0,.0)
b.ViewObject.ShapeColor=(.0,1.0,1.0)
t.ViewObject.ShapeColor=(1.0,.0,1.0)

# ACTOR #

# move the sphere relative (10,-5,0) to the control point
p=Placer.createPlacer("Sphere Mover",s)
p.src=V
p.x="sx+10"
p.y="sy-5"

# rotate the cube with rotation arc 20*sx along the default z-axis
p2=Placer.createPlacer("Box Rotator",b)
p2.src=V
p2.x="-50"
p2.y="-5"
p2.arc="20*sx"

# rotate the donat with rotation arc 10*sy  along the x-axis
p3=Placer.createPlacer("Torus Rotator",t)
p3.src=V
p3.x="50"
p3.y="0"
p3.arc="10*sy"
p3.RotAxis=FreeCAD.Vector(1,0,0)

# SENSOR #

kb=Keyboard.createKeyboard("Keybord",V)


# start up
kb.ViewObject.Proxy.edit()
App.activeDocument().recompute()
Gui.SendMsgToActiveView("ViewFit")
animation/keyboard.txt · Last modified: 2015/12/05 13:46 by freek