トップページ > 過去ログ > 記事閲覧
フレームについて
名前:GMO 日時: 2011/09/24 00:47

いつもお世話になっております。 現在キャラクターモデルのちょっとしたIKを組んでおりまして、ある程度のとこまで完成してひと段落しておりますが、 組んでる途中で、「ああ、関節じゃなくこのフレームのこの(途中)部分を曲げたい」という衝動が起きてしまいましたw 実際に実装するかどうかの判断はさておき、このようにフレームの途中で曲げる、またはフレームの無いモデルをまげて表示したい場合、 DXライブラリ的にはどういったやり方があるでしょうか? また、方法として自分がつたない知識で思いついたのは、 @目的のメッシュ中のポリゴンの頂点情報になんとかアクセスして直接書き換える。 A曲げたいフレームのコピーを用意し、その中に関節を仕込んで曲げたときに表示する。 の二つで、やるとすればプログラム的に制御したいので、@が可能なら挑戦したいのですが可能でしょうか? ※モデル自体のボーン(フレーム)を変えれば万事解決だとは思いますが、扱ってるキャラモデルが配布されているPMDファイルであるため、 データの改変には抵抗があるということを一応付け加えさせていただきます。

Page: 1 |

Re: フレームについて ( No.1 )
名前:いっち 日時:2011/09/24 14:08

参照用メッシュを取得して、自前で描画するようにすれば、何とかなるかもしれません。
Re: フレームについて ( No.2 )
名前:GMO 日時:2011/09/24 17:21

いっちさんありがとうございます。 大まかな流れとしては、 @目的のフレームのメッシュを元に参照用メッシュ作成もしくは参照用メッシュにコピー Aモデルまたはフレームから描画に関する情報を取得(光関係やテクスチャ等) B参照用メッシュの頂点情報を変更 C描画する→AとBの情報からDrawPolygon3DまたはDrawPolygonIndexed3Dで描画 といったところでしょうか?
Re: フレームについて ( No.3 )
名前:GMO 日時:2011/09/25 15:42

No2の流れが可能かどうかを(机上)検証したところ(見逃し、見当違いがあったらすいません)、 ある程度汎用性を持ちつつ組むことはどうも厳しそうです。 独自描画で使用する描画関数が、DrawPolygon3DまたはDrawPolygonIndexed3Dである場合、 描画に必要な情報の中にテクスチャのグラフィックハンドルがあり、参照用メッシュとの関連付けが 困難であるように見受けられます。 テクスチャファイル名を決め打ちして読み込めば可能だとは思いますが・・・ いろいろ調べた結果、モデルの頂点情報操作は現状だと厳しそうですので、管理人さんへの要望としてまとめさせてもらいます。 フレームを元に作成した参照用メッシュの内容を元のフレームに反映できる機能追加を、可能ならばお願いいたします。 反映したフレームについては、MV1SetFrameUserLocalMatrix、MV1ResetFrameUserLocalMatrixのように設定と解除ができれば、 使いやすい物になるのではないかと思います。 余談というか私事ですが、DirectxSDKがインストール途中でなぜかエラーになってしまうへぼPC(古くは無いんですが)を使ってるので、 もし採用されたら歓喜しますw ※関数名を訂正しました
Re: フレームについて ( No.4 )
名前:いっち 日時:2011/09/25 13:59

とりあえず、フレームに設定されているテクスチャを識別する機能があれば良いのではないでしょうか?
Re: フレームについて ( No.5 )
名前:GMO 日時:2011/09/25 14:55

>いっちさん 最初そういう要望にしようかと思ったんですけど どうせ要望するなら自分の望みそのものずばりを要望したほうがいいと思いましてw 加えて、もし独自描画の方向で進んだ場合、元のフレームと同等の描画結果が得られるか?が最初のテーマになりそうなので、 都度「あの情報を得れる機能を」とするより良いかな、とも思います。
Re: フレームについて ( No.6 )
名前:GMO 日時:2011/09/27 23:48

度々お騒がせしております。 実際に参照用メッシュを使用したプログラムを組んだところ、理解不足や気づいた点がありましたので、 それらを踏まえて後日あらためて報告や要望をさせていただきます。 ということで勝手ながらNo.3の要望は取り下げさせていただきます。 ※以下追記です 独自描画の線も探りつつ実験してましたが、問題はテクスチャのグラフィックハンドルだけで収まりそうもなさそうです。 また、全身がひとつのメッシュに収まっているようなモデルの場合、特定フレームを起点とした操作をする前に予備的な操作が必要なこと、 DrawPolygon3Dでポリゴン数が多いとエラー・・・と一筋縄ではいかない様子です。 よほどの気力がないと最終目標に到達は出来ないという結論に至ったため中断しました。 また、要望としていた頂点情報をフレームに・・・については、全身がひとつのメッシュに収まっているようなモデルについて フレーム的な扱いでもってメッシュを操作できないというのと、これはライブラリの関数構成からの想像ですが、 そもそも描画するモデルの頂点情報は描画の寸前までは基本的には無く、 参照用メッシュに対しては計算した結果を渡してるだけではないか?と思ったため取り下げさせていただきました。 今の状況ですと、なにか要望した場合 「フレーム配下でユーザーが設定できる、いわばサブフレーム的なものをプログラム上で作れるようにしてマトリックスで操作できるようにしてくれ」 とか即時却下されそうな要望になってしまう為、今回は要望はせず、最初の質問に対しての管理人さんからの見解が頂けるのなら それを待ちたいと思います。 長文失礼しました。
Re: フレームについて ( No.7 )
名前:管理人 日時:2011/10/02 23:40

現在のDXライブラリの3Dモデル表示機能にはフレームの追加は考慮していないので ( 加えてそれを前提に最適化しているので ) ちょっとGMOさんのご要望に応えるのは難しそうです ( @についてはできないこともありませんが、No.6でお察しの通り描画時の座標は 描画時毎に GPUで( 機能が無い場合はCPUで )計算していますので、低速な参照用メッシュ以外で 最終座標を元に頂点情報に手を加える手段はありません ) なので現時点では GMOさんが自前でPMDファイルを読み込み、自前で DrawPolygon3D を使用して GMOさんが望まれる処理が行える3Dモデル描画システムを作成するしかありません・・・ ただ、PMDファイル読み込み+3Dモデル描画システムの自前実装という時点で Direct3D を直接うのと あまり変わらないくらいの労力が必要なのですよね・・・ なので申し訳ありません、今のところ GMOさんのご要望をある程度容易に実現できる方法はありません・・・
Re: フレームについて ( No.8 )
名前:GMO(終了) 日時:2011/10/09 10:18

>管理人さん ご回答ありがとうございます。 No.6後半を書いた時点で、どのような回答・見解が来るかは予想しておりました・・・ 現在のモデルに関する機能は、ひとつの完成形であることも理解いたしましたので、もし今後、ライブラリの大きな拡張を 目指す時期が到来し、モデルに関して既存とは違ったやり方のものを追加・構築するようなことがありましたら、モデル表現の可能性に関して、 今回私が質問した内容を考慮して頂ければ幸いです。 (「モデル関連機能の必要なもの全て自前で用意」はライブラリ利用者としては先ずあり得ない選択肢なので、 ライブラリでの実装はともかく、今後の可能性として〆させてくださいw ) いっちさん、管理人さん、質問にお付き合い頂きありがとう御座いました。

Page: 1 |