2D 사이드 스크롤 게임에서 왜곡 효과와 같은 가짜 3D를 구현하는 방법은 무엇입니까?


14

나는 어떤 종류의 포스트 프로세싱 효과라고 생각하지만 검색 할 적절한 용어 또는 시작 위치를 확실하지 않습니다.

나는 Boshy되고 싶어 하고 당신이 게임에서 승리 해야하는 게임을 보았습니다 .2D 게임의 관점을 수정하여 3D 효과를 줄 수 있습니다 (아래 이미지 참조). Boshy는 기본적으로 타워 (실린더) 안에있는 것처럼 보이게하지만 게임에서 승리해야합니다. 이미지가 왜곡되어 오래된 CRT 모니터, 특히 약간 둥근 모양으로 재생되는 것처럼 보입니다.

  • 이 효과에 대한 용어가 있습니까?
  • 이 효과를 구현하는 표준 방법은 무엇입니까 (용 어학)?
  • 20,000 피트 뷰에서 Unity 또는 XNA / Monogame과 같은 고급 엔진 / 프레임 워크에서 이러한 효과를 구현하려면 어떻게해야합니까? (자세한 코드는 행복하게 받아 들였지만 필요하지는 않습니다. 정확한 구현 세부 사항은 다를 수 있지만 수행해야 할 작업에 대한 높은 수준의 세부 사항은 크게 감사하겠습니다)

나는 Boshy가되고 싶다 나는 Boshy가되고 싶다

당신은 게임에서 승리해야 여기에 이미지 설명을 입력하십시오


네. 나는 항상 그 기술의 정확한 용어를 알고 싶어했다. 내가 생각할 수있는 최고의 것은 "오래된 TV 화면 효과"
Tofu_Craving_Redish_BlueDragon

바로 그거죠! 그리고는 후자의 예를 들어 일
SpartanDonut

답변:


7

이것은 후 처리 종류의 효과로 구현 될 수 있습니다. (Unity / XNA / Dx / OGL / ...을 사용할 때)

지오메트리 방법

달성하고자하는 왜곡 효과와 유사한 메시를 생성하여 시작하십시오. (예 : 반 실린더 (또는 원뿔, 구, 큐브 등)를 모델링하고 텍스처 좌표를 설정하십시오). 평소와 같이 2D 게임을 렌더링하지만 최종 결과를 텍스처로 렌더링합니다. 그런 다음 방금 만든 텍스처로 왜곡 형상을 렌더링합니다. 월드 / 뷰 / 투영을 사용하거나 실제 지오메트리 / 텍스처 좌표를 수정하여 왜곡의 강도를 제어 할 수 있습니다. (이미지 1은 일반 2D 게임을 보여주고 이미지 2는 구에 투영 된 것과 동일한 질감을 보여줍니다)

게임 예 구체에 투영 된 예 (블렌더 사용)

왜곡 방법

이미지 처리 도구는 종종 투영을 에뮬레이트 할 수있는 왜곡 효과를 제공합니다 (착시와 같은 비트). 예를 들어 그림 3은 Paint.Net의 벌지 필터를 사용하여 생성되었습니다.

벌지 왜곡.

( GPUImage 프로젝트 에서이 왜곡 효과의 구현 (OpenGL ES 2.0)을 찾을 수 있습니다 -GPUImageBulgeDistortionFilter 참조)

구현에 따라 두 방법 중 하나가 더 빠르거나 원하는 결과와 더 잘 일치 할 수 있습니다. 두 가지 구현이 상당히 단순하기 때문에 두 가지를 모두 구현하여 가장 적합한 것을 볼 수 있습니다.


환상적인 답변!
Tholle

1
둘 다 같은 양의 이미지를 처리해야합니다. 프로젝션은 아무것도 하지 않는 것보다 빠르지 않으며 이미지 처리 비용은 어느 쪽이든 동일합니다. -정점 변환 및 래스터 화를 건너 뛰기 때문에 "왜곡"방법이 더 빠릅니다. 또한 다각형 접근 방식을 사용하여 순서를 구체적으로 지정할 수있는 픽셀을 자유롭게 반복 할 수 있습니다. 마지막으로 다각형 의도 한 효과에 대한 정보를 적게 보유하고 텍스처 필터링 하드웨어에 스트레스를주고 실제 필터 대신 근사치를 생성하는 일반적인 솔루션을 사용합니다.
MickLH

@MickLH : 이러한 포스트 프로세싱 프로젝션의 정점은 오프라인 또는로드시 계산할 수있어 통과 정점 셰이더가 매우 저렴합니다. 벌지 필터의 경우 전체 화면 쿼드도 렌더링 및 래스터 화해야합니다 (SpartanDonut이 계산 쉐이더에 액세스 할 수있는 경우 제외). 모든 픽셀에 대해 보간 대신 오프셋을 계산해야합니다. 따라서 (사용 가능한 도구 및 구현에 따라) 두 가지 방법 모두 똑같이 빠를 수 있다고 생각합니다. 귀하의 의견에 감사드립니다.
Miklas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.