Fair warning: I am a total amateur at this stuff so expect me to have made some stupid mistakes. Apologies in advance.
A couple years ago I was trying my hand at head-hacking/model hacking and had a few successes. I've been trying to get back into it with 3dsMax 2017 but I'm running into some problems.
I was just trying to get an Asari head onto a Mass Effect 1 worker's body (was then gonna do some re-texturing to make everything match), but the issue I'm having is after I have compiled my model, everything just looks... off. I've attached a screenshot I took in HLMV as an example (can provide more as needed):
[IMG]http://img.photobucket.com/albums/v245/canislupus/asari1_zpswyl0n40y.jpg[/IMG]
These really odd, ugly, patches of shadow seem to get created all over and the model has an overall low-quality look to it. In addition, the hands seem to get deformed somehow. I've tried using two or three different model decompilers/recompilers, and have used both Wall Worms tools and Game Zombie's plugins to import/export the SMDs in and from 3dsMax but the same problem seems to arise no matter what.
All my prior experience was in older versions of 3dsMax and limited anyway, so I have no idea what I'm doing wrong here. If anyone else can offer some advice I'd definitely appreciate it.
Here's my QC as well just in case I made some kind of mistake in there:
[CODE]// Created by Crowbar 0.34.0.0
$ModelName "savage\asari\asari_worker.mdl"
$Model "studio" "asari_worker_reference.smd" {
eyeball "eye_right" "Head" -1.261000 -3.701999 64.974000 "eyeball_r_hazel" 1 4 "iris_unused" 0.66
eyeball "eye_left" "Head" 1.189000 -3.701999 64.972001 "eyeball_l_hazel" 1 -4 "iris_unused" 0.66
mouth 0 "mouth" "ValveBiped.Bip01_Head1" 0 1 0
flexfile "asari_worker.vta"
{
defaultflex frame 0
flex "eyes_closed" frame 1
flex "eyes_wide" frame 2
flex "wink_left" frame 3
flex "wink_right" frame 4
flex "face_fatale" frame 5
flex "Cheek_Width_plus" frame 6
flex "Cheek_Width_minus" frame 7
flex "cheek_left" frame 8
flex "sneer" frame 9
flex "brow_afraid" frame 10
flex "brow_miffed" frame 11
flex "brow_up_left" frame 12
flex "brow_inner_down_l" frame 13
flex "brow_outer_down_l" frame 14
flex "brow_outer_up_l" frame 15
flex "cheek_right" frame 16
flex "brow_up_right" frame 17
flex "brow_inner_down_r" frame 18
flex "brow_outer_down_r" frame 19
flex "brow_outer_up_r" frame 20
flex "lip_upper_left" frame 21
flex "lip_upper_right" frame 22
flex "bite_lip" frame 23
flex "bite_lipnew" frame 24
flex "mouth_grimace" frame 25
flex "mouth_grin" frame 26
flex "mouth_open" frame 27
flex "mouth_open2" frame 28
flex "mouth_pout" frame 29
flex "mouth_pursed" frame 30
flex "mouth_drawn" frame 31
flex "mouth_hey" frame 32
flex "mouth_pucker" frame 33
flex "mouth_funnel" frame 34
flex "lips_part" frame 35
flex "tentacles_for_helmet" frame 36
flex "smirk_right" frame 37
flex "smirk_left" frame 38
flex "Neck_Thickness_plus" frame 39
flex "Neck_Thickness_minus" frame 40
flex "Face_Size_plus" frame 41
flex "Face_Size_minus" frame 42
flex "Chin_Height_plus" frame 43
flex "Chin_Height_minus" frame 44
flex "Chin_Depth_plus" frame 45
flex "Chin_Depth_minus" frame 46
flex "Chin_Width_plus" frame 47
flex "Chin_Width_minus" frame 48
flex "Jaw_Width_plus" frame 49
flex "Jaw_Width_minus" frame 50
flex "Mouth_Depth_plus" frame 51
flex "Mouth_Depth_minus" frame 52
flex "Mouth_Width_plus" frame 53
flex "Mouth_Width_minus" frame 54
flex "Mouth_Lip_Size_plus" frame 55
flex "Mouth_Lip_Size_minus" frame 56
flex "Mouth_Height_plus" frame 57
flex "Mouth_Height_minus" frame 58
flex "Nose_Height_plus" frame 59
flex "Nose_Height_minus" frame 60
flex "Nose_Depth_plus" frame 61
flex "Nose_Depth_minus" frame 62
}
flexcontroller phoneme range 0 1 eyes_closed
flexcontroller phoneme range 0 1 eyes_wide
flexcontroller phoneme range 0 1 wink_left
flexcontroller phoneme range 0 1 wink_right
flexcontroller phoneme range 0 1 cheek_left
flexcontroller phoneme range 0 1 cheek_right
flexcontroller phoneme range 0 1 brow_afraid
flexcontroller phoneme range 0 1 brow_miffed
flexcontroller phoneme range 0 1 brow_up_left
flexcontroller phoneme range 0 1 brow_up_right
flexcontroller phoneme range 0 1 brow_inner_down_l
flexcontroller phoneme range 0 1 brow_inner_down_r
flexcontroller phoneme range 0 1 brow_outer_down_l
flexcontroller phoneme range 0 1 brow_outer_down_r
flexcontroller phoneme range 0 1 brow_outer_up_l
flexcontroller phoneme range 0 1 brow_outer_up_r
flexcontroller phoneme range 0 1 mouth_open
flexcontroller phoneme range 0 1 mouth_open2
flexcontroller phoneme range 0 1 mouth_hey
flexcontroller phoneme range 0 1 mouth_pucker
flexcontroller phoneme range 0 1 mouth_funnel
flexcontroller phoneme range 0 1 smirk_left
flexcontroller phoneme range 0 1 smirk_right
flexcontroller phoneme range 0 1 mouth_grin
flexcontroller phoneme range 0 1 mouth_pout
flexcontroller phoneme range 0 1 mouth_pursed
flexcontroller phoneme range 0 1 mouth_drawn
flexcontroller phoneme range 0 1 lip_upper_left
flexcontroller phoneme range 0 1 lip_upper_right
flexcontroller phoneme range 0 1 bite_lip
flexcontroller phoneme range 0 1 bite_lipnew
flexcontroller phoneme range 0 1 mouth_grimace
flexcontroller phoneme range 0 1 face_fatale
flexcontroller phoneme range 0 1 lips_part
flexcontroller phoneme range 0 1 sneer
flexcontroller phoneme range 0 1 tentacles_for_helmet
flexcontroller phoneme range 0 1 FACE_MODIFIERS_BELOW
flexcontroller phoneme range 0 1 Neck_Thickness_plus
flexcontroller phoneme range 0 1 Neck_Thickness_minus
flexcontroller phoneme range 0 1 Face_Size_plus
flexcontroller phoneme range 0 1 Face_Size_minus
flexcontroller phoneme range 0 1 Cheek_Width_plus
flexcontroller phoneme range 0 1 Cheek_Width_minus
flexcontroller phoneme range 0 1 Chin_Height_plus
flexcontroller phoneme range 0 1 Chin_Height_minus
flexcontroller phoneme range 0 1 Chin_Depth_plus
flexcontroller phoneme range 0 1 Chin_Depth_minus
flexcontroller phoneme range 0 1 Chin_Width_plus
flexcontroller phoneme range 0 1 Chin_Width_minus
flexcontroller phoneme range 0 1 Jaw_Width_plus
flexcontroller phoneme range 0 1 Jaw_Width_minus
flexcontroller phoneme range 0 1 Mouth_Width_plus
flexcontroller phoneme range 0 1 Mouth_Width_minus
flexcontroller phoneme range 0 1 Mouth_Depth_plus
flexcontroller phoneme range 0 1 Mouth_Depth_minus
flexcontroller phoneme range 0 1 Mouth_Lip_Size_plus
flexcontroller phoneme range 0 1 Mouth_Lip_Size_minus
flexcontroller phoneme range 0 1 Mouth_Height_plus
flexcontroller phoneme range 0 1 Mouth_Height_minus
flexcontroller phoneme range 0 1 Nose_Height_plus
flexcontroller phoneme range 0 1 Nose_Height_minus
flexcontroller phoneme range 0 1 Nose_Depth_plus
flexcontroller phoneme range 0 1 Nose_Depth_minus
flexcontroller phoneme range 0 1 blank
localvar blank
localvar FACE_MODIFIERS_BELOW
%cheek_left = cheek_left
%cheek_right = cheek_right
%eyes_closed = eyes_closed
%eyes_wide = eyes_wide
%wink_left = wink_left
%wink_right = wink_right
%lip_upper_left = lip_upper_left
%lip_upper_right = lip_upper_right
%smirk_left = smirk_left
%smirk_right = smirk_right
%bite_lip = bite_lip
%bite_lipnew = bite_lipnew
%mouth_grimace = mouth_grimace
%mouth_grin = mouth_grin
%mouth_open = mouth_open
%mouth_open2 = mouth_open2
%mouth_pout = mouth_pout
%mouth_pursed = mouth_pursed
%mouth_drawn = mouth_drawn
%face_fatale = face_fatale
%mouth_hey = mouth_hey
%mouth_pucker = mouth_pucker
%mouth_funnel = mouth_funnel
%lips_part = lips_part
%sneer = sneer
%brow_afraid = brow_afraid
%brow_miffed = brow_miffed
%brow_up_left = brow_up_left
%brow_up_right = brow_up_right
%brow_inner_down_l = brow_inner_down_l
%brow_inner_down_r = brow_inner_down_r
%brow_outer_down_l = brow_outer_down_l
%brow_outer_down_r = brow_outer_down_r
%brow_outer_up_l = brow_outer_up_l
%brow_outer_up_r = brow_outer_up_r
%tentacles_for_helmet = tentacles_for_helmet
%FACE_MODIFIERS_BELOW = FACE_MODIFIERS_BELOW
%Neck_Thickness_plus = Neck_Thickness_plus - Neck_Thickness_minus
%Neck_Thickness_minus = Neck_Thickness_minus - Neck_Thickness_plus
%Face_Size_plus = Face_Size_plus - Face_Size_minus
%Face_Size_minus = Face_Size_minus - Face_Size_plus
%Cheek_Width_plus = Cheek_Width_plus - Cheek_Width_minus
%Cheek_Width_minus = Cheek_Width_minus - Cheek_Width_plus
%Chin_Height_plus = Chin_Height_plus - Chin_Height_minus
%Chin_Height_minus = Chin_Height_minus - Chin_Height_plus
%Chin_Depth_plus = Chin_Depth_plus - Chin_Depth_minus
%Chin_Depth_minus = Chin_Depth_minus - Chin_Depth_plus
%Chin_Width_plus = Chin_Width_plus - Chin_Width_minus
%Chin_Width_minus = Chin_Width_minus - Chin_Width_plus
%Jaw_Width_plus = Jaw_Width_plus - Jaw_Width_minus
%Jaw_Width_minus = Jaw_Width_minus - Jaw_Width_plus
%Mouth_Width_plus = Mouth_Width_plus - Mouth_Width_minus
%Mouth_Width_minus = Mouth_Width_minus - Mouth_Width_plus
%Mouth_Depth_plus = Mouth_Depth_plus - Mouth_Depth_minus
%Mouth_Depth_minus = Mouth_Depth_minus - Mouth_Depth_plus
%Mouth_Lip_Size_plus = Mouth_Lip_Size_plus - Mouth_Lip_Size_minus
%Mouth_Lip_Size_minus = Mouth_Lip_Size_minus - Mouth_Lip_Size_plus
%Mouth_Height_plus = Mouth_Height_plus - Mouth_Height_minus
%Mouth_Height_minus = Mouth_Height_minus - Mouth_Height_plus
%Nose_Height_plus = Nose_Height_plus - Nose_Height_minus
%Nose_Height_minus = Nose_Height_minus - Nose_Height_plus
%Nose_Depth_plus = Nose_Depth_plus - Nose_Depth_minus
%Nose_Depth_minus = Nose_Depth_minus - Nose_Depth_plus
%blank = blank
}
$SurfaceProp "flesh"
$Contents "solid"
$EyePosition 0 0 70
$MaxEyeDeflection 90
$CDMaterials "models\savage\asari\"
$CDMaterials "models\savage\asari\worker"
$TextureGroup "skinfamilies"
{
{ "HMF_F1_Crew_Diff_1" }
{ "HMF_F1_Crew_Diff_2" }
{ "HMF_F1_Crew_Diff_3" }
{ "HMF_F1_Crew_Diff_4" }
}
$Attachment "eyes" "ValveBiped.Bip01_Head1" 2.63 -4.13 0.04 rotate 0 -80.1 -90
$Attachment "mouth" "ValveBiped.Bip01_Head1" -0.2 -5.8 0 rotate 0 -80 -90
$Attachment "forward" "ValveBiped.forward" 0 0 0 rotate 0 0 0
$CBox 0 0 0 0 0 0
$BBox -7.115 -22.805 -4.689 10.376 22.974 70.34
$Sequence "ragdoll" {
"asari_Worker_anims\ragdoll.smd"
activity "ACT_DIERAGDOLL" 1
fadein 0.2
fadeout 0.2
fps 30
}
$CollisionJoints "asari_worker_physics.smd"
{
$mass 60
$inertia 10
$damping 0.01
$rotdamping 1.5
$rootbone "Pelvis"
$jointconstrain "RightHip" x limit -35 90 0
$jointconstrain "RightHip" y limit -90 70 0
$jointconstrain "RightHip" z limit -50 90 0
$jointconstrain "RightKnee" x limit -12 12 0
$jointconstrain "RightKnee" y limit -5 5 0
$jointconstrain "RightKnee" z limit -115 15 0
$jointconstrain "RightAnkle" x limit -35 35 0
$jointconstrain "RightAnkle" y limit -35 35 0
$jointconstrain "RightAnkle" z limit -48 37 0
$jointconstrain "LeftHip" x limit -90 35 0
$jointconstrain "LeftHip" y limit -90 70 0
$jointconstrain "LeftHip" z limit -50 90 0
$jointconstrain "LeftKnee" x limit -12 12 0
$jointconstrain "LeftKnee" y limit -5 5 0
$jointconstrain "LeftKnee" z limit -115 15 0
$jointconstrain "LeftAnkle" x limit -35 35 0
$jointconstrain "LeftAnkle" y limit -35 35 0
$jointconstrain "LeftAnkle" z limit -48 37 0
$jointconstrain "LeftToe" x limit -20 20 0
$jointconstrain "LeftToe" y limit 0 0 0
$jointconstrain "LeftToe" z limit 0 0 0
$jointconstrain "Chest" x limit -50 50 0
$jointconstrain "Chest" y limit -43 43 0
$jointconstrain "Chest" z limit -30 30 0
$jointconstrain "Chest1" x limit -50 50 0
$jointconstrain "Chest1" y limit -43 43 0
$jointconstrain "Chest1" z limit -30 30 0
$jointconstrain "RightCollar" x limit -20 5 0
$jointconstrain "RightCollar" y limit -10 10 0
$jointconstrain "RightCollar" z limit -10 10 0
$jointconstrain "RightShoulder" x limit -70 90 0
$jointconstrain "RightShoulder" y limit -55 55 0
$jointconstrain "RightShoulder" z limit -90 90 0
$jointconstrain "RightElbow" x limit -20 120 0
$jointconstrain "RightElbow" y limit -135 135 0
$jointconstrain "RightElbow" z limit -100 20 0
$jointconstrain "LeftCollar" x limit -5 20 0
$jointconstrain "LeftCollar" y limit -10 10 0
$jointconstrain "LeftCollar" z limit -10 10 0
$jointconstrain "LeftShoulder" x limit -90 70 0
$jointconstrain "LeftShoulder" y limit -55 55 0
$jointconstrain "LeftShoulder" z limit -90 90 0
$jointconstrain "LeftElbow" x limit -120 20 0
$jointconstrain "LeftElbow" y limit -55 55 0
$jointconstrain "LeftElbow" z limit -100 20 0
$jointconstrain "ValveBiped.Bip01_L_Hand" x limit -90 90 0
$jointconstrain "ValveBiped.Bip01_L_Hand" y limit -100 100 0
$jointconstrain "ValveBiped.Bip01_L_Hand" z limit -90 90 0
$jointconstrain "ValveBiped.Bip01_Head1" x limit -55 55 0
$jointconstrain "ValveBiped.Bip01_Head1" y limit -25 25 0
$jointconstrain "ValveBiped.Bip01_Head1" z limit -25 35 0
$jointconstrain "RightToe" x limit -20 20 0
$jointconstrain "RightToe" y limit 0 0 0
$jointconstrain "RightToe" z limit 0 0 0
$jointconstrain "ValveBiped.Bip01_R_Hand" x limit -90 90 0
$jointconstrain "ValveBiped.Bip01_R_Hand" y limit -100 100 0
$jointconstrain "ValveBiped.Bip01_R_Hand" z limit -90 90 0
}[/CODE]
I can't say I know why your model has shadows, but have you tried checking for smoothing errors?
Get rid of the defaultflex.
Just remove that line.
I actually ran into this problem less than 24 hours ago, and it took like 90 minutes of debugging to solve it. I don't know [B]why[/B] the defaultflex is causing the problem, but it is.
[QUOTE=Gmod4ever;52050331]Get rid of the defaultflex.
Just remove that line.
I actually ran into this problem less than 24 hours ago, and it took like 90 minutes of debugging to solve it. I don't know [B]why[/B] the defaultflex is causing the problem, but it is.[/QUOTE]
Dude, you are my hero. That fixed it (though now that I got it in game I'm realizing I mayyyy have forgotten to join some bones together and it's doing some body horror shit, but that I think I know how to fix)
That's so bizarre. I've never had that problem with defaultflex before- at least I don't remember it causing problems in my past attempts.
defaultflex is a flex that the model is set to even when no flex sliders are activated. If the head mesh doesn't exactly match that flex it'll still try to force the vertices into the defaultflex positions.
I've had several problems with it myself, I'm not sure why it's even a thing at all.
Ok, so, new reborn-newb problem.
The issue I'm having now is with this model hack I'm doing, while I got the model working in game, the face flexes are either non-existent or broken, as are the eyes (just pure white with no posing ability). I'm using the original face flexes and vta file for the head component of the head hack. I remember I ran into this problem years ago and I can't for the life of remember me how I fixed it without making a whole new VTA file from scratch because I know for sure I never knew how to do that.
Any more help there? May have to make a new thread to crack that chestnut.
You can't move the head at [B]all[/B], otherwise the existing VTA will break.
The eyes are potentially the same problem.
It's [B]also[/B] possible your main $model (with the VTA and eye-posing controls) is too high-poly.
[QUOTE=Gmod4ever;52053416]You can't move the head at [B]all[/B], otherwise the existing VTA will break.
The eyes are potentially the same problem.
It's [B]also[/B] possible your main $model (with the VTA and eye-posing controls) is too high-poly.[/QUOTE]
Damn. That's a challenge, not being able to move the head. What's the way around that head issue? Can you just move the body/skeleton up to meet the head instead, or will that just cause a similar issue in reverse- or other problems?
Assuming the body has no associated VTA, that is in general the accepted solution.
If you have a way to import the VTA into your program, you could also do that, and simply move and re-export the VTA with the head.
[QUOTE=Gmod4ever;52055233]Assuming the body has no associated VTA, that is in general the accepted solution.
If you have a way to import the VTA into your program, you could also do that, and simply move and re-export the VTA with the head.[/QUOTE]
That did it! I'm back in business again. Thanks again for indulging me, you've been a huge help. Still got some things to work on, but now I got a working model in game.
Sorry, you need to Log In to post a reply to this thread.