mcjHIDKit
HISTORY
Installation
The installation package McjHIDKit.zip can be found at the bottom of this web page in the attachments section
it contains
- mcjHIDServer.exe a PC/DOS program that relays sound and gamepad events to the client script running in Daz Studio
- mcjClientDS1DS2.ds a Daz Script for Daz Studio 1 and 2
- mcjClient.dsa a Daz Script for Daz Studio 3 and 4
This zip file should be unzipped in your daz studio content folder
Typically it means:
c:\program files\daz\studio\contents
or
C:\Program Files (x86)\DAZ\Studio\content
or
C:\Users\YOURUSERNAME\Documents\DAZ 3D\Studio\My Library\
if installed properly, mcjClientDS1DS2.ds and mcjClient.dsa will be accessible in Daz Studio in the contents tab as
studio/scripts/mcasual/
or
My Library/scripts/mCasual
mcjHIDServer.exe will also be placed in this folder.
Version History
Requirements
- PC running Windows
- a gamepad with an HID driver ( all my tests were done using Logitech's Dual Action Rumblepad
- a sound card or device
Instructions
Make sure your game-pad is connected
Go in window's sound settings and make sure there's a "recording" device enabled
note that in my case i went in the "properties" of the webcam microphone
and disabled the "listen to this device" option to avoid feedback loops
and i adjusted the "levels"
In your daz scene, select the nodes you want to put under the control of the gamepad
example: Aiko's Head and Neck
Launch mcjClient.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 mcjHIDServer.exe
- Click on the Start Server button.
If all went well, mcjHIDServer.exe in now running.
Press any button on the gamepad ... this will initiate the process
mcjHIDServer.exe attempted to communicate with the gamepad and the sound input device
if this worked, it then transmitted back to mcjClient.dsa the names of available gamepad channels,
so the "Server Channels" List should now be filled with the list of gamepad channels.
ex : joy.btn.1.val which is the channel for gamepad's button #1
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.
The gamepad's buttons produce values ranging from 0 to 1.
lets say we want to control the "blink" morphs on Aiko3's head using button #1 of the gamepad
in the Server Channels List, select "joy.btn.1.val"
in the Client Channels List, select "blink Left"
when the button is released we want blink = 10% ( the value 0.1 )
when the button is pressed, we want blink = 60% ( the value 0.6 )
so we use Mult = 0.5 and Add = 0.1
click on the "add link" button
repeat this for the "blink Right" morph, note that the same gamepad button can control many morphs
you now control the blinks with your gamepad !
f you click on the record button, mcjClient.dsa will advance the timeline frame number as it receives new data.
it's mocap !
( dont forget to stop the recording ! )
Enhanced button outputs
In the Server Channels list, each button has 4 outputs labeled .val, .dmp., .popo. and .dpopo.
.val. the raw button state, 0 = button released, 1 = button pressed
.dmp. the "dampened" button state, when you press the button, this output will ramp up from 0 to 1
.popo. the "push-on-push-off" button state, the output toggles between 1 and 0 each time you press and release the button
.dpopo. the combined effect of "dampened" and "push-on-push-off"
Settings
From the HIDServer's top menu you can access the settings menu
you can asjust the "dampening" of the buttons, default value is 500 milliseconds
you can also change the data rate, the default value is 10 Hertz ( 10 times per second )
unfortunately, something in Daz Studio seems to prevent higher data rates.
( possibly a mechanism to prevent stdin overflows )
License
mcjHIDServer.exe, mcjClient.dsa, mcjClient.ds * 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/>.