Improve hand positioning
This commit is contained in:
@@ -37,22 +37,28 @@ equipSitePQ = \case
|
||||
translatePointToRightHand :: Creature -> Point3 -> Point3
|
||||
translatePointToRightHand cr p = fst (rightHandPQ cr `Q.comp` (p,Q.qID))
|
||||
|
||||
handWalkingPos :: FootForward -> Float -> Creature -> Point3
|
||||
handWalkingPos b off cr = case cr ^. crStance . carriage of
|
||||
Walking sa ff ->
|
||||
let slen = cr ^. crStance . strideLength
|
||||
f i | ff == b = 8 * (slen - i) / slen
|
||||
| otherwise = 8 * i / slen
|
||||
in V3 (f sa) off 12
|
||||
Falling sa ff ->
|
||||
let slen = cr ^. crStance . strideLength
|
||||
f i | ff == b = 8 * (slen - i) / slen
|
||||
| otherwise = 8 * i / slen
|
||||
in V3 (f sa) off 20
|
||||
Floating -> V3 0 off 12
|
||||
Flying -> V3 0 off 12
|
||||
Boosting _ -> V3 0 off 12
|
||||
|
||||
rightHandPQ :: Creature -> Point3Q
|
||||
rightHandPQ cr
|
||||
| oneH cr = (V3 11 (-3) 20, Q.qID)
|
||||
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 4 (-10) 0,Q.qID)
|
||||
| twoFlat cr = (V3 4 (-8) 10, Q.qID)
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa LeftForward) -> (V3 (- f sa) (- off) 10, Q.qID)
|
||||
Just (Walking sa RightForward) -> (V3 (- g sa) (- off) 10, Q.qID)
|
||||
Just (Falling sa LeftForward) -> (V3 (- f sa) (- off) 10, Q.qID)
|
||||
Just (Falling sa RightForward) -> (V3 (- g sa) (- off) 10, Q.qID)
|
||||
_ -> (V3 0 (- off) 10, Q.qID)
|
||||
where
|
||||
off = 8
|
||||
sLen = _strideLength $ _crStance cr
|
||||
f i = negate 2 + negate 6 * (sLen - i) / sLen
|
||||
g i = negate 2 + negate 6 * i / sLen
|
||||
| twoFlat cr = (V3 4 (-8) 12, Q.qID)
|
||||
| otherwise = (handWalkingPos LeftForward (-8) cr, Q.qID)
|
||||
|
||||
translateToRightHand :: Creature -> SPic -> SPic
|
||||
translateToRightHand = overPosSP . translatePointToRightHand
|
||||
@@ -62,20 +68,10 @@ rightWristPQ cr = rightHandPQ cr `Q.comp` (V3 0 (-4) (-4), Q.qID)
|
||||
|
||||
leftHandPQ :: Creature -> Point3Q
|
||||
leftHandPQ cr
|
||||
| oneH cr = (V3 0 off 10, Q.qz 0.4)
|
||||
| oneH cr = (V3 0 8 10, Q.qz 0.4)
|
||||
| twists cr = (V3 0 5 20, Q.qz (-1)) `Q.comp` (V3 12 4 0, Q.qz 0.4)
|
||||
| twoFlat cr = (V3 4 8 10, Q.qID)
|
||||
| otherwise = case cr ^? crStance . carriage of
|
||||
Just (Walking sa RightForward) -> (V3 (- f sa) off 10 , Q.qID)
|
||||
Just (Walking sa LeftForward) -> (V3 (- g sa) off 10 , Q.qID)
|
||||
Just (Falling sa RightForward) -> (V3 (- f sa) off 10 , Q.qID)
|
||||
Just (Falling sa LeftForward) -> (V3 (- g sa) off 10 , Q.qID)
|
||||
_ -> (V3 0 off 10, Q.qID)
|
||||
where
|
||||
off = 8
|
||||
sLen = _strideLength $ _crStance cr
|
||||
f i = negate 2 + negate 6 * (sLen - i) / sLen
|
||||
g i = negate 2 + negate 6 * i / sLen
|
||||
| twoFlat cr = (V3 4 8 12, Q.qID)
|
||||
| otherwise = (handWalkingPos RightForward 8 cr, Q.qID)
|
||||
|
||||
translatePointToLeftHand :: Creature -> Point3 -> Point3
|
||||
translatePointToLeftHand cr p = fst (leftHandPQ cr `Q.comp` (p,Q.qID))
|
||||
|
||||
@@ -73,7 +73,7 @@ arms cr =
|
||||
translateToRightHand cr aHand
|
||||
<> translateToLeftHand cr aHand
|
||||
where
|
||||
aHand = noPic $ translateSHz (-4) . upperPrismPolyHalfST 4 $ polyCirc 3 4
|
||||
aHand = noPic $ translateSHz (-2) . upperPrismPolyHalfST 2 $ polyCirc 3 4
|
||||
|
||||
deadScalp :: Creature -> Shape
|
||||
--deadScalp cr = deadRot cr . translateSHz 5 . scalp $ cr
|
||||
@@ -98,12 +98,8 @@ torso :: Creature -> Shape
|
||||
{-# INLINE torso #-}
|
||||
torso cr = overPosSH (translateToES cr OnBack) tsh
|
||||
where
|
||||
tsh =
|
||||
mconcat
|
||||
[ translateSHxy 0 3 . rotateSH (negate 0.2) $ aShoulder
|
||||
, translateSHxy 0 (negate 3) . rotateSH 0.2 $ aShoulder
|
||||
]
|
||||
aShoulder = scaleSH (V3 10 10 1) baseShoulder
|
||||
tsh = ashoulder 3 (-0.2) <> ashoulder (-3) 0.2
|
||||
ashoulder y a = translateSHxy 0 y . rotateSH a $ scaleSH (V3 10 10 1) baseShoulder
|
||||
|
||||
deadUpperBody :: Creature -> Shape
|
||||
deadUpperBody cr = deadRot cr . translateSHz (negate 10) . upperBody $ cr
|
||||
|
||||
Reference in New Issue
Block a user