HandsTrackball - Kinect 3D object manipulation
- Posted: Jul 29, 2011 at 6:00 AM
- 7,953 Views
- 4 Comments
Loading User Information from Channel 9
Something went wrong getting user information from Channel 9
Loading User Information from MSDN
Something went wrong getting user information from MSDN
Loading Visual Studio Achievements
Something went wrong getting the Visual Studio Achievements
We've seen XBox's flat 2D based Kinect NUI, but that's like wasting a whole "D"! We don't live in a flat world, so neither should our NUI's. Today's project responds to that and shows off controlling and manipulating 3D objects in a Kinect world.
I've created an implementation of a Kinect NUI Trackball which can be used for manipulating a camera around WPF 3D scenes. This "HandsTrackball" is adapted from the Trackball class included in the source code for WPF 3DTools. The original Trackball class allows you to use the mouse to rotate around a WPF 3D scene.
My HandsTrackball basically maps hand movements to what the original Trackball uses as mouse points. Some new ground rules as well as as some Kinect depth-to-screen point calculations are applied in order to make this all work.
The user's left or right hand can be used to rotate around the model. When the user moves their hand, a transform is applied to the camera viewing the 3D scene (the camera moves and the objects in the scene do not move). The camera only moves if the user's hands are at least a minimum distance away from the user's torso. The user can only move the camera when their hand is deliberately extended out from their body. This is a key constraint in order to make the HandsTrackball usable. It allows the user to put their hand(s) down to stop changing the camera angle and prevents accidental movement.
Project Information URL: http://kindohm.com/2011/07/05/WPF3DManipulationWithKinect.html
Project Download URL: http://kindohm.com/files/Kinect3dManipulation.zip
Project Source URL: http://kindohm.com/files/Kinect3dManipulation.zip
Contact Information:
Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation,
please create a new thread in our Forums,
or
Contact Us and let us know.
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
Wow this is probably one of the finest applications that uses the Kinect and actually is easy to use and understand. Great job!
This is the one what I finding. Great job. Thanks!
Code have tiny error when running this.
So I move "this.imageWorker = new BackgroundWorker();"
line 45 in MainWindow.xaml.cs.
to public MainWindow() {}, then everything work.
There is a run Error: in line 35 of MainWindow.xaml.cs :
if (!this.imageWorker.IsBusy), the value of "imageWorker" is null, why? and how to solve the problem? Thank you !
Remove this comment
Remove this thread
close