2009-01-02[n年前へ]
■「箱根駅伝」と「ダイナミックベースド制御」
正月の箱根駅伝で選手たちが下り坂を駆け下りていく姿を見ていると、「受動歩行」を連想します。人体(や動物)を模した機構を坂道に置くと、坂道の傾斜や、その機構の各部分の重さや関節のバランスで、自然に歩いたり、走り出したりします。
基本的には「骨」と「関節」だけの機構を持つ物体ですから、何か力を使うことで足や体を動かし、歩いたり・走ったりするわけではありません。ただ、体のバランスで、体の動きが自然にそんな風に収斂していくわけです。
力を使うのは、その定常的にな「歩き・走り」の状態から何か変化をさせたいとき、たとえば速度を上げたいとき屋下げたいとき、あるいはバランスを崩す何かの外乱があったときにだけ、ということになります。
東京の日本橋から箱根の芦ノ湖まで、そして芦ノ湖から日本橋まで走る駅伝の選手たちは、どんな風に自分の体を動かしているのでしょう。選手たちの人体機構のバランスはどのようになっていて、その人体機構がどんな自然な動きを実現して、そして、その自然な動きからさらなる速さを求めて選手たちはいかにして力を絞り出し使っているのだろうか、と想像を巡らせくなります。選手たちが走るさまに目を奪われます。
2009-05-07[n年前へ]
■「86cm Cカップの女性のバストの熱分布の計算例」
乳がん検査を楽にすることなどを目的に、女性のバスト変形を有限要素法(FEM)で計算したりする研究は多い。バストを変形させたときの形状変化から、バスト内部に変形のようすが通常と異なる異常な組織、つまり腫瘍などが存在していないかを確認する方法を考えるために、さまざまな研究がおこなわれている。
技術解説書の「エクセルで熱伝導シミュレーション」の小コラムを書くために、熱伝導の計算例を探してみると、その中に「86cm Cカップの女性のバストの熱分布の計算例」があった。それが、右の画像である。(向って)左が温度分布である。温度が単位を持たない数字として表示されているので具体的な温度に換算しづらいが、最も温度が高い(赤色で表示されている)胸板表面に対して、最も温度が低く水色に表示されている部分では、8割ほどの数値になっている。
この数値が、外界の温度を0(x100)とし、胴体内部での血液の温度を100(x100)というように扱っていると仮定し、適当な数値を入れてみると、たとえば、外界の温度が20℃で、血流の初期値が38℃としてみると、いちばん温度が高い部分が(38-20)*0.6+20=30.8℃くらいとなり、いちばん温度が低い部分が(38-20)*0.5+20=29℃となる。バストの表面の温度分布に2℃ほどの高低が生じている、ということになる。
計算結果が、左右・上下で非対称な温度分布になっているのは、たとえば、右の画像のようなバスト内部の血管や脂肪や筋などの各組織構造をモデルに入れているからだろう。逆にいえば、こういう計算をしておくことで、実際の温度測定計測結果を見れば、内部の組織構造の異常が推定できるということになる。非接触の(温度計測用)赤外線カメラで撮影するだけで、簡単計測ができたら(マンモグラフィーは痛くて嫌だ、という声もちらほらと見かけるし)「乳がん検査」の敷居が下がるかもしれない。
そういえば、以前、人体の指を(中央線に対して)対称な形状として、熱伝導計算をしたことがある。「湯冷め」を防ぐ「上がり湯」のヒミツ!?として、指先の熱移動が「熱拡散」「血液の移動による直接熱移動」「外部からの冷却」によってのみ行われるものとしてみて、指の熱分布の計算をエクセルでしてみたのである。こんど、練習がてら、同じように「エクセルでできるバスト熱分布計算」でもしてみよう。もちろん、技術解説書には使えないだろうが・・・。
2012-10-04[n年前へ]
■バストの動きをBVHファイルで表現できるか?
モーション・キャプチャ・データ用ファイルフォーマットBVH ファイルを眺め「こんなこと」を考えました。
BVH ファイルは「骨が関節を介して繋がっている」ようなモデルを表現しています。初期状態として「骨の長さ」が決められて、そして刻々の「関節の回転方向・角度」が指示されることで、人体の動きを表現するという具合のフォーマットです(私が仕様を勘違いしていなければ)。
こういった仕様だと、「人体の一部だけれど、骨で繋がっているわけじゃない」という物体(の動き)を直接表現することができなくなります。たとえば、胸部(バスト)の動きを表現しようとしても、「関節を介して固定長の棒(=骨)の先に繋がれている物体」が揺れている、という具合になってしまいます。…しかし、バストというのは「骨がある」「関節に繋がれた物体」ではありません(私がとんでもなく胸部の仕組みを勘違いしていなければ)。
それなら、一般的なBVHファイルでは胸部の取り扱いはどのようにされているだろう?と思い、まずはPerfumeのダンス・モーション・キャプチャ・データ(右図)を眺めてみました。すると、Perfumeメンバを表現しているBVH人体構造は下記のような構造になっていて、そもそも胸部・バストというものが存在していません。…少し残念です。
Chest Chest2 Chest3 Chest4 Neck Head RightCollar RightShoulder RightElbow RightWrist LeftCollar LeftShoulder LeftElbow LeftWrist RightHip RightKnee RightAnkle RightToe LeftHip LeftKnee LeftAnkle LeftToe
次に、Poserが出力するBVHファイルを見てみると、胸部・バストは存在していて、肩にぶらさげられています。しかし、振り子時計ではあるまいし、「肩に固定長の棒で繋がれた物体」では自然なおっぱいの動きを表現できるとは思えません。少なくとも、観察眼を持つ人の目を騙すことはできそうにありません。
waist abdomen hest neck head rightEye leftEye rBreast lBreast …
人が体を自分の意志で動かそうとする時には、関節で繋がれた骨と、骨を繋ぐ筋肉が必要で、そういった骨と関節の動きさえ表現すれば(自分の意志による)動きは記述することができるのかもしれません。
しかし、自然の力でただ揺れる物体(胸部・バスト)の動きが魅力的であるのも、またひとつの真実です。だから、そういった「動き」を何かしらのモーション・データとして記録したくなったりもします。
というわけで、胸部・バストのモーションデータを記録するには、どのようなフォーマット・仕様が必要なのだろう?と考え・悩んでいる今日この頃です。
2016-04-11[n年前へ]
■ビル風が歩行者など人体に及ぼす影響(特に女性の髪とスカート限定)
昨年の今頃は、制服スカートがめくり上がる力は「ほぼ100〜150グラム重」で、風速でたとえると秒速10m弱…という法則を裏付ける実験経験をしていました(「風でスカートがめくれちゃう問題」を解いてみよう!?)。世の中で、もしもスカートをめくる風に関する「風速実験」「シミュレーション計算」「現象分析」の三題噺ならぬ三種競技があったなら…たぶん、日本で一番の経験(理解…とは違います)を持つ自信があります。…そんなことを考えながら、第56回オープンCAE勉強会@関東(流体など)に学び・遊び行くと、今野先生から「ビル風の基礎知識(風工学研究所)」に記載されている「歩行者に対する強風の影響とその評価尺度に関する研究」を教えてもらいました。
そこに書かれていたのは、「ビル風による弊害」の尺度を決めるための研究で、「傘の破損」や「転倒」といったよくありがちな問題に加えて、「女性の髪の乱れ」や「スカートの乱れ(多少乱れるとか、乱れるとか)」でした。さらに書けば、そこに書かれていたのは、秒速数mくらいの風が吹くと、女性のスカートが乱れる…という結果で、これまでの研究(計算&実験)を評価関数的にも裏付ける結果でした。
そうした実験をしてみると、「風でめくれるスカート」の科学!「涼しく晴れた朝の地下鉄駅をドジっ娘が走る」とスカートは必ずめくれる!?の法則に書いたように、秒速6〜10mくらいで、スカートがめくれ上がり始めるという…当たり前の結果になります。
2018-04-28[n年前へ]
■草間彌生デザインの「水玉模様のモジモジ君ウェア」で人体の表面形状を推定してみよう!
数ヶ月前に買ったつもりのZOZOスーツ、服に取り付けられたセンサ群とスマホの間でさまざまなデータが交換され、自分の体を知ることができるという「面白さ」に惹かれて…はや数ヶ月、「大幅な性能向上」したものが届くという連絡内容を見ると、、そこには「コレジャナイ感が、超大盛りラーメン店のようにテンコ盛りされた、草間彌生デザインの「水玉模様のモジモジ君ウェア」でした。マーカー付けた衣服を使って(スマホによる)画像計測による採寸を行うデザインに変わっていた…というわけです。
ネットには、新バージョンのZOZOスーツ試着写真もtwitterにはアップロードされ始めています。そこで、そんなマーカ模様が付けられた服を着用した画像からの人体形状推定をしてみることにしました。「ネットにアップされた画像から」というわけで、多視点撮影からの3次元推定を行うZOZOスーツ正式バージョンとは違い、一枚画像からの体表面形状の推定です。
書いてみたのは、下に貼り付けたような、十数行ばかりのPython/Jupyterコードです。OpenCV でテクスチャ検出をして、その(円形マーカーの)大きさや形状の歪みを使って、模様部分の体の表面形状情報を推定する…というわけです。Pythonコードを実行した結果は、たとえば下の4 図のようになります。向かって左から、元画像・高さ(凹凸)画像・向き(180度の反対側を区別できない)画像・法線画像です。この処理例は、水玉模様の水着画像で処理を行ったものですが、新型ZOZOスーツ画像でも同様のことが行えます。
この画像を見れば、水着の模様を介して胸やお腹の3次元形状が見えてくることがわかります。全身に模様が付けられたZOZOスーツを着用した自撮り写真がアップされたら…色んな体形状を可視化できそうです。
import numpy as np import cv2 from matplotlib import pyplot as plt from math import sin, cos img = cv2.imread('zozo_polka202.jpg',2) cimg = cv2.cvtColor( cv2.imread('zozo_polka202.jpg'), cv2.COLOR_RGB2BGR) img = cv2.adaptiveThreshold(img, 128, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 15, 5) img, contours, hierarchy = cv2.findContours( img, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) if len(contours) > 0: for i, contour in enumerate(contours): if (contour.shape)[0]>4: ellipse = cv2.fitEllipse(contour) aMax = max(ellipse[1][0],ellipse[1][1]) aDiff = abs(ellipse[1][0]-ellipse[1][1]) if aMax < 20 and aMax > 11 and aDiff < 12: xc = sin(ellipse[2]*np.pi/180)*255 yc = cos(ellipse[2]*np.pi/180)*255 cx=int(ellipse[0][0]) cy=int(ellipse[0][1]) cv2.ellipse(cimg,ellipse, (xc,yc,255-xc),-1) #cv2.circle(cimg, (cx, cy), int((aMax-11)*2.0), (xc,yc,255-xc), -1, -1) #cv2.ellipse(cimg,ellipse,(int((aMax-11)*50.0), int((aMax-11)*50.0),int((aMax-11)*50.0)),-1) #cv2.ellipse(cimg,ellipse,(int((aMax-11)*50.0), yc+xc,int((aMax-11)*50.0)),-1) plt.imshow(np.array(cimg))