나이아가라에서 파티클(입자)의 모션등을 이용해서 포탈등의 효과를 만들다보면
파티클의 입자 움직임 자체를 빌보드화 하고 싶을 수 있다

이런식의 파티클 모션을 제작하게되면 위 모션자체의 빌보드를 만드는 방법은
기본적으로 로컬 + 액터 로테이션으로 만들게 됩니다


이처럼 액터를 세팅한뒤

이후 이런식으로 회전을 카메라에 맞춰서 돌려주면되는데
여러 이펙트를 이미 월드 스페이스 혹은 로컬스페이스등을 사용해 액터를 직접 회전하게 되면
룩이 무너지는 경우가 있음
다른 렌더러는 카메라 페이스 빌보드 기능을 이용해 만들었는데
마지막에 데코레이션이펙트를 위 형식으로 만들게되면 액터를 돌릴순 없어서
시스템을 분리하거나액터를 돌리는 방식에 맞춰 다시 해줘야 하는 경우가 있음
해당 기능을 빌보드처럼 구현해달라는 요청을 받아 제작을 진행함
나이아가라 파티클 입자의 움직임은
초기 생성 > 벨로시티, 드래그, 컬노이즈등의 포스로 다음 프레임 위치 연산 > 위치 업데이트로 이루어집니다

위 그림에서보듯이 위치라고 되있지만 실제로 위치를 설정하는건 solveForce 등 최종 연산노드를 사용해야
나이아가라에서 기본제공을 하는 다양한 모션을 제어하는 기능을 사용가능하기때문에
setposition 같은 함수성 기능은 최대한 사용하지 않아야 합니다.
나이아가라내부에서도 position을 직접 셋하는 경우 Force를 사용하라고 경고를 줍니다
결국 저 위 파티클 입자의 빌보드를 만들려면(액터를 움직이지 않은채)
액터의 회전을 가상으로 연산해 초기위치 이후에 연산에 넣어주면 될거라 판단했습니다.

나이아가라 액터의 세팅

이 이미터는 세팅을 월드로 해야합니다(월드에서 카메라를 바라보는 방향으로 처리하기 위함)

위 기능을 처음이야기한 3단계의 설정을 따릅니다.
초기 위치 설정
포스 방향 연산(회전)
회전 및 위치 업데이트
초기 위치 설정
스폰이 완료되면 처음 생서된 위치를 확인해야합니다.
초기위치를 확인해놔야 이후 그위치 기준으로 돌리거나 Force를 적용할 수 있음
첫번째 함수

파티클의 로컬스페이스 방향과 거리를 저장합니다
위 함수는 파티클 스폰 스테이지에 있으므로 스폰시 1회 확인을 합니다.
포스 방향 연산(회전)
이제 이번프레임에 있어야할 회전위치를 넣어줍니다.

매 프레임 연산을 하며
카메라 스페이스로 변환을 통해 빌보드를 구현해줍니다.
빌보드 구현에는 다양한 회전연산을 사용할 수 있는데
실제 각도를 맞춰서 회전을 해주거나 그냥 고정 카메라 스페이스로 변경해주는등 여러방식이 있고
현재 위방법은 단순 트랜스폼변환입니다(거리를 카메라 축에 맞춰 곱해주는)
다양한 회전연산의 상세한 설명은 아래 링크
https://bigflash0913.tistory.com/24
[기타]게임 회전각도 및 회전좌표 구하기
제글에 종종 등장하는 게임에서 2D좌표상 회전각도 혹은 일정각도가 회전된 위체 따른 각도를 구하는 방법에 대한 이미지가 있습니다. 게임에서 아주 광범위 하게 사용되며 이동관련 머터리얼
bigflash0913.tistory.com
위에 보면 파티클포지션을 셋해주는데 위 모듈의 위치가 solve 바로 위에 위치해야
다른 모듈에서 세팅한 포스 값을 자연스럽게 받아서 사용 가능합니다.
(모듈의 위치에따라 포스의 형태가 변경되므로 사전에 합의후 사용하는것이 통일성을 위해 좋습니다)
또한 이 포스중에 실제 입자가 방출되는 방향을 제어하는 velocity 값은 사용이 불가능합니다.
해당 값자체가 로컬 / 월드 기준이미터 방향에 맞춰서 연산이 되도록 강제되고 있어 카메라 방향으로 벨로시티값을 제어할 수 없기때문입니다.
실제로 회전값을 벨로시티에 적용하면 위 예같은 느낌이아닌 회전방향을 향해 움직이는 고리 같은 느낌으로 바뀌게 됩니다.
해서 velocity 관련 기능은 직접 구현을 해주게 됩니다.
이후 solve 모듈에서는 현위치+force값으로 현재프레임의 위치를 연산해 적용합니다
회전 및 위치 업데이트
회전및 위치가 solve에서 업데이트가 되었다면
다음위치에 이동할 양을 연산해서 다음 회전연산에 사용할 수 있도록 처리해 줍니다.
회전연산에서 벨로시티를 사용하지 못하기때문에 강제로 위치이동량을 정해서 이동을 시켜주고있습니다.

'unreal > Unreal Niagara' 카테고리의 다른 글
| [Unreal]언리얼 나이아가라 몰프 / Niagara Morph Effect(Fake) (0) | 2022.02.10 |
|---|---|
| [Unreal]언리얼 나이아가라 회전 모듈 제작 / Niagara Create rotation module (1) | 2020.11.02 |