여러 Live 2D 모델의 그리기 순서 제어하기
주로 다음과 같은 두 가지 방법이 있다.
1. 드로잉 타이밍을 관리하는 스크립트 만들기
Live 2D 커뮤니티에 다음과 같은 단서가 있기 때문에 우리는 SDK의 Motion 프로젝트를 맞춤형으로 제작하고 시도했다.
→ Unity에서 Live 2d를 사용할 때 그리는 순서는 어떻게 제어합니까?
1) 우선 라이브 2D 모델 2개(스크립트는 동일 부착) 준비
2)SimpleModel.cs의 OnrenderObject () 를 적당한 이름으로 바꾸기
SimpleModel.cs //void OnRenderObject()
public void RenderLive2D()
{
if (live2DModel == null) return;
live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
.
.
.
3) 빈 게임Object 만들기, 스크립트 만들기
RenderControl.csusing UnityEngine;
using System.Collections;
public class RenderControl : MonoBehaviour {
[Range(0,1)]
public int changemodel; // 前面に出すモデル切替
private SimpleModel obj_haru; // haruモデル
private SimpleModel obj_Epsilon; // Epsilonモデル
void Start () {
// スクリプトを取得する
obj_haru = GameObject.Find("haru").GetComponent<SimpleModel>();
obj_Epsilon = GameObject.Find("Epsilon").GetComponent<SimpleModel>();
}
void OnRenderObject(){
if (changemodel == 0)
{
obj_haru.RenderLive2D();
obj_Epsilon.RenderLive2D();
}
else
{
obj_Epsilon.RenderLive2D();
obj_haru.RenderLive2D();
}
}
}
이렇게 하면 그리는 순서를 제어할 수 있습니다!
쓰고 나서 지적을 받았는데 Live 2D 모형의 Z값으로 어떤 걸 먼저 그리는 게 현명할까요?
2. Z 값으로 제어하는 드로잉 모드 수정
다른 방법으로 드로잉 모드 DRAW-MESH_NOW의 DRAWMESH로 변경하는 방법.
→ Live 2D Manucal- 드로잉 모드 설정 정보
이 스크립트는 그리기 모드와 On RenderObject를 Update로 변경하기만 하면 됩니다.
2015/09/17 스포츠투데이
Live2D Unity SDK2.1부터 제한된 마스크를 사용하는 경우live2DModel.업데이트 타이밍 변경
SimpleModel.csusing UnityEngine;
using System;
using System.IO;
using System.Collections;
using live2d;
[ExecuteInEditMode]
public class SimpleModel: MonoBehaviour
{
private Live2DModelUnity live2DModel;
private Live2DMotion motion;
private MotionQueueManager motionMgr;
private Matrix4x4 live2DCanvasPos;
public TextAsset mocFile ;
public Texture2D[] textureFiles ;
public TextAsset motionFile;
void Start ()
{
Live2D.init();
live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
// Live2Dのレンダーモード変更
live2DModel.setRenderMode(Live2D.L2D_RENDER_DRAW_MESH);
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);
motionMgr = new MotionQueueManager();
motion = Live2DMotion.loadMotion(motionFile.bytes);
}
//void OnRenderObject()
public void Update()
{
if (live2DModel == null) return;
live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
if ( ! Application.isPlaying)
{
live2DModel.update();
live2DModel.draw();
return;
}
if (motionMgr.isFinished())
{
motionMgr.startMotion(motion);
}
motionMgr.updateParam(live2DModel);
live2DModel.update();
live2DModel.draw();
}
}
만약 이 방식이라면 Z값만 조정하면 그리는 순서를 제어할 수 있습니다
입자와 같은 그리기 순서도 제어할 수 있다.
그러나 라이브 2D의 비하인드를 그려보도록 하겠습니다. 슬라이드에서 보듯이 이것은 삭제된 API 방식입니다.
Unity5.0.1을 확인했지만 그래도 쓸 수 있는 API는 쉽게 조작할 수 있는 방법으로 그리기 순서를 제어하면 OK라고 생각합니다.
3. 렌더링 사용
Live 2D Unity SDK에는 RenderTexture 프로젝트가 있습니다.
여기서는 RenderTexture를 사용하여 Plane에 Live 2D 모델을 표시하므로 일반적인 3D 객체와 동일하게 처리할 수 있습니다.
Unity 5 Free 버전이 된 RenderTexture도 사용할 수 있어 사용할 수 있다.
그러나 통상과 비교하면 무승부 호출 수는 2배로 늘었다.
참조 - Q. 반투명 소재를 설정한 게임 대상은 Live 2D 모델 앞에 표시할 수 없습니다.
Reference
이 문제에 관하여(여러 Live 2D 모델의 그리기 순서 제어하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/naotaro0123/items/7835138c6ab59921fec8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//void OnRenderObject()
public void RenderLive2D()
{
if (live2DModel == null) return;
live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
.
.
.
using UnityEngine;
using System.Collections;
public class RenderControl : MonoBehaviour {
[Range(0,1)]
public int changemodel; // 前面に出すモデル切替
private SimpleModel obj_haru; // haruモデル
private SimpleModel obj_Epsilon; // Epsilonモデル
void Start () {
// スクリプトを取得する
obj_haru = GameObject.Find("haru").GetComponent<SimpleModel>();
obj_Epsilon = GameObject.Find("Epsilon").GetComponent<SimpleModel>();
}
void OnRenderObject(){
if (changemodel == 0)
{
obj_haru.RenderLive2D();
obj_Epsilon.RenderLive2D();
}
else
{
obj_Epsilon.RenderLive2D();
obj_haru.RenderLive2D();
}
}
}
다른 방법으로 드로잉 모드 DRAW-MESH_NOW의 DRAWMESH로 변경하는 방법.
→ Live 2D Manucal- 드로잉 모드 설정 정보
이 스크립트는 그리기 모드와 On RenderObject를 Update로 변경하기만 하면 됩니다.
2015/09/17 스포츠투데이
Live2D Unity SDK2.1부터 제한된 마스크를 사용하는 경우live2DModel.업데이트 타이밍 변경
SimpleModel.cs
using UnityEngine;
using System;
using System.IO;
using System.Collections;
using live2d;
[ExecuteInEditMode]
public class SimpleModel: MonoBehaviour
{
private Live2DModelUnity live2DModel;
private Live2DMotion motion;
private MotionQueueManager motionMgr;
private Matrix4x4 live2DCanvasPos;
public TextAsset mocFile ;
public Texture2D[] textureFiles ;
public TextAsset motionFile;
void Start ()
{
Live2D.init();
live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);
// Live2Dのレンダーモード変更
live2DModel.setRenderMode(Live2D.L2D_RENDER_DRAW_MESH);
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);
motionMgr = new MotionQueueManager();
motion = Live2DMotion.loadMotion(motionFile.bytes);
}
//void OnRenderObject()
public void Update()
{
if (live2DModel == null) return;
live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
if ( ! Application.isPlaying)
{
live2DModel.update();
live2DModel.draw();
return;
}
if (motionMgr.isFinished())
{
motionMgr.startMotion(motion);
}
motionMgr.updateParam(live2DModel);
live2DModel.update();
live2DModel.draw();
}
}
만약 이 방식이라면 Z값만 조정하면 그리는 순서를 제어할 수 있습니다입자와 같은 그리기 순서도 제어할 수 있다.
그러나 라이브 2D의 비하인드를 그려보도록 하겠습니다. 슬라이드에서 보듯이 이것은 삭제된 API 방식입니다.
Unity5.0.1을 확인했지만 그래도 쓸 수 있는 API는 쉽게 조작할 수 있는 방법으로 그리기 순서를 제어하면 OK라고 생각합니다.
3. 렌더링 사용
Live 2D Unity SDK에는 RenderTexture 프로젝트가 있습니다.
여기서는 RenderTexture를 사용하여 Plane에 Live 2D 모델을 표시하므로 일반적인 3D 객체와 동일하게 처리할 수 있습니다.
Unity 5 Free 버전이 된 RenderTexture도 사용할 수 있어 사용할 수 있다.
그러나 통상과 비교하면 무승부 호출 수는 2배로 늘었다.
참조 - Q. 반투명 소재를 설정한 게임 대상은 Live 2D 모델 앞에 표시할 수 없습니다.
Reference
이 문제에 관하여(여러 Live 2D 모델의 그리기 순서 제어하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/naotaro0123/items/7835138c6ab59921fec8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(여러 Live 2D 모델의 그리기 순서 제어하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naotaro0123/items/7835138c6ab59921fec8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)