티스토리 뷰

Game/MMD

MikuViewr (3) Toon mapping

newpolaris 2017. 6. 18. 01:38

시작

http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20080218 http://www.arakin.dyndns.org/glsl_cartoon.php

2개 동시에 처리하는 좋은 방법이다.

하지만, mmd의 toon의 u 방향이 멀 뜻하는지 분석하지 못하겠다. lightVec, normal 와 연관이 되어있지만, view vector와도 연관이 있다. 뿌려보기 전까지진, uv의 u + normal.x 라는 이상한 식을 넣어는 등 여러식을 시험해봤는데 죄다 실패했다.

보통 u 값을 쓰진 않으니 무시하기로 했다.

float3 color = texDiffuse.Sample( sampler0, input.uv );

// (-1.0, -1.0,  0.0) -> shadow: -x
// ( 0.0, -1.0, +1.0) -> shadow: +z
// ( 0.0, -1.0, -1.0) -> shadow: -z

// ( 0,0,  1.0, -1.0) -> shadow: none

// incient light ray, treat as directional light (sun)

float3 incidentDir = float3(-1.0, -1.0, 0.0);

float3 lightDir = normalize( -incidentDir );
float3 normalW = normalize( input.normalW );

float intensity = dot( lightDir, normalW ) * 0.5 + 0.5;

//
// Toon texture :
//
// For v, from 0.0 to 1.0 which means from bright to dark.
// For u, can't find valid equation. Usually, it is ignored in various model.
//
// http://trackdancer.deviantart.com/art/MMD-PMD-Tutorial-Toon-Shaders-Primer-394445914
// 
float2 toonCoord = float2( 0.5, 1.0 - intensity );

MMD 상의 좌표축이 가짜라는걸 빨리 깨닫지 못해 생각보다 시간이 걸렸다. 그냥 보이는 것만 그렇게 보이고 실제론 왼손 좌표계인듯

카메라 위치도 -z 로 움직여 버리더라

'Game > MMD' 카테고리의 다른 글

MikuViewr (5) - Sphere  (0) 2017.06.20
MikuViewr (4) Lighting  (0) 2017.06.19
MikuViewer(2)  (0) 2017.06.16
MikuViewer (1)  (0) 2017.06.15
PMD / PMX import (1)  (0) 2017.05.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크