Announcement
Collapse
No announcement yet.
SkelController not updating offscreen (SkelControlSingleBone vs SkelControlLookAt)
Collapse
X
-
dmitryshm repliedI used SkelControlLookAt.DesiredTargetLocation in Actor.TickSkelControl and it worked. I refused to set SkelControlLookAt data in AnimTree editor and handled everything in the UnrealScript code.
-
dmitryshm repliedSkelControlLookAt + PhysAsset = not working code
I've got the same error. It happens when I set PhysAsset. And everything works without PhysAsset.
So here's not working code.
Code:class LadderComplexCyls extends Actor placeable; var SkeletalMeshComponent MyMesh; simulated event PostBeginPlay() { super.PostBeginPlay(); MyMesh.WakeRigidBody(); } DefaultProperties { begin object class=SkeletalMeshComponent name=FE_LadderCyls SkeletalMesh=SkeletalMesh'ComplexCyls.Meshes.complex_cyls_2' PhysicsAsset=PhysicsAsset'ComplexCyls.Physics.complex_cyls_2_Physics' AnimTreeTemplate=AnimTree'ComplexCyls.Animations.complex_cyls_2_AnimTree' PhysicsWeight=1.0 RBChannel=RBCC_Pawn RBCollideWithChannels=(Default=TRUE,Pawn=false, Vehicle=false, Untitled3=false, BlockingVolume=true) bHasPhysicsAssetInstance=true BlockRigidBody=true bUpdateSkelWhenNotRendered=true bIgnoreControllersWhenNotRendered=false end object CollisionComponent=FE_LadderCyls MyMesh=FE_LadderCyls Components.Add(FE_LadderCyls) CollisionType = COLLIDE_BlockAll Physics=PHYS_RigidBody bStatic=false bCollideActors=true bCollideWorld=true bBlockActors=true bWorldGeometry=false bNetInitialRotation=true TickGroup=TG_PostAsyncWork }
Code:class LadderComplexCyls extends Actor placeable; var SkeletalMeshComponent MyMesh; simulated event PostBeginPlay() { super.PostBeginPlay(); // MyMesh.WakeRigidBody(); } DefaultProperties { begin object class=SkeletalMeshComponent name=FE_LadderCyls SkeletalMesh=SkeletalMesh'ComplexCyls.Meshes.complex_cyls_2' // PhysicsAsset=PhysicsAsset'ComplexCyls.Physics.complex_cyls_2_Physics' AnimTreeTemplate=AnimTree'ComplexCyls.Animations.complex_cyls_2_AnimTree' // PhysicsWeight=1.0 // RBChannel=RBCC_Pawn // RBCollideWithChannels=(Default=TRUE,Pawn=false, Vehicle=false, Untitled3=false, BlockingVolume=true) // bHasPhysicsAssetInstance=true // BlockRigidBody=true bUpdateSkelWhenNotRendered=true bIgnoreControllersWhenNotRendered=false end object CollisionComponent=FE_LadderCyls MyMesh=FE_LadderCyls Components.Add(FE_LadderCyls) CollisionType = COLLIDE_BlockAll // Physics=PHYS_RigidBody bStatic=false bCollideActors=true bCollideWorld=true bBlockActors=true bWorldGeometry=false bNetInitialRotation=true TickGroup=TG_PostAsyncWork }
Leave a comment:
-
AndyPandy repliedThx, but this did not resolve the problem. The SkelControlLookAt wont interpolate TargetLocation if the actor is offscreen, in contrast to the SkelControlSingleBone.
I will just fill in a bug report and see what epic says.
Leave a comment:
-
UnrealEverything repliedYou might want to try
Code:bUpdateSkelWhenNotRendered=true
SkelControlBase.ucCode:/** * whether this control should be ignored if the SkeletalMeshComponent being composed hasn't been rendered recently * * @note this can be forced by the SkeletalMeshComponent's bIgnoreControllersWhenNotRendered flag */ var(Performance) bool bIgnoreWhenNotRendered;
SkeletalMeshComponent.ucCode:/** If true, update skeleton/attachments even when our Owner has not been rendered recently * @note if this is false, bone information may not be accurate, so be careful setting this to false if bone info is relevant to gameplay * @note you can use ForceSkelUpdate() to force an update * @note: In the output from SHOWSKELCOMPTICKTIME you want UpdatePoseTotal to be 0 when this is FALSE for a specific component */ var() bool bUpdateSkelWhenNotRendered; /** If true, do not apply any SkelControls when owner has not been rendered recently. */ var bool bIgnoreControllersWhenNotRendered;
Leave a comment:
-
SkelController not updating offscreen (SkelControlSingleBone vs SkelControlLookAt)
Hi,
i have 2 custom skeletal controllers, both are in the same actor with "bIgnoreControllersWhenNotRendered=false" set and both also have "bIgnoreWhenNotRendered=false" set, but while the SkelControlSingleBone just interpolates its bone animations just fine offscreen, the SkelControlLookAt either simply don't update at all or depending on the set targetspace just jumps from target-position to target-position instantly. If the SkelControlLookAt actor becomes visible it interpolates correctly?
So whats the catch here? Just some bug or "intended" behavior and if so why is there a general "bIgnoreWhenNotRendered" if it gets ignored by some implementations.
Thx AndyTags: None
Leave a comment: