【Java】곱하기 색·스크린색

[마지막 갱신일: 2022/10/06]

Cubism SDK for Java는 현재 알파 버전입니다. beta판이나 정식판으로 사양이 바뀌는 경우도 있습니다.

모델에 곱하기 색·스크린색을 적용함으로써 색조를 실시간으로 변화시킬 수 있습니다.
Cubism Editor상에서 설정한 곱하기 색·스크린색은 Cubism4.2 이후의 Cubism Java Framework를 이용하는 것으로, 특히 추가의 코딩을 하지 않고 적용됩니다.
Cubism Editor상에서의 곱하기 색·스크린색의 설정은 Editor 매뉴얼의 「곱하기 색・스크린색」을 참조해 주십시오.
또한 필요에 따라 코딩을 함으로써 SDK에서 곱하기 색·스크린색을 조작하여 다음과 같은 동작도 가능합니다.

  • 인터랙티브에 곱하기 색·스크린색을 적용한다
  • Cubism Editor에서 설정하지 않은 곱하기 색 · 스크린색 적용
  • Cubism Editor에서 설정한 곱하기 색 및 스크린색을 비활성화

이후는 그 순서의 설명이 됩니다.

 

처리 절차

이하의 흐름으로 처리를 실시합니다.

  • 곱하기 색·스크린색의 덮어쓰기 플래그 설정
  • 곱하기 색·스크린색의 설정
  • 모델 그리기

 

곱하기 색·스크린색의 덮어쓰기 플래그 설정

우선은 곱하기 색·스크린색의 덧쓰기 플래그를 true 로 설정합니다. 기본적으로 false입니다.

public void setOverwriteFlagForModelMultiplyColors(boolean value) 및 public voidsetOverwriteFlagForModelScreenColors(boolean value)는 Framework의 CubismModel 클래스에 정의되고 있습니다.
Cubism SDK for Java(alpha판)의 샘플 프로젝트에서는 모델을 조작하기 위해서 CubismModel 를 기본 클래스로 한 LAppModel 클래스를 정의하고 있어 상기 코드의 model 는 LAppModel 클래스의 인스턴스입니다.
LAppModel 클래스로부터 CubismModel 클래스의 메소드를 호출하기 위해서 getModel() 를 중개하고 있습니다.

 

곱하기 색·스크린색의 설정

곱하기 색과 스크린색을 정의하고 모델로 설정합니다.
아래의 코드에서는 모든 Drawable에 대해 곱하기 색에 빨간색, 스크린색에 녹색을 설정하는 경우의 설정치입니다.
설정 색상은 RGBA에서 사용할 수 있습니다.

 

곱하기 색·스크린색 적용 전

 

곱하기 색에 빨간색, 스크린색에 녹색을 적용한 후

 

모델의 DrawableCount에서 루프 처리를 하는 것으로, 매 프레임에 모든 Drawable에 대해 곱셈색·스크린색의 처리를 실시하는 형태가 됩니다.

Tips

이번에는 모든 Drawable에 동일한 곱하기 색·스크린색을 설정하고 있습니다만, Drawable의 인덱스마다 다른 곱하기 색·스크린색을 설정할 수도 있습니다.
인수의 i는 Drawable의 인덱스입니다.

Cubism Editor에서 설정한 곱하기 색과 스크린색을 비활성화하려면 곱하기 색으로 0, 스크린색으로 1을 설정합니다. 설정한 경우는 각각의 초기치가 됩니다.

 

 

모델 그리기

Cubism SDK for Java(alpha판)의 샘플 프로젝트에서 원래 하고 있는 모델의 draw() 함수를 호출하는 것으로, Cubism JavaFramework 내부의 렌더링 처리에 의해 곱셈색·스크린색을 포함한 모델이 렌더링 됩니다.

 

기타 관련 함수

곱하기 색·스크린색의 덧쓰기 플래그 취득

true로 설정하면 SDK에서 설정한 색 정보를 우선하고 false로 설정하면 모델의 색 정보를 우선합니다.

 

또한 각 Drawable에 대해 별도의 덮어쓰기 플래그를 가져올 수도 있습니다.

 

 

곱하기 색·스크린색의 설정

위에서는 CubismRenderer.CubismTextureColor 를 인수로 한 설정 방법을 기재했습니다만, RGBA를 직접 설정할 수 있는 메소드도 있습니다. (입력값 0.0~1.0)

 

 

곱하기 색·스크린색 취득

각 Drawable의 곱하기 색·스크린색을 CubismTextureColor형으로 취득합니다.

인수는 Drawable의 인덱스가 됩니다.

 

Cubism Java Framework (alpha 버전)의 내부 처리

곱하기 색·스크린색을 표현하기 위한 Framework의 내부 처리입니다.
이하의 흐름으로 처리를 실시합니다.

  1. Cubism Core Java로부터 모델의 곱하기 색·스크린색을 취득
  2. 취득한 곱하기 색·스크린색을 덧쓰기 플래그로 판별한다
  3. 취득한 곱셈색·스크린색을 쉐이더 프로그램으로 설정한다
  4. 프래그먼트 쉐이더에 텍스처 컬러 계산시에 곱셈색·스크린색을 더한다

Tips

Cubism Core Java로부터 모델의 곱하기 색·스크린색을 RGBA로 취득합니다만, A(투명도)는 Cubism Editor로 설정되지 않습니다.
따라서, 곱셈색·스크린색의 계산에는 이용되지 않습니다.

 

Cubism Core Java로부터 모델의 곱하기 색·스크린색을 취득

Cubism Core Java내의 CubismModel 클래스의 API를 이용해, 모델로부터 곱셈색·스크린색의 모든 Drawable가 포함되는 배열을 취득합니다.
그 배열의 지정된 인덱스에 액세스 해, 그 값을 돌려줍니다.

 

Core Java 에서는 moc3 파일을 로드했을 때에 모든 Drawable 의 정보가 취득되어 멤버 배열에 보관 유지됩니다.
SDK측에서 곱하기 색·스크린색을 설정하는 경우는 setOverwriteFlagForModelMultiplyColors() 및 setOverwriteFlagForScreenColors()에 true를 설정한 다음, setMultiplyColor() 및 setScreenColor()로 멤버 배열을 덧쓰기합니다.
특정의 Drawable에 대해서 곱셈색·스크린색을 설정하는 경우는 setOverwriteFlagForDrawableMultiplyColors() 및 setOverwriteFlagForDrawableScreenColors()에 true를 설정해, 같은 조작을 실시합니다.

Tips

상기의 처리를 실시하면 그 이후의 Drawable의 색이 모두 덧쓰기 색 정보로 설정됩니다.
모델 본래의 설정색을 다시 사용하고 싶은 경우는 별도 처리를 추가할 필요가 있습니다.

© 2010 - 2022 Live2D Inc.