You can track two hands with the PointViewer sample. You need juste to activate this on the NITE.ini
file that you can find at C:\Program Files (x86)\Prime Sense\NITE\Hands\Data. It is enough to uncomment the two lines.
http://groups.google.com/group/openni-dev/browse_thread/thread/b3347a34db0ac6f6/72c99a2122c3f397?lnk=gst&q=PointViewer+two+hands#72c99a2122c3f397
Thursday, March 24, 2011
Tuesday, March 1, 2011
OpenCV Download
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/
Monday, February 28, 2011
MotionBuilder
How to connect a Kinect to the MontionBuilder.
( http://www.youtube.com/watch?v=_PtxfRpCBHE )
1.
Go to 'Asset Browser' and the 'Templates'. Choose Characters and Actor.
Drag it to 'Viewer'.
In addition, go to the 'Devices' of the same folder,
and select 'Brekel Konect Device' and drag it to the 'Navigator' tab of the 'Navigator' panel.
Then, we will see the 'Devices' icon, and 'Brekel Konect Device' as well.
2.
Double click the 'Brekel Kinect Device', and hit the 'Data' tab.
Initially, the 'Online' check box is in red, and need to be changed to yellow.
3.
Run the Brekel Kinect, and take the initial pose.
Then, we could see the data in the spreadsheet is changing depending on your motion.
4.
Before recording, we have to create a skeleton.
Just go to the 'Model binding', and select the 'Create...',
then it will add a 'Kinect:Reference' menu,
in addition, check out the 'Scene' icon on the left.
You can find a 'Kinect:Reference' as well over there.
The reason of recording is to get a one stable pose
instead of standing in front of a Kinect for 10 mins.
And align the virtual actor to the skeleton.
(Before recording, check 'Recording')
After recording, the 'Online' should be turned off.
Make sure the plug-in is set to "Online" indicated by the green square, and that "Live" and "Recording" are checked. To start recording, click on the record and play button in the "Transport Controls".
Note: A user should stand enough far from the kinect
so that the whole body in the camera view.
Instead of using a body, you'd better use skeleton as follows.
5.
Move an 'Actor' to the Viewer. Then, you will get an 'Actor' in the 'Navigator' pane.
Then, generate 'MakerSet' as follows.
6.
Go back to the 'Scene', and assign each body part to each joint of the virtual actor.
Check 'Oriented' for each one.
7.
"If the directory that contains your character is not added yet, right click on the left side of the browser. From the menu that pops up select "Add favorite path" (figure 1). Add the folder that contains the character. To use the characters that come with Live Characters add the "LiveCharacters" folder that can be found at "C:\Program Files\WorldViz\" if you installed Live Characters to the default location. Click on the folder that got added in the "Asset Browser" and select the character file that is already characterized. "
(From Retarget Motion to a Character)
Load a live character by dragging it to the viewer.
Make sure the "Character Settings" tab is selected. As "Input Type:" select "Actor Input" (figure 2 red arrow) and click "Active" to activate your character
8.
Finally, to animate the actor based on user's motion, the 'Active' should be checked. :)
Note:
From 'C:\Program Files (x86)\WorldViz\LiveCharacters\help\LiveCharactersHelp.chm'
Record a T-Stance Pose
Map Optical Data to an Actor
Retarget Motion to a Character
Issues:
+ MotionBuilder Error (VCOMP90.dll is missing)
http://www.the-area.com/forum/autodesk-motionbuilder/autodesk-motionbuilder-2009/mb2010---vcomp90dll-missing-after-install40with-no-errors-or-warnings41/
( http://www.youtube.com/watch?v=_PtxfRpCBHE )
1.
Go to 'Asset Browser' and the 'Templates'. Choose Characters and Actor.
Drag it to 'Viewer'.
In addition, go to the 'Devices' of the same folder,
and select 'Brekel Konect Device' and drag it to the 'Navigator' tab of the 'Navigator' panel.
Then, we will see the 'Devices' icon, and 'Brekel Konect Device' as well.
2.
Double click the 'Brekel Kinect Device', and hit the 'Data' tab.
Initially, the 'Online' check box is in red, and need to be changed to yellow.
3.
Run the Brekel Kinect, and take the initial pose.
Then, we could see the data in the spreadsheet is changing depending on your motion.
4.
Before recording, we have to create a skeleton.
Just go to the 'Model binding', and select the 'Create...',
then it will add a 'Kinect:Reference' menu,
in addition, check out the 'Scene' icon on the left.
You can find a 'Kinect:Reference' as well over there.
The reason of recording is to get a one stable pose
instead of standing in front of a Kinect for 10 mins.
And align the virtual actor to the skeleton.
(Before recording, check 'Recording')
After recording, the 'Online' should be turned off.
Make sure the plug-in is set to "Online" indicated by the green square, and that "Live" and "Recording" are checked. To start recording, click on the record and play button in the "Transport Controls".
Note: A user should stand enough far from the kinect
so that the whole body in the camera view.
Instead of using a body, you'd better use skeleton as follows.
5.
Move an 'Actor' to the Viewer. Then, you will get an 'Actor' in the 'Navigator' pane.
Then, generate 'MakerSet' as follows.
6.
Go back to the 'Scene', and assign each body part to each joint of the virtual actor.
Check 'Oriented' for each one.
7.
"If the directory that contains your character is not added yet, right click on the left side of the browser. From the menu that pops up select "Add favorite path" (figure 1). Add the folder that contains the character. To use the characters that come with Live Characters add the "LiveCharacters" folder that can be found at "C:\Program Files\WorldViz\" if you installed Live Characters to the default location. Click on the folder that got added in the "Asset Browser" and select the character file that is already characterized. "
(From Retarget Motion to a Character)
Load a live character by dragging it to the viewer.
Make sure the "Character Settings" tab is selected. As "Input Type:" select "Actor Input" (figure 2 red arrow) and click "Active" to activate your character
8.
Finally, to animate the actor based on user's motion, the 'Active' should be checked. :)
Note:
From 'C:\Program Files (x86)\WorldViz\LiveCharacters\help\LiveCharactersHelp.chm'
Record a T-Stance Pose
Map Optical Data to an Actor
Retarget Motion to a Character
Issues:
+ MotionBuilder Error (VCOMP90.dll is missing)
http://www.the-area.com/forum/autodesk-motionbuilder/autodesk-motionbuilder-2009/mb2010---vcomp90dll-missing-after-install40with-no-errors-or-warnings41/
Friday, February 25, 2011
Glut / GLSL Tutorials
Glut
http://www.lighthouse3d.com/opengl/glut/index.php?subwin
(http://www.xmission.com/~nate/glut.html)
GLSL
http://www.lighthouse3d.com/opengl/glsl/
http://www.lighthouse3d.com/opengl/glut/index.php?subwin
(http://www.xmission.com/~nate/glut.html)
GLSL
http://www.lighthouse3d.com/opengl/glsl/
Creating multiple/sub-windows using glut
http://www.lighthouse3d.com/opengl/glut/index.php?subwinrender
Creating multiple windows..
possible.
http://lists.apple.com/archives/mac-opengl/2003/Apr/msg00078.html
But why not with a real-time video feed ?
I was able to create multiple windows with the above approach,
however, input video was not updated.. :(
Any idea ?
Issues with FBO (Frame buffer object)
http://www.openframeworks.cc/forum/viewtopic.php?f=8&t=1325
One possible solution is to use OF (Open Frameworks).
http://www.quietless.com/kitchen/getting-started-with-openframeworks/
Creating multiple windows..
possible.
http://lists.apple.com/archives/mac-opengl/2003/Apr/msg00078.html
But why not with a real-time video feed ?
I was able to create multiple windows with the above approach,
however, input video was not updated.. :(
Any idea ?
Issues with FBO (Frame buffer object)
http://www.openframeworks.cc/forum/viewtopic.php?f=8&t=1325
One possible solution is to use OF (Open Frameworks).
http://www.quietless.com/kitchen/getting-started-with-openframeworks/
Thursday, February 24, 2011
send out keyboard message win32
I found this article which is very useful.
http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx
You can download a code as well.
This was also useful.
void GenerateKey ( int vk , BOOL bExtended)
{
KEYBDINPUT kb={0};
INPUT Input={0};
// generate down
if ( bExtended )
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));
// generate up
::ZeroMemory(&kb,sizeof(KEYBDINPUT));
::ZeroMemory(&Input,sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if ( bExtended )
kb.dwFlags |= KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));
}
http://www.codeproject.com/KB/cpp/sendkeys_cpp_Article.aspx
You can download a code as well.
This was also useful.
void GenerateKey ( int vk , BOOL bExtended)
{
KEYBDINPUT kb={0};
INPUT Input={0};
// generate down
if ( bExtended )
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));
// generate up
::ZeroMemory(&kb,sizeof(KEYBDINPUT));
::ZeroMemory(&Input,sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if ( bExtended )
kb.dwFlags |= KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));
}
Subscribe to:
Posts (Atom)



