Skip to content

Commit

Permalink
Revised hair bones selection logic
Browse files Browse the repository at this point in the history
  • Loading branch information
ergoxiv committed Aug 16, 2024
1 parent d720d64 commit 1839367
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 22 deletions.
8 changes: 4 additions & 4 deletions Anamnesis/Actor/Posing/Views/PoseBodyGUIView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -398,10 +398,10 @@
<local:BoneView Canvas.Left="117" Canvas.Top="30" BoneName="j_ex_met_va"/>

<!-- Hair -->
<local:BoneView Canvas.Left="117" Canvas.Top="54" BoneName="j_kami_a"/>
<local:BoneView Canvas.Left="117" Canvas.Top="83" BoneName="j_kami_b"/>
<local:BoneView Canvas.Left="93" Canvas.Top="54" BoneName="j_kami_f_l" FlippedBoneName="j_kami_f_r"/>
<local:BoneView Canvas.Left="140" Canvas.Top="54" BoneName="j_kami_f_r" FlippedBoneName="j_kami_f_l"/>
<local:BoneView Canvas.Left="117" Canvas.Top="54" BoneName="HairAutoA"/>
<local:BoneView Canvas.Left="117" Canvas.Top="83" BoneName="HairAutoB"/>
<local:BoneView Canvas.Left="93" Canvas.Top="54" BoneName="HairAutoFrontLeft" FlippedBoneName="HairAutoFrontRight"/>
<local:BoneView Canvas.Left="140" Canvas.Top="54" BoneName="HairAutoFrontRight" FlippedBoneName="HairAutoFrontLeft"/>

<!-- Pauldrons -->
<local:BoneView Canvas.Left="75" Canvas.Top="110" BoneName="n_kataarmor_l" FlippedBoneName="n_kataarmor_r"/>
Expand Down
20 changes: 10 additions & 10 deletions Anamnesis/Actor/Posing/Views/PoseFaceGUIView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,8 @@

<!-- Hair -->
<local:BoneView Canvas.Left="305" Canvas.Top="120" BoneName="HairFront"/>
<local:BoneView Canvas.Left="60" Canvas.Top="350" BoneName="j_kami_f_l" FlippedBoneName="j_kami_f_r"/>
<local:BoneView Canvas.Left="540" Canvas.Top="350" BoneName="j_kami_f_r" FlippedBoneName="j_kami_f_l"/>
<local:BoneView Canvas.Left="60" Canvas.Top="350" BoneName="HairAutoFrontLeft" FlippedBoneName="HairAutoFrontRight"/>
<local:BoneView Canvas.Left="540" Canvas.Top="350" BoneName="HairAutoFrontRight" FlippedBoneName="HairAutoFrontLeft"/>
</Canvas>
</Viewbox>
</DataTemplate>
Expand Down Expand Up @@ -184,8 +184,8 @@

<!-- Hair -->
<local:BoneView Canvas.Left="285" Canvas.Top="150" BoneName="HairFront"/>
<local:BoneView Canvas.Left="104" Canvas.Top="300" BoneName="j_kami_f_l" FlippedBoneName="j_kami_f_r"/>
<local:BoneView Canvas.Left="466" Canvas.Top="300" BoneName="j_kami_f_r" FlippedBoneName="j_kami_f_l"/>
<local:BoneView Canvas.Left="104" Canvas.Top="300" BoneName="HairAutoFrontLeft" FlippedBoneName="HairAutoFrontRight"/>
<local:BoneView Canvas.Left="466" Canvas.Top="300" BoneName="HairAutoFrontRight" FlippedBoneName="HairAutoFrontLeft"/>

<!-- Whiskers -->
<local:BoneView Canvas.Left="120" Canvas.Top="366" BoneName="j_f_hige_l" FlippedBoneName="j_f_hige_r"/>
Expand Down Expand Up @@ -277,8 +277,8 @@

<!-- Hair -->
<local:BoneView Canvas.Left="300" Canvas.Top="150" BoneName="HairFront"/>
<local:BoneView Canvas.Left="100" Canvas.Top="400" BoneName="j_kami_f_l" FlippedBoneName="j_kami_f_r"/>
<local:BoneView Canvas.Left="500" Canvas.Top="400" BoneName="j_kami_f_r" FlippedBoneName="j_kami_f_l"/>
<local:BoneView Canvas.Left="100" Canvas.Top="400" BoneName="HairAutoFrontLeft" FlippedBoneName="HairAutoFrontRight"/>
<local:BoneView Canvas.Left="500" Canvas.Top="400" BoneName="HairAutoFrontRight" FlippedBoneName="HairAutoFrontLeft"/>
</Canvas>
</Viewbox>
</DataTemplate>
Expand Down Expand Up @@ -381,8 +381,8 @@

<!-- Hair -->
<local:BoneView Canvas.Left="292" Canvas.Top="200" BoneName="HairFront"/>
<local:BoneView Canvas.Left="132" Canvas.Top="500" BoneName="j_kami_f_l" FlippedBoneName="j_kami_f_r"/>
<local:BoneView Canvas.Left="450" Canvas.Top="500" BoneName="j_kami_f_r" FlippedBoneName="j_kami_f_l"/>
<local:BoneView Canvas.Left="132" Canvas.Top="500" BoneName="HairAutoFrontLeft" FlippedBoneName="HairAutoFrontRight"/>
<local:BoneView Canvas.Left="450" Canvas.Top="500" BoneName="HairAutoFrontRight" FlippedBoneName="HairAutoFrontLeft"/>
</Canvas>
</Viewbox>
</DataTemplate>
Expand Down Expand Up @@ -505,8 +505,8 @@

<!-- Hair -->
<local:BoneView Canvas.Left="292" Canvas.Top="200" BoneName="HairFront"/>
<local:BoneView Canvas.Left="132" Canvas.Top="500" BoneName="j_kami_f_l" FlippedBoneName="j_kami_f_r"/>
<local:BoneView Canvas.Left="450" Canvas.Top="500" BoneName="j_kami_f_r" FlippedBoneName="j_kami_f_l"/>
<local:BoneView Canvas.Left="132" Canvas.Top="500" BoneName="HairAutoFrontLeft" FlippedBoneName="HairAutoFrontRight"/>
<local:BoneView Canvas.Left="450" Canvas.Top="500" BoneName="HairAutoFrontRight" FlippedBoneName="HairAutoFrontLeft"/>
</Canvas>
</Viewbox>
</DataTemplate>
Expand Down
18 changes: 10 additions & 8 deletions Anamnesis/Actor/Posing/Visuals/SkeletonVisual3d.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ public class SkeletonVisual3d : ModelVisual3D, INotifyPropertyChanged
private readonly List<BoneVisual3d> mainHandBones = new List<BoneVisual3d>();
private readonly List<BoneVisual3d> offHandBones = new List<BoneVisual3d>();

private readonly Dictionary<string, string> hairNameToSuffixMap = new()
private readonly Dictionary<string, Tuple<string, string>> hairNameToSuffixMap = new()
{
{ "j_kami_f_l", "l" }, // Hair, Front Left
{ "j_kami_f_r", "r" }, // Hair, Front Right
{ "j_kami_a", "a" }, // Hair, Back Up
{ "j_kami_b", "b" }, // Hair, Back Down
{ "HairFront", "f" }, // Hair, Front (Custom Bone Name)
{ "HairAutoFrontLeft", new("l", "j_kami_f_l") }, // Hair, Front Left
{ "HairAutoFrontRight", new("r", "j_kami_f_r") }, // Hair, Front Right
{ "HairAutoA", new("a", "j_kami_a") }, // Hair, Back Up
{ "HairAutoB", new("b", "j_kami_b") }, // Hair, Back Down
{ "HairFront", new("f", string.Empty) }, // Hair, Front (Custom Bone Name)
};

public SkeletonVisual3d()
Expand Down Expand Up @@ -365,11 +365,13 @@ public bool GetIsBoneParentsHovered(BoneVisual3d? bone)
BoneVisual3d? bone;

// Attempt to find hairstyle-specific bones. If not found, default to the standard hair bones.
if (this.hairNameToSuffixMap.TryGetValue(name, out string? suffix))
if (this.hairNameToSuffixMap.TryGetValue(name, out Tuple<string, string>? suffixAndDefault))
{
bone = this.FindHairBoneByPattern(suffix);
bone = this.FindHairBoneByPattern(suffixAndDefault.Item1);
if (bone != null)
return bone;
else
name = suffixAndDefault.Item2; // If not found, default to the standard hair bones.
}

this.Bones.TryGetValue(name, out bone);
Expand Down

0 comments on commit 1839367

Please sign in to comment.