M5Stack-Avatarを元に、オリジナルのカスタムフェイスを作成した版です。
現時点では、カスタムフェイス以外のコードは、M5Stack-Avatarからは変更していません。 フォーク元のREADMEファイルもこちらに残してあります。
本リポジトリでは2つのカスタム例を公開しています。
実際にカスタマイズして作成した例として、スタックチャンのデフォルトの顔 [・_・] をベースにして、AA(アスキーアート)でよく見る(よく見ていた?)ショボーン (´・ω・`) やシャキーン(`・ω・´)の顔を作成してみました。
<AAface>
このカスタムフェイス用に実装したコードは下記の2つになります。
- スケッチファイル
- /example/aa-face/aa-face.ino
- カスタムフェイス定義
- /src/faces-custom/AAFace.h
このカスタマイズでは、目、眉毛、口の顔パーツを新規に定義しています。 コードの詳細については、リポジトリの上記ファイルをご覧ください。 ここではカスタムフェイス定義での作成概要を記載します。
- AAEye
- 目のクラス
- 標準顔に適用される /src/Eye.cpp の内容をベースにしています。
- 標準では、感情表現がAngryおよびSadの場合に目が半月状に加工されますが、今回のカスタマイズではその加工をしないように修正しています。
- AAEyeblow
- 眉毛のクラス
- 標準顔に適用される /src/Eyeblow.cpp の内容をベースにしています。
- 標準では、感情表現がAngryおよびSadの場合に眉毛が傾くように定義されていますが、今回のカスタマイズではNeutralの場合にシャキーン(`・ω・´)、Sadの場合にショボーン (´・ω・`)の形状になるように定義しています。
- また、それ以外の感情では眉毛は表示しないように修正しています。
- AAMouth
- 口のクラス
- 顔カスタムのサンプルである /src/faces/DogFace.h の内容をベースにしています。
- AAの口である ω の形状になるように、円や四角を重ね合わせて描画するように記述しています。
もう一つのカスタマイズ例として、天空の城ラピュタに出てくるロボット兵の顔を作ってみました。
<Laputaface>
このカスタムフェイス用に実装したコードは下記の2つになります。
- スケッチファイル
- /example/laputa-face/laputa-face.ino
- カスタムフェイス定義
- /src/faces-custom/LaputaFace.h
このカスタマイズでは、顔の輪郭の作成、目、口の顔パーツの新規定義を行っています。 眉毛は表示させないようスタックチャンのデフォルトの顔 [・_・]と同様に高さを0にしています。 コードの詳細については、リポジトリの上記ファイルをご覧ください。 ここではカスタムフェイス定義での作成概要を記載します。
- laputa-face.ino
- Avatarクラスの初期化の際に、引数を与えて複数色の使用を有効にしています。
- avatar.init(8);
- 8ビットカラーの使用が可能。もっと多色にしたい場合16,24などに上げることができるようだ。
- デフォルトは avatar.init(); この状態だと2色しか表示できない。
- avatar.init(8);
- Avatarクラスの初期化の際に、引数を与えて複数色の使用を有効にしています。
- LaputaFace.h : LaputaEye
- 目のクラス
- 感情ごとに、目の色が変わるように設定しています。
- LaputaFace.h : LaputaMouth
- 口のクラス
- ロボット兵の輪郭の部分もこのクラスの中で定義しています。
- 丸や三角などを組み合わせて輪郭の形状を作りました。
- 顔の輪郭部の色は、固定値かつ任意のRGBで指定しています。
- 口の機能は顔の**にある2つの小さい●に持たせたい(しゃべると色が変わるような感じ)と考えていますがまだ実装できてません。とりあえず起こったときだけ赤くしています。
この作例では、複数色の使用や顔輪郭の作成などが試すことができて、表現の幅が広がりました。 (頑張ればガンダムとかも作れるんじゃないか?とか)