컬리전 매트릭스

2개의 object가 서로에 대해 다른 collision 판정을 가지고 있을 때, 더 낮은 충돌단계를 적용

  Object A
Ignore Overlap Block
Object B Ignore Ignore Ignore Ignore
Overlap Ignore Overlap Overlap
Block Ignore Overlap Block

 

 

관련 프로퍼티

Transform Mobility

  • static
  • stationary
  • movable

 

Physics

  • simulate physics ( bool )
  • mass ( kg )
  • force ( N )
  • enable gravity ( bool )
  • constraints

 

 

 

interaction query

  • collide
  • chaos

 

add force

  • crash and physics sim
  • add force ( continuous )
  • add impulse ( 1 frame )
  • damping / friction

 

calc force

  • constraint
    • physics stat ( 축제어 회전3자유도 + 이동3자유도 )
    • constraint component
  • Ignore
    • FieldSystem → kill / sleep
    • transform mobility = static / stationary

 

apply velocity

 

'Unreal > UE Feature' 카테고리의 다른 글

Projectile & Spline  (0) 2024.05.17
AI  (0) 2024.05.17
Texture  (0) 2024.05.17
Modeling  (0) 2024.05.17
(Character) Movement  (0) 2024.05.16

입력 전달 플로우

 

기본 Input Binding Delegate

subsystem인 InputComponent instance의 delegate를 통해 input-action binding하는 구조
InputComponent→BindAxis(" input name ", target instance, & exec function )
InputComponent→BindAction(" input name ", target instance, & exec function )


  • bind axis의 타겟 function은 float 파라미터를 가져야 함
  • input name은 editor - project setting - input 의 keybinding에 할당한 key값


ex)
class hi()
{
  • InputComponent→BindAxis ( "move_forward", this, hi::movef )
  • hi::movef ( float move_f ) { character.move_forward }
}

 

 

 

Enhanced Input System

  • input modifier
  • input action
  • input mapping context

 

구조 개요

회전 입력 전달 경로

  • 이동
    • Pawn :: AddMovementInput
      • Controller Rotation기준으로 forward, right vector 계산

 

Input Action

  • Input Action : 여러 input을 종합해 float1 ~ float3 의 output을 내보낼 수 있는 단위
  • Consume Input : 입력 소모해버리는지 여부?
  • Value Type : bool, float 1 ~ 3 가능하며, modifier에서 각 입력을 어떻게 값으로 변환할지 제어
    • ex. swizzle input axis value - bool이면 ( 1or0 , 0, 0 ) , float 1 이면 ( value, 0, 0 ), float 2면 ( value_x, value_y, 0 ), float 3이면 ( value_x, value_y, value_z ) 이런형태 ( 아래는 인풋타입에 따른 value 생성자. 다음 생성자에서 값 적용

 

Input Modifier

  • 커스텀 타입으로, Input 시, virtual ModifyRaw_Implementation( 인풋, FInputActionValue ( bool ~ float3 ), DeltaTime ) method를 customize하여 → output value를 줄 수 있는 연산모듈
    Input Modifier Class & Modify Raw ( override function )

 

더보기

.h

UCLASS(NotBlueprintable, MinimalAPI, meta = (DisplayName = "Swizzle Input Axis Values"))
class UInputModifierSwizzleAxis : public UInputModifier
{
   GENERATED_BODY()
 
public:
 
   // Default to XY swap, useful for binding 1D inputs to the Y axis.
   UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings)
   EInputAxisSwizzle Order = EInputAxisSwizzle::YXZ;
 
protected:
   virtual FInputActionValue ModifyRaw_Implementation(const UEnhancedPlayerInput* PlayerInput, FInputActionValue CurrentValue, float DeltaTime) override;
   virtual FLinearColor GetVisualizationColor_Implementation(FInputActionValue SampleValue, FInputActionValue FinalValue) const override;
};

 

.cpp

FInputActionValue UInputModifierSwizzleAxis::ModifyRaw_Implementation(const UEnhancedPlayerInput* PlayerInput, FInputActionValue CurrentValue, float DeltaTime)
{
    FVector Value = CurrentValue.Get<FVector>();
    switch (Order)
    {
    case EInputAxisSwizzle::YXZ:
        Swap(Value.X, Value.Y);
        break;
    case EInputAxisSwizzle::ZYX:
        Swap(Value.X, Value.Z);
        break;
    case EInputAxisSwizzle::XZY:
        Swap(Value.Y, Value.Z);
        break;
    case EInputAxisSwizzle::YZX:
        Value = FVector(Value.Y, Value.Z, Value.X);
        break;
    case EInputAxisSwizzle::ZXY:
        Value = FVector(Value.Z, Value.X, Value.Y);
        break;
    }
    return FInputActionValue(CurrentValue.GetValueType(), Value);

axis에 사용되는 swizzle axis 예시

  • bool이면 ( 1or0 , 0, 0 ) , float 1 이면 ( value, 0, 0 ), float 2면 ( value_x, value_y, 0 ), float 3이면 ( value_x, value_y, value_z ) 이런형태 ( 아래는 인풋타입에 따른 value 생성자. 다음 생성자에서 값 적용

 

Input Mapping Context

 

 

입력 설정

활성화된 PlayerController의 Enhanced Input Local Player Subsystem 소켓에  특정 Input Mapping Context를 추가

  • PlayerController
    • Enhanced Input Local Player Subsystem
      • Input Mappings[]
        • ← add Mapping Context
  • Input_Mappin_Context에서 할당했던 [Input_Action]의 이름을 통해 event 연결

 

'Unreal > UE Architecture' 카테고리의 다른 글

Cpp -> BP Pipeline 1  (0) 2024.05.17
문자열 처리  (0) 2024.05.16
UE Macro & Reflection System  (0) 2024.05.16
Smart Pointer & Container & Serialize  (0) 2024.05.16
기본 구성  (0) 2024.05.16

샘플링된 공간단위로 로직을 적용하기 위한 시스템

 

 

 - FS_MasterField
 - Field System Actor
    - Field System Component ( 기본 root )
        - Add Transient Field
            - Target = Component
            - Enable Field = 활성여부인듯 ( 지속작동 막기위해? )
            - Physical Type = 폭발타입 ( external strain은 그냥 임계값 넘으면 자가붕괴인듯 )
            - Meta Data = 몰?루
            - Field Node = component의 "필드"항목들 중 하나 component로 만들고 -> Set ( 컴포넌트이름 ) -> Field Node로 연결
            
    - Prototype
        - Engine - Content - EditorResources - FieldNodes
            - FS_AnchorField_Generic : 부셔지지 않는 필드
            - FS_BombField_Prototype : 폭발모사
            - FS_MasterField : 만능
            - FS_SleepDisable_Generic : Sleep ( physics 완충 + destruction 감쇄 )

'Unreal > UE Class :: UObject' 카테고리의 다른 글

Subsystem  (0) 2024.05.16
기본 구성 리스트  (0) 2024.05.16
Procedural Mesh  (0) 2024.05.16

참고자료

 

 

Character Movement 기본 구조

 

Character Movement 네트워크 구조

Architecture & Example

 

클라이언트 / 서버 파이프라인
  • Check or Input Vector ( from controller.h → [Possess Actor or Binded? ] movementComponent.h? )
  • Controlled Character Move (State adjust) ( movementComponent.h → [movementComp→UpdatedComponent] collisionComponent(or any component which have Location)]
    • delta Time + input Vector 
    • [Input] Vector → [Output] Acceleration ( temporary )
  • Perform Move
    • calc Acceleration → force/Impulse
  • Start New Physics
    • calc force/Impulse → velocity → location ( depend on movement Mode )

 Character movement compoent 구성

하위프로퍼티 변경 -> 물리처리 phase에서 movement mode체크 -> 해당 movement mode의 연산식에의해, 상위프로퍼티 산출 -> movement

 

movement mode

  • character movement component → movement mode
    • 틱마다 호출 ( movement mode == phys_... )
      • Tick → (root motion, movement, etc...) → StartNewPhysics → <UEnum> MovementMode → Phys{None/Walking 등등}
    • Mode 전환 호출
      • SetMovementMode( movementmode, custom enum )
    • 변환시 처리
      • OnMovementModeChanged
        • prev movement mode를 기반으로 종료되는 mode에 대한 처리
        • 만약 시작될때를 기점으로 하고싶다면, setmovementmode가 호출되는 조건 ( IsClimbing등 별도 변수 )를 기준으로 사용하는 듯

 

 

 

Add Force

더보기
void UCharacterMovementComponent::AddForce( FVector Force )
{
    if (HasValidData() && !Force.IsZero())
    {
        if (Mass > SMALL_NUMBER)
        {
            PendingForceToApply += Force / Mass;
        }
        else
        {
            UE_LOG(LogCharacterMovement, Warning, TEXT("Attempt to apply force to zero or negative Mass in CharacterMovement"));
        }
    }
}

 

[Character] BP에서 movementComponent는 root component를 제어함

  • ACharacter class에서 할당
더보기
ACharacter::ACharacter(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
    // ...
 
    RootComponent = CapsuleComponent;
 
    // ...
 
    CharacterMovement = CreateDefaultSubobject<UCharacterMovementComponent>(ACharacter::CharacterMovementComponentName);
    if (CharacterMovement)
    {
        CharacterMovement->UpdatedComponent = CapsuleComponent;
        CrouchedEyeHeight = CharacterMovement->CrouchedHalfHeight * 0.80f;
    }
 
    // ...
 
}

 

프레임 내 최종 위치 결정 순서

 

'Unreal > UE Feature' 카테고리의 다른 글

Projectile & Spline  (0) 2024.05.17
AI  (0) 2024.05.17
Texture  (0) 2024.05.17
Modeling  (0) 2024.05.17
Physics  (0) 2024.05.16
  • Actor
    • 의미 : 레벨에 배치할 수 있는 게임플레이 Object ( class AActor )
    • 구조 : Component들의 그룹
  • Component
    • 의미 : 기능의 단위가 되는 Object
  • Object
    • 의미 : 모든 형태의 인스턴스 ( class UObject )
    • 구조 : Component, Actor 등 하나의 class로부터 파생된 모든 instance의 총칭
      • AActor를 가리키지 않은 instance를 총칭하기도 함

 

기본 모듈

'Unreal > UE Architecture' 카테고리의 다른 글

Cpp -> BP Pipeline 1  (0) 2024.05.17
문자열 처리  (0) 2024.05.16
UE Macro & Reflection System  (0) 2024.05.16
Smart Pointer & Container & Serialize  (0) 2024.05.16
Input  (0) 2024.05.16

Actor

  • actor
  • widget : UI widget

Component

  • Charactor
    • PlayerController : 플레이어 입력성 반응
    • AIController : 외부 환경성 반응
    • ThirdPersonCharactor : 3인칭 플레이어캐릭터, 조작, 카메라 프리셋

UMG : 언리얼 모션 그래픽

  • widget : 미리 만들어진 함수 시리즈 ( 버튼, 체크박스 등 )
    • UI  : 위젯들을 통해 만들어진 인터페이스
    • widget blueprint : 위젯 편집 도구 및 편집 데이터
      • designer : 시각적 레이아웃, 기본 함수
      • graph : 위젯들의 함수기능

AI

  • blackboard key selector : 블랙보드의 key(var)값을 받을 변수 ( instance editable 필수 )
  • Charactor actor
  • AI Controller
  • AI
  • BT ( Behavior Tree)
  • BTTask
  • BTService
  • BTDecoration

Component _ detail

  • common actor
    • actor
      • initial life span ( int n ) : n초 후 destroy self
  • projectile
    • projectile
      • init spd : 시작속도
      • max spd : 최대속도
  • Collision
    • collision
      • collision presets : 충돌관리
        • overlapAllDynamic
        • BlockAll  : 
  • Widget
    • User interface
      • widget class : 적용할 BluePrint
      • Draw size : 사용자 지정 크기
      • space
        • world : world base rotation
        • screen : 항상 카메라를 바라봄
  • ProgressBar
    • Progress
      • percent : 0 ~ 1 프로그레스 바 비율
        • Bind : Event Dispatcher를 통해 스크립트에서 접근 가능 / 연동될 변수를 선택
  • BluePrint Charactor
    • pawn
      • ai controller class : 사용자 지정 BP AIController 연결 가능
  • FloatingPawnMovement : Pawn에 이동기능(nav)을 주기 위한 component
  • AIPerception : AI의 적 인지구조 설계 ( ai controller의 component )
  • UI
    • Slot
      • Zorder : 화면출력 우선순위

'Unreal > UE Class :: UObject' 카테고리의 다른 글

Subsystem  (0) 2024.05.16
Field  (0) 2024.05.16
Procedural Mesh  (0) 2024.05.16

BluePrint Interface(BPI)

BP 내 interface 상속

 

BP 내 Interface 함수 호출

 

Cast와 달리 타입정보가 불분명하거나 다양할 때 Type 체크 없이 Message로 Call 시도할 수 있음

'Unreal > BP & UE Library' 카테고리의 다른 글

Class Name 접두  (0) 2024.05.17
code 내장 함수  (0) 2024.05.17
BP node list 1  (0) 2024.05.16
UE Dispatch & Delegate  (0) 2024.05.16
BP Node 리스트  (0) 2024.05.16
  • Time
    • Get world delta seconds : global delta sec
    • Get time Seconds : global stacked sec
  • Is Valid
    • 할당여부 판정 ( isNull / isNone )
  • (F/R/T/V) Interp
    • deltaTime + TotalTime 받아서 보간시켜줌 ( float, rotator, transfrom, vector? )
    • deltaTime값 알아서 누적시켜줘서 편함
  • dot
    • 내적
  • 흐름제어
    • Switch
    • Branch
    • Sequence
    • DoN ( DoOnce )
      • N번까지만 flow True, 이후 reset 전까지 flow False
    • FlipFlop : A부터 시작해서 호출될때마다 다음 시퀀스 A ↔ B 스위치
    • For Loop ( For Loop With Break )
    • While Loop
    • Gate
      • 별개 flow에 의해 Trigger되어 Open/Close가 switch 되는 Flow
    • MultiGate
      • 호출할때마다 순차적으로 다음 Flow 활성
        • Loop : 마지막 Flow 사용 시 첫 Flow 사용
        • IsRandom : 아직 이번Loop에서 안쓴 Flow중 랜덤 Flow 사용
  • PlayerController
    • Get current Mouse cursor : 마우스 커서 모양 get/set
      • Enum Type
  • Set View Target with Blend
    • 카메라 전환 ( to actor )
    • 타겟의 활성화된 맨 위 카메라컴포넌트 적용
  • Math::Transform : world loc to local loc
  • Math::Invert Transform : local loc to world loc
  • Draw material to render target
  • Timeline
 

타임라인

언리얼 엔진 4 블루프린트의 타임라인에 대한 개요서입니다.

docs.unrealengine.com

 

'Unreal > BP & UE Library' 카테고리의 다른 글

Class Name 접두  (0) 2024.05.17
code 내장 함수  (0) 2024.05.17
BP Interface  (0) 2024.05.16
UE Dispatch & Delegate  (0) 2024.05.16
BP Node 리스트  (0) 2024.05.16

+ Recent posts