2011年12月12日

[Unity] Androidでトゥーン

前回の記事の続き。

調べていたら、ここの記事に解決策があるっぽいので試してみました。

ゲーム画面:
20111212Unityスマホtoon_ゲーム画面.png

一番左のスフィアが通常のスフィア。
他3つは、記事で指示されてあるように法線を反転させたスフィアです。
このゲーム画面上では、正しく動いてるように見える!

そして、シェーダーの中身をそのまま使ったらSyntax Errorとなったので、
ちょっとだけ修正しました↓

Shader "Custom/toon" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Blend ("Blend", Range (0, 1)) = 0.5
_MainTex ("Base (RGB)", 2D) = "white"
_EnvMap ("EnvMap", 2D) = "white" { TexGen SphereMap }

}
SubShader {
Material {
Diffuse [_MainTex]
Emission [_Emission]
Ambient [_MainTex]
}
Pass {
Lighting On
SetTexture [_EnvMap] {
constantColor (0.2, 0.2, 0.2, [_Blend])
combine texture lerp (constant) constant
}
SetTexture [_MainTex] {
combine texture * previous DOUBLE
}
SetTexture [_MainTex] {
constantColor[_Color]
combine previous * constant
}
}
}
SubShader {
Pass {
SetTexture [_MainTex] {
combine texture
}

SetTexture [_MainTex] {
constantColor[_Color]
combine previous * constant
}
}
}
Fallback "Mobile/Unlit (Supports Lightmap)"
}


手順としては、
(1)適当にシェーダーを作成し、上記コードを記入して保存
(2)適当にマテリアルを作る
(3)オブジェクトに(2)のマテリアルを適用
(4)シェーダー設定のところで、Custom > toon (シェーダーの先頭に宣言した名前)が追加されてあるのでそれを選択。
(5)EnvMapに自作のマップ↓を適用 ※記事にあるとおり、何重かの円にしてみました

自作マップ:
20111212Unityスマホtoon_envtexture.png

それで、いざ実機に出力してみたらびっくりです。

HTC Desireの場合:
20111212Unityスマホtoon_HTCDesire.png

Galaxy S2の場合:
20111212Unityスマホtoon_galaxyS2.png

機種によって、反映されないものがあるんだ orz
しかもGalaxy S2のほうは、法線の向き関係ないし・・・。

念のため、人型のオブジェクトでも試してみました。


ゲーム画面:
20111212Unityスマホtoon_bokujin_ゲーム画面.png

HTC Desireの場合:
20111212Unityスマホtoon_bokujin_HTCDesire.png

Galaxy S2の場合:
20111212Unityスマホtoon_bokujin_galaxyS2.png

これは採用するか迷うところです。
あとはまだアウトラインが出来てません。

もうちょっと調べてみよう。。。
posted by be-style at 14:41| Comment(0) | Android
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]