Announcement

Collapse
No announcement yet.

SkelController not updating offscreen (SkelControlSingleBone vs SkelControlLookAt)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    I 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.

    Leave a comment:


  • replied
    Originally posted by Jetfire View Post
    Possibly the 'PhysicsWeight=1.0'
    No. I've set 'PhysicsWeight=0.5' but nothing changed.

    Leave a comment:


  • replied
    Possibly the 'PhysicsWeight=1.0'

    Leave a comment:


  • replied
    SkelControlLookAt + 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
    }
    And here's the 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
    }

    Leave a comment:


  • replied
    Thx, 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:


  • replied
    You might want to try
    Code:
    		bUpdateSkelWhenNotRendered=true
    as well? It helped me in a similar situation...

    SkelControlBase.uc
    Code:
    /**
     *	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.uc
    Code:
    /** 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 Andy
Working...
X