implement the SenseGlove grab/touch sockets one-click-setup ability on any Epic-compliant virtual hand mesh from within the Unreal Editor's Content Browser, Skeleton Editor, or Skeletal Mesh Editor
This commit is contained in:
@@ -899,10 +899,12 @@ USGHandPose* FSGXRTracker::FImpl::GetHandPose(const bool bRight)
|
||||
|
||||
FTransform FSGXRTracker::FImpl::GetMeshRawBoneRefTransform(const bool bRight, const FName& BoneName)
|
||||
{
|
||||
const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings};
|
||||
|
||||
const TSoftObjectPtr<USkeletalMesh>& HandMesh{
|
||||
bRight
|
||||
? GetVirtualHandSettings().MeshSettings.LeftHandReferenceMesh
|
||||
: GetVirtualHandSettings().MeshSettings.RightHandReferenceMesh
|
||||
? MeshSettings.LeftHandReferenceMesh
|
||||
: MeshSettings.RightHandReferenceMesh
|
||||
};
|
||||
|
||||
if (HandMesh.IsValid())
|
||||
@@ -924,26 +926,24 @@ FTransform FSGXRTracker::FImpl::GetMeshRawBoneRefTransform(const bool bRight, co
|
||||
return Transform;
|
||||
}
|
||||
|
||||
const FSGVirtualHandMeshSettings& Settings{GetVirtualHandSettings().MeshSettings};
|
||||
ensureAlwaysMsgf(
|
||||
bRight
|
||||
? Settings.RightHandDefaultReferenceBoneTransforms.Contains(BoneName)
|
||||
: Settings.LeftHandDefaultReferenceBoneTransforms.Contains(BoneName),
|
||||
? MeshSettings.RightHandDefaultReferenceBoneTransforms.Contains(BoneName)
|
||||
: MeshSettings.LeftHandDefaultReferenceBoneTransforms.Contains(BoneName),
|
||||
TEXT("Invalid bone name '%s'!"), *BoneName.ToString());
|
||||
|
||||
const FTransform& Transform{
|
||||
bRight
|
||||
? Settings.RightHandDefaultReferenceBoneTransforms[BoneName]
|
||||
: Settings.LeftHandDefaultReferenceBoneTransforms[BoneName]
|
||||
? MeshSettings.RightHandDefaultReferenceBoneTransforms[BoneName]
|
||||
: MeshSettings.LeftHandDefaultReferenceBoneTransforms[BoneName]
|
||||
};
|
||||
return Transform;
|
||||
}
|
||||
|
||||
FTransform FSGXRTracker::FImpl::GetMeshWristChildBoneRefTransform(const bool bRight, const FName& BoneName)
|
||||
{
|
||||
FQuat RootRotationCorrection{
|
||||
GetVirtualHandSettings().MeshSettings.RootBoneRotationCorrection
|
||||
};
|
||||
const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings};
|
||||
FQuat RootRotationCorrection{MeshSettings.RootBoneRotationCorrection};
|
||||
const FTransform& RootBoneRefTransform{GetMeshRawBoneRefTransform(bRight, EHandKeypoint::Wrist)};
|
||||
const FTransform& RawTransform{GetMeshRawBoneRefTransform(bRight, BoneName)};
|
||||
FQuat CorrectedRootBoneRefRotation{MoveTemp(RootRotationCorrection) * RootBoneRefTransform.GetRotation()};
|
||||
@@ -956,9 +956,8 @@ FTransform FSGXRTracker::FImpl::GetMeshWristChildBoneRefTransform(const bool bRi
|
||||
FTransform FSGXRTracker::FImpl::GetMeshFingerStartBoneRefTransform(
|
||||
const bool bRight, const EHandKeypoint Parent, const FName& BoneName)
|
||||
{
|
||||
FQuat RootRotationCorrection{
|
||||
GetVirtualHandSettings().MeshSettings.RootBoneRotationCorrection
|
||||
};
|
||||
const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings};
|
||||
FQuat RootRotationCorrection{MeshSettings.RootBoneRotationCorrection};
|
||||
const FTransform& RootBoneRefTransform{GetMeshRawBoneRefTransform(bRight, EHandKeypoint::Wrist)};
|
||||
FQuat CorrectedRootBoneRefRotation{MoveTemp(RootRotationCorrection) * RootBoneRefTransform.GetRotation()};
|
||||
FTransform CorrectedRootBoneRefTransform{
|
||||
|
||||
Reference in New Issue
Block a user