Unityで手書き文字認識
Unityで手書き認識 pic.twitter.com/h9VKfvBjMb
— オノッチ (@onotchi_) 2016, 1月 18
このミミズみたいな筆記体でも認識できるってのが感動する。 複数文字の場合は単語としての妥当性もみてるんだろうね。 pic.twitter.com/tBYTUaYCzM
— オノッチ (@onotchi_) 2016, 1月 18
メモに留めますが、何かの役に立てば。
・字を書く
→LineRendererを利用。
Unity - マニュアル: ラインレンダラー
・解析する
→Microsoft.Ink.dllを利用。(System.Windows.Ink.dllとIACore/IALoader/IAWinFX.dllとかでもOK)
解析法は「C# 手書き」とかで色々出てくる。
Windowsフォームのインク機能① | WDN Engineers' Blog
手書き認識
ASP.NET Web APIで頂点の集まりを受け取るAPIを作って、受け取ったら解析して結果を返すようにしました。
なんでわざわざAPIにしたかというと、dllを直接Unityのプロジェクトで使おうとしたら、上手くdll内のクラスのメソッドが呼べなかったから。
Mono絡み or .NETのバージョン絡み?上手くやる方法もあるのかもしれない。
でも多分Web APIにしたほうがOS依存も無くなり、スマホアプリから呼んだりも出来るはず!
ちょっと嵌りそうなところは、UnityのY座標とMicrosoft.Ink.dllとかのY座標の正の向きが逆なこと。前者は上方向が正、後者は下方向が正。
そこだけ上手く変換してください。
ちなみにdocomoのサービスの手書き文字認識APIというのも試してみたのですが、一文字ずつしか認識できないので、ちょっと面倒くさかった。