今回のテーマは「表情の制御」 
前回は、
Romo SDKで提供されている2つのFramework
- RMCore
 - RMCharacter
 
のうち、
RMCharacterを利用すると、
ちなみにRMCharacterはRomoの実機がなくても実装することができます。
※デバイスの発売は7月24日になります。公式オンラインストアで予約することができます。
サンプルの実行
さて、
RMCharacterを利用したサンプルコードはHelloRMCharacterになります。さっそく実行してiPhoneにインストールしてみました。
タップした方向をRomoが目で追います。指を離すと、
SDKでできること
RMCharacterでできることを、
- 指定された方向に視線を向ける
 - Romo語による発話
 - 左右の目の開閉
 - 33種類の表現
 - 10種類の感情の設定
 
とくに表情と感情表現がかなり充実しているのがわかります。Romo語は、
SDKをプロジェクトに追加
では、
まずはRMCharacter.
RMCharacterの初期化
それではViewにRomoを表示してみましょう。まず、
#import <RMCharacter/RMCharacter.h>
RMCharacterオブジェクトを取得してプロパティに保持します。
@property (nonatomic, strong) RMCharacter *romo;
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.romo = [RMCharacter Romo];
}
続いて、
- (void)viewWillAppear:(BOOL)animated
{
    [self.romo addToSuperview:self.view];
}
何かしゃべらせてみる
続いて、
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.romo mumble];
}
何種類かのランダムなパターンでRomoがRomo語でしゃべります。
ちなみに、
 [self.romo say:@""];
表情の変化
emotionプロパティで表情を指定することができます。指定すると感情にあわせて表情がアニメーションします。
self.romo.emotion = RMCharacterEmotionExcited;
感情は以下のように用意されています。
| RMCharacterEmotionBewildered | 当惑 | 
|---|---|
| RMCharacterEmotionCurious | 物珍しい | 
| RMCharacterEmotionDelighted | 喜び | 
| RMCharacterEmotionExcited | 興奮 | 
| RMCharacterEmotionHappy | 幸せ | 
| RMCharacterEmotionIndifferent | 無関心 | 
| RMCharacterEmotionSad | 悲しい | 
| RMCharacterEmotionScared | びっくり / 怖い | 
| RMCharacterEmotionSleepy | 眠い | 
| RMCharacterEmotionSleeping | 睡眠中 | 
感情表現
expressionで、
self.romo.expression = RMCharacterExpressionAngry;
こちらは33通りもの感情表現が用意されています。感情の種類は RMCharacterExpression に規定されています。数が多いので、
また、
 [self.romo setExpression:RMCharacterExpressionHappy withEmotion:RMCharacterEmotionHappy];
目のアニメーション
lookAtPointメソッドを使うことで視点を移動させることができます。以下のように書くことで、
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.romo.emotion = RMCharacterEmotionSleepy;
    
    CGPoint touchPos = [[touches anyObject] locationInView:self.view];
    CGFloat centerX = self.view.frame.size.width / 2;
    CGFloat centerY = self.view.frame.size.height / 2;
    CGFloat x = (touchPos.x - centerX) / centerX;
    CGFloat y = (touchPos.y - centerY) / centerY;
    CGFloat z = 0.0;
    
    RMPoint3D lookPoint = RMPoint3DMake(x, y, z);
    [self.romo lookAtPoint:lookPoint animated:YES];
}
RMPoint3Dで視点の位置を指定します。x、
タップ以外に、
次のように書くと、
[self.romo lookAtDefault];
また、
[self.romo setLeftEyeOpen:YES rightEyeOpen:NO];
まとめ
全3回の連載、
今回は
オリジナルのキャラクターを作成してみようと思った際にも、
また、
最近はロボット関係のニュースも良く耳にするようになりました。この連載をきっかけに、