Live 2D의 투명도 및 텍스쳐 색상 변경

15796 단어 Live2DUnity

개발 환경


・Live 2DSDK_Unity_2.1.00_beta_8_jp
・Unity 5.0.1f1

UCL


이 기사는'유엔 허가증'에 근거해 공개됐다.

텍스쳐 색상 수정하기


라이브 2D 프로그래밍부에서 "텍스쳐 색상을 바꿀 수 있어요!"그래서 방법을 총결해 봤어요.
 →  Live 2D 프로그래밍의 활동 보고서
On RenderObject()에 다음 코드를 추가하면 됩니다.live2DModel.setTextureColor (テクスチャ番号[0,1...], Red[0.0~1.0f], Green[0.0~1.0f], Blue[0.0~1.0f]);Live 2D Unity SDK의 Simple 프로젝트를 맞춤형으로 제작하여 Unity 모델을 바꾸어 보았습니다.
(sample\Simple\Assets\Scene\Sample.unity)
실행 후 슬라이더를 만지면 이런 느낌이에요.

하지만 눈 부분은 SDK2다.아마도 1부터 시작하는 새로운 기능인'폭 제한 마스크'를 사용했기 때문에 색상 변화가 없었을 거야...

눈을 바꾸고 싶을 경우 Live 2D의 거리 측정 모드를 L2D로 설정합니다.RENDER_DRAW_MESH로 해결할 수 있어요!
여러 Live 2D 모델의 그리기 순서 제어하기의 "2. 드로잉 모드 수정 및 Z 값으로 제어"

무늬에 따라 색깔을 바꿀 수 있기 때문에 장면에 맞는 좋은 그림을 만들 수 있다.
2015/09/17 스포츠투데이
Live2D Unity SDK2.1부터 제한된 마스크를 사용하는 경우live2DModel.업데이트 타이밍 변경

텍스쳐 색상의 소스 코드 변경


SimpleModel.cs
using UnityEngine;
using System;
using System.Collections;
using live2d;

[ExecuteInEditMode]
public class SimpleModel : MonoBehaviour 
{
    public TextAsset mocFile ;
    public Texture2D[] textureFiles ;
    [Range(0.0f, 1.0f)]
    public float Color_Red = 1.0f;  // Add
    [Range(0.0f, 1.0f)]
    public float Color_Green = 1.0f;// Add
    [Range(0.0f, 1.0f)]
    public float Color_Blue = 1.0f; // Add

    private Live2DModelUnity live2DModel;
    private Matrix4x4 live2DCanvasPos;

    void Start () 
    {
        Live2D.init();

        live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
        for (int i = 0; i < textureFiles.Length; i++)
        {
            live2DModel.setTexture(i, textureFiles[i]);
        }

        float modelWidth = live2DModel.getCanvasWidth();
        live2DCanvasPos = Matrix4x4.Ortho(0, modelWidth, modelWidth, 0, -50.0f, 50.0f);
    }


    void OnRenderObject()
    {
        if (live2DModel == null) return;
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            live2DModel.draw();
            return;
        }

        // Add Start
        for (int i = 0; i < textureFiles.Length; i++)
        {
            live2DModel.setTextureColor(i, Color_Red, Color_Green, Color_Blue);
        }
        // Add End

        double t = (UtSystem.getUserTimeMSec()/1000.0) * 2 * Math.PI  ;
        live2DModel.setParamFloat( "PARAM_ANGLE_X" , (float) (30 * Math.Sin( t/3.0 )) ) ;

        live2DModel.update();
        live2DModel.draw();
    }
}
2016/03/16
다음 코드는 모형을 그릴 때 전체에 곱하는 색을 설정할 수 있습니다. (파라미터는 A, R, G, B 순서에 따라)
live2DModel.getDrawParam().setBaseColor(1.0f, 1.0f, 1.0f, 1.0f);

투명도 변경


Live 2D API 참조 보고 부품의 투명도를 바꿀 수 있기 때문에 아래 코드로 시험해 봤습니다.
SimpleModel.cs
public class SimpleModel : MonoBehaviour
{
    .
    [Range(0.0f, 1.0f)]
    public float modelOpacity = 1.0f; // 透明度の調整
    .

    void OnRenderObject(){
        .
        .
        // 全てのパーツの透明度調整
        var partList = live2DModel.getModelImpl().getPartsDataList();
        foreach (var item in partList) {
            live2DModel.setPartsOpacity(item.getPartsDataID().ToString(), modelOpacity);
        }
        .
        .
    }
}
다만, 이렇게 하면 부품이 겹치는 부분을 볼 수 있다

렌더링을 통해 투명도 변경


라이브 2D 매뉴얼에는 오피스 텍스터를 통해 반투명이 가능하다고 적혀 있다.
  · Q.Live 2D 모델은 반투명으로 표시됩니까?
  · 오프라인으로 반투명 제거
RenderTexture는 Unity 5에서 Free에서도 사용할 수 있으며 방금 Unity 이미지의 수면도 RenderTexture입니다.
([Assiets]-[Import Package]-[Enviroment]에 Water Pribu를 추가하면 수면을 간단하게 형성할 수 있다)
• Unity Doocumentation - 텍스쳐 렌더링
· RenderTexture(Pro 전용)를 사용하여 무늬에 다른 카메라의 영상을 묘사한다
Live 2D Unity SDK의 RenderTexture 프로젝트라면 3D 객체로 투명도를 바꿀 수 있어 해봤어요.
(sample\RenderTexture\Assets\Scene\Sample.unity)
Hierarchy의 Plane 객체는 RenderTexture의 그리기 대상이지만 기본적으로 투명도는 변경할 수 없습니다.
그래서 Shader를 UI/Default로 바꿨어요.
(기본 Unlit/Transparent이면 조명의 영향을 받지 않고 원화를 직접 표시할 수 있을 것 같다)

Tint 색상을 클릭하여 α를 수정하면 투명도를 변경하거나 색상을 변경할 수 있습니다.

그나저나 Shader의 Sprites/Default도 가능하지만 UI/Default는 ColorMask도 할 수 있습니다.

Sprites/Default = 알파가 섞인 그림자 라인.Unity 조명과 함께 작동하지 않습니다.
2015/12/09 스포츠투데이
Unity5.3 UI/Default의 규격이 바뀌었습니다. Sprites/Default을 사용하십시오Upgrading to Unity 5.3
하지만 Unity처럼 커팅 마스크를 착용하면 귀여울 수 있으니 Unlit/Texture를 추천합니다
(현재 투명도를 제거할 수 없기 때문에 감소된 모델을 사용하지 않는 것이 좋다)
※ Live2D Unity SDK2.1부터 이 문제도 해결됐어요.

또한 Shader를 Standard로 만들면 조명의 영향을 받아 다양한 게임을 할 수 있다(Directional light 필요)

이번 검증을 통해 Live 2D 모델을 페이드아웃하려면 RenderTexture를 사용하는 방법밖에 없다는 것을 알게 되었다.

좋은 웹페이지 즐겨찾기