mcjWiiKit for DS 1,2,3,4 [PC]


Installation


McjWiiKitV0.zip can be found at the bottom of this web page in the attachments section

it contains
    mcjWiiServerV0.exe a PC/DOS program that communicates with the WiiMote through BlueTooth
    mcjWiiClientV0DS1.ds a Daz Script for Daz Studio 1 and 2
    mcjWiiClientV0.dsa a Daz Script for Daz Studio 3 and 4
    wiiuse.dll the GNU GPL library of functions used by mcjStdWiiV0.exe to communicate with the wiimote
    see here http://www.wiiuse.net/

this zip file should be unzipped in your daz studio content folder
typically it means c:\program files\daz\studio\contents

if installed properly, mcjWiiClientV0DS1.ds and mcjWiiClientV0.dsa will be accessible in Daz Studio in the contents tab in studio/scripts/mcasual/

mcjWiiServerV0.exe and wiiuse.dll will also be placed in the scripts/mcasual/ folder.


Version History

Dec 23, 2010 5:08 PM    released version for DS3 only
Dec 27, 2010 1:51 PM    released the server's cpp source code.

May 28, 2012 3PM         tested with DS4, created icons, created version for DS1 and 2, tested under DS1.8, released new package



mcjWiiKit in action



Requirements:

- PC running Windows and equipped with Bluetooth ( i use a $15 dongle that plugs in a usb port )

unfortunately, not all Bluetooth hardware will be able to establish a communication with the WiiMote

see http://wiibrew.org/wiki/List_of_Working_Bluetooth_Devices

for a list of working/non-working Bluetooth hardware


instructions


- Establish the Bluetooth radio link between the WiiMote and Windows , this is called "pairing".

instructions here: http://www.kudzuworld.com/blogs/Tech/20070817A.en.aspx


  • In your daz scene, select the nodes you want to put under the control of the WiiMote

example: Aiko's Head and Neck


  • Launch mcjWiiClientV0.dsa

The "Client Channels" list now contains the list of parameters and morphs for the nodes you selected in the scene


  • Click on the Server Path button and browse up to mcjWiiServerV0.exe

  • Click on the Start Server button.

If all went well, mcjWiiServerV0.exe in now running ( though it's invisible ) it attempted to communicate with the WiiMote, if this worked, it ordered your WiiMote to rumble/vibrate for 1/5 second and turned on a blue led,  then it transmitted back to mcjWiiClientV0.dsa  the names of available channels, so the "Server Channels" List should now be filled with the list of the Wii channels. ex : wm.or.roll which varies with the banking of the wiimote.

note: Sometimes mcjWiiClientV0.dsa fails to properly terminate mcjWiiServerV0.exe on exit. So you should probably use Windows' Task Manager and terminate any ghost of mcjWiiServerV0.exe , since it may be using a lot of CPU power for no good reason.

  • Select a Server Channel, select a Client channel, type in values for "Mult" and "Add" use the "Add Link" button

Before being applied to the Client Channel, the value coming from the Wii is multiplied
by the value "Mult" then the offset "Add" is added. To obtain a 1-to-1 result use Mult = 1 and Add = 0

example: link the wm.or.roll ---> head.Twist and link wm.or.pitch ----> head.bend

example: link wm.but.a.hld ( 1 when the wiimote A button is held down ) to head.BlinkLeft , mult = 0.5 Add = 0.1
this way the LeftBlink is at 10% when button A is released and 60% when it is held down


  • Click on the WiiMote's HOME button

mcjWiiServerV0.exe should now be sending us data up to 10 times per second, and mcjWiiClientV0.dsa is applying them to the nodes in our scene !


  • If you click on the record button,  mcjWiiClientV0.dsa will advance the timeline frame number as it receives new data

it's mocap !


 improving mocap results

Below i plotted the result of linking the roll channel of the wii to the ZRotate parameter of a primitive-sphere in the Daz Studio scene and the a_roll channel to the ZTranslate parameter. The wiimote's "roll" data is mathematically filtered and unfortunately it exhibits very jumpy results ( bug?). The wiimote's "a_roll" channel is the same data but unfiltered, it's somewhat more "noisy" but more reliable. Using my mcjDecimate script ( http://forum.daz3d.com/viewtopic.php?t=143251 ), you can simplify the a_roll curve and get smooth results


 Things that will be fixed in upcoming versions:

    sometimes daz studio accumulates 2 messages from the wiimote before passing them to mcjWiiClientV0.dsa , and
    currently, we just dismiss the second message.

    ability to control material properties using the wii

    world-space client channels

    changing the sample rate

    better filtering of the very noisy accelerometer data

 License

//
/*
 *    mcjWiiServerV0.exe and mcjWiiClientV0.dsa
 *    written by mCasual/Jacques
 *    Copyright 2010
 *
 *    This program is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

// this program uses the wiiuse library to communicate with the wii
// the library is under the GNU General Public License
// you can get it here: http://www.wiiuse.net/



ċ
mCasual Jacques,
May 28, 2012, 12:32 PM
ċ
mCasual Jacques,
Dec 27, 2010, 1:51 PM
Comments