4つ足サポートはもう一日かかる

今日終わらせたかったんだけど。
俺の調べ方が甘いのかもしれないけど、以下の理由。

  1. three.jsはどうも回転軸(pivotっつーの?)がサポートされていない気がする
  2. 回転軸を設定せず、手動計算して位置調整しても、キューブの太さ分程度微妙にずれる
  3. 太さ分ずれる理由と太さ分を手動調整する方法の調査でギブアップ

これに気づいたのは、四足歩行させてみようと思って横に倒して、手を270度傾けたら(ほんとは270度じゃなくて90度であるべきだけど)妙にずれた事によるもの。
そっからどはまり。


回転時に自動計算させればいいやと思って、軸を設定する箇所をがんばって探したんだけど見つからず。Faceにcentroidってのがあってこれだけ調査してないけど。


回転の手動計算は大分がんばった。ここの式がんばって読んでプログラムにした。
http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html
普通にやると合ってると思うんだけど、THREE.jsのCubeだとどうにも合わない。「並行移動」ってのをはっきり理解できてれば、もしかしたら余計な事せんでもいけたのかもしれないけど、やってみた感じ手動計算と同じでどうしても若干ずれた。


んで、ギブアップして、今は小細工でごまかす方向に舵切った。
THREE.jsの回転、ソースどこでやってんのかまだわかってないんだけど、どうも真ん中を軸にとっているらしいので、端っこで回転してほしいこっちの要望に応えてくれない。
だったら真ん中自体を端っこにしちまおうということで、外側に透明な衣を一枚かぶせて、表示するところの端っこがオブジェクト全体の真ん中になるようにした。これで真ん中で回転しても端っこ中心で回転してるとおんなじになる。ざまみろ。


あー、しかし悔しい。久々にプログラムに敗北した気分だ。
Web屋やってるとプログラムが簡単すぎて作れないものなんて無い気がしてくるんだけど、3Dいじると今の自分の力量を思い知らされる。
バッドノウハウで誤魔化してること自体がレベル低いことの証明だよなぁ。どちくしょう。いつか3Dゲーム作ろう。