電動ドールヘッド





昔からお人形の表情可変とかあるいはトーキングヘッド()つくりたいなーって思ってたのを、いい感じにこじらせてしまい

2017年9月頃からなにやらやっていました。
1/3(60cm)の人形の頭部の大きさより顔面少し大きいかんじで、
2018年6月現在は目玉と眉が動くだけですが、目玉の可動域にはかなり配慮した構造になっています。

いきなり頭部の原型です。
SculptGLというWebブラウザー上で動く3Dモデリングツールでこね回したのを

普段使っているDesignSpark Mechanicalに読み込んで切断したりいろいろ試してもどうしてもうまく操作できず
3DCG作成ツールとして有名なBlenderに形状データを読み込ませてノイズをとってやっと加工ができる状態に

大きさについては、市販の人形用のかつらの大きさを目標にして、頭囲20cm「8インチ」、23cm「9インチ」のどちらかちょっとまよいましたが、「9インチ」を狙って直径70mmくらいの円が納まるサイズとしました。(後日8インチにあわせてやればよかったと思うことになるのですが…)
目はもともと可動を考えつつできるだけ目を大きく作りたかったので、顔に入りきる限界の大きさの球を入れるように考えて、それに合わせて機構を作ってあります。顔面の加工自体は、目だけ動かすので目玉の予定位置で削るだけでした。

とりあえず可動だけ作って試してみて、手元にあったマイクロサーボをモデリングして入れてみるといい感じに収まりました。

当初はサーボの制御はNucleo F303K8から直接やっていました。後日PCA9685 LEDドライバーを使った自作基板に変更しました。

眉も動かそうということで軸を通して動かすのは格好悪いのでボツだといろいろCAD上でいじってましたが、
結局軸を通して眉頭付近を中心に回転させる仕様になっています。

動きはyoutubeにいくつかあげています。

ニコ動のほうにもう少し編集したものをあげています

目玉の動かし方は基本ランダムで、方向は正面を0、上下と左右は夫々一方を+、反対を-としておき、
下記の要領で動かすのを基本にしています。

(眼球の回転量)=(乱数)- (乱数の範囲の最大)/2 -(現在の眼球の向き)/(係数)    (1)

(新しい眼球の向き)=(現在の眼球の向き)+(眼球の回転量)                (2)

(休止時間)=(眼球の回転量の関数、最低0.2秒)                        (3)

って感じでやっています。
(1)の最後の項で目玉の向きが正面から離れるほど正面に戻す働きが強くなるように偏りをつけています。
また、ある目標の各部へ目配せしているときの目の動きと、他の目標に視線を移す動きも目の動きの大きさが違うだけだろうという考え方で扱うために、(1)の第二項までの乱数部分を次の(4)のように奇数乗するあるいは符号を退避して偶数乗することで、小さい動きがでやすくなるようにしてみたりもしています。
(眼球の回転量)=((乱数)- (乱数の範囲の最大)/2)^(奇数)*(係数)-(現在の眼球の向き)/(係数)      (4)

さらに、これに頭部に内蔵したジャイロセンサーからの信号を処理して、頭の回転と逆向きに目を動かそうとするようにしくんであります。

眉は動かせる事を見せるためにジャイロセンサーからの信号処理結果の一部を使って、頭を前後にゆすると眉が動くようにしています。

CGアニメーション等では、目を動かす時に次の(5)のように目標物のどこかに目を向けておいて、別に計算した細かい動き(にeyejitterなどと名前をつけて)足し合わせているのを昔から見かけます。(Haptek等)
(眼球の向き)= (目標のある一点への向き)+(ランダムに細かい動き)          (5)

Comments are closed.