AnyPortrait > 업데이트 노트 > 1.6.0
업데이트 노트 | 1.6.0
(2025년 4월 30일 빌드)
개선된 기능
마스크
- 마스크 기능이 크게 개선되었습니다.
- 클리핑 마스크의 제약을 벗어나 자유롭게 마스크를 생성하고 전달할 수 있습니다.
- 여러개의 메시들이 하나의 렌더 텍스쳐를 대상으로 마스크를 생성할 수 있습니다.
- 마스크로서 렌더 텍스쳐와 사용자 정의 프로퍼티를 대상 메시로 전달할 수 있습니다.
- 여러개의 마스크들을 조합하는 기능이 추가되었습니다.
- 마스크 기능을 응용하여, 일반 쉐이더로 마스크를 생성하고 투과 효과(See-Through)를 구현할 수 있습니다.
- 렌더링이 되지 않고 마스크 제공 역할만 수행하는 “마스크 전용 메시(Mask Only Mesh)” 옵션이 추가되었습니다.
- 화면의 크기에 따라 마스크 렌더 텍스쳐의 크기가 결정되는 옵션이 추가되었습니다.
- 마스크 기능이 개선됨에 따라 “v16 재질 프리셋”이 추가되었습니다. 기존의 재질은 “Legacy”로 분류됩니다. (링크)
메뉴얼 : 마스크, 마스크와 커스텀 쉐이더, 마스크 조합하기, 마스크 체인, 마스크 전용 메시, 투과(See-Through) 효과
에디터 도킹
- AnyPortrait 에디터를 유니티 에디터 레이아웃 내에 도킹한 상태로 실행하는 것이 가능합니다.
- 에디터가 도킹된 상태에서 “최대화(Maximize)”를 했을 때 에디터가 종료되는 문제가 수정되었습니다.
- 에디터가 도킹된 상태에서 다른 씬으로 전환할 때 에러가 발생되는 문제가 수정되었습니다.
애니메이션 관련 스크립트
- 애니메이션의 길이를 확인할 수 있도록, apAnimPlayData에 “TimeLength”와 “Duration” 프로퍼티가 추가되고, apPortrait에 “GetAnimationTimeLength”와 “GetAnimationDuration” 함수가 추가되었습니다.
- 애니메이션의 루프 여부를 확인할 수 있도록, apAnimPlayData에 “IsLoop” 프로퍼티가 추가되고, apPortrait에 “IsAnimationLoop” 함수가 추가되었습니다.
- 재생되는 애니메이션이 종료되거나 또는 마지막 프레임 도달했음을 감지하기 위한 “OnAnimationEnded” 이벤트가 apPortrait에 추가되었습니다.
메뉴얼 : 애니메이션 스크립트
Bake 옵션 유효성 검사
- “렌더 파이프라인”, “색상 공간”, “카메라 개수”와 같은 프로젝트 환경에 맞추어서 설정해야하는 주요 Bake 옵션들의 유효성을 자동으로 검사하는 기능이 추가되었습니다.
- 해당 기능이 Bake 다이얼로그에 추가되었으며, 이에 따라 일부 UI가 Setting 탭으로 이동되었습니다.
메뉴얼 : Bake 유효성 검사
- “재질 라이브러리”에서 AnyPortrait 내부에서 사용되는 “예약된 프로퍼티(Reserved Property)”들이 설정된 쉐이더 에셋에 따라 자동으로 결정되도록 개선되었습니다.
- “재질 라이브러리”에 “설명(Description)” 항목이 추가되었습니다.
- 메시 편집 화면에서 “버텍스 대칭 이동” 기능이 추가되었습니다. (링크)
- 메시 편집 화면에서 미러 편집시의 축을 피벗(Pivot)으로 이동시키는 기능이 추가되었습니다.
- 어셈블리 정의(asmdef) 파일을 추가하여 AnyPortrait 스크립트들이 별도로 컴파일되도록 변경되었습니다.
수정된 문제점
- AnyPortrait 에디터가 너무 작은 경우 렌더 텍스쳐와 관련된 에러가 발생하는 문제가 수정되었습니다.
- 화면 캡쳐시 배경 색상이 반투명한 경우, RGB 채널의 값이 Alpha 값에 영향을 받는 문제가 수정되었습니다.
- 애니메이션의 타임라인 등을 삭제한 후 실행 취소시, 키프레임의 데이터가 초기화되고 복원 불가 상태가 되는 문제가 수정되었습니다.
- 애니메이션의 타임라인 등을 삭제한 후 실행 취소시, 기즈모가 동작하지 않는 문제가 수정되었습니다.
- 메시 편집 화면에서 버텍스를 추가한 후 실행 취소 시, 기존의 버텍스들을 연결하는 선들이 모두 사라지는 문제가 수정되었습니다.
- Bake나 새로운 캐릭터를 생성한 후 정상적으로 실행 취소가 되지 않는 문제가 수정되었습니다.
- 유니티 2022 또는 이전 버전에서 작업 공간 좌측 상단에 이상한 이미지가 출력되는 문제가 수정되었습니다.
- 유니티 6에서 URP로 실행시, 커맨드 버퍼와 관련된 에러 로그가 발생하는 문제가 수정되었습니다.
- 유니티 6에서 타임라인 추가하기, 모디파이어 추가하기 등과 같은 일부 리스트 UI가 어색하게 출력되는 문제가 수정되었습니다.
- 유니티 2023 또는 이후 버전에서 메시의 버텍스를 복사하여 붙여넣는 UI가 다소 작게 출력되는 문제가 수정되었습니다.
- “Color Only (Controller)” 모디파이어를 편집할 때, 에디터 설정에 따라서 새로운 키(Key)를 추가할 때 객체가 보여져야하는 상태에서도 초기 Alpha가 0이 되어버리는 문제가 수정되었습니다.
- 리깅 편집 화면에서 브러시 아이콘이 화면 확대/축소에 따라 같이 확대/축소되는 문제가 수정되었습니다.
- Rigging, Physics 모디파이어에 등록된 메시를 삭제한 후 바로 에디터를 재시작하면, 에러로 인하여 모디파이어 편집이 불가한 문제가 수정되었습니다.
개발자 코멘트
- 마스크 기능 추가에 따라 커스텀 쉐이더 메뉴얼이 갱신되었습니다. (링크)
- 메뉴얼의 페이지 순서 및 분류가 변경되었습니다.
- Linear 색상 공간에 대한 메뉴얼이 수정되었습니다. (링크)
- 이미지 품질 설정에 대한 메뉴얼이 수정되었습니다. (링크)
- VR 설정과 관련하여 “Single Pass에 대한 경고 문구”가 메뉴얼에 추가되었습니다. (링크)
- PSD 파일 다시 가져오기 메뉴얼에 메시 그룹 설정과 관련된 주의 내용이 추가되었습니다. (링크)
이번 업데이트의 핵심 변경점은 “마스크” 기능입니다.
기존의 “클리핑 마스크”의 제약을 해결하여 사용자가 유연하게 마스크 데이터를 생성하고 전달하는 것을 목표로 개발되었습니다.
작업 초기의 예상과 달리, 이 기능을 구현하기 위해서는 AnyPortrait의 렌더링과 관련된 거의 모든 코드를 다시 검토하고 수정해야 했습니다.
이 과정에서 너무 많은 시간이 소요되었습니다.
기다려주신 분들에게 사과의 말씀을 드립니다.
이 버전에서는 “Bake 유효성 검사” 기능도 추가되었습니다.
유니티 6가 배포되면서, 이전과 다르게 기본 프로젝트 템플릿의 렌더 파이프라인이 “URP”로 변경이 되었습니다.
이로 인하여 유니티 6로 유니티를 입문하신 분들은 렌더링 이슈가 발생하면 원인을 찾지 못하고 크게 당황하여 문의를 주시곤 했습니다.
호환성 문제로 “URP”는 선택 사양으로만 제공되어야 했기에, 이 문제를 해결하고자 Bake 옵션의 유효성을 검사하여 안내하는 방식을 도입하였습니다.
유효성 검사의 대상이 되는 항목은 사용자들의 피드백을 기반으로 결정되었습니다.
이 기능이 입문자 분들에게 도움이 되었기를 희망합니다.
이외에도 다양한 이슈들 중, “실행 취소”시 데이터가 복구 불가 상태가 되는 치명적인 문제가 수정되었습니다.
이 문제는 리스트 타입의 데이터가 “실행 취소”가 되어 길이가 바뀌면 다른 메모리 주소에 데이터를 복제해는 유니티의 특성을 저희가 몰랐던 것이 원인입니다.
이 특성을 확인한 후, “실행 취소”의 코드의 안정성을 강화하였습니다.
다만, 이로 인하여 “실행 취소”의 성능이 다소 저하되었을 것으로 판단됩니다.
이 이슈는 지속적으로 관찰하여 좋은 방안을 모색해보겠습니다.
이 버전을 개발하는데 좋은 의견을 주셨던 많은 분들에게 감사의 말씀을 드립니다.
앞으로도 여러분의 창작 활동에 도움이 되도록 계속해서 툴을 개선해나가겠습니다.
감사합니다.