Hallo Community,
Ich beschäftige mich seit gestern mit meiner Kinect-Kamera und will meinen Körper, bzw. anfangs erstmal nur eine Hand, auf ein JPanel zeichnen lassen.
Es gibt von den Entwicklern von jnect ein Tutorial (-> RightHandTrackerTutorial), mit welchem ein Plug-In geschrieben wird, dass im Eclipse-Menü auftaucht und bei dem per "Start/Stop" die Anwendung gestartet wird. Sie sucht dann eine recht Hand und schreibt ihre Position in die Konsole rein.
Um das ganze in ein eigenes JFrame mit dem beschriebenen JPanel zu packen, habe ich die Klasse "RightHandTradcer" aus dem Tutorial kopiert und mit einem Button in dem JFrame die "Start"- und "Stop"-Methode ausführen lassen.
Hier der Code von "RightHandTracker". Ihr findet ihn auch nochmal in dem Tutorial:
Der Button:
Wenn ich den Button drücke, kommt in der Konsole folgende Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at org.jnect.core.KinectManager.<clinit>(KinectManager.java:28)
at management.RightHandTracker.printRightHandPosition(RightHandTracker.java:19)
at management.Main$1.actionPerformed(Main.java:34)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
[...]
Caused by: java.lang.NullPointerException
at org.jnect.core.impl.KinectManagerImpl.setUpBodyProvider(KinectManagerImpl.java:63)
at org.jnect.core.impl.KinectManagerImpl.<init>(KinectManagerImpl.java:55)
at org.jnect.core.impl.KinectManagerImpl.<clinit>(KinectManagerImpl.java:35)
... 39 more
Ich hab das Gefühl, es geht nicht, solange ich es nicht als Plug-In in Eclipse einbinde. Wo liegt sonst das Problem? Ich kann nicht einsehen, wo das Problem beim KinectManager ist.
Grüße,
Thomas
PS:
Das Plug-In, wie es im Tutorial erklärt wird, funktioniert natürlich. Alsobloß die Frage, wie ich es davon "wegbekomme"
Ich beschäftige mich seit gestern mit meiner Kinect-Kamera und will meinen Körper, bzw. anfangs erstmal nur eine Hand, auf ein JPanel zeichnen lassen.
Es gibt von den Entwicklern von jnect ein Tutorial (-> RightHandTrackerTutorial), mit welchem ein Plug-In geschrieben wird, dass im Eclipse-Menü auftaucht und bei dem per "Start/Stop" die Anwendung gestartet wird. Sie sucht dann eine recht Hand und schreibt ihre Position in die Konsole rein.
Um das ganze in ein eigenes JFrame mit dem beschriebenen JPanel zu packen, habe ich die Klasse "RightHandTradcer" aus dem Tutorial kopiert und mit einem Button in dem JFrame die "Start"- und "Stop"-Methode ausführen lassen.
Hier der Code von "RightHandTracker". Ihr findet ihn auch nochmal in dem Tutorial:
Java:
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.jnect.bodymodel.RightHand;
import org.jnect.core.KinectManager;
public class RightHandTracker
{
public static RightHandTracker INSTANCE = new RightHandTracker();
private RightHandTracker()
{}
public void printRightHandPosition()
{
KinectManager.INSTANCE.startKinect();
KinectManager.INSTANCE.startSkeletonTracking();
final RightHand rightHand = KinectManager.INSTANCE.getSkeletonModel().getRightHand();
rightHand.eAdapters().add(new Adapter()
{
@Override
public void notifyChanged(Notification notification)
{
System.out.println("x: " + rightHand.getX() + "| y: " + rightHand.getY()
+ "| z: " + rightHand.getZ());
}
@Override
public Notifier getTarget()
{
return rightHand;
}
@Override
public void setTarget(Notifier newTarget)
{
// TODO Auto-generated method stub
}
@Override
public boolean isAdapterForType(Object type)
{
// TODO Auto-generated method stub
return false;
}
});
}
public void stop()
{
KinectManager.INSTANCE.stopKinect();
}
}
Der Button:
Java:
buttonStartStop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (!STARTED) {
RightHandTracker.INSTANCE.printRightHandPosition();
buttonStartStop.setText("Stop");
STARTED = true;
} else {
RightHandTracker.INSTANCE.stop();
buttonStartStop.setText("Start");
STARTED = false;
}
}
});
Wenn ich den Button drücke, kommt in der Konsole folgende Fehlermeldung:
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at org.jnect.core.KinectManager.<clinit>(KinectManager.java:28)
at management.RightHandTracker.printRightHandPosition(RightHandTracker.java:19)
at management.Main$1.actionPerformed(Main.java:34)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
[...]
Caused by: java.lang.NullPointerException
at org.jnect.core.impl.KinectManagerImpl.setUpBodyProvider(KinectManagerImpl.java:63)
at org.jnect.core.impl.KinectManagerImpl.<init>(KinectManagerImpl.java:55)
at org.jnect.core.impl.KinectManagerImpl.<clinit>(KinectManagerImpl.java:35)
... 39 more
Ich hab das Gefühl, es geht nicht, solange ich es nicht als Plug-In in Eclipse einbinde. Wo liegt sonst das Problem? Ich kann nicht einsehen, wo das Problem beim KinectManager ist.
Grüße,
Thomas
PS:
Das Plug-In, wie es im Tutorial erklärt wird, funktioniert natürlich. Alsobloß die Frage, wie ich es davon "wegbekomme"