워터(Water) 시스템에는 블루프린트 부력(Buoyancy) 컴포넌트가 포함되어 있습니다. 이 컴포넌트는 스피어(부교)를 사용하여 수면과 상호작용하도록 만들어진 오브젝트의 단순 볼류메트릭 근사치를 생성합니다. 이 근사치는 부력을 사용하는 다수의 오브젝트를 동시에 지원하는 솔루션을 낮은 비용으로 제공합니다.
물 부력 예시 블루프린트
워터(Water) 플러그인에는 사용하고 살펴볼 수 있는 자체 예시 콘텐츠가 포함되어 있습니다. 여기에는 큐브 스태틱 메시에 부력 컴포넌트를 사용하여 구성된 블루프린트도 있습니다. 이 블루프린트는 큐브가 수면에서 균형을 잡고 서 있을 수 있도록, 4개의 부교를 사용하여 구성되었습니다.
부력 예시 블루프린트는 Engine > Plugins > Water Content > Blueprints 에 있으며 이름은 BP_BuoyancyExample 입니다. 원하는 워터 바디의 수면 위로 드래그 앤 드롭하세요. 플레이(Play) 또는 시뮬레이트(Simulate) 를 클릭하면 큐브가 자동으로 떨어져서 아래 예시와 같이 수면에 뜨게 됩니다.
블루프린트에서 물 부력 구성하기
부력 컴포넌트를 사용하여 블루프린트를 구성하고 사용하는 단계는 다음과 같습니다.
-
콘텐츠 브라우저(Content Browser) 에서 새 블루프린트 클래스(Blueprint Class) 를 만들고 액터(Actor) 클래스를 선택한 다음 명명합니다. 이 가이드에서는 'BuoyancyExampleBP'를 사용하겠습니다.
-
블루프린트를 엽니다. 컴포넌트(Components) 패널에서 추가(Add) + 드롭다운을 클릭하고 스태틱 메시(Static Mesh) 를 선택합니다.
-
스태틱 메시(Static Mesh) 컴포넌트를 선택합니다. 디테일(Details) 패널에서 스태틱 메시(Static Mesh) 할당 슬롯에 메시를 할당합니다.
이 가이드에서 사용된 메시를 다운로드하면 똑같이 따라할 수 있습니다. 이 메시를 콘텐츠 브라우저(Content Browser) 에 바로 드래그 앤 드롭하세요.
-
디테일(Details) 패널에서 피직스 시뮬레이트(Simulate Physics) 를 활성화하고 피직스(Physics) 카테고리의 질량(kg)(Mass (kg)) 옆 체크박스를 체크합니다.
부력 컴포넌트가 작동하려면 *질량 (kg)(Mass (kg)) 이 활성화되어 있어야 합니다.
-
컴포넌트(Components) 패널에서 추가(Add) + 드롭다운 메뉴를 클릭하여 Buoyancy 컴포넌트를 추가합니다.
-
Buoyancy 컴포넌트를 선택합니다. 디테일(Details) 패널의 Buoyancy Data 에서 메시를 수면에 뜨게 할 부교(Pontoons) 를 추가하겠습니다. 먼저 추가(Add) (+) 아이콘을 클릭하여 부교를 하나 추가합니다.
배열에 새 부교 엘리먼트가 다음과 같이 추가됩니다.
-
배열에 부교(Pontoons) 를 3개 더 추가하여 총 4개의 배열 엘리먼트를 만듭니다. 수면에 안정적으로 뜨도록 부교를 메시의 앞뒤로 배치합니다. 이를 위해 상대적 위치(Relative Location) 를 사용하여 부교를 다음 위치에 배치합니다.
- 인덱스 0(왼쪽 뒤): 660, 370, 0
- 인덱스 1 (오른쪽 뒤): 660, -370, 0
- 인덱스 2 (왼쪽 앞): -220, 370, 0
- 인덱스 3 (오른쪽 앞): -220, -370, 0
상대적 위치를 입력할 때는 부교의 시각화가 보이지 않습니다. 그러나 스태틱 메시 소켓과 중앙 소켓(Center Socket) 태그를 사용하면 특정 위치 데이터를 입력하지 않고 부교를 배치할 수 있습니다. 혹은 씬(Scene) 컴포넌트를 블루프린트에 추가하고 그 위치를 부교의 상대적 위치에 수동으로 복사할 수도 있습니다.
-
블루프린트 컴포넌트(Components) 패널에서 StaticMesh 컴포넌트를 클릭하고 DefaultSceneRoot 위로 드래그하여 새 루트 컴포넌트로 만듭니다.
제대로 작동하려면 스태틱 메시가 반드시 부력 컴포넌트의 루트여야 합니다.
-
부력 블루프린트를 레벨로 드래그 앤 드롭하고 수면 위에 배치합니다. 플레이 또는 시뮬레이트(Simulate) 를 눌러 결과를 확인합니다.
부력 컴포넌트 프로퍼티
부력(Buoyancy) 컴포넌트에는 다음과 같은 프로퍼티가 있습니다. 이 프로퍼티들은 부교가 수면과 상호작용하는 피직스를 제어합니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
Buoyancy 컴포넌트를 선택하면 블루프린트 디테일(Details) 패널의 Buoyancy 섹션에서 다음 프로퍼티를 찾을 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| Pontoons | 볼륨의 근사치를 추정하기 위해 사용 가능한 부교의 배열을 다양한 반경으로 컴포넌트에 추가될 수 있습니다.
|
| Center Pontoons on COM | 활성화하면 상대적 위치를 사용할 때 부교의 중심이 무게중심과 일치하도록 배치합니다. 부교의 위치가 소켓으로 지정된 경우에는 사용되지 않습니다. |
| Buoyancy Coefficient | 각 부교에 적용되는 부력의 강도를 높입니다. |
| Buoyancy Damp | Z 속도를 기반으로 댐핑을 스케일 조절할 댐핑 인수입니다. |
| Buoyancy Damp 2 | Z 속도를 기반으로 댐핑을 스케일 조절할 2차 댐핑 인수입니다. |
| Buoyancy Ramp Min Velocity | 부력에 램프를 적용하기 시작할 최소 속도입니다. |
| Buoyancy Ramp Max Velocity | 부력이 램프할 수 있는 최대 속도입니다. |
| 부력 램프 최대(Buoyancy Ramp Max) | 부력이 (최대 속도 이상으로) 램프할 수 있는 최댓값입니다. |
| Max Buoyant Force | 상향 부력의 최대 포스입니다. |
| Water Shore Push Factor | 오브젝트를 물가로 미는 계수입니다. 주로 퍼포먼스를 위한 설정입니다. |
| Water Velocity Strength | 강 워터 바디에 포스를 적용하는 계수입니다. |
| Max Water Force | 강 워터 바디가 적용할 수 있는 최대 푸시 포스입니다. |
| Apply Drag Forces in Water | 물속을 움직이는 오브젝트에 항력을 적용할지 여부를 지정합니다. |
| Drag Coefficient | 속력을 바탕으로 선형 항력을 적용하기 위한 계수입니다. |
| Drag Coefficient 2 | 속력의 제곱을 바탕으로 선형 항력을 적용하기 위한 계수입니다. |
| Angular Drag Coefficient | 오브젝트의 회전에 저항하는 각 항력을 적용하기 위한 계수입니다. |
| Max Drag Speed | 항력이 적용되는 최대 속력입니다. |
| Apply River Forces | 엔진이 하류 푸시 또는 물가 푸시와 같은 강(River) 포스를 적용할지 여부를 지정합니다. |
| River Pontoon Index | 부교 워터 포스가 계산되는 목록입니다. 횡으로 밀거나 당기는 힘을 계산하고, 가능한 경우 하류 계산으로부터 메인 포스 계산의 물 속도를 구하는 데 사용됩니다. |
| Water Shore Push Factor | 강에서 오브젝트를 강가로 미는 계수입니다. 퍼포먼스를 위한 설정입니다. 강 중앙으로 밀려면 음수로 설정합니다. |
| River Traversal Path Width | 오브젝트가 건너야 하는 강의 너비입니다. |
| Max Shore Push Force | 강에 의해 에지 또는 중앙으로 적용될 수 있는 최대 푸시 포스입니다. |
| Water Velocity Strength | 강에서 푸시 포스를 적용하는 계수입니다. |
| Max Water Force | 강에 의해 적용 가능한 최대 푸시 포스입니다. |
| Always Allow Lateral Push | 활성화하면 강에서의 전방 이동 속도와 관계없이 오브젝트가 횡으로 밀리도록 허용합니다. |
| Allow Current when Moving Fast Upstream | 활성화하면 상류로 빠르게 이동할 때 유속을 적용합니다. 비히클을 제어하기 쉽게 하려면 비활성화하세요. |
| Apply Downstream Angular Rotation | 활성화하면 오브젝트를 강의 하류 쪽으로 정렬하기 위해 토크를 적용합니다. |
| Downstream Axis of Rotation | 오브젝트가 하류 각 회전을 정렬해야 할 때 사용하는 축입니다. |
| Downstream Rotation Strength | 하류 각도 회전을 적용할 세기입니다. |
| Downstream Rotation Stiffness | 오브젝트를 하류 방향으로 정렬하는 데 사용되는 스프링 강성입니다. |
| Downstream Rotation Angular Damping | 오브젝트를 하류 방향으로 정렬하는 데 사용되는 스프링 댐핑입니다. |
| Downstream Max Acceleration | 하류 회전을 위해 업데이트당 적용할 최대 토크입니다. |
물 부력 디버깅
콘솔 명령 r.Water.DebugBuoyancy 1 을 사용하여 부력 컴포넌트와 수면의 상호작용을 디버그할 수 있습니다. 각 부교는 수면과 상호작용하는 포인트 그리드를 따라 그려집니다.
아래 예시는 다양한 간격과 크기의 부교를 사용하는 여러 셰이프와 보트 메시를 보여줍니다.