Update VRE
This commit is contained in:
parent
dc6bcf82a3
commit
808b378db1
84 changed files with 3837 additions and 896 deletions
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"FileVersion": 3,
|
||||
"Version": 5.3,
|
||||
"VersionName": "5.3",
|
||||
"Version": 5.4,
|
||||
"VersionName": "5.4",
|
||||
"FriendlyName": "OpenXRExpansionPlugin",
|
||||
"Description": "An set of utility functions for OpenXR",
|
||||
"Category": "Virtual Reality",
|
||||
|
@ -31,7 +31,7 @@
|
|||
{
|
||||
"Name": "OpenXRExpansionEditor",
|
||||
"Type": "UnCookedOnly",
|
||||
"LoadingPhase": "PostEngineInit"
|
||||
"LoadingPhase": "PreDefault"
|
||||
}
|
||||
],
|
||||
"Plugins": [
|
||||
|
|
|
@ -10,7 +10,9 @@ namespace UnrealBuildTool.Rules
|
|||
public OpenXRExpansionPlugin(ReadOnlyTargetRules Target)
|
||||
: base(Target)
|
||||
{
|
||||
PublicDependencyModuleNames.AddRange(
|
||||
SetupIrisSupport(Target);
|
||||
|
||||
PublicDependencyModuleNames.AddRange(
|
||||
new string[]
|
||||
{
|
||||
//"InputDevice",
|
||||
|
|
|
@ -29,9 +29,28 @@ void FAnimNode_ApplyOpenXRHandPose::OnInitializeAnimInstance(const FAnimInstance
|
|||
{
|
||||
Super::OnInitializeAnimInstance(InProxy, InAnimInstance);
|
||||
|
||||
if (const UOpenXRAnimInstance * animInst = Cast<UOpenXRAnimInstance>(InAnimInstance))
|
||||
if (const UOpenXRAnimInstance * OpenXRAnimInstance = Cast<UOpenXRAnimInstance>(InAnimInstance))
|
||||
{
|
||||
bIsOpenInputAnimationInstance = true;
|
||||
|
||||
if (OpenXRAnimInstance->AnimInstanceProxy.HandSkeletalActionData.Num())
|
||||
{
|
||||
for (int i = 0; i < OpenXRAnimInstance->AnimInstanceProxy.HandSkeletalActionData.Num(); ++i)
|
||||
{
|
||||
EVRSkeletalHandIndex TargetHand = OpenXRAnimInstance->AnimInstanceProxy.HandSkeletalActionData[i].TargetHand;
|
||||
|
||||
if (OpenXRAnimInstance->AnimInstanceProxy.HandSkeletalActionData[i].bMirrorLeftRight)
|
||||
{
|
||||
TargetHand = (TargetHand == EVRSkeletalHandIndex::EActionHandIndex_Left) ? EVRSkeletalHandIndex::EActionHandIndex_Right : EVRSkeletalHandIndex::EActionHandIndex_Left;
|
||||
}
|
||||
|
||||
if (TargetHand == MappedBonePairs.TargetHand)
|
||||
{
|
||||
bIsMirroringHand = OpenXRAnimInstance->AnimInstanceProxy.HandSkeletalActionData[i].bMirrorLeftRight;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +187,16 @@ void FAnimNode_ApplyOpenXRHandPose::CalculateOpenXRAdjustment()
|
|||
|
||||
// Side direction
|
||||
// Do I need to flip this for left hand?
|
||||
static FVector OpenXRSideDirection = FVector(0.f, 1.f, 0.f);
|
||||
|
||||
bool bUseLeftHandOffsets = false;
|
||||
if ((!bIsMirroringHand && MappedBonePairs.TargetHand == EVRSkeletalHandIndex::EActionHandIndex_Left) ||
|
||||
(bIsMirroringHand && MappedBonePairs.TargetHand == EVRSkeletalHandIndex::EActionHandIndex_Right))
|
||||
{
|
||||
bUseLeftHandOffsets = true;
|
||||
}
|
||||
|
||||
//static FVector OpenXRSideDirection = FVector(0.f, 1.f, 0.f);
|
||||
FVector OpenXRSideDirection = bUseLeftHandOffsets ? FVector(0.f, -1.f, 0.f) : FVector(0.f, 1.f, 0.f);
|
||||
|
||||
// Align forward vectors, openXR once in engine is X+ forward
|
||||
FQuat AlignmentRot = FQuat::FindBetweenNormals(WristForwardLS_UE, OpenXRForwardDirection);
|
||||
|
@ -380,9 +408,6 @@ void FAnimNode_ApplyOpenXRHandPose::EvaluateSkeletalControl_AnyThread(FComponent
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
FTransform trans = FTransform::Identity;
|
||||
OutBoneTransforms.Reserve(MappedBonePairs.BonePairs.Num());
|
||||
TArray<FBoneTransform> TransBones;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "MotionControllerComponent.h"
|
||||
#include "OpenXRExpansionFunctionLibrary.h"
|
||||
#include "Engine/NetSerialization.h"
|
||||
#include "Net/Core/PushModel/PushModel.h"
|
||||
|
||||
#include "XRMotionControllerBase.h" // for GetHandEnumForSourceName()
|
||||
//#include "EngineMinimal.h"
|
||||
|
@ -29,9 +30,13 @@ void UOpenXRHandPoseComponent::GetLifetimeReplicatedProps(TArray< class FLifetim
|
|||
{
|
||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
|
||||
FDoRepLifetimeParams SkipOwnerParams;
|
||||
SkipOwnerParams.Condition = COND_SkipOwner;
|
||||
SkipOwnerParams.bIsPushBased = true;
|
||||
|
||||
// Skipping the owner with this as the owner will use the controllers location directly
|
||||
DOREPLIFETIME_CONDITION(UOpenXRHandPoseComponent, LeftHandRep, COND_SkipOwner);
|
||||
DOREPLIFETIME_CONDITION(UOpenXRHandPoseComponent, RightHandRep, COND_SkipOwner);
|
||||
DOREPLIFETIME_WITH_PARAMS_FAST(UOpenXRHandPoseComponent, LeftHandRep, SkipOwnerParams);
|
||||
DOREPLIFETIME_WITH_PARAMS_FAST(UOpenXRHandPoseComponent, RightHandRep, SkipOwnerParams);
|
||||
}
|
||||
|
||||
void UOpenXRHandPoseComponent::Server_SendSkeletalTransforms_Implementation(const FBPXRSkeletalRepContainer& SkeletalInfo)
|
||||
|
@ -49,6 +54,9 @@ void UOpenXRHandPoseComponent::Server_SendSkeletalTransforms_Implementation(cons
|
|||
|
||||
FBPXRSkeletalRepContainer::CopyReplicatedTo(SkeletalInfo, HandSkeletalActions[i]);
|
||||
LeftHandRep = SkeletalInfo;
|
||||
#if WITH_PUSH_MODEL
|
||||
MARK_PROPERTY_DIRTY_FROM_NAME(UOpenXRHandPoseComponent, LeftHandRep, this);
|
||||
#endif
|
||||
|
||||
if (bSmoothReplicatedSkeletalData)
|
||||
{
|
||||
|
@ -64,6 +72,9 @@ void UOpenXRHandPoseComponent::Server_SendSkeletalTransforms_Implementation(cons
|
|||
|
||||
FBPXRSkeletalRepContainer::CopyReplicatedTo(SkeletalInfo, HandSkeletalActions[i]);
|
||||
RightHandRep = SkeletalInfo;
|
||||
#if WITH_PUSH_MODEL
|
||||
MARK_PROPERTY_DIRTY_FROM_NAME(UOpenXRHandPoseComponent, RightHandRep, this);
|
||||
#endif
|
||||
|
||||
if (bSmoothReplicatedSkeletalData)
|
||||
{
|
||||
|
|
|
@ -42,7 +42,8 @@ public:
|
|||
UPROPERTY(EditAnywhere, Category = Skeletal, meta = (PinHiddenByDefault))
|
||||
FBPOpenXRSkeletalMappingData MappedBonePairs;
|
||||
|
||||
bool bIsOpenInputAnimationInstance;
|
||||
bool bIsOpenInputAnimationInstance = false;
|
||||
bool bIsMirroringHand = false;
|
||||
|
||||
void ConvertHandTransformsSpace(TArray<FTransform>& OutTransforms, const TArray<FTransform>& WorldTransforms, FTransform AddTrans, bool bMirrorLeftRight, bool bMergeMissingUE4Bones);
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ public:
|
|||
UPROPERTY(EditAnywhere, NotReplicated, BlueprintReadWrite, Category = Default)
|
||||
bool bAllowDeformingMesh;
|
||||
|
||||
// If true then the bones will be mirrored from left/right, to allow you to swap a hand mesh or apply to a full body mesh
|
||||
// If true then the bones will be mirrored from left/right, to allow you to swap a hand mesh to the other hand
|
||||
UPROPERTY(EditAnywhere, NotReplicated, BlueprintReadWrite, Category = Default)
|
||||
bool bMirrorLeftRight;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue