Files
2025-09-29 00:52:08 +02:00

517 lines
31 KiB
Plaintext
Executable File

--script to hookup single axis sliders to drive facefx ambient head joysticks
-- Load the common maxscript functions
--include "rockstar/export/settings.ms" -- This is SLOW!
filein "rockstar/export/settings.ms" -- This is fast
-- Figure out the project
theProjectRoot = RsConfigGetProjRootDir()
theProject = RSConfigGetProjectName()
theWildWest = RsConfigGetWildWestDir()
theProjectConfig = RsConfigGetProjBinConfigDir()
-- Load common functions
filein (theWildWest + "script/max/Rockstar_North/character/includes/FN_common.ms")
filein (theWildWest + "script/max/Rockstar_North/character/includes/FN_bone_tagger.ms")
filein (theWildWest + "script/max/Rockstar_North/character/includes/FN_Rigging.ms")
filein (theProjectRoot + "tools/dcc/current/max2011/scripts/pipeline/util/xml.ms")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
faceFXSliderArray = #(
"Neutral",
"Open"--,
-- "W",
-- "Sh-Ch",
-- "P-B-M",
-- "F-V",
-- "Oo",
-- "u",
-- "a",
-- "ee",
-- "d",
-- "th"
)
ambientArray = #(
"Tongue",
"L_Blink",
"LookAT_Activator",
"L_Cheek",
"LowerLip",
"UpperLip_Curl",
"LowerLip_Curl",
"UpperLip",
"L_Mouth",
"Jaw",
"Mouth",
"R_Eye",
"L_Eye",
"R_Mouth",
"C_Brow",
"Tongue_In_Out",
"R_Cheek",
"R_Brow",
"L_Brow",
"R_Blink"
)
struct driverParamStruct (ffxSlider, ambientJS, multX, multY, ind)
-- ffxSlider = name of face fx (1d) slider
-- ambientJS = name of the ambient head joystick (e.g. R_Brow or C_Brow)
-- multX = multiplier for the x movement of the ambient joystick for the current ffxslider
-- multY = multiplier for the y movement of the ambient joystick for the current ffxslider
-- ind = index of the controller for the list - neutral would be 1, open 2 etc etc
driverListStruct = #( --array of all skeleton bones which we want to split mesh for
(driverParamStruct ffxSlider:"Neutral" ambientJS:"Tongue" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"L_Blink" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"L_Cheek" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"LowerLip" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"UpperLip" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"L_Mouth" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"Jaw" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"Mouth" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"R_Eye" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"L_Eye" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"R_Mouth" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"C_Brow" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"R_Cheek" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"R_Brow" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"L_Brow" multX:0 multY:0 ind:1),
(driverParamStruct ffxSlider:"Neutral" ambientJS:"R_Blink" multX:0 multY:0 ind:1),
----
(driverParamStruct ffxSlider:"Open" ambientJS:"Tongue" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"L_Blink" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"L_Cheek" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"LowerLip" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"UpperLip" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"L_Mouth" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"Jaw" multX:0 multY:-1 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"Mouth" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"R_Eye" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"L_Eye" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"R_Mouth" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"C_Brow" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"R_Cheek" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"R_Brow" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"L_Brow" multX:0 multY:0 ind:2),
(driverParamStruct ffxSlider:"Open" ambientJS:"R_Blink" multX:0 multY:0 ind:2),
----
(driverParamStruct ffxSlider:"W" ambientJS:"Tongue" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"L_Blink" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"L_Cheek" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"LowerLip" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"UpperLip" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"L_Mouth" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"Jaw" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"Mouth" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"R_Eye" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"L_Eye" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"R_Mouth" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"C_Brow" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"R_Cheek" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"R_Brow" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"L_Brow" multX:0 multY:0 ind:3),
(driverParamStruct ffxSlider:"W" ambientJS:"R_Blink" multX:0 multY:0 ind:3),
----
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"Tongue" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"L_Blink" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"L_Cheek" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"LowerLip" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"UpperLip" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"L_Mouth" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"Jaw" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"Mouth" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"R_Eye" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"L_Eye" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"R_Mouth" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"C_Brow" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"R_Cheek" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"R_Brow" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"L_Brow" multX:0 multY:0 ind:4),
(driverParamStruct ffxSlider:"Sh-Ch" ambientJS:"R_Blink" multX:0 multY:0 ind:4),
----
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"Tongue" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"L_Blink" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"L_Cheek" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"LowerLip" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"UpperLip" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"L_Mouth" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"Jaw" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"Mouth" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"R_Eye" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"L_Eye" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"R_Mouth" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"C_Brow" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"R_Cheek" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"R_Brow" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"L_Brow" multX:0 multY:0 ind:5),
(driverParamStruct ffxSlider:"P-B-M" ambientJS:"R_Blink" multX:0 multY:0 ind:5),
----
(driverParamStruct ffxSlider:"F-V" ambientJS:"Tongue" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"L_Blink" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"L_Cheek" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"LowerLip" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"UpperLip" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"L_Mouth" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"Jaw" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"Mouth" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"R_Eye" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"L_Eye" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"R_Mouth" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"C_Brow" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"R_Cheek" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"R_Brow" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"L_Brow" multX:0 multY:0 ind:6),
(driverParamStruct ffxSlider:"F-V" ambientJS:"R_Blink" multX:0 multY:0 ind:6),
----
(driverParamStruct ffxSlider:"Oo" ambientJS:"Tongue" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"L_Blink" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"L_Cheek" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"LowerLip" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"UpperLip" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"L_Mouth" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"Jaw" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"Mouth" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"R_Eye" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"L_Eye" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"R_Mouth" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"C_Brow" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"R_Cheek" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"R_Brow" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"L_Brow" multX:0 multY:0 ind:7),
(driverParamStruct ffxSlider:"Oo" ambientJS:"R_Blink" multX:0 multY:0 ind:7),
----
(driverParamStruct ffxSlider:"u" ambientJS:"Tongue" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"L_Blink" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"L_Cheek" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"LowerLip" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"UpperLip" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"L_Mouth" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"Jaw" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"Mouth" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"R_Eye" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"L_Eye" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"R_Mouth" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"C_Brow" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"R_Cheek" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"R_Brow" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"L_Brow" multX:0 multY:0 ind:8),
(driverParamStruct ffxSlider:"u" ambientJS:"R_Blink" multX:0 multY:0 ind:8),
----
(driverParamStruct ffxSlider:"a" ambientJS:"Tongue" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"L_Blink" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"L_Cheek" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"LowerLip" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"UpperLip" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"L_Mouth" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"Jaw" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"Mouth" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"R_Eye" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"L_Eye" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"R_Mouth" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"C_Brow" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"R_Cheek" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"R_Brow" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"L_Brow" multX:0 multY:0 ind:9),
(driverParamStruct ffxSlider:"a" ambientJS:"R_Blink" multX:0 multY:0 ind:9),
----
(driverParamStruct ffxSlider:"ee" ambientJS:"Tongue" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"L_Blink" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"L_Cheek" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"LowerLip" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"UpperLip" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"L_Mouth" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"Jaw" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"Mouth" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"R_Eye" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"L_Eye" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"R_Mouth" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"C_Brow" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"R_Cheek" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"R_Brow" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"L_Brow" multX:0 multY:0 ind:10),
(driverParamStruct ffxSlider:"ee" ambientJS:"R_Blink" multX:0 multY:0 ind:10),
----
(driverParamStruct ffxSlider:"d" ambientJS:"Tongue" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"L_Blink" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"L_Cheek" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"LowerLip" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"UpperLip" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"L_Mouth" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"Jaw" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"Mouth" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"R_Eye" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"L_Eye" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"R_Mouth" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"C_Brow" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"R_Cheek" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"R_Brow" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"L_Brow" multX:0 multY:0 ind:11),
(driverParamStruct ffxSlider:"d" ambientJS:"R_Blink" multX:0 multY:0 ind:11),
----
(driverParamStruct ffxSlider:"th" ambientJS:"Tongue" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"L_Blink" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"LookAt_Activator" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"L_Cheek" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"LowerLip" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"UpperLip_Curl" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"LowerLip_Curl" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"UpperLip" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"L_Mouth" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"Jaw" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"Mouth" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"R_Eye" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"L_Eye" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"R_Mouth" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"C_Brow" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"Tongue_In_Out" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"R_Cheek" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"R_Brow" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"L_Brow" multX:0 multY:0 ind:12),
(driverParamStruct ffxSlider:"th" ambientJS:"R_Blink" multX:0 multY:0 ind:12)
----
)
fn connectViaStruct =
(
--facefx sliders must be created first...
for str = 1 to driverListStruct.count do
-- for str = 2 to driverListStruct.count do
(
clearListener()
print ("Configuring for "+driverListStruct[str].ffxSlider)
ambSlider = getNodeByName ("CTRL_"+driverListStruct[str].ambientJS)
--first we add a controller into the x position for the ffxSlider IF its not just a vert joystick
if ambSlider.position.controller.zero_pos_xyz.x_position.controller.upper_limit != 0 do --ok this means we have a slider which isnt just up and down
(
print (ambSlider.name+" is not limited in X")
if (ambSlider.pos.controller.Zero_Pos_XYZ.controller.X_Position.controller as string) == ("Controller:Float_Limit") do
(
if driverListStruct[str].ind == 1 do
(
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Bezier_Float.controller = float_List()
)
ffxJoystick = getNodeByName ("CTRL_"+driverListStruct[str].ffxSlider)
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.available.controller = float_Expression()
--now name the controller
print ("ind = "+(driverListStruct[str].ind as string))
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.setName (driverListStruct[str].ind + 1) driverListStruct[str].ffxSlider
--now we need to add stuff to the expression controller we just created
expObj = ambSlider
expCont = (".pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller["+((driverListStruct[str].ind + 1) as string)+"].controller")
scalarNames = #("Driver")
scalarConts = #(("$"+"'"+ffxJoystick.name+"'"+".position.controller.Zero_Pos_XYZ.controller.Y_position.controller"))
expString = (scalarNames[1]+" * "+(driverListStruct[str].multX as string))
print ("expObj = "+expObj.name)
print ("expCont = "+expCont)
print ("scalarNames = "+(scalarNames as string))
print ("scalarConts = "+(scalarConts as string))
print ("expString = "+expString)
generateExpression expObj expCont scalarNames scalarConts expString
print "==============================================="
--now name the controller
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.setName (driverListStruct[str].ind + 1) driverListStruct[str].ffxSlider
print ("X "+driverListStruct[str].ffxSlider+" done for "+driverListStruct[str].ambientJS)
)
)
--
if (ambSlider.pos.controller.Zero_Pos_XYZ.controller.Y_Position.controller as string) == ("Controller:Float_Limit") do
(
if driverListStruct[str].ind == 1 do
(
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Bezier_Float.controller = float_List()
)
ffxJoystick = getNodeByName ("CTRL_"+driverListStruct[str].ffxSlider)
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller.available.controller = float_Expression()
--now name the controller
print ("ind = "+(driverListStruct[str].ind as string))
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller.setName (driverListStruct[str].ind + 1) driverListStruct[str].ffxSlider
--now we need to add stuff to the expression controller we just created
expObj = ambSlider
expCont = (".pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller["+((driverListStruct[str].ind + 1) as string)+"].controller")
scalarNames = #("Driver")
scalarConts = #(("$"+"'"+ffxJoystick.name+"'"+".position.controller.Zero_Pos_XYZ.controller.Y_position.controller"))
expString = (scalarNames[1]+" * "+(driverListStruct[str].multY as string))
print ("expObj = "+expObj.name)
print ("expCont = "+expCont)
print ("scalarNames = "+(scalarNames as string))
print ("scalarConts = "+(scalarConts as string))
print ("expString = "+expString)
generateExpression expObj expCont scalarNames scalarConts expString
print "==============================================="
--now name the controller
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller.setName (driverListStruct[str].ind + 1) driverListStruct[str].ffxSlider
print ("Y "+driverListStruct[str].ffxSlider+" done for "+driverListStruct[str].ambientJS)
)
)
)
fn connectSliders =
(
--now we need to add a controller to each axis on each of the faceFX sliders
-- we first need to test if the facefx slider is one d or 2 d
for amb = 1 to ambientArray.count do
(
ambSlider = getNodeByName ("CTRL_"+ambientArray[amb]) --this gets the actual ambient head joystick
--first we add a controller into the x position for the ffxSlider IF its not just a vert joystick
if ambSlider.position.controller.zero_pos_xyz.x_position.controller.upper_limit != 0 do --ok this means we have a slider which isnt just up and down
(
print (ambSlider.name+" is not limited in X")
if (ambSlider.pos.controller.Zero_Pos_XYZ.controller.X_Position.controller as string) == ("Controller:Float_Limit") do
(
if ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Bezier_Float.controller != float_List() do
(
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Bezier_Float.controller = float_List()
)
--now we loop thru all the faceFX Sliders so we get a float on each ambient slider for each facefx(1d) slide
for ffx = 1 to faceFXSliderArray.count do
(
-- print ("Looking for CTRL_"+faceFXSliderArray[ffx])
ffxJoystick = getNodeByName ("CTRL_"+faceFXSliderArray[ffx])
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.available.controller = float_Expression()
--now name the controller
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.setName (ffx + 1) faceFXSliderArray[ffx]
--now we need to add stuff to the expression controller we just created
expObj = ambSlider
expCont = (".pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller["+((ffx + 1) as string)+"].controller")
scalarNames = #(faceFXSliderArray[ffx])
scalarConts = #(("$"+ffxJoystick.name+".position.controller.Zero_Pos_XYZ.controller.Y_position.controller"))
expString = (scalarNames[1]+" * 1")
print ("expObj = "+expObj.name)
print ("expCont = "+expCont)
print ("scalarNames = "+(scalarNames as string))
print ("scalarConts = "+(scalarConts as string))
print ("expString = "+expString)
generateExpression expObj expCont scalarNames scalarConts expString
print "==============================================="
--now name the controller
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.setName (ffx + 1) faceFXSliderArray[ffx]
)
)
)
if ambSlider.position.controller.zero_pos_xyz.y_position.controller.upper_limit != 0 do --ok this means we have a slider which isnt just up and down
(
print (ambSlider.name+" is not limited in Y")
if (ambSlider.pos.controller.Zero_Pos_XYZ.controller.Y_Position.controller as string) == ("Controller:Float_Limit") do
(
if ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Bezier_Float.controller != float_List() do
(
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Bezier_Float.controller = float_List()
)
--now we loop thru all the faceFX Sliders so we get a float on each ambient slider for each facefx(1d) slide
for ffx = 1 to faceFXSliderArray.count do
(
-- print ("Looking for CTRL_"+faceFXSliderArray[ffx])
ffxJoystick = getNodeByName ("CTRL_"+faceFXSliderArray[ffx])
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller.available.controller = float_Expression()
--now name the controller
ambSlider.pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller.setName (ffx + 1) faceFXSliderArray[ffx]
--now we need to add stuff to the expression controller we just created
expObj = ambSlider
expCont = (".pos.controller.Zero_Pos_XYZ.controller.y_position.controller.Limited_Controller__Float_List.controller["+((ffx + 1) as string)+"].controller")
scalarNames = #(faceFXSliderArray[ffx])
scalarConts = #(("$"+ffxJoystick.name+".position.controller.Zero_Pos_XYZ.controller.Y_position.controller"))
expString = (scalarNames[1]+" * 1")
print ("expObj = "+expObj.name)
print ("expCont = "+expCont)
print ("scalarNames = "+(scalarNames as string))
print ("scalarConts = "+(scalarConts as string))
print ("expString = "+expString)
print "==============================================="
generateExpression expObj expCont scalarNames scalarConts expString
--now name the controller
ambSlider.pos.controller.Zero_Pos_XYZ.controller.x_position.controller.Limited_Controller__Float_List.controller.setName (ffx + 1) faceFXSliderArray[ffx]
)
)
)
)
)
clearListener()
-- connectSliders()
connectViaStruct()