2017年02月16日

デュアルクォータニオンスキニング

デュアルクォータニオンによるスキニング(DQS)を実装しました。
DQSはけっこう古い技術で、問題点も多いとのことで個人的には実装したいってほど興味もなかったのですが、他のスキニングを調べてみてもDQSに勝るスキニングはいまだに存在しないようだったので、んじゃ実装してみるかという感じでコード書いてみました。

参考サイト
https://www.cs.utah.edu/~ladislav/dq/index.html

こちらのサイトにはデュアルクォータニオンと行列の相互変換のサンプルコードが載っています。論文の数式がさっぱり理解できなかった私には非常に有難いサンプルでした。
DQと行列の相互変換さえできれば、DQSの実装は比較的簡単にできるかと思います。ただ、CPU側の処理で、どの段階の行列をデュアルクォータニオンに変換すればいいのか分からなくて、私は少し迷いました。まぁ普通に考えて合成行列(シェーダーに送るボーンの変形行列)だよなぁって思ったので、これをDecomposeして回転と平行移動成分を取り出し、それをデュアルクォータニオンに変換してシェーダーに渡してとやっていたのですが、最初のテストで上手く動かなかったために、あれ合成行列違うのか?となってしまい、けっこう迷走しておりました。。
ちなみに、上手く動かなかった原因は、glm::quatのオーダーが「x」からなのを知らず「w」から始まると思い込んで処理していたからでした;
考えてみれば、クォータニオンの各成分を直接弄るのは初めてだったかも・・。


今回は動画で内容を紹介するつもりでしたが、いろいろおかしなことになってしまったので、これで終わりとさせて頂きます。
追記の方にボツにした動画と感想文を入れておきますので、よかったら見てやってください。

では。

追記
posted by gency at 22:18| Comment(0) | 3DProgramming

2017年02月11日

GodotEngine3.0 alpha

もう一ヶ月前のことですが、GodotEngine3.0alphaが公開されていました。
このバージョンから、新しいバックエンドとしてOpenGL ES3.0が追加されたようです。2016年は2D機能のアップデートばかりで3D勢は難民状態でしたが、これでまた少しは楽しくなりそうですね。Watchするのが(使え

実はまだバイナリはビルドしてなくて、Githubでソースコードを読んだだけでなので、中身(エディタ)についてはあまり把握していません。今回はとりあえず、3.0おめでとうございますという感じの更新になります。
中身も追々見ていくつもりですが、先にソースだけ読んで中身を想像してみるのも一興かと思いますので、しばらくはソースを読むだけにします。ビルドの準備はしておきますけどね。

https://github.com/godotengine/godot

今現在はアルファ版がGithubで公開されているだけなので、3.0alphaを試してみたい方は、Githubからソースコードを落としてビルドする必要があります。ちょっと面倒ですけどぜひお試しあれ。ビルドに必要なものや手順などは以下のURLにあります。

http://docs.godotengine.org/en/stable/reference/compiling_for_windows.html

私自身、Godotをビルドするのは久しぶりなので、これを読みながら環境構築をしているところです(OS入れ替えたので)。
意外と面倒くさくてやめたくなってますけどねw
もう2017年なんだしPathくらい一発で通ろうぜSConsさん!

posted by gency at 23:37| Comment(0) | GodotEngine