scotg 204 Posted August 29, 2017 This might seem a little crazy, but is there a way to get driver poses from vanilla RTMs and edit them to fit into other vehicles? There are a lot of good choices to start from, but none of them are ever a perfect fit for my vehicles. Starting from scratch is one option, using the sample files, but then there are the hands. Yeah... it's mostly all about the hands. Moving arms and legs around is tedious enough, but moving individual fingers seems exhausting, especially when the driver has to grip something like a wheel or control stick. Alternatively, does anyone have any p3d pose models featuring hand gripping, that they are willing to share? Share this post Link to post Share on other sites
Whitefame 16 Posted August 29, 2017 Use ArmaRig for blender. http://www.armaholic.com/page.php?id=24137 Works really well when making static animations and are easy to use. The RTM for vanillia are binirized but you can always use the ones from the arma 2 assets. 1 Share this post Link to post Share on other sites
scotg 204 Posted August 30, 2017 Of course it's a blender plugin, but I'm a 3DS Max guy. I don't understand why RTMs, especially static ones, are binarized. Anyway, I went ahead and spent all afternoon arranging the T-pose hands from the sample rig to fit a steering wheel. I'm happy to share the p3d if anyone wants to copy/paste any part of the figure. I'd just need to find a good place to upload it. Share this post Link to post Share on other sites
Macser 776 Posted August 31, 2017 That's just a rig to reduce some of the tedium involved in posing/ interacting with other objects. Especially the hands. Alwarren's export suite could be considered a "plugin". I'm not going to sing Blender's praises. You either use it or you don't. But there are other people getting stuff done with it, as and when it's required. And then going back to what they're used to. What you've done yourself works. But it might be frustrating if you needed to do a set of them. Think of binarising as an optimisation process. Which may help performance, besides reducing the overall weight of a project. I assume making a file awkward to open for the average user, was secondary. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 11, 2017 I have a new problem, but since it's very related to this thread I'm just going to keep it here. My custom driver pose is working, but my custom passenger pose is not. I'm not sure why it's happening, but I'm including the screencaps from OB and Eden to show what's expected vs. what I get, along with the config text - just in case. Please pay no attention to the textures; I have paused working on them for a little while. OB - Buggy with proxies OB - Buggy with extracted proxies EDEN - What went wrong? It may be worth noting that I can no longer get into the passenger seat from outside the buggy. I can only sit there after getting into the driver position. AI aren't smart enough to figure this out, so that's my character standing in passenger seat and the AI in the driver position. Before I created the passenger seat pose I was just using the driver pose for both seats, and it was working - the pose and the outside access. I'm not entirely entirely not sure why it is being stubborn, now. Anyway, here's the config in case that has something to do with it: Spoiler #define _ARMA_ //ndefs=13 enum { destructengine = 2, destructdefault = 6, destructwreck = 7, destructtree = 3, destructtent = 4, stabilizedinaxisx = 1, stabilizedinaxesxyz = 4, stabilizedinaxisy = 2, stabilizedinaxesboth = 3, destructno = 0, stabilizedinaxesnone = 0, destructman = 5, destructbuilding = 1 }; class DefaultEventhandlers; class CfgPatches { class GIJoeAWEStriker { units[] = {"C_aweStriker_01_F"}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Soft_F"}; }; }; class CfgFactionClasses { class GIJOE { displayName = "GI*JOE"; author = "Scot Gilmore"; icon = "aweStriker\data\ui\faction_gijoe_co.paa" priority = 2; side = 1; }; }; class CfgVehicleClasses { class GIJoe_Ground { displayName = "GI*JOE Ground"; }; }; class CfgMovesBasic { class Default; class DefaultDie; class ManActions { awes_driver = "awes_driver"; }; }; class CfgMovesMaleSdr: CfgMovesBasic { class States { class Crew; class awes_driver: Crew { file = "aweStriker\Anims\awes_driver.rtm"; InterpolateTo[] = {"Unconscious",0.1}; }; /* class awes_cargo: Crew { file = "aweStriker\Anims\awes_cargo.rtm"; actions = "CargoActions"; aiming = "aimingNo"; aimingBody = "aimingNo"; //legs = "legsNo"; //head = "headNo"; disableWeapons = 1; interpolationRestart = 1; soundEdge[] = {0.45}; boundingSphere = 2.5; canPullTrigger = 0; leaning = "crewShake"; rightHandIKCurve[] = {1}; leftHandIKCurve[] = {1}; rightLegIKCurve[] = {1}; leftLegIKCurve[] = {1}; ConnectTo[] = {}; InterpolateTo[] = {"Unconscious",0.1}; }; */ }; }; class WeaponFireGun; class WeaponCloudsGun; class WeaponFireMGun; class WeaponCloudsMGun; class CfgVehicles { class LandVehicle; class Car: LandVehicle { class HitPoints; }; class Car_F: Car { class HitPoints { class HitLFWheel; class HitLF2Wheel; class HitRFWheel; class HitRF2Wheel; class HitGlass1; class HitGlass2; class HitGlass3; class HitGlass4; class HitGlass5; class HitGlass6; }; class EventHandlers; class AnimationSources; }; class aweStriker_01_base_F: Car_F { //features = "Randomization: Yes, 8 skins, disabled by: this setVariable [""BIS_enableRandomization"",false]; <br />Specific skin may be set by: this setVariable [""color"",X]; (the number ranges from 0 to 7) <br />Camo selections: 1 - the whole body <br />Script door sources: None <br />Script animations: None <br />Executed scripts: \scripts\clock.sqf, \randomize.sqf <br />Firing from vehicles: No <br />Slingload: Slingloadable <br />Cargo proxy indexes: 1 to 3"; mapSize = 6.18; author = "Scot Gilmore"; _generalMacro = "aweStriker_01_base_F"; displayName = "AWE Striker"; class Library { libTextDesc = "All Weather Environment Striker"; }; model = "aweStriker\aweStriker1"; picture = "aweStriker\Data\UI\icon_aweStriker_co.paa"; Icon = "aweStriker\Data\UI\map_aweStriker_co.paa"; cost = 50000; slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1","SlingLoadCargo2","SlingLoadCargo3","SlingLoadCargo4"}; unitInfoType = "RscUnitInfoNoWeapon"; class Turrets{}; class HitPoints: HitPoints { class HitLFWheel: HitLFWheel { armor = 0.15; }; class HitLF2Wheel: HitLF2Wheel { armor = 0.15; }; class HitRFWheel: HitRFWheel { armor = 0.15; }; class HitRF2Wheel: HitRF2Wheel { armor = 0.15; }; class HitFuel { armor = 0.14; material = -1; name = "palivo"; visual = ""; passThrough = 1; }; class HitEngine { armor = 0.5; material = -1; name = "engine"; visual = ""; passThrough = 1; }; class HitGlass1: HitGlass1 { armor = 1; }; class HitGlass2: HitGlass2 { armor = 1; }; class HitGlass3: HitGlass3 { armor = 1; }; class HitGlass4: HitGlass4 { armor = 1; }; class HitGlass5: HitGlass5 { armor = 1; }; class HitGlass6: HitGlass6 { armor = 0.5; }; }; transportSoldier = 1; class TransportItems { class _xx_FirstAidKit { name = "FirstAidKit"; count = 4; }; }; driverAction = "awes_driver"; cargoAction[] = {"awes_cargo"}; armor = 32; fireResistance = 5; terrainCoef = 2.5; turnCoef = 3.1; precision = 20; brakeDistance = 5; acceleration = 12; class AnimationSources: AnimationSources { class Hide { source = "user"; animPeriod = 1; initPhase = 0; }; }; #include "sounds.hpp" //separate file for better work flow thrustDelay = 0.2; brakeIdleSpeed = 1.78; maxSpeed = 249; fuelCapacity = 45; wheelCircumference = 3.0; antiRollbarForceCoef = 2.0; antiRollbarForceLimit = 10; antiRollbarSpeedMin = 10; antiRollbarSpeedMax = 200; idleRpm = 800; redRpm = 6000; class complexGearbox { GearboxRatios[] = {"R1",-6.575,"N",0,"D1",4.827,"D2",2.855,"D3",1.716,"D4",1.073,"D5",0.755,"D6",0.575}; TransmissionRatios[] = {"High",5.69}; gearBoxMode = "auto"; moveOffGear = 1; driveString = "D"; neutralString = "N"; reverseString = "R"; }; simulation = "carx"; dampersBumpCoef = 0.3; differentialType = "rear_limited"; frontRearSplit = 0.5; frontBias = 1.9; rearBias = 1.9; centreBias = 1.9; clutchStrength = 50.0; enginePower = 408; maxOmega = 600; peakTorque = 680; dampingRateFullThrottle = 0.1; dampingRateZeroThrottleClutchEngaged = 1.0; dampingRateZeroThrottleClutchDisengaged = 0.35; torqueCurve[] = {{0.0,0.0},{0.185,0.713},{0.35,1.0},{0.5,0.975},{0.75,0.755},{0.85,0.627},{1.0,0.415}}; changeGearMinEffectivity[] = {0.95,0.15,0.65,0.65,0.65,0.55,0.55,0.55}; switchTime = 0.21; latency = 0.25; class Wheels { class LF { boneName = "wheel_1_1_damper"; steering = 1; side = "left"; center = "wheel_1_1_axis"; boundary = "wheel_1_1_bound"; width = "0.2"; mass = 25; MOI = 8; dampingRate = 0.3; maxBrakeTorque = 4000; maxHandBrakeTorque = 0; suspTravelDirection[] = {0,-1,0}; suspForceAppPointOffset = "wheel_1_1_axis"; tireForceAppPointOffset = "wheel_1_1_axis"; longitudinalStiffnessPerUnitGravity = 100000; latStiffX = 2.5; latStiffY = 18.0; frictionVsSlipGraph[] = {{0,1},{0.5,1},{1,1}}; maxCompression = 0.2; mMaxDroop = 0.1; sprungMass = 110; springStrength = 4000; springDamperRate = 1000; }; class LR { boneName = "wheel_1_2_damper"; steering = 0; side = "left"; center = "wheel_1_2_axis"; boundary = "wheel_1_2_bound"; width = "0.2"; mass = 25; MOI = 8; dampingRate = 0.3; maxBrakeTorque = 4000; maxHandBrakeTorque = 12000; suspTravelDirection[] = {0,-1,0}; suspForceAppPointOffset = "wheel_1_2_axis"; tireForceAppPointOffset = "wheel_1_2_axis"; longitudinalStiffnessPerUnitGravity = 100000; latStiffX = 2.5; latStiffY = 18.0; frictionVsSlipGraph[] = {{0,1},{0.5,1},{1,1}}; maxCompression = 0.2; mMaxDroop = 0.1; sprungMass = 120; springStrength = 4000; springDamperRate = 1000; }; class RF: LF { boneName = "wheel_2_1_damper"; side = "right"; center = "wheel_2_1_axis"; boundary = "wheel_2_1_bound"; suspForceAppPointOffset = "wheel_2_1_axis"; tireForceAppPointOffset = "wheel_2_1_axis"; }; class RR: LR { boneName = "wheel_2_2_damper"; side = "right"; center = "wheel_2_2_axis"; boundary = "wheel_2_2_bound"; suspForceAppPointOffset = "wheel_2_2_axis"; tireForceAppPointOffset = "wheel_2_2_axis"; }; }; class RenderTargets { class LeftMirror { renderTarget = "rendertarget0"; class CameraView1 { pointPosition = "PIP0_pos"; pointDirection = "PIP0_dir"; renderQuality = 2; renderVisionMode = 0; fov = 0.6; }; }; class RightMirror { renderTarget = "rendertarget2"; class CameraView1 { pointPosition = "PIP2_pos"; pointDirection = "PIP2_dir"; renderQuality = 2; renderVisionMode = 0; fov = 0.6; }; }; class IntMirror { renderTarget = "rendertarget1"; class CameraView1 { pointPosition = "PIP1_pos"; pointDirection = "PIP1_dir"; renderQuality = 2; renderVisionMode = 0; fov = 0.6; }; }; }; class Reflectors { class Left { color[] = {1900,1800,1700}; ambient[] = {5,5,5}; position = "light_L"; direction = "light_L_end"; hitpoint = "light_L"; selection = "light_L"; size = 1; innerAngle = 100; outerAngle = 179; coneFadeCoef = 10; intensity = 1; useFlare = 1; dayLight = 0; flareSize = 1.0; class Attenuation { start = 1.0; constant = 0; linear = 0; quadratic = 0.25; hardLimitStart = 60; hardLimitEnd = 120; }; }; class Right: Left { position = "light_R"; direction = "light_R_end"; hitpoint = "light_R"; selection = "light_R"; }; }; aggregateReflectors[] = {{"Left","Right"}}; class Damage { tex[] = {}; mat[] = {"A3\soft_f_gamma\SUV_01\Data\SUV_01_ext.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_ext_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_ext_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_VP.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_base_destruct.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_VP.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_damage.rvmat","A3\soft_f_gamma\SUV_01\Data\SUV_01_int_board_destruct.rvmat","a3\data_f\glass_veh.rvmat","a3\data_f\Glass_veh_damage.rvmat","a3\data_f\Glass_veh_damage.rvmat","a3\data_f\Glass_veh_int.rvmat","a3\data_f\Glass_veh_damage.rvmat","a3\data_f\Glass_veh_damage.rvmat"}; }; hiddenSelections[] = {"Camo1"}; class Exhausts { class Exhaust1 { position = "exhaust_1"; direction = "exhaust_1_dir"; effect = "ExhaustsEffect"; }; class Exhaust2 { position = "exhaust_2"; direction = "exhaust_2_dir"; effect = "ExhaustsEffect"; }; }; /* class textureSources { class fpg { displayName = "Faceplant Games, Yo"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base01_co.paa"}; materials[] ={"aweStriker\data\awes_ext_02.rvmat"}; factions[] = {}; }; class gray { displayName = "Gray"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base02_co.paa"}; factions[] = {}; }; class red { displayName = "Red"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base03_co.paa"}; factions[] = {}; }; class blue { displayName = "Blue"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base04_co.paa"}; materials[] ={"aweStriker\data\awes_ext_03.rvmat"}; factions[] = {}; }; class yellow { displayName = "Yellow"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base05_co.paa"}; factions[] = {}; }; class white { displayName = "White"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base06_co.paa"}; factions[] = {}; }; class black { displayName = "Black"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base07_co.paa"}; materials[] ={"aweStriker\data\awes_ext_02.rvmat"}; factions[] = {}; }; class blkItl { displayName = "Italian colors on Black"; author = "Scot Gilmore"; textures[] = {"aweStriker\data\awes_ext_base08_co.paa"}; factions[] = {}; }; }; textureList[] = {"FPG",1,"Gray",1,"Red",1,"Blue",1,"Yellow",1,"White",1,"Black",1,"BlkItl",1}; */ class MFD { class AirplaneHUD { topLeft = "HUD_top_left"; topRight = "HUD_top_right"; bottomLeft = "HUD_bottom_left"; borderLeft = 0; borderRight = 0; borderTop = 0; borderBottom = 0.0; color[] = {0.15,0.15,1.0,1.0}; enableParallax = 0; class Bones{}; class Draw { color[] = {0.07,0.67,0.745}; alpha = 1; class ClockHour { type = "text"; source = "ClockHour"; sourceScale = 12; align = "right"; scale = 2; pos[] = {{0.05,0.0},1}; right[] = {{0.4,0.0},1}; down[] = {{0.05,1.0},1}; }; class ClockMinute { type = "text"; source = "ClockMinute"; sourceScale = 60; align = "right"; scale = 2; pos[] = {{0.55,0.0},1}; right[] = {{0.9,0.0},1}; down[] = {{0.55,1.0},1}; }; }; }; }; }; class aweStriker1: aweStriker_01_base_F { author = "Scot Gilmore"; _generalMacro = "aweStriker1"; scope = 2; crew = "C_man_1"; typicalCargo[] = {"C_man_1"}; side = 1; faction = "GIJOE"; displayName = "** AWE Striker **"; vehicleClass = "GIJoe_Ground"; accuracy = 1.25; hiddenSelectionsTextures[] = {"aweStriker\data\awes_ext_W_co.paa"}; class EventHandlers: EventHandlers { init = "if (local (_this select 0)) then {[(_this select 0), """", [], false] call bis_fnc_initVehicle;};"; }; }; /* class aweStriker_01_base_blkItl_F: C_aweStriker_01_F { displayName = "Italian colors on black"; scope = 1; scopeCurator = 0; author = "Scot Gilmore"; textureList[] = {"BlkItl",1}; }; */ }; I humbly ask for your help, folks. Maybe I just need a second pair of eyes for the moment, or maybe I messed up big. Also, please excuse the scripting, y'all. I know it needs tidying up, and it will get it - eventually. Share this post Link to post Share on other sites
Whitefame 16 Posted September 11, 2017 Does your cargo proxy have a \cargo ending in the model? its the same for driver/gunner proxies, it needs it to know what kind of proxy it should be. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 11, 2017 I followed Abs' video tutorial, and just renamed it cargo. I get it that it might not take if you don't end it with cargo, but in the video he just replaces the whole directory path with cargo. I did that for the driver proxy (renamed it driver), which worked. So... I just still don't understand why the driver proxy is working but the cargo proxy isn't. Share this post Link to post Share on other sites
scotg 204 Posted September 12, 2017 19 hours ago, Whitefame said: Does your cargo proxy have a \cargo ending in the model? its the same for driver/gunner proxies, it needs it to know what kind of proxy it should be. These are vanilla paths. Does this work with custom paths that point to custom poses? Could it be a problem with the config? I'm thinking that since the pose is extracted correctly in OB, then the RTM is not the problem. Share this post Link to post Share on other sites
x3kj 1247 Posted September 13, 2017 the path is irrelevant, at least for the ingame functionality. Its only the name and the number. 1 Share this post Link to post Share on other sites
scotg 204 Posted September 13, 2017 That's what I thunk, but I had to be sure. LOL So the problem persists... Share this post Link to post Share on other sites
scotg 204 Posted September 15, 2017 I found the solution for the passenger pose; it was a line of the config, in class ManActions, that was accidentally still commented. I can't remember why I commented it, though. Now that I've been able to move it along, I am not too happy with the poses. They are suffering from deformation because of me adjusting them in OB. Is there a way to make bone sections rotate around their pivot points and obey the hierarchy, when editing? Currently, they are only rotating on the selection center, which means I have to reconnect the joints. Apparently, I missed in several places. Note the passenger's right arm, trigger finger, and left forearm, as well as the driver's wrists.Wonky bone structure Share this post Link to post Share on other sites
scotg 204 Posted September 28, 2017 Anyone know what to do if you jack up the default pose when creating a new one? I spent a few hours getting a pose just right, only to finally realize that it was the initial T-pose frame. Any way to re-import the initial pose without losing the new one? Share this post Link to post Share on other sites