Cubism 5.3 기능의 SDK 호환성 및 제한 정보
업데이트: 2023/08/17
이 페이지에는 베타 버전에 관한 설명이 포함되어 있습니다.
개요
이 섹션에서는 Cubism 5의 SDK 호환성에 대해 다음 내용을 설명합니다.
- 5.3 SDK에서 어떤 변경이 이루어졌는가?
- 기존의 5 SDK와의 호환성에 대해 어떠한 주의점이나 변경점이 있는가.
명칭에 대해
- 5 SDK는 Cubism 5 SDK R4 이전 SDK를 의미합니다.
- 5.3 SDK는 Cubism 5 SDK R5 beta1 이후의 SDK를 의미합니다.
5 Editor와 5 SDK의 새로운 기능 대응표
5 Editor의 새로운 기능 | SDK 대응 [대응 시기] |
---|---|
파라미터 컨트롤러 | × 비대응(순차 대응 예정) |
반전된 형상의 붙여넣기 | Cubism Editor의 기능이므로 SDK는 지원하지 않음 |
루프 편집 보조 | Cubism Editor의 기능이므로 SDK는 지원하지 않음 |
deformer 모양 복원 | Cubism Editor의 기능이므로 SDK는 지원하지 않음 |
블렌드 모드 | △ 대응(Native의 일부 플랫폼 및 Web, Unity만 beta1에서) |
오프 스크린 그리기 | △ 대응(Native의 일부 플랫폼 및 Web, Unity만 beta1에서) |
브러시 도구 강화 | Cubism Editor의 기능이므로 SDK는 지원하지 않음 |
워프 디포머의 리사이즈 보조 | Cubism Editor의 기능이므로 SDK는 지원하지 않음 |
동영상 출력 설정에 WebM 형식 추가 | Cubism Editor의 기능이므로 SDK는 지원하지 않음 |
호환성에 영향을 미치는 수정
- Renderer 관련 처리의 클래스 구조 변경(Unity 이외)
- Cubism 5.3의 새로운 기능을 이용한 모델 그리기 방법 정보(Unity)
- Cubism Core API 변경
호환성 정보
후방 호환성 정보
블렌드 모드 오프 스크린 그리기
새로운 기능이기 때문에 호환성에 대한 설명은 없습니다.
Renderer 관련 처리의 클래스 구조 변경(Unity 제외)
for Native, for Web에서 Renderer 관련 처리의 보수성 향상을 위해 Renderer 관련 클래스의 구조 및 일부 함수를 변경했습니다.
프레임워크만 바꾸면 빌드 오류가 발생합니다.
특정 수정사항은 “Renderer 관련 처리의 클래스 구조 변경”에서 설명합니다.
Cubism 5.3의 새로운 기능을 이용한 모델 그리기 방법 정보(Unity)
Cubism 5.3에서 추가된 블렌드 모드 또는 오프스크린 그리기를 사용하는 모델은 Cubism 5.2 이전 기능만을 사용하는 모델과는 다른 새로운 그리기 방식으로 그려집니다.
구체적인 수정 내용은 “Cubism 5.3의 새로운 기능을 이용한 모델 그리기 방법에 대해 (Unity)”에서 설명합니다.
기존 5 SDK의 업데이트 정보
5.3 SDK로 업데이트를 할 때는 평소와 다르지 않고 파일을 모두 바꾸는 것으로 문제없이 동작합니다.
Native 및 Web의 경우 SDK Framework의 일부 클래스의 이름을 바꾸기 때문에 호출자를 수정해야 합니다.
기존 5 SDK의 전방 호환성 정보
5.3 용으로 내보낸 MOC 파일은 읽을 수 없으므로 양해 바랍니다.
5.3 용으로 내보낸 MOC 파일을 읽으려고하면 csmReviveMocInPlace 및 csmMocConsistency 함수를 호출 할 때 다음 오류가 출력됩니다.
[CSM] [E]csmReviveMocInPlace is failed. The Core unsupport later than moc3 ver:[5]. This moc3 ver is [6]. [CSM][E]Inconsistent MOC3.
Renderer 관련 처리 클래스 구조 변경
for Native, for Web에서 Renderer 관련 처리의 보수성 향상을 위해 Renderer 관련 클래스의 구조 및 일부 함수를 변경했습니다.
구체적인 변경 내용은 다음과 같습니다.
- CubismOffscreenSurface_xx 클래스를 CubismRenderTarget_xx 클래스로 이름 바꾸기 (Native)
- CubismRenderTarget_xx 클래스의 기본 클래스를 새로 만들고 공통 처리 이동 (Native)
- CubismRenderer 클래스의 렌더링 처리 구조 변경 (Native, Web)
- 블렌드 방식의 취득 방법 변경
만일 고객이 SDK의 커스터마이즈를 실시한 관계로 일반적인 업데이트가 어려운 경우에는 아래의 변경 내용을 참조해 주세요.
CubismOffscreenSurface_xx 클래스를 CubismRenderTarget_xx 클래스로 이름 바꾸기(Native)
CubismOffscreenSurface_xx 클래스를 CubismRenderTarget_xx 클래스로 명칭 변경하였습니다.
신규 기능에 오프 스크린 묘화가 추가된 것에 의한 프로그램내의 명명의 경합을 피하기 위한 대응이 됩니다.
이 변경으로 SDK Framework 외부에서 CubismOffscreenSurface_xx 클래스를 호출하는 부분을 수정해야 합니다.
RenderTarget 클래스의 기본 클래스를 새로 만들고 공통 처리 이동(Native)
CubismRenderTarget_xx 클래스 파일에서 기본 클래스 CubismRenderTarget 클래스를 새로 만들고 공통화 가능한 처리를 이동했습니다.
이 변경으로 CubismRenderTarget_xx 클래스 파일의 가독성과 서비스 가능성이 향상되었습니다.
CubismRenderer 클래스의 렌더링 처리 구조 변경 (Native / Web)
5 SDK까지는 Drawable만이었던 묘화 오브젝트에 5.3 SDK로부터 Offscreen가 추가되었으므로, CubismRenderer_xx 클래스내의 묘화 처리의 구조를 대폭 변경했습니다.
또 CubismRenderer_xx 클래스의 생성자에 윈도우 사이즈의 Width와 Height를 인도하는 사양이 되었습니다.
이에 따라 CubismUserModel 클래스의 CreateRenderer 함수에 Width와 Height를 전달해야 합니다.
블렌드 방법을 얻는 방법 변경
5.3 SDK 이후 블렌드 방식은 블렌드 모드에 내장되어 취득 방법이 변경되어 csmGetDrawableConstantFlags 로부터 csmGetDrawableBlendModes 가 되었습니다.
이 변경으로 5.3 SDK의 블렌드 모드에 대해서도 다룰 수 있습니다.
Cubism 5.3의 새로운 기능을 이용한 모델 그리기 방법 정보(Unity)
블렌드 모드 또는 오프스크린 그리기를 사용하는 모델 그리기 방법
블렌드 모드 또는 오프 스크린 드로잉을 이용한 모델은 한 번 모든 드로잉 객체가 RenderTexture에 그려지고 결국 한 장의 플레인 위에 그려집니다.
블렌드 모드 또는 오프 스크린 기능을 사용하지 않는 모델은 기존의 그리기 방식으로 그려집니다.
기존 그리기 방식과 Cubism 5.3의 새로운 기능을 이용한 모델 그리기 방식의 차이
기존의 드로잉 방식
- 각 Drawable이 Unity의 Mesh Filter 컴포넌트를 이용하여, 각각이 Unity 객체로서 렌더링 된다.
- 각 Drawable 객체는 BackToFrontZ 등의 Transform.localPosition.z를 이용한 정렬이 가능하다.
- 마스크 묘화는 전처리 마스크 방식으로 행해진 다.
새로운 기능을 이용한 모델 그리기 방식
- 마스크 묘화는 고화질 마스크 방식으로 수행된다.
- 각 묘화 오브젝트(Drawable·Offscreen)는 CubismRenderer.DrawObject()내에서 묘화 처리를 행한다.
- 각 드로잉 객체는 한 장의 RenderTexture에 그려진 후 Plane에 RenderTexture의 그리기를 적용하는 형태로 그려진다.
- 각 드로잉 객체는 BackToFrontOrder 또는 FrontToBackOrder로 정렬됩니다.
새로운 기능을 이용한 모델 그리기 방식에서 발생하는 영향
새로운 기능을 이용한 모델 그리기 방식에서는 “모델의 Drawable간에 다른 스프라이트를 사이에 둔다”에 기재가 있는 것처럼, MeshRenderer.sortingOrder나 Transform.localPosition.z등을 이용해 Unity 오브젝트를 그리기.
이러한 영향을 억제하기 위한 확장 기능을 향후 구현 예정입니다.
Cubism Core API 변경
csmGetDrawableRenderOrders 함수를 제거하고 csmGetRenderOrders 함수를 새로 추가했습니다.
자세한 내용은 Live2D Cubism Core API 참조를 참조하십시오.
부하 정보
블렌드 모드
블렌드 모드의 부하에 대해, 블렌드 모드를 1장에서도 사용하면 모델 전체에 극히 약간의 부하가 발생합니다. 또한 사용 매수마다 부하가 증가합니다.
그 부하에 대해서는, 사용하고 있는 draw API의 종류・버젼에 따라서 다릅니다. 예를 들어, OpenGL의 경우 glTextureBarrier를 사용할 수 있는 환경이면 사용할 수 없는 환경보다 부하가 줄어듭니다.
오프 스크린 그리기
오프스크린 드로잉의 로드에 대해 하나씩 사용할 때마다 화면 크기의 오프스크린을 생성하기 때문에 로드가 발생합니다.
또한 오프 스크린 드로잉을 하나라도 사용하고 있는 경우, 모델 구조의 해석 처리를 모델 로드시에 실시하기 때문에, 모델 로드 속도가 대폭 저하합니다.
제한사항
Cubism SDK 일반
Cubism SDK의 곱셈 색/스크린 색상 덮어쓰기 기능에서 오프스크린으로 설정된 객체는 파트의 부모-자식 계층 구조의 부모에서 전파되는 곱셈 색 및 화면 색을 반영하지 않습니다. 또한 Cubism 5.3에서 추가된 새로운 드로잉 방식을 이용하는 모델은 자동으로 고화질 마스크 설정이 적용됩니다.
Native
beta1에서는 OpenGL의 Windows / macOS / iOS / Android 만 Cubism5.3 기능을 지원합니다. Cubism 5 SDK R5 beta1 패키지에 존재하는 상기 이외의 플랫폼은 동봉된 Cubism Core를 지원하지 않으므로 제대로 작동하지 않을 수 있습니다. 대응은 beta2 이후를 예정하고 있습니다.
웹
특히 없음.
Unity
위에서 설명한 대로 Cubism 5.3에서 모델이 추가된 새로운 드로잉 방법을 사용하는 경우 고해상도 마스크 설정이 적용됩니다. 따라서 Cubism SDK for Unity에서 새로운 드로잉 방식을 사용하는 모델은 모든 모델에서 공유하는 GlobalMaskTexture를 사용하지 않으며, 기본적으로 가져올 때 각 모델에서 생성되는 CubismMaskTexture의 자산을 이용하며 마스크 수의 제한을 받지 않습니다.
또한 다음과 같은 제한이 있습니다.
- 히트 영역이 제대로 작동하지 않음
- 모델 캔버스의 범위를 벗어나는 것은 그려지지 않고 잘립니다
또한 Cubism 5.3 이상 버전에서 내보낸 모델에서도 새 드로잉 방법을 사용하지 않는 경우 기존 방법이 사용됩니다. 새로운 드로잉 방식을 사용하지 않는 경우, 상기의 제한의 영향은 없습니다.
기타
상기 이외의 Cubism SDK는 Cubism5.3 기능을 지원하지 않습니다. 대응은 순차적으로 실시할 예정입니다.