進歩と「顕」
おはようございます。たねろうです。
1年くらい前からBlenderで人体を作っています。Youtubeにある英語の動画を見ながらちまちまと作っているのですが、最初の1体は非常に時間がかかりました。僕が飽き性なこともあり、本当に少しずつしかやっていなかったので半年ぐらいリアルでかかりました。「これは、大学卒業までにまともにアニメを作るのは厳しいかなあ…」と思うくらい果てしない時間がかかったのですが、2体目は1週間で作ることができました。そして、今3体目を作っているのですが、胴体部を一晩で作ることができるようになっていました。
Blenderで勉強してるときは、「こんなん覚えられるかよ…」とか「こんな手順多くて時間かかって無理ぽ…」とか思うのですが、何回も繰り返していくと短い時間でできるようになっていくので楽しいですね。
親指のウェイトの塗り方とボーンの曲げ方がわかりません、だれか助けてください
おはようございます。たねろうです。今日はBlenderの話です。
最近手のモデリングだけを集中的にやっているのですが、悩みが一つ。
親指のウェイトの塗り方がわかりません。正確に言うと、親指の一番付け根のところのボーンに関わるウェイトの塗り方がよくわからないのです。当然ここが塗れないと握りこぶしが作れなかったり剣を持たせたりすることができないので、非常に大切な部分なのですが…。
今は↑のように塗っています。一見そこそこ上手に動きそうな気がしますが、曲げると…
はい、あぼんです。↑の画像では、親指のボーンをグローバルのy軸(緑線)に沿って左側にくるように曲げていますが、ウェイトが乗っている部分が手の平より下に沈み込んでしまっています。当然親指を曲げたからと言って親指の付け根が陥没することは現実世界ではありません。何かが間違っているはずです。
そこで、ボーンの曲げ方を変えてみました。自分の親指を観察してみると、握りこぶしを作るように親指を曲げる際に親指は上から見ると小指側に、側面から見ると手のひら側に移動しています。よって、グローバル座標のZ軸とX軸をその方向に曲げてみると…
親指の付け根の膨らんだ部分はよさそうです。しかし
なんか人差し指側の手の側面のあたりがキモい感じになってしまいます。
実は、最初にやったやり方だとこの問題は発生しないんですね。
y軸のみに沿って曲げた場合上のようにいい感じになります。
したがって、①親指のつけ根を犠牲に側面が整う か ②側面を犠牲に親指の付け根が整う この二律背反が存在していることになります。現実世界では両方とも実現しているので、何か違う方法があるはずなのですが…。
そして、この分野に関しては何故か情報があまりありません。YoutubeやGoogleで英語で検索しても、核心に迫るような情報はあまり出てきません。親指以外の4本の指に関してはたくさん情報が出てくるんですけどね…。みんなにとっては何でもない作業なのでしょうか?
自分の中の理屈として、「親指のボーンを現実世界の骨の動きにエミュレートすればうまくはずである。上二つはそのような動きを実現するような回転を行っているが、うまくいっていない。ということは、上二つ以外に望むような位置に移動するような回転の組(x,y,z)が存在するはずだろう」という考えを今持っています。ただ、理想の回転を実現するような回転の解(x,y,z)が何通りあるのかが知識不足がわからないのでモヤモヤしています。クオータニオンとかに詳しかったらもうちょっとわかるんでしょうけどね…。
とりあえず今は解剖学の動画とかで親指の回転の方向とかを調べています。
自分の中で解決策が見つかったら改めてご報告しようと思います。 キャー!
ラグランジュの未定乗数法についてよくわからないまま使っている
{おことわり}冒頭で説明するラグランジュの未定乗数法の概要は、学部2年時点でまともに説明を聞いていない文系が授業での扱いをもとになんとな~くで説明しているものです。数学的・経済学的正確さはたいへん犠牲になっています。「その技法をまともに理解する機会がないまま使っていてモヤモヤする」という趣旨の記事ですので、ご容赦ください。
おはようございます。もうすぐ冬至なので日の短さを日々楽しんでいます。たねろうです。
学部の授業で最近よく聞く単語に「ラグランジュの未定乗数法」があります。これは予算の制約がある状況で効用を最大化する問題を解くときに出てくる技法らしく、以下のような数式で表される問題を解くことができます。
この方程式に対して、制約条件の部分にλをかけて最大化する式に足し、
その関数に対して偏微分を変数分だけして=0にした方程式を解けば解が出るというわけです。
…という理解をしているのですが、実はこの技法に関して、僕は学部2年生時点で正式に習ってはいません。価格理論の授業などで「こうやると楽に計算できるから、こうやっといて」と言われるのみです。なぜこの方法で問題が解ける理由はもちろん知りませんし、+λと-λの違いはあるのかなど定式化の方法についてもよく知りません。授業によっては制約条件がもっと複雑な条件であるときもあるのですが、その時はなんとなくわちゃわちゃっと教授が式を立ててしまうのでよくわからずじまいです。
基本的にうちの学部の学生がとる数学の授業は簡単な微積(sin,cos,exの微積など)と線形代数(連立方程式の解の存在条件くらいまで)しかないので、確かに多変数関数の理論については何とも微妙な立ち位置になってしまうのですよね。一部の人向けに多変数関数の理論の授業はあったのですが、ラグランジュ乗数法の理論にたどり着く前に終わってしまいましたし、文系にはなんか怖くてとりにくい授業でした。実際とってみるとそんなに辛い講義ではなかったですが…
しかし、一応数学好きな僕としては全然自明じゃない方法をそれとして使い続けるのはちょっともやっとするところがあります。というか、この技法を初めて知った時「なんでこれで求まるんだよ」という不安すらありました。
確かに学部の教程を考えると多変数関数の理論をラグランジュ未定乗数法に到達するくらいまで文系の学生に教えるというのもかなり大変な話なので、その辺に関しては「大学院とかに行く人は勉強してネ」というくらいにとどめるしかないんでしょうね。
普通になんでこれで解けるのか、こんなエレガントな方法を導き出せる理論はどんなものなのかという興味自体もあるので、どっかのタイミングで勉強してみたいなー、と思っています。
というわけで、今日も僕は宿題の効用最大化問題をカリカリとラグランジュの未定乗数法の式をなんとなくで立てるのでした…。早く納得して使えるようになりたい。
エッジワースボックスをLaTeXで表示する方法
おはようございます。最近は専ら昼夜逆転しているたねろうです。
学部が盛大にバレそうな話題ですが、皆さん、エッジワースボックス描いてますか!
エッジワースボックスとは、一般均衡理論などでよく登場するx軸とy軸をそれぞれ2つ、逆方向にとった図のことです。説明だけだと多分わからないと思いますが、↓の図のやつです。経済学部生なら見たことがあるのではないでしょうか。
1か月くらい前にレポートでこの図を描く機会があったのですが、描き方がわからない!!!
非常に特殊なグラフなので、LaTeXだと当然すぐには描き方が見つかりません。Google先生に聞いても、日本語だとやり方がなかなか出てきません。結局レポートの問題を解く時間をグラフの書き方を検索する時間が大きく上回ってしまいました。別に手書きのやつをスキャンしてもOKだったのですが、なんとなくLaTeXで書きたくなってしまい、時間をとられました。
そこで、未来の経済学部生の時間の節約と備忘録のために、Latexでの簡単な出し方を記しておきます。
執筆にあたり、一部のコードなどThomas de Graaff氏の"Drawing Edgeworth boxes with LaTeX"のページを参考にしました。ありがとうございました。より詳細な情報をお求めの方はご参照ください。 thomasdegraaff.nl
コード
↓のコードを入れるとその下の画像のように出力されます。
\documentclass[dvipdfmx]{jsarticle} \usepackage{tikz} \usepackage{pgfplots} \usepackage{amsmath} \begin{document} \def\XMAX{3} %x軸の最大値 \def\YMAX{3} %y軸の最大値 \def\U{1} %効用の値 \def\Calpha{0.5} %コブダグラス関数の指数 \def\Cbeta{0.5} %別のコブダグラス関数の指数 \begin{tikzpicture} \begin{axis}[ restrict y to domain=0:\YMAX, samples = 1000, xmin = 0, xmax = \XMAX, %x軸の幅を決める ymin = 0, ymax = \YMAX, %y軸の幅を決める xlabel=$x_{1A}$, ylabel=$x_{1B}$, axis y line=left, %y軸を左に寄せる axis x line=bottom, %x軸を下に寄せる y axis line style={->}, %軸の先端を矢印にする x axis line style={->} %軸の先端を矢印にする ] % オレンジ色の曲線の式を表示 \addplot[orange,samples = 1000]{\U^(1/(1-\Calpha))/x^(\Calpha/(1-\Calpha))}; %点を打つ \node[label={180:{($\bar{x}_{1A},\bar{x}_{1B}$)}},circle,fill,inner sep=2pt] at (axis cs:2,1) {}; %右下がりの点線を表示 \addplot[domain=0.5:2.5,dotted]{-x+3}; % 右上がりの青色の線を表示 \addplot[blue,domain=0.5:2.5]{x}; \end{axis} %x軸が左方向に伸び、y軸が下方向に伸びるように設定 \begin{axis}[ restrict y to domain=0:\YMAX, xlabel=$x_{2A}$, ylabel=$x_{2B}$, xmin = 0, xmax = \XMAX, ymin = 0, ymax = \YMAX, axis y line=right, %y軸を右に寄せる axis x line=top, %x軸を上に寄せる x dir=reverse, %軸の向きを反対にする y dir=reverse, %軸の向きを反対にする y axis line style={->}, x axis line style={->} ] % 緑色の曲線の式を表示 \addplot[green,samples = 1000]{\U^(1/(1-\Cbeta))/x^(\Cbeta/(1-\Cbeta))}; \end{axis} \end{tikzpicture} \end{document}
このグラフは、まず普通の向きの軸でオレンジ色の曲線のグラフを描いたあと、そのグラフの上に逆向きにしたx軸とy軸とその軸の向きにしたがって描いた緑色の曲線のグラフを重ねて描いています。オレンジ色の曲線と緑色の曲線は関数として同じですが、軸の向きが逆なので180°回転しています。
使い方
一つ目の\begin{axis}~\end{axis}
内にaddplotで指定したグラフは普通の方向に、2つ目の\begin{axis}~\end{axis}
内に指定したグラフは180°逆方向に描画されます。
曲線の式は、30行目などのaddplotコマンドの{}内に{f(x)}の形で書きます。今回の例では、コブダグラス型の効用関数を入れています。陰関数の場合は必ず陽関数に直す必要があります。
例えば、コブダグラス型効用関数は通常、以下の(1)のように表されます。これは陰関数の形です。
{}内に入れる際は(2)の形に変形する必要があります。これはの形なので、陽関数です。
addplotの{}内はこの形で式を書いてあります。この形ではαが式にたくさん出てくるので、値の変更を簡便にするために\defを使い変数を定義しています。αの値を変更したいときは、12行目の{}内の数字を変更すれば簡単に変更できます。 {}内にxを入れれば、y=xのグラフが描画できますし、いろいろな関数が表示可能です。まあ、エッジワースボックスならコブダグラス関数の出番が多いと思います。
x軸やy軸の最大値も、9,10行目の{}内の数字を変えて\XMAXと\YMAXの値を変更することで変更可能です。
みなさんもぜひこれを使ってグリグリとエッジワースしてみてください。
ああ、均衡均衡♡
ウェイトペイントは青くても油断するな
こんにちは。蚊に刺されやすすぎて、夏にはいつも周囲の人に感謝されているたねろうです。
今回はBlenderの話を少しします。
この前ウェイトペイントを使って作業をしていたのですが、何故か青い(=ウェイトがないはずの)部分がボーンに追従していました。それも、わずかにではなく、割とちゃんと動いていました。あれ?と思い、Nボタンで右上に出てくるところ→[Item]→[Vertex Weight]を見ると、0.03ぐらいの値になっていました。
この値でそんなに動くかねと思ったのですが、きちんと0にしたら直りました。びっくり。遠いボーンにうっかり追従している場合は、思ったより動きが大きくなることもあるのですね…。Blenderのせいにするところでした。