Unity에서 파티클 시스템을 사용하여 페인팅하는 방법

Unity 다양하고 역동적인 도구 세트로 유명한 Engine는 몰입형 경험을 만들 수 있는 수많은 방법을 제공합니다. 이 중에서 파티클 시스템은 비와 연기 시뮬레이션부터 복잡한 애니메이션 제작에 이르기까지 시각 효과를 위한 다용도 도구로 두각을 나타냅니다. 이 시스템의 덜 탐구된 용도 중 하나는 Unity 장면 내에서 그림을 그리는 것입니다. 이 튜토리얼에서는 Unity의 표면에 페인팅 작업을 시뮬레이션하기 위한 파티클 시스템의 혁신적인 응용 프로그램을 소개합니다.

전제 조건

1. 장면 설정

  • Unity을 시작하고 새 3D 프로젝트를 생성합니다(아직 생성하지 않은 경우)
  • Hierarchy 창 내에서 마우스 오른쪽 버튼을 클릭하고 3D Object -> 'Plane'를 선택합니다. 이것이 캔버스 역할을 할 것입니다.
  • 일관성을 위해 평면의 위치를 ​​(0, 0, 0)으로 조정합니다.

2. 입자 시스템 만들기

  • Hierarchy 창을 마우스 오른쪽 버튼으로 클릭하고 'Effects' -> 'Particle System'을 선택합니다.
  • 파티클 시스템의 이름을 "ParticlePainter"로 바꿉니다.
  • "ParticlePainter" 개체를 평면보다 약간 위에 배치합니다.

3. 페인팅을 위한 파티클 시스템 구성

  • "ParticlePainter" 개체를 선택한 상태에서 Inspector 창으로 이동합니다.

'Particle System'에서 다음과 같이 변경합니다.

  • 'Duration': 1
  • 'Start Lifetime': 'Infinity' (이것은 입자가 죽지 않도록 보장합니다)
  • 'Start Speed': 0 (입자가 움직이지 않아야 함)
  • 'Emission' -> 'Rate over Time': 100 (그림 밀도 기본 설정에 따라 조정)
  • 'Shape'로 이동하여 "Circle"을 선택합니다. 브러시 크기를 제어하려면 반경을 더 작은 값으로 조정하십시오.
  • 'Renderer' 아래에서 재질을 사용자 정의 재질이나 색상으로 변경하여 페인트를 나타냅니다.

4. 페인트 메커니즘 스크립팅

이제 입자가 방출되는 시기와 위치를 제어하기 위해 script가 추가됩니다.

  • 자산 창을 마우스 오른쪽 버튼으로 클릭하고 'Create' -> 'C# Script'를 선택하고 이름을 "ParticlePainterScript"으로 지정합니다.
  • 스크립트를 두 번 클릭하여 편집기에서 열고 그 안에 아래 코드를 붙여넣은 다음 스크립트를 저장합니다.
using UnityEngine;

public class ParticlePainterScript : MonoBehaviour
{
    private ParticleSystem painterParticles;
    private bool canPaint = false;

    void Start()
    {
        painterParticles = GetComponent<ParticleSystem>();
    }

    void Update()
    {
        PaintMechanic();
    }

    void PaintMechanic()
    {
        if (Input.GetMouseButton(0))
        {
            if (!canPaint) 
            {
                painterParticles.Play();
                canPaint = true;
            }
        }
        else
        {
            painterParticles.Stop();
            canPaint = false;
        }

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        
        if (Physics.Raycast(ray, out hit))
        {
            transform.position = hit.point;
        }
    }
}

5. 카메라 조정

하향식 보기에 맞게 기본 카메라를 조정합니다.

  • 위치를 (0, 10, 0)으로 설정하고 회전을 (90, 0, 0)으로 설정합니다.

6. 장면 테스트

  • 재생 버튼을 클릭하세요.
  • 마우스 왼쪽 버튼을 누른 채 평면 위로 커서를 이동합니다. 입자가 방출되어 페인트와 같은 효과를 생성해야 합니다.

질문과 답변:

  1. 페인팅에 전통적인 텍스처 페인팅 방법 대신 파티클 시스템을 사용하는 이유는 무엇입니까?: 파티클 시스템은 동적 실시간 피드백을 제공하고 사용자 정의가 가능하며 독특한 시각 효과를 제공할 수 있습니다. 또한 일부 상황, 특히 임시 페인트 효과의 경우 성능 친화적일 수 있습니다.
  2. 이 방법으로 여러 색상을 칠할 수 있습니까?: 예, 여러 입자 시스템을 만들거나 시간이 지남에 따라 입자 색상을 조정하면 다양한 색상 효과를 얻을 수 있습니다.
  3. 브러시 크기는 어떻게 동적으로 변경할 수 있습니까?: 스크립팅을 통해 파티클 시스템 모양의 'radius' 값을 실시간으로 조정하여 브러시 크기를 동적으로 변경할 수 있습니다.

결론

이 튜토리얼이 끝나면 Unity 입자 시스템의 새롭고 독특한 응용 프로그램이 탐색되었습니다. 게임 메커니즘, 예술적 도구, 혁신적인 경험 등 Unity은 다재다능한 기능으로 계속 놀라움을 선사하고 있습니다.