本文へスキップ
LABMenu

EditMot(エディットモット) : モーキャプ物理編集リターゲット(bvh, fbx, Unity, Maya, VRoid対応)


更新履歴


EditMotのページへ

新しい更新履歴のページへ






2018/03/29
静的リンク用ライブラリとしてまめばけ3Dの機能をまとめました(MameBake3DLib.lib)。
まだインターフェイスなどそのままでとりあえずライブラリにしました。
MameBake3DLib.libをLGPLのライブラリとして使用する他のライセンス形式のアプリ作成が可能です。
ただしMameBake3DLib.libの内容に手を加える場合にはLGPLになります。

MameBake3D.exeと同じディレクトリに以下の4つのDLLを置く必要があります。
libfbxsdk.dll (FBX SDK)
tbb.dll (Intel TBB)
tbbmalloc.dll (Intel TBB)
tbbmalloc_proxy.dll (Intel TBB)

2018/03/07_1
bvh2FBXのファイル選択ダイアログでbvhの拡張子のフィルターを選択するようにしました。


2018/03/05
コンボボックスの選択ができなかった不具合を修正。

DXUT.cppの変更箇所を追記(上記)。
物理が安定するように垂直同期することにしました。
描画速度が速すぎて物理が動かなくなる不具合が解消しました。


2018/03/04_1
開発環境を変えました(上記)。

ハードウェア環境でメインウインドウのボタンが押せなかった不具合が直りました。
それに伴い描画速度も速くなりました。

ブートキャンプ環境にした場合
物理計算のスレッド数をCPUの数よりも多くするとエラー終了するようである。

2018/02/14_1
レジストしないと使用できない機能が中途半端な状態になっていました。
初期状態でレジスト済みにしました。

レジスト済みの場合はFileメニューのbvh2FBXが使用できます。
ファイルダイアログのファイルの種類でbvhを選択して倍率を適当に入力してOKボタンを押すと
bvhファイルと同じディレクトリにFBXファイルが出来ます。
手元の記録によるとこちらで使用したbvhの場合には倍率は0.294倍にしていました。参考までに。
この時、まめばけ3Dにはbvhが読み込まれていない状態となっています。
表示したいときには通常のFBX読み込みで読み込みます。


作成したFBXファイルは形状付きのFBXファイルにリターゲット可能です。
面倒なので最近テストしてませんが以前試したときにはリターゲットに成功していました。
そのときの動画もあります。
何か不具合が見つかった場合は連絡していただければ暇なときに対応するかもしれません。

モーション再生中でも、ボーンを表示するチェックボックスにチェックが入っている場合には
ボーンマークを表示するようにしました。


2018/02/13_1
FBX SDKのマルチスレッドでの利用時に出た問題と解決法のメモをDocumentsフォルダに書きました。


2018/02/12_1
複数キャラクター読み込み時にエラー終了することがある不具合を修正しました。

複数キャラクターの物理シミュレーションに関する不具合を修正しました。

フレーム範囲指定での物理シミュレーションに関する不具合を修正しました。

動作環境に追記しました。


2018/02/04_1
フレーム選択範囲の間を繰り返し物理シミュレーションすることが可能になりました。
物理IKのときの範囲考慮は次回以降対応予定。

使用しているDirectX SDKのバージョンはMicrosoft DirectX SDK (June 2010)です。

おちゃっこLAB (https://moo-ochakkolab.ssl-lolipop.jp/)にてバイナリを配布しています。


2018/02/03_1
フレーム選択の改良をしました。
アニメーション再生によってフレーム選択が解除されないようにしました。
マウスで複数フレームを選択後、その同じ選択状態で何回もプレビュー開始と停止が可能です。

2018/01/27_2
地面の格子の線と軸の線がZファイトでちらついていたのを修正。
Media/MameMedia/ground2.mqoを修正。

2018/01/27_1
アニメーションの再生を0フレームからではなく1フレームからにしました。
物理シミュの開始時にバインドポーズとアニメーション姿勢との差異による大きな揺れが大幅に軽減されました。
(それでも開始時に少しは揺れます。)

2018/01/24_2
シェーダー定数へのテクスチャ設定の最適化
変更があったときのみ設定するようにしました。
2018/01/24_1で実装済みでしたが忘れた処理があって不完全でした。

2018/01/24_1
Ctrl + 1 (one) キーでメインウインドウのツール部分の表示がトグルします。
「表示」メニューの「モーションウインドウ」の選択で
階層構造エディタとロングタイムラインウインドウの両方の表示がトグルするようにしました。

(こちらの環境では、)
Ctrl + 1でツール部を非表示にしてモーションウインドウを非表示にした場合
9体読み込み後BtStart(物理シミュ開始)後のfpsが35fpsだったのが100fpsになりました。


2018/01/23_1
DirectX10対応の続き。
Lineの描画に対応しました。
Zバッファーテストを常に合格させるステートを作成しマニピュレータ描画時に適用しました。


2018/01/22_1
DirectX10対応の続き。
Shader(Media/Ochakko.fx)のテクニック部分でZバッファを有効にしました。

メインウインドウのスライダーとチェックボックスをクリックしたときにGUIが消える症状を解消しました。
readme.txt(このファイル)の「外部ライブラリのソースの場所」に追記しました。

2018/01/21_1
DirectX10への対応を開始。[まだ途中です。]
とりあえずDX10で動いています。
シェーダーはfx_4_0です。

Lineの描画がまだです。
SetRenderStateの代わりの手段もまだやっていません。
現在、メインウインドウのGUI部品をクリックすると画面がブリンクするバグがあります。
tgaファイルの読み込みサポートがなくなったのでリソースの修正も必要です(ボーンの丸マーク)。

readme.txt(このファイル)の「外部ライブラリのソースの場所」に追記しました。

2018/01/16_1
readme.txt(このファイル)の「外部ライブラリのソースの場所」に追記しました。

2018/01/15_1
D3DXをChaVecCalcに更に置き換え。
DXUT部分にも適用。(適用の仕方はこのテキスト上方の外部ライブラリのソースの場所の部分に書きました)

CQuaternionとBonePropはChaVecCalcに統合しました。


2018/01/13_2
2018/01/13_1の更新のソースをGitHubにアップ

2018/01/13_1
`バイナリ先行公開(おちゃっこLABにて)
FBX SDK 2018に対応しました。

Visual Studio 2015に対応しました。

AMD Bullet PhysicsとIntel TBBもVisual Studio 2015に対応しました。

Mediaフォルダの中のテストデータを更新しました。
アニメーションの0フレームはバインドポーズです。
昔の0フレームがバインドポーズではないテストデータからの移行方法を説明します。
0フレームの1フレーム区間をマウスで選択します。
ツールウインドウの姿勢の初期化を押します。
全ボーンの回転と位置両方を初期化します。
このままだと0フレームの初期姿勢が不完全です。
Fileメニューのsaveからプロジェクトを新しい場所に保存します。
それを読み込みなおします。
もう一度新しい場所にプロジェクトを保存します。
移行データの出来上がり。

2018/01/08_1
D3DX9の代わりのChaVecCalcの更新。
まめばけ3DではフレームワークにDXUTを使用しているのでそこでのD3DX9の利用は今の段階では続けます。
D3DX9を利用せざる得ない部分ではChaVector3やChaMatrixクラスのD3DX()関数で変換してます。
プログラムに「プリプロセッサCONVD3DX9」を定義するとChaVecCalcからD3DX9への変換部分が有効になります。

D3DX9の利用部分を局所化できたので異なるグラフィックライブラリを利用する道が開けたと思います。
DirectX10や10.1を検討中ですが優先順位的にすぐに取り掛かるかどうかは未定です。

2018/01/07_1
D3DX(DirectX9の算術サポート)の代わりにChaVecCalc.hとChaVecCalc.cppを用意しました。
DirectXに渡す部分以外はほとんどChaVecCalcで計算しています。
描画部分を別DLLにして違う方式(現在はDirectX9です)でも描画できるようにする準備です。


2017/12/30_1
通常モーション再生、物理シミュレーション、物理IKの高速化
キャッシュ機能を付けました。
fpsは倍速になりました。
12キャラ同時に物理シミュしてもこちらでは60fps出ています。

2017/12/27
動画紹介
動画 【まめばけ3D】物理シミュレーションのマルチスレッド化
        (今回はしゃべりました)
        https://youtu.be/cW7TWNiX-uk

動画 【まめばけ3D】大きな揺れを制限角度で小さな揺れに
https://youtu.be/3GxO7jPOdlY

動画 【まめばけ】角度制限ファイルを物理に適用
https://youtu.be/q0bY6-jNk20

2017/12/23_1
bullet physicsのファイルへの変更部分を書きました(上記)。

プロジェクトファイル(chaファイル)の読み込み時にはマウスカーソルを砂時計にしました。

メインウインドウにスレッド数のスライダーを追加しました。
#####
スレッド数のスライダーを動かす際にはbtStopボタンを押してシミュレーションを停止してからにしてください。
#####

60fpsのサンプルプロジェクトファイルに
3chara, 6chara, 9chara, 12charaの複数キャラクター読み込み用のファイルを加えました。
ロード時間はexeを直に起動したほうが速いです(待ち時間がかなり違います)。
exeはx64フォルダの1つ上の階層のフォルダにコピーしてからダブルクリックで起動します。
fpsが小さくなるとメインウインドウのbtCalcCnt(計算回数)のスライダーの値を大きくする必要があります。
計算回数を増やさないとツインテールなどの物理部分が不自然に伸びたりします。
30fpsより遅くなると制御は難しいです。
こちらでテストしたところ、12キャラクター読み込みをして64スレッドで計算回数12回の場合
30fpsほどで動作し、4つのCPUに負荷が分散されました。
12キャラの読み込み時間は1分弱でした。



2017/12/22_1
chaファイルにキャラクターの位置情報を追加。
サンプルのchaファイルで複数キャラのテスト。
複数キャラの同時物理シミュレーションのデバッグ。

複数キャラを読み込んだ場合にはモデルメニューでモデルを選択すると選択したモデルのボーンをピック可能になります。


2017/12/17_1
Bullet Physicsのバージョンを上げてマルチスレッドで利用しました。
TBB利用などについては上記参照のこと。

物理シミュレーションがマルチスレッドで動くようになりました。
こちらの環境で4コアでテストしたところ、デフォルトの状態ではCPU0 --> 70%, CPU1--> 20%, CPU2,3 --> 10%という状況でしたが
計算回数のスライダーで計算回数を多くしたところ、CPU0-->70%, CPU1,2,3 --> 30%のような利用状態になりました。
(マルチスレッド版以前のもので調べると、CPU0-->80%, CPU1,2,3-->10%という状態でした。)


2017/12/09_5
PhysicsRotとPhysicsRotAxisDeltaの姿勢計算を修正しました。

物理再生時の角度制限をオンにしました。

制限角度はシミュレーション開始時の剛体の軸の角度です。
(コンストレイントの軸(FrameAの回転)には親の剛体の軸を設定してあります。)

2017/12/09_2
PhysicsRotAxisDeltaの姿勢計算を修正しました。
精度が向上しました。

現在、角度制限は物理IK時のみ機能していて、物理再生時には角度制限をオフにしています。
(テストのためです)


2017/12/09_1
PhysicsRotAxisDeltaの姿勢計算を修正しました。
この関数はPhysicsRotボタンを押してマニピュレータの球もしくはリング部分をドラッグした時に
軸個別の回転として機能します。
物理なので他の剛体からの影響も受けますが、だいたい軸個別の回転が出来ます。
精度が向上しました。

2017/12/03_1
PhysicsRotとPhysicsRotAxisDeltaの姿勢計算を修正しました。

60fps用のlmtファイルのひじの部分が-60度から60度になっています。


2017/12/02_1
PhysicsRotとPhysicsRotAxisDeltaの姿勢計算を修正しました。
マニピュレータでの軸指定捜査の精度が上がりました。

60fpsのFBX用のlmtファイルには制限角度のテスト数値が設定されています(-15度から15度)。



2017/11/27_1
コンストレイントの軸と剛体の軸の設定を一致させました。
少し検証が足りていませんが、これでparent modeのマニピュレータの軸と角度制限の軸が一致したと思われます。

PhysicsRotで各軸の操作(PhysicsRotDelta関数)の時にも角度制限が効くようにしました。
(今まではマニピュレータのセンターをドラッグしたときのみの制限でした)


2017/11/26_1
bullet physicsのオイラー角計算結果とMameBake3Dのオイラー角計算結果の比較検証をしました。
いろいろなボーンと姿勢でテストした結果、bullet physicsの回転順序はZYXではなくXYZのようです。
PhysicsRotの際のbullet physicsの計算結果とQ2EulXYZの結果を比べた結果ほぼ一致しました。
その誤差は大抵は小数点以下6位のdegreeの誤差程度でした(たまに小数点以下3位の誤差になることもありました)。


2017/11/24_1
CQuaternion::Q2EulZYXbtの修正とbullet physicsのオイラー角計算との比較
PhysicsRotのIK時にオイラー角を比較した。
(Physics Rotでのボーンドラッグ時にVisualStudioの出力タブにデバッグ情報を出力している)

Q2EulZYXbtの結果とbullet physicsのオイラー角計算結果は概ね一致したが、
0.2degree程の誤差はあった。場合によっては2degree違う場合もあった。
Q2EulZYXbtの途中の計算はdoubleで行う必要があるかもしれない。

60fps用のサンプルのlmtファイルはテストのため全ボーンの制限角度を-10度から10度に設定してあります。
これは現状ではシミュレーション開始時からの角度として機能します。


2017/11/23_1
物理IK(PhysicsRotボタンを押してボーンをドラッグするIK)のときにも
「(FBX名).lmt」ファイルの制限角度を考慮するようにしました(途中)。

現在はシミュレーション開始時からの変化角度分に対して制限角度を適用しています。
軸は親剛体の座標系です。rollがXです。
親ボーンとの角度によって制限を掛けることも試してみたので、今後モードの切り替えなどで対応する予定です。

PhysicsRotを押さないでFKする場合にも制限角度がかかっていますが、こちらはまだ手を入れていない昔の状態です。



2017/11/12_1
物理シミュレーションへの制限角度導入を開始。
途中です。
物理の制限角度はマニピュレータの軸が基準です。
FKの際の制限角度との整合性はまだ取っていません。

制限角度設定ファイルはFBXファイル名の後ろに「.lmt」を付けたファイルとなります。
lmtファイルはプロジェクトファイルの読み込み時に自動的に読み込まれます。


2017/11/06_1
コンストレイントをコーンツイストからGeneric6DofSpringConstraintに戻しました。
コーンツイストでデバッグした結果をバネにマージしたような形になったので
以前よりさらに安定しました。


2017/10/09_1
剛体パラメータの切り替え周りのデバッグ
剛体を切り替えてパラメータを変えた場合に、他の剛体へ影響が出ることがあったバグを修正。
Physics Rot, Physics Mvをすると、剛体のパラメータが変化してしまうことがあるバグを修正。

(mapのmapの使い方とダイアログ表示のための切り替え処理の修正。)


2017/09/02_1
マニピュレータモードのデバッグ
メインウインドウのコンボボックスでCurrent, Parent, Globalで切り替え可能にしました。


2017/08/25_1
マニピュレータ行列の検証とデバッグ
カレント系の動きを修正

現在の仕様
カプセルマット 選択ジョイントの親と選択ジョイントを結ぶベクトルをX軸とする直行座標
カレント系 カプセルマットに選択ジョイントの行列の変化分を掛けたもの
ペアレント系(現在コメントアウト) カプセルマットに選択ジョイントの親のジョイントの行列の変化分を掛けたもの
初回のジョイントクリック(どれでも)時にカプセルマットを計算


2017/08/23_1
マニピュレータ行列デバッグ中
カレント系とペアレント系の動きを確認。
PhysicsRotAxisDeltaでペアレント系はコメントアウト中。

カレント系とペアレント系の切り替えは現在動いていない
カレント系になっている


2017/08/21_2
FBX保存でアニメーションがおかしくなるバグを修正しました。
つい最近生じたバグでした。

2017/08/21_1
注意!!!
現在、FBXの保存をするとFBXの基本行列に関する不具合がありましてアニメーションが崩れてしまいます。
2017/08/20の変更が原因です。
出来るだけ早いうちに直す予定です。
CalcAxisMatZとNodeMatのあたりの不具合です。


2017/08/20_2
マニピュレータの軸をX軸ツイストにしました。
ジョイントをマウスでクリックした際に(初回のクリック)軸の計算がされます。

注意
現在、Physics*ボタンを押してからボーンドラッグまでに時間がかかると
物理シミュが止まってしまい関節の動きが連携しないことがあります。
そんなときはボタンを押しなおしてやり直してください。
DeactivationTime関係の症状だと思いますので、そのうちに直したいと思います。


2017/08/20_1
剛体の軸を変更しました。
Y軸ツイストからX軸ツイストに変更しました。
この変更により、bullet physicsによるConeTwistConstraint->SetLimitを使用しても破綻しなくなりました。

剛体用の形状ファイル更新。

マニピュレータの軸はまだ変えていません。

ツインテール物理シミュレーションが改善しました。
パラメータ調整(ハードコード)。
ConeTwistに変更してから一時的に収まりが悪くなっていました。



2017/08/19_1
角度コントロールの準備としてオイラー角計算を補強しました。
CQuaternionクラスに
Q2EelZXY, Q2EulYXZ, Q2EulXYZ関数を追加。
クォータニオンを3種類の回転順序でオイラー角に変換します。

動作確認はMameBake3Dの機能でオイラー角に変換したものを
FBXSDKの機能にてXYZに直して出力したFBXをMayaで読み込んで確認しました。
アニメーションも正しく再生されました。

FBX出力機能の変更。
FBX出力時(BVHからの変換を除く)に最初からXYZの回転順序で処理をしました。


2017/08/12_1
物理シミュレーションのパラメータをConeTwist用に調整
30fpsでより安定しました

誤解を招くといけないので、GZero*表記(無重力編集の意)をPhysics*表記に変更


2017/08/10_3
ReadMe.txt
動画 【物理コンストレイント】しゃがんだりかかとを上げたり
        https://youtu.be/JIXG7u1RciU

2017/08/10_2
ボーン右クリックメニューに「除外MV」メニューを追加

使用例:
GZeroMVボタンを押した後に
つま先とかかとに「PosConstraint」を設定
ひざとももの付け根に「除外MV」を設定
カメラをキャラの真横に
ボーンをどれでも1つつかんで、キャラの前にドラッグしてからキャラの下にドラッグしてさらにキャラの後ろにドラッグ(ゆっくり)

ーーー> 足を設置したままキャラがしゃがむ


2017/08/10_1
コンストレイントを6DofSpringからConeTwistに変更中

無重力IKボタンを押している間
クリックのたびに開始時のポーズに戻る
ポーズを確定したい場合にはメインウインドウ上部の「Bt Apply」スプライトをクリック

無重力IKではない通常の編集モードの戻す「STOP Bt」ボタン追加


ボーン右クリックのメニュー
「一時Mass0」メニュー : 一時的に質量をゼロにしてシミュレーション効果を激減させる。
基本的には動かないが全く動かないというわけではない。

「Pos Constraint」メニュー : 位置コンストレイント。位置は動きにくいが角度は変わる。

使用例:
GZeroRotボタンを押した後に
つま先にPosConstraintを設定。
両方のももの付け根をMass0設定。
ももの付け根の親のボーンもMass0設定。
ひざをドラッグ。

ーー>ひざとももが持ち上がってつま先位置が固定されてかかとが上がる。


まだダイアログにバネの項目が残っているがこの方針がうまくいけば取り除いていく方向で。


2017/08/03_2
ReadMe.txt
動画 【まめばけ3D】編集に使える(or Not?)無重力IK
https://youtu.be/EU9owDSkDtw

2017/08/03_1
GZeroMV(無重力k移動)を修正しました。
編集可能にすることに重きを置いて修正しました。
GZeroMVでの物理効果はコンストレイント(ボーンを右クリックして出てくるメニューで設定)の部分だけに絞りました。
物理的な動きは制限されたものの、編集可能になりました。

2017/08/02_1
GZeroMVを修正しました。
個々の剛体の移動の計算方法を変更しました。
ドラッグしている剛体の一番親の剛体まで移動させるようにしました(操作による形崩れを防止するため)

位置コンストレイントの設定について変更しました。
ボーンを右クリックしてGZeroConstraintメニューを選択すると
まだコンストレイント設定していなかった場合は設定され、
すでにコンストレイント設定していた場合には設定が解除されます。

この設定のフラグはGZeroMV, GZeroRotボタンを押しても解除されません。

GZeroRot, GZeroMVボタンを押したときにコンストレイントフラグが設定されているボーンに対して
「ボタンを押したときのボーンの位置」に拘束するように設定します。

2017/07/31_1
GZeroモードのときのエンドジョイントの扱いのデバッグ
エンドジョイントをドラッグできるようになりました。

2017/07/30_1
GZeroRotとGZeroMVのときの剛体タイプをコーンにすることにより
「操作に対する耐性」が上がりました。

しかし、素早く操作すると思わぬ結果になり得ることに変わりはありません。


2017/07/24_1
`ReadMe.txt更新
動画紹介 【まめばけ3D】そっと位置コンストレイント実験中
        https://youtu.be/LgX_15AMt1o

GZeroMVの位置コンストレイントは上記リンクの動画をみるとわかりますが
ボーン右クリックで行います。
GZeroMVのボタンを押すとコンストレイントは解除されるので
「GZeroMVのボタンを押してから」ボーン右クリックでコンストレイント指定します。

この位置コンストレイントの設定タイミングは仮のものです。


2017/07/22_1
GZeroRotとGZeroMVの2種類の無重力下での編集を実験中。
GZeroRotは回転、GZeroMVは移動です。
メインウインドウにそれぞれのスタートボタンを配置。
GZeroMVは特にそっとゆっくり操作しないとビジュアルが大変なことになります。

調整中。


2017/07/18_1
無重力IKの際にキャラクター全体の向きを考慮していなかったのを修正。
(通常のIKの際にはすでに考慮していたので、同じ方法を採用。)


動画 【まめばけ3D】パラメータ調整と60fpsでのキャプチャ
    https://youtu.be/4FwFRuiF-D8


2017/07/15_2
パラメータ試行錯誤。

メインウインドウに物理シミュ開始のためのボタンと無重力IK開始のためのボタンを付けました。

「選択部を注視点にする」チェックボタンをチェックした時には、アニメーションの再生時にもカメラを追尾させるようにしました。


2017/07/15_1
無重力ラグドール(F10キー)高速化。
こちらの環境では無重力ラグドール時に30fpsほどだったのが80fpsほどの描画速度になりました。

F9キーでの物理シミュがうまくいかなくなっていたのを修正。
主に剛体の長さ問題。

既知の問題と課題。
無重力ラグドールをするとF9のシミュレーション用のバネのパラメータまで変わってしまう。
(2017/07/18時点で再現せず。勘違いの可能性あり。)

IKに制限角度がない。

無重力IKは回転よりもコンストレイントしながらの移動に力を発揮しそうである(現在実装しているのは回転のみ)。

2017/0710_1
無重力IKの更新。
無重力IK開始ボタンをメインウインドウ中央下に配置。
物理のパラメータを調整したことにより、意図しない動き(何もしていないのにモデルが泳いだり)が激減しました。

2017/07/09_1
readme.txt更新。
2017/07/08のアップデートでモーションスピードのデフォルト値が0になっていますが
これは無重力IKのテストのためです(F10キーで開始)。

最近の動画を紹介します。

動画 【まめばけ3D】バネモデルIK
    https://youtu.be/puPVYJrn0gs

動画 【まめばけ3D】30fps物理パフォーマンス改善
https://youtu.be/lIvNlK7rlqI

動画 【まめばけ3D】30fpsで破綻しない物理
https://youtu.be/eLM-ha3nQdI


2017/07/08_1, 2
`無重力ラグドールIK機能作成スタート。
F10キーを押すと無重力ラグドール状態になります。
その状態でボーンの関節部分をドラッグするとボーンのIK回転が可能です。
これを使用してアニメーションの編集ができるまでにしていく予定です。


2017/06/29_1
デバッグとMotion2Btの改良。
低いFPS、少ない計算回数でより安定するようになりました。
60fps用のサンプルはbtCalcCnt 1でも安定しています。
30fps用のサンプルはbtCalcCnt 3で安定しており、あまり剛体が暴れなくなりました。


2017/06/25_1
デバッグしました。
30fpsの環境で実行する際の安定度が少し増しました。
Mediaフォルダにサンプルを追加しました。

本テキストに 物理とキーボード の記述を追加しました。

2017/06/17_1
剛体設定モードで表示している剛体の位置がずれていたのを修正しました。
これは、2017/06/13の修正による不具合の解消です。
MameMediaフォルダの中の3Dデータの原点を修正し、さらに表示時の計算を修正しました。


2017/06/15_1
Motion2Btの修正。

60fpsと30fpsで破綻しない設定例のサンプルを追加。
サンプルフォルダ名にパラメータの値を書いたのでその値を設定してお試しください。



2017/06/13_1
剛体の原点と変換行列の原点が一致していなかったのを修正。

原点の修正によりbullet physicsの計算回数が少なくて済むようになりました。
しかし、計算回数や剛体のパラメータなどのバランスは、fpsに依存している状態です。
例えば、60fpsで再生できる場合にはbtcalccnt 2, motion speed 3で動きますが
キャプチャソフトを動かすなどして30fpsの場合は、
btcalccnt 4、 motion speed 2くらいの設定にしないときれいに動きません。

btcalccnt, erpの設定をメインウインドウのスライダーでできるようにしました。


こちらで調整した感想ですが
1フレーム当たりの計算回数(btcalccnt)を1回にするなど小さくする場合
バネ定数を小さくする必要がありました。
しかし、バネ定数を小さくすると今度は早い動きで伸びてしまう現象が起こりました。
この辺のバランスの取り方はこれからの課題かもしれません。

分かっているバグ
剛体の原点修正により現在、
剛体設定モードでDirectXで3D表示される剛体(カプセル形状など)の
中心位置がずれています。
(表示のバグ)


2017/06/10
bullet physicsのバージョンを2.80から2.85に変更しました。
Motion2Btのデバッグをしてドキュメントも更新しました。
デバッグにより、今まで物理計算は1フレームにつき60回していましたが
5回で済むようになりました。

2017/05/26, 27
bulletのタイムステップなどの調整とそれに伴うサンプルのパラメータ調整。
バインドポーズを2重に適用していたバグを修正。
仕様メモなどのドキュメントの追加。
本テキストへの追記(bullet physicsのリンクを追加、VisualStudioについて追記, bullet physicsのバージョン)


2016/07/17 その1
MameBake3D上での法線とMaya上での法線が一致しない原因は、
裏面があった時(同じメッシュ内に)にMaya上では表と裏の表示が混ざることがあることが原因でした。
データから裏面を削除してデータを修正しました。

MameBake3DとMayaとで法線の状態が一致しました。

Media/BtTest160717_8を追加。


2016/07/16 その1
FBX出力を修正しました。
以前の出力結果ですと、Mayaで読み込んで法線をエディットする際にMayaがエラーになることがありました。
修正したFBXですと、Mayaで読み込んでも正常に操作可能です。
しかし、まだMameBake3D上での法線とMaya上での法線が一致していないようです。
後程調査します。

(今までMameBake3Dで保存したFBXも、新しいMameBake3Dで読み込んで出力しなおすことで
Mayaで正常に操作可能なFBXになります。)

Media/BtTest160716_5をaddしました。


2016/07/13 その1
髪の毛の法線がおかしくなっていたのをMayaで直しました。
バインドポーズも作り直しました。

このバージョンから
MameBake3Dでは、複数のバインドポーズが見つかった場合、最後のバインドポーズを採用します。

昨日のcommitのコメントにdebug(rigid null)
とありましたが、修正はこのバージョンから掛かります。
(push前だったので、間違ったcommitコメントを打ち直すためにrevertしたのですが、
そのときのミスで修正がcommitされていませんでした。)

2016/07/12 その1
F9キーを押してbtシミュレーションをした場合、
モーションのフレームが最終フレームから最初のフレームに戻った時に
全体移動量などが大きいことから、物理が破たんすることがありました。

最終フレームから最初のフレームに戻った時には、物理の処理も最初に戻すようにしました。
今後、この機能はオプションにする予定です。

サンプルデータをMedia/BtTest160712_2にバージョンアップしました。
モーションの最後の方で髪の毛が少しずれることがあります。
これは顔の影響度と髪の毛の影響度を合わせることで対応予定です。


2016/07/11 その3
ラグドールの改善。

剛体設定ウインドウに「回転禁止」チェックボックスを追加。
通常時の方の剛体の設定でRHip, LHip, RCollar, LCollar, Neckなどを回転禁止にすると、
ラグドール時に形状破たんしなくなります。

F9キーを押してから好きなタイミングでF10キーを押すとその時点からラグドールが始まります。
股の部分などが破たんする状況はなくなりましたが、まだ制限角度なく曲がる状態ですので
ラグドール開始の姿勢によってはみたくない光景になりますのでご注意してください。

2016/07/11 その2
【物理が】 MameBake3D 【使えそうな?】
https://youtu.be/gh_ymrdA8tM

2016/07/11 その1
CBtObject周りの検証と調整をしました。

サンプルMedia/BtTest160711_3を追加。
更に調整しました。
読み込み後にF9を押すと物理がはじまります。
F10キーでのラグドールもだいぶ使えそうになってきました。
しかし、直立に近い姿勢からのラグドールで股の部分に不具合が出ることがあるため、
変な映像を見たくない人はF10は押さないほうが良いと思います。


2016/07/10 その1
Bulletを使う周辺のデバッグをしました。
バグの中にはCBtObjectの階層構造にかかわる部分もありました。

サンプルにMedia/BtTest160710を足しました。
読み込んでF9を押すとツインテールの物理が動きます。
動かす階層を1階層増やしました。
大きな動きの時にもびよーーんと伸びなくなりました。
まだ調整の余地がありますが、とりあえずこの辺でpush。


2016/07/08 その2
CQuaternion::RotationMatrixのソースを検証しました。
行列をスケールについて正規化する処理を加える必要がありました。
MakeRotMatXを転置する必要がありました。
修正を加えてRotationMatrixの計算部分をD3DX非依存にしました。

2016/07/08
昨日、ネットで見つけたCQuaternion::RotationMatrixのD3DX非依存版を導入して試してみましたが
今日、自分で検証計算をしてみてどうも合わないので一度ロールバックします。


2016/06/22 その1
exeファイルをgitからrmしました。
コンパイル環境がない方で実行ファイルを試したい方は
info@ochakkolab.moo.jp までメールにてお問合せください。

2016/06/18 その3
補間機能における内分率を修正。


2016/06/18 その2
【ガウシアンで】 MameBake3D 【平滑化】
https://youtu.be/6iUwef1ZiYM

2016/06/18 その1
平滑化機能のデバッグをしました。
平滑化のフィルタータイプとフィルターサイズをセットし忘れているバグがありました。
デバッグにより平滑化が機能するようになりました。
複数回実行することにより、より効果が現れることを確認しました。


2016/06/17 その5
【補間で】 MameBake3D 【ノイズ除去】
https://youtu.be/l4EuXXCwXcw


2016/06/17 その4
ツールウインドウに「補間」ボタンを追加しました。
選択フレーム範囲の最初のフレームと最後のフレームの姿勢を保ちつつその間の姿勢を補間します。

Media/RigTest8の足がぴくっとなる部分はbvhのデータの値が5フレーム間ほど180度近く変化していることが原因でした。
このフレーム間、232フレーム辺りから6フレームくらいの間に対して補間機能を使用したところ滑らかになりました。
Media/RigTest8のデータを更新しました。


2016/06/17 その3
コピーペーストをアップデートしました。
1、ペーストの際にフレーム範囲を選んでいないときは、カレントのフレームの場所からコピーしたフレーム数分ペーストします。
2、ペースト先が選んであってコピー元のフレーム数より少ない場合は、ペースト先のフレーム範囲にのみペーストします。
3、ペースト先が選んであってコピー元のフレーム数より多い場合は、コピー元と同じフレーム数をペーストした後、
コピー元の最終フレームの姿勢をペースト先の残りのフレームにペーストします。


2016/06/17 その2
CBone::CalcLocalTraAnimを修正。
コピーペースト時に2つ目以降のボーンの移動がおかしくなるのを修正。

  メインウインドウの選択ボーンのオイラー角表示の下に選択ボーンの移動成分を表示しました。

DirectXのデバイス作成時に倍精度のFPUを指定。

2016/06/17 その1
1フレーム1ボーンの指定でコピーペーストすると姿勢がおかしくなるバグを修正。

2016/06/16 その1
ツールウインドウに平滑化ボタンを追加。
Media/TestRig8のモーションの足がぴくっとなる現象の解決策にはなりませんでした。
平滑化は3種類ありますが、複数回実行しないとあまり効果が出ないこともあります。

2016/06/15 その3
【RigのRig】 MameBake3D 【peace!】
https://youtu.be/B_zkbayPECc


2016/06/15 その2
RigのRigのサンプルを作りました。
Media/RigTest8/RigTest8.chaを読み込むと指のRigが読み込まれます。
各指のDistal_endを右クリックすると指を1本ずつ開閉するRigにアクセスできます。
それぞれの腕のElbowを右クリックすると腕のRigと指を5本まとめて開閉するRig(RigのRigの例)にアクセス可能です。
Enableのチェックボックスを使用することで、3本ずつでも4本ずつでも(5本以下なら)開閉できます。
5本まとめて開閉するRigを他のRigの1要素として登録することも可能です。


2016/06/15 その1
RigのRigを可能にしました。
Rigの設定画面で通常のボーンのところにRigを指定できます。
ですのでRigのRigが出来るということは、RigのRigのRigも可能です。
無限ループ防止にdepth(再帰呼び出し)が10を超えるとreturnします。

サンプルデータが必要だと思われるので、後程準備します。

2016/06/14 その7
更にコピーと対称コピーのデバッグをしました。
ペーストする際に、ルート以外の親や子供ボーンを除外できるようになりました。
操作対象ボーンはツールウインドウの「コマンド対象ボーン」ボタンを押して設定します。


2016/06/14 その5
普通のコピー時(対称コピーではなく)にもルートボーンを除外してペーストした場合に、全体移動が正しくなるようにしました。

2016/06/14 その4
ツールボタンのモーションのプロパティでモーション長を変えてからCtrl + ZでUndoした場合に
タイムラインが更新されていなかったのを修正しました。

2016/06/14 その3
メインウインドウの水色球のスプライトをクリックしてRigモードをオフにした場合に
CustomRigDlgを閉じるようにしました。

2016/06/14 その2
ボーンの選択外しが出来るようにしました。
ボーンの○マーク以外をクリックすると選択が外されてマニピュレータの表示が消えます。
メインウインドウのGUIパーツやスプライト操作の時には選択を復活させました。

2016/06/14 その1
ツールウインドウの「姿勢初期化」ボタンにサブサブメニューを付けました。
サブメニューで、全ボーン、選択ボーン1つだけ、選択ボーンと子供ボーンの中から選ぶと
サブサブメニューで、回転と移動を初期化、回転を初期化、移動を初期化の中から選ぶことが出来ます。

CBone::SetWorldMatFromEulにinittraflagを追加。


2016/06/13 その2
対称コピーの修正。
対称コピーをして、処理対象ボーン選択でルートを除外してからペーストした場合の処理を修正。
除外したボーンの子供のボーンのアニメ情報が失われていた不具合が直りました。


2016/06/13 その1
【モーション】 MameBake3D 【対称コピー】動画
https://youtu.be/YeM43To-xCg


2016/06/12 その2
【リターゲット】 MameBake3D 【改良しました】 動画
  https://youtu.be/JYT5BAdj5Q4

2016/06/12
主に移動アニメについてのソースを整理しました。

モーションのリターゲットの移動アニメを修正しました。
モーション側とモデル側のスケールが違っていても、モーションの最初のフレームのポーズとモデルのバインドポーズが同じであれば
移動アニメも含めて再現率の高いリターゲットが可能になりました。


2016/06/11 その1
複数フレーム選択時のバグを修正。
ホイールを回してからA D キーのモードで操作しようとすると、以前のホイール量だけフレームが移動してしまうバグを修正。

Ctrl+Shiftのフレーム選択モードの合図とマウス中ボタンクリックでのフレーム選択モードの合図を混合できるようにしました。

フレーム選択モード中において
A Dキーでの選択フレーム移動とマウスホイールでの選択フレーム移動を混合できるようにしました。
Ctrlを押しながら選択フレーム移動すると1フレームずつ移動します。
(Ctrlを押しながらではないときには、5フレームずつ移動します。)


2016/06/10 その2
対称コピーをボーンの位置移動に対応させました。

ルートのボーンに関しては、対称コピーボタンを押したときにメニューを出して
コピー元と同じ、位置と向き対称、向きだけ対称、位置だけ対称
から選べるようにしました。

ルートボーンの位置と向きをペースト先の姿勢のままにしたい場合は
ペーストする前にツールボタンの「コマンド対象ボーン」でルートの子供のボーンを対象に指定してから
(つまり、ペースト対象にルートボーンを入れないようにしてから)
ペーストしてください。


2016/06/10 その1
対称コピーとペーストがうまくいっていなかったのを修正しました。
その過程でいろいろデバッグしました。


2016/06/08 その4
Media/RigTest8を更新。
BVH2FBXで作成されたFBXをRigTest8の形状にリターゲットしました。
その際のボーンの対応がわかるスクリーンショットをMedia/RigTest8/MotionRetarget20160608.pngに撮りました。
モーション途中で足がぴくぴくっとなる部分がありますが、これはモーションキャプチャ(BVH)のノイズによるものと思われます。
(平滑化フィルター導入の予定があります。)


2016/06/08 その2 その3
Media/RigTest7を削除してMedia/RigTest8を作成しました。
Metasequoia 4でボーンと影響度を設定しました。
(体はBVHテンプレートを元に、指はHumanoidテンプレートを元にしました。)

リグは
両足のAnkleと
両手のElbow_branchと
両手の各指のDistal_end
に設定してあります。
右クリックで呼び出します。


2016/06/08 その1
ホイール操作時にCtrlを押していた場合に5倍速の操作にしていましたが
Ctrlを押していた場合にはゆっくりとした操作にすることにしました。
マウスによる「IK」、「FK」や「カメラの操作」時にもCtrlを押すとゆっくり操作できます。

2016/06/05
全機能テストしてデバッグしました。
モーションリターゲットのデバッグ
絶対IKオプションのデバッグ
エンドジョイントの姿勢編集のデバッグ
RigTest6のデータに不具合があったのでRigTest7に差し替え

既知の問題
F10キーでのラグドールはまだ調整が足りない。
(モデルデータの変な状態を見たくない人はF10を押さないほうが良いです。)

再現する条件が絞り込めていないが、F9での物理シミュレーション時にFPSが極端に下がってカクカクになることがある。

2016/06/03 その3
マニピュレータデータを更新しました。
円盤形状を足してから、各色の選択がしずらくなっていました。
円盤形状をマウスとの衝突判定から除外することで、各色の外側のリングと球を選択しやすくしました。


2016/06/03 その2
ボーンを右クリックしたときに出るメニューにサブメニューを付けました。
サブメニューでRig設定かRig実行かを選ぶことが出来ます。
Rig設定を選んでもRigを操作することは可能です。
Rig実行のときには設定ダイアログが出ないという違いです。

その代わり、Rigの設定ダイアログを閉じてもRigモードは終わりません。

Rigモードと通常モードの切り替えは、メインウインドウのXYZのスプライトの右の「水色の球のスプライト」
をクリックして切り替えます。


2016/06/01 その2
  【使い方説明】 MameBake3D 【Rig機能が付いちゃいました】
  https://youtu.be/gkqCJNsUsKE

2016/06/01 その1
Rigのテストのためのサンプルデータをaddしました。
Media/RigTest6/RigTest6.chaです。

両足のFoot(先端から2個目)と両手の先端のボーンにテストのRigを仕込んであります。

メインウインドウでボーンの○マークを右クリックするか、もしくは左のウインドウのボーン名を右クリックして
Rig名を選びます。

そして水色の球をドラッグします。
足については足を前に上げるためのRigと足を後ろに曲げるためのRigを、それぞれFrontとBackという名前で登録しています。

自分でパラメータを設定する場合は新規Rigを選んで設定後Applyボタンを押します。


解説動画を作成予定です。


2016/05/31 その2
ボーン座標軸回転ダイアログを1度閉じたら次回以降開くことが出来ないバグを修正しました。
ボーン座標軸の回転実行は、モーション長が長いと時間がかかります。すべてのオイラー角の再計算をするためです。


2016/05/31 その1
  MameBake3D CustomRig ダイジェスト動画。
  https://youtu.be/o7UUAqea6io

  CustomRigを実装しました。GUIで設定可能なRigです。

準備として「編集・変換」-->「オイラー角 角度制限」メニューでボーンの座標軸をCurrentAxisにします。
設定するRigに関係するボーンの座標軸を「編集・変換」-->「ボーン座標軸回転」でRigに関係するボーンの座標軸を平行にします。
Rigに関係するボーンが3つある場合、3のボーンともXYZが一致する必要はありません。
あるボーンにとってのX軸があるボーンにとってのY軸やZ軸でも構いません。
しかし、対応付ける軸同士が並行であるほうがきれいに曲がります。
(現在、ボーン座標軸回転ダイアログは、バグのため一度閉じると再びは開きません。対応予定です。)

軸を平行にする準備が出来たら
Rigを設定する一番子供のボーンを右クリックします。もしくは左のウインドウのボーン名を右クリックします。
そのボーンにまだRigを作成したことがなければ、「新規Rig」だけがメニューに出ます。
Rigを設定してApplyボタンを押すとRigが登録されて、次回からは右クリックのメニューに作成したRigが出現します。

Rigの設定ダイアログを出したら
ボーンの階層数を指定します。
何個上の階層まで設定するかの指定です。
自分自身も1と数えるので、設定するボーンとその親のボーンの2個のボーンのRigを作成する場合は、階層数は2を選びます。

階層数を選ぶとグループボックスに自動的に親方向にさかのぼったボーンの名前が表示されます。

ボーンの名前が表示されているグループボックス内の設定をします。
「横」「縦」とは、Rigマークの水色の球を横と縦にマウスでドラッグした時のことです。

マウスをドラッグした時の回転軸と倍率を指定します。
倍率はマイナスの数値も許されます。
マイナスの数値は逆回転します。
-100.0から100.0までの値が有効です。

設定したらApplyボタンを忘れずに。

後は水色の球をマウスでドラッグしながら数値や軸の調整をします。

設定したデータを保存する場合にはFileメニューのSaveで「プロジェクトファイル」を選択して保存してください。
開くときは*.chaファイルを開くとプロジェクト全体が読み込まれます。


追記:
RigコントロールはCustomRigDlgを開いていないと出来ません。
CustomRigDlgを右上のxで閉じると水色の球も消えて通常動作になります。


2016/05/29 その1
姿勢編集結果を山状に適用する部分のデバッグをしました。
選択フレーム数が2または3のときに姿勢の編集が出来ないバグを修正。
applyframeのoffsetは必要ないことを確認。
適用率の式を修正。

toolWndの姿勢初期化を選んだ際にメニューを出します。
メニューで全ボーンの姿勢初期化、選択ボーン1つの姿勢初期化、選択ボーンと子供ボーンの姿勢初期化
の中から処理を選ぶことが出来ます。


2016/05/28 その2
アンドゥーの高速化をしました。

2016/05/28 その1
制限角度設定の保存と読み込み機能を付けました。
制限角度設定ファイルは「FBXファイル名.fbx.lmt」です。
FBXファイルの書き出し時またはプロジェクトファイルの書き出し時に保存されます。
FBXを読み込む際にlmtファイルも読み込まれます。

プロジェクトファイルには記述しませんが、FBXのファイル名に.lmtを付けたファイルを
FBXの読み書き時に自動的に読み書きするということです。


2016/05/27
Angle Limit DlgにVia180_X, Via180_Y, Via180_Zのチェックボックスを付けました。
Viaとは電車のアナウンスでおなじみの「経由」の意味です。
通常ならlower <= degree <= upperが可動範囲になるところを
Via180のチェックを入れると ((-180 <= degree <= lower) || (upper <= degree <= 180))が可動範囲になります。
つまり180を経由するような逆回りが可動範囲になります。

ボーンの初期のオイラー角は0度です。
可動範囲に0度が含まれていない場合、IKやFKで動かすことが出来ないと困るので
メインウインドウに「回転角度制限をする」チェックボックスを追加しました。
ボーンを可動範囲に入れるまでは「回転角度制限をする」のチェックをはずして、
可動範囲に入れてからチェックをして、制限角度内で操作することが可能です。

今回からWin10でビルドしています。
VisualStudioは明示的には変更していません。

2016/05/26
「編集・変換」-->「ボーン座標軸回転」メニューで
ボーンの座標軸を回転可能にしました。

長いフレームのモーションを読み込んでいる状態で実行すると
全てのフレーム、全てのボーンに対してオイラー角の計算をし直すので
メインウインドウのマニピュレータの向きに反映されるまで少し時間がかかります。

ボーンの座標軸はFBXファイルに保存されるので
変更を保存したい場合はFBXファイルの保存をしてください。


2016/05/24 その4
Angle Limit Dlgにボーン座標系指定のコンボボックスを付けました。
ボーンごとに座標系の指定が出来ます。
座標系によって制限角度の掛かり方も変わります。

制限角度設定時「以外」でもボーンを選択すると
Angle Limit Dlgで指定した座標系に自動的に切り替わります。

座標系によってメインウインドウ左上のオイラー角表示も変わります。

メインウインドウの座標系指定コンボボックスは、Angle Limit Dlgで指定した座標系と異なるものも選ぶことが出来ます。
そしてオイラー角表示はメインウインドウのコンボボックスでの指定に従います。
しかし、回転の制限角度の掛かり方は、メインウインドウのコンボボックス指定にかかわらず
Angle Limit Dlgで指定した座標系をもとに制限します。


2016/05/24 その3
カレント座標系チェックボックスをやめて
メインウインドウにコンボボックスを追加し、
CurrentBoneAxis, ParentBoneAxis, GlobalAxis
の3つの座標系から選択できるようになりました。

選択したボーン座標系でIK, FK操作が可能です。

角度制限はバインドポーズの座標系で行っています。

2016/05/24 その2
メインウインドウに「カレント座標系」チェックボックスを追加してデフォルトでチェックしました。
チェックを入れていない状態ではボーンの座標系はparent座標系(親のボーンの座標系)であり、
チェックを入れるとcurrent座標系(現在の選択ボーンの座標系)になります。
制限角度(の軸の把握)との相性はcurrent座標系の方が良い気がしたので、デフォルトをカレント座標系に変えました。


2016/05/24 その1
Angle Limit Dlgをモードレスダイアログにしました。
つまり、ダイアログを出してから他のウインドウのコントロールに対して操作可能です。
スライダーで1度単位の設定をする場合には、スライダーをクリックしてからマウスホイールを回転させると簡単です。
Angle Limit Dlgの設定はApplyボタンを押さないと正式に反映されないので注意してください。

2016/05/23
「編集・変換」メニューに「オイラー角 角度制限」メニューを追加しました。
ボーンを選択してからメニューを実行します。
とりあえずモーダルダイアログです。
スライダーでLower(下限)とUpper(上限)の角度を設定してApplyボタンを押すと適用されます。
制限角度は-180度から180度の間で指定します。
角度の基準はマニピュレータとして表示されている座標軸です。
Lowerに-180、Upperに180を指定した場合に制限「なし」となります。

選択ボーンの現在のオイラー角はメインウインドウの左上に表示されます。

IK, FKの際に指定角度でクランプします。
XYZどれか1つでも範囲からはみ出しているとIK,FKの際にボーンは動きません。
(滑って動くタイプではなく、止まるタイプです)

まだ制限角度の保存と読み込みが付いて「いません」のでテスト程度にしておいてください。


2016/05/19
メインウインドウに選択ボーンのローカル座標系でのオイラー角を表示しました。
XYZの回転はZ,X,Yの順番に回転します。
複数の軸に対して回転を行うと操作中の軸以外の軸の角度が変化することがありますが
これは回転順序の仕様でありバグではありません。

もう少し詳しく説明します。
回転角度の算出はZXYの順番で回転したと仮定して逆計算で求めます。
それに対して、モーションの編集操作は
操作している軸の回転が一番最初の回転になるように処理します(効果が直感的に分かるように)。
ですからある軸の回転により他の軸の回転角度が変化することがあります。


2016/05/18
操作をしているとアプリケーションエラーで落ちることが多かったのを修正。
bonecntの後処理、Null Pointerのチェック。
読み込み、姿勢編集、アンドゥー、fbx保存、モデル削除、読み込み、、、などを繰り返しても落ちなくなりました。

2016/05/17
メタセコイアデータのZの向きの修正をしました。

編集-->ボーン軸をZに再計算メニューを実行して保存しなおしてください。
今後のIK,FKの角度制限設定のためにも、ボーン軸をZに再計算メニューを実行して保存しなおしてください。

2016/05/15
新データと旧データの切り替えを自動にしました。

旧データ
データにボーンの座標軸が記録されていないがマニピュレータ表示時に軸を計算して表示していた。
新データ
データにボーンの座標軸が記録されており、マニピュレータ表示時にそれを使用する。

ただし、2016/05/12から2016/05/15のこれより前のバージョン(RokDeBone2も含む)で保存した過渡期のファイルについては
読み込み時に出る救済ダイアログでチェックボックスにチェックを入れて読み込む必要があります。
過渡期ファイルである場合には、読み込み後速やかに保存しなおしてください。


2016/05/12
ボーンの回転軸を考慮したバインドポーズに対応しました。
RokDeBone2でボーンの回転軸に対応したFBXを書き出し、それを読み込むことが出来ます。

古いRokDeBone2や古いMameBake3Dで出力したFBXを読み込むとボーンの位置がおかしくなることがあります。
その場合はメインウインドウの右下の旧データ互換のチェックボックスをチェックして
正常に表示されることを確認してから編集作業をする前にFBXを保存してください。
新しいMameBake3Dで保存したFBXはボーンの回転軸を考慮したデータになります。
ですので、それを読み込みなおす場合には旧データ互換のチェックをはずしてください。

bvh2FBXでのFBXデータはbvhから変換しなおしてください。

2016/05/03
動画。MameBake3D [新しいフレーム選択]。
https://youtu.be/CfaFvEL2grM

2016/05/02
フレーム選択
「マウス中ボタンクリック-->マウスホイール-->マウス中ボタンクリック」
で複数フレームを選択しますが、この代替方法を追加しました。
「Ctrl+Shiftキー --> Aキー(マイナス側)Dキー(プラス側) -->Ctrl+Shiftキー」
という方法です。
マウスホイール中やA Dキー中にCtrlキーを押すと選択速度が5倍速になります。

フレーム選択ヒストリー
フレーム範囲選択を記憶して呼び出せるようにしました。
最大10000「種類」のフレーム選択範囲を記憶します。
選択ヒストリーは登録隅の選択状態と同じ選択状態を記録しません。
プレイヤーボタンの下印ボタンで過去方向のヒストリーを復元し、
上印ボタンで未来方向のヒストリーを復元します。
新たに登録した選択が解除された状態からの1回目の下印ボタンは現状復帰の機能をします。


2016/04/29
フレーム選択:ホイールを回すときにCtrlキーを押している場合は選択速度を5倍速にしました。
FBX出力:モーション長でソートすることにより複数モーション格納のFBXも正しく出力と入力ができるようになりました。
テキスト形式からバイナリ形式にしました。読み込み速度が速くなりました。
サンプル:サンプルのFBXをバイナリ形式にしました。

2016/04/27
操作の見直し
カメラの操作:メインウインドウの「移」「回」「拡」のスプライトでそれぞれ移動、回転、拡大します。
フレーム選択:マウス中クリック-->マウスホイール-->マウス中クリック の3アクションで選択します。
   最初の中クリックはスタートフレームを決めます。クリック位置がスタートになります。
   ホイールで選択範囲が伸びていきます。
   最後の中クリックで選択範囲を確定します。このときのクリック位置は関係しません。

2016/04/25
アイドリングが長いと剛体のシミュが終了して剛体が体についてこないことがある不具合を修正。
時間制限を無効にしました。

(test12のサンプルは読み込みに10秒近くかかります(Visual Studioから起動しているときはもっとかかります。)。
FBX書き出しをバイナリにすることを検討中。)

(複数モーションを書き出して読み込んだ際に、モーションの長さがおかしい場合があります。
FBX書き出し時にモーションの長さでソートして出力する必要があることを忘れていました。
対応する予定です。)

2016/04/23
最近の動画。

MameBake3D 編集オプションの説明
https://youtu.be/cA7ceFJ2oLY

MameBake3D bvhそっと歩き+物理ツインテ
https://youtu.be/upwvM6yBGgw

2016/04/22
Main.cppの相対IKと絶対IKの説明文を修正しました。
test12の剛体パラメータでサンプルのキックのモーションを読み込んでF9したとき
ツインテールが最初の位置付近に残りますが、
これはバグではなくアイドリングタイムと運動停止の関係です。
つまり長く動かないでいると停止状態になるのです。
この辺も設定できるようにする予定です。

その他、タイムラインの数値表示の間隔を調整しました。
1000フレームを越える場合も読み取れるようになりました。
GetBefNextMPの使い方がわかりずらいので、
置き換えることが出来る部分はGetMotionPointに置き換えました。

bvhのモーション変換メニュー実行時に
全体移動量は
Hipsという名前のボーン限定ではなく、最初のボーンに限定して取得するようにしました。


2016/04/21
全体回転考慮のオプションを拡張して、親の回転を考慮したIKとFKのオプションとしました。
名付けて「PseudoLocal(疑似ローカル)」です。
複数フレームに対する処理なのですが、それぞれのフレームの操作ボーンの親の回転を考慮して
操作を反映させます。
メインウインドウの右下に「PseudoLocal(疑似ローカル)」のチェックボックスがあります。
デフォルトでオンになっています。

2016/04/20
IK,FK操作結果にルートボーンの回転を考慮するようにしました。
メインウインドウの右下に「全体回転考慮」というボタンがあります。
例をあげますと、
ルートボーンつまり全体が1回転するようなモーションに対する通常のIK,FK操作では
前向き時に操作した結果がグローバル効果として横向き時にも適用されてしまいます。
つまり前向き時に足を広げる操作をすると横向き時には足がクロスしてしまいます。
「全体回転考慮」にチェックを入れると
前向きのときに足を開く操作をすると横向きの時にも足を開く効果があります。

マニピュレータの向きのバグを直しました。
マニピュレータの軸の向きと回転操作の軸は一致します。
RotateAxisDelta関数はshadow方式から座標系変換方式に変えました。

2016/04/18
タイムラインの「<<」ボタンで先頭フレームへジャンプ。
タイムラインの「>>」ボタンで最終フレームへジャンプ。
タイムラインの「| |」のマークのボタンを押すと現在のフレームから最後のフレームまでを選択します。
選択した後に適用位置の%スライダーの値に対応するフレームに移動します。
InitMPを変更しました。
test10の剛体パラメータファイルrefファイルを修正しました。

2016/04/14
F9を押したときのBtシミュレートが動かなくなっていたのを修正。
bvhモーション+btシミュ用のサンプルを追加。MameBake3D/Media/test12。
test12.chaをOpenメニューで開いてF9を押すとbvhの歩き+btシミュが再生されます。
test12のパラメータでは、メインウインドウのmotion speedは2.5くらいまでが限界かもしれません。
スピードが速くなると体の向きが180度変わるところでツインテールがぶるぶる震えます。
ぷるぷる震えたらスペースキーを押してモーションを再生しながらbtをリセットすることも可能です。


2016/04/13
bvhのコンバートテスト用のデータを追加しました。
MameBake3D/Media/testBvhConv です。

2016/04/12
FBX読み込み時に一番親のボーンの位置が正しくなかったのを修正しました。

BVHモーションコンバートを更新しました。
bvh側のルートボーン指定をHipsに戻しました。

BVHモーションコンバートを使用する際には
BVHの最初のフレームのポーズと、モデル側の初期姿勢が同じ必要があります。
一番はまりやすいのは、一番親のボーンの位置だと思います。
BVHのモーションを適用していない初期姿勢は原点にありますが
BVHのモーションを適用した初期姿勢はLHip,RHipと同位置にあることが多いようです。
そのためモデル側のボーンを用意する際にはモデル側の一番親のボーンの位置を
LHip, RHipと同位置にしたほうが良いようです。
これを間違えると体全体の回転の中心がずれた変換結果になることが多いです。


2016/04/11
BVHモーションコンバートのバージョンアップ。
初期姿勢変換にbvh側の全体回転を考慮するようにしました。
bvh側のルートボーン指定をHips_bunki***に限定する(想定している)ようにしています。
以前の動画では、BVHモーションコンバートの対応ボーン指定時に
最低限の指定をしたほうが良いと言っていましたが、すべてに指定したほうが良いようになっています。


2016/04/10
BVHモーションコンバートのバージョンアップ。
bvhとモデル側の位置や拡大率を合わせなくてもうまく変換できるようになりました。

2016/04/09
BVHモーションコンバートのバージョンアップ。
BVHの1フレーム目にモーションが設定してあっても、
1フレーム目の姿勢とモデルの初期姿勢が同じであれば変換できるようになりました。

2016/04/07
法線をスムージングしてあるデータを読み込んだ場合のFBX書き出しをスムージングに対応させました。
bvh用のFBXサンプルは準備中です。

2016/02/15 19:00頃のバージョン
BVH2FBXで作成したデータをMakeBake3Dで読み込むことが出来、分岐ボーンも改善された。
そのことに起因するかは調べ切れていないが
ボーンのリストの選択と3Dのマニピュレータの選択がずれるようになっているのに気が付いた。
以降のバージョンで修正予定である。

2016/02/15 19:50
ボーンのリストとマニピュレータのずれは直った。
BVH2FBXメニュー実行時の書き出し時に大きすぎる変化をカットするフィルターが付いているのであるが
データによって可変であるべきことが分かった。
以降のバージョンで修正予定である。

2016/02/16 19:00頃のバージョン
分岐処理見直しと修正。
bvhの回転順序の適用。
ルートの回転移動修正。
バインドポーズ修正。
回転順序変換部分追加。
Siteという同一名によるリスト選択のバグを修正。

2016/02/17 01:10頃のバージョン
回転順序 再調整。
bvh rotation filterの改良。
BVH2FBXのダイアログにフィルター角度エディット欄を追加。

2016/02/17 09:45頃のバージョン
BVH2FBXのオイラー角を抜本的に修正。
再現率がかなりあがりました。

2016/02/17 11:20頃のバージョン
複数のFBXを読み込んだ時のボーン表示のための機能を追加。
複数読み込んだ後にCtrl + Aを押すと、読み込みモデルすべてのボーンを表示します。
Ctrl + Aを押すたびにオンオフを切り替えます。
普段はModelメニューで選択したモデルにしかボーンは表示されません。
Ctrl + Aが有効の時には一番親からのボーンは表示されません。

2016/03/13
モデルのFBXにモーションのFBXを適用する機能の追加。
モデルとモーションとのボーン構造が多少異なっていても対応できます。

モデルのボーンの位置にモーションのボーンの位置を合わせるような手作業は必要ありません。
(初期姿勢が同じ必要はあります。例えばT字型の姿勢であるとか。)

使い方の説明動画は
https://youtu.be/ERaqn16GsU0




新しい更新履歴のページへ


EditMotのページへ


ナビゲーション