Unity에서 오브젝트의 스케일을 마이너스로 하면 폴리곤이 반전하는 것 같아서 조사해 보았다 (Odd Negative Scaling)
개요
Unity에서 오브젝트의 스케일을 마이너스로 하면 폴리곤이 반전하고 있는 것이 신경이 쓰였으므로,
조사한 내용을 공유하려고 합니다.
경위
「변환 행렬로 스케일을 반전시켜도 폴리곤은 반전하지 않지요?」라고 생각했습니다만,
실제로 확인한 결과, Unity에서는 반전하고 있는 것 같기 때문에 조금 조사해 보기로 했습니다.
운영 환경
「변환 행렬로 스케일을 반전시켜도 폴리곤은 반전하지 않지요?」라고 생각했습니다만,
실제로 확인한 결과, Unity에서는 반전하고 있는 것 같기 때문에 조금 조사해 보기로 했습니다.
운영 환경
검증 패턴
왼쪽은 스케일을 그대로, 오른쪽은 Z 스케일을 -1로 설정한 것입니다.
Z 스케일을 1 -> -1 로 애니메이션 시키고 있습니다.
스케일이 마이너스가 되었을 때에, 폴리곤이 반전하고 있네요.
다각형이 반전되지 않는 경우의 이미지
※ 어디까지나 이미지를 위해 만든 이미지입니다. 실제로는 이렇게 되지 않습니다.
오른쪽의 모델은 쉐이더로 프런트 페이스 컬링으로 하고 있습니다.
가설
조사 전에는 다음과 같이 예상했습니다.
가설 1. 다각형을 반전시킨 다른 모델을 준비해, 스케일이 부의 모델에 사용하고 있다
이 경우 모델에 대한 그래픽 메모리 소비가 증가하지만 배치 대상이됩니다.
가설 2. 프론트 페이스 컬링으로 전환 중
렌더링 전에 GL.invertCulling(true)
를 호출하는 이미지입니다.
배치 대상외가 될 정도가 단점입니까.
조사 결과
문서를 찾을 수 없어서 모르겠습니다!
하지만, 하나 신경이 쓰이는 움직임이 있었습니다.
Frame Debugger에서 "검증 패턴"을 확인한 결과 다음과 같은 메시지가 표시되었습니다.
X, Y, Z 스케일 중 홀수개가 마이너스인 경우는, 배치 대상외가 되는 것 같네요.
그래서 가설 2가 가까울까라고 생각했습니다.
오래된 자료입니다만 여기 에도 "What breaks batching"안에 "Odd Negative Scaling"라고 있네요.
결론
자세한 내용은 알 수 없지만 Unity는 Odd Negative Scaling 객체의 경우 다각형을 반전시킵니다.
여담, UE4의 경우
그럼 UE4는 어떻게 되어 있는 것일까? 라는 것으로 조사해 보았습니다.
언리얼 에디터 4.24.3에서 확인했습니다.
Actor(오브젝트)를 Odd Negative Scaling로 한 경우
반전했습니다.
부모를 Odd Negative Scaling로 설정한 경우
반전하지 않았습니다.
부모의 스케일은 컬링에 영향을 미치지 않는 사양일지도 모릅니다.
잡감
잘 생각해 보면, 스케일이 부가되었을 때에 폴리곤을 반전시킨 쪽이 여러가지 편리한 생각은 했습니다.
폴리곤을 반전시키지 않으면 모델의 외형이 이상해지므로, 반전 모델용으로 전용 머티리얼이 필요하게 되는 등 고려하는 것도 많아질 것 같네요.
그리고, 기사를 쓰고 있어 「폴리곤의 반전」이 게슈타르트 붕괴할 것 같게 되었습니다. . .
Reference
이 문제에 관하여(Unity에서 오브젝트의 스케일을 마이너스로 하면 폴리곤이 반전하는 것 같아서 조사해 보았다 (Odd Negative Scaling)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsgcpp/items/cc791ff7ef4e526a50ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
조사 전에는 다음과 같이 예상했습니다.
가설 1. 다각형을 반전시킨 다른 모델을 준비해, 스케일이 부의 모델에 사용하고 있다
이 경우 모델에 대한 그래픽 메모리 소비가 증가하지만 배치 대상이됩니다.
가설 2. 프론트 페이스 컬링으로 전환 중
렌더링 전에
GL.invertCulling(true)
를 호출하는 이미지입니다.배치 대상외가 될 정도가 단점입니까.
조사 결과
문서를 찾을 수 없어서 모르겠습니다!
하지만, 하나 신경이 쓰이는 움직임이 있었습니다.
Frame Debugger에서 "검증 패턴"을 확인한 결과 다음과 같은 메시지가 표시되었습니다.
X, Y, Z 스케일 중 홀수개가 마이너스인 경우는, 배치 대상외가 되는 것 같네요.
그래서 가설 2가 가까울까라고 생각했습니다.
오래된 자료입니다만 여기 에도 "What breaks batching"안에 "Odd Negative Scaling"라고 있네요.
결론
자세한 내용은 알 수 없지만 Unity는 Odd Negative Scaling 객체의 경우 다각형을 반전시킵니다.
여담, UE4의 경우
그럼 UE4는 어떻게 되어 있는 것일까? 라는 것으로 조사해 보았습니다.
언리얼 에디터 4.24.3에서 확인했습니다.
Actor(오브젝트)를 Odd Negative Scaling로 한 경우
반전했습니다.
부모를 Odd Negative Scaling로 설정한 경우
반전하지 않았습니다.
부모의 스케일은 컬링에 영향을 미치지 않는 사양일지도 모릅니다.
잡감
잘 생각해 보면, 스케일이 부가되었을 때에 폴리곤을 반전시킨 쪽이 여러가지 편리한 생각은 했습니다.
폴리곤을 반전시키지 않으면 모델의 외형이 이상해지므로, 반전 모델용으로 전용 머티리얼이 필요하게 되는 등 고려하는 것도 많아질 것 같네요.
그리고, 기사를 쓰고 있어 「폴리곤의 반전」이 게슈타르트 붕괴할 것 같게 되었습니다. . .
Reference
이 문제에 관하여(Unity에서 오브젝트의 스케일을 마이너스로 하면 폴리곤이 반전하는 것 같아서 조사해 보았다 (Odd Negative Scaling)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsgcpp/items/cc791ff7ef4e526a50ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
자세한 내용은 알 수 없지만 Unity는 Odd Negative Scaling 객체의 경우 다각형을 반전시킵니다.
여담, UE4의 경우
그럼 UE4는 어떻게 되어 있는 것일까? 라는 것으로 조사해 보았습니다.
언리얼 에디터 4.24.3에서 확인했습니다.
Actor(오브젝트)를 Odd Negative Scaling로 한 경우
반전했습니다.
부모를 Odd Negative Scaling로 설정한 경우
반전하지 않았습니다.
부모의 스케일은 컬링에 영향을 미치지 않는 사양일지도 모릅니다.
잡감
잘 생각해 보면, 스케일이 부가되었을 때에 폴리곤을 반전시킨 쪽이 여러가지 편리한 생각은 했습니다.
폴리곤을 반전시키지 않으면 모델의 외형이 이상해지므로, 반전 모델용으로 전용 머티리얼이 필요하게 되는 등 고려하는 것도 많아질 것 같네요.
그리고, 기사를 쓰고 있어 「폴리곤의 반전」이 게슈타르트 붕괴할 것 같게 되었습니다. . .
Reference
이 문제에 관하여(Unity에서 오브젝트의 스케일을 마이너스로 하면 폴리곤이 반전하는 것 같아서 조사해 보았다 (Odd Negative Scaling)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsgcpp/items/cc791ff7ef4e526a50ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
잘 생각해 보면, 스케일이 부가되었을 때에 폴리곤을 반전시킨 쪽이 여러가지 편리한 생각은 했습니다.
폴리곤을 반전시키지 않으면 모델의 외형이 이상해지므로, 반전 모델용으로 전용 머티리얼이 필요하게 되는 등 고려하는 것도 많아질 것 같네요.
그리고, 기사를 쓰고 있어 「폴리곤의 반전」이 게슈타르트 붕괴할 것 같게 되었습니다. . .
Reference
이 문제에 관하여(Unity에서 오브젝트의 스케일을 마이너스로 하면 폴리곤이 반전하는 것 같아서 조사해 보았다 (Odd Negative Scaling)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsgcpp/items/cc791ff7ef4e526a50ed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)