トップページ > 記事閲覧
mqozについて
名前:名無三 日時: 2019/06/12 21:31

いつもお世話になっております。 DXLibの.mqoz形式への対応状況をお聞きしたく存じます。
メンテ

Page: 1 |

Re: mqozについて ( No.1 )
名前:管理人 日時:2019/06/12 23:38

現在は .mqoz 形式には対応していません ただ、確認したところ mqoファイルを単に zip形式で圧縮しただけのもののようなので、 対応はそこまで難しくなさそうです 直ぐに取り掛かれるかは分かりませんが、対応してみようと思います
メンテ
Re: mqozについて ( No.2 )
名前:名無三 日時:2019/06/13 08:54

ありがとうございます。 また、既出の可能性もありますが検索のしようがなかった為質問です。 メタセコイア4.70よりpmdで出力したモデルを読み込んで表示したところ、 光関係の処理が全て無効化されているようでした。ModelViewerで読み込もうにも near farが両方0になってしまって閲覧できません。アドバイス願います。
メンテ
Re: mqozについて ( No.3 )
名前:管理人 日時:2019/06/14 00:15

すみません、メタセコイアが出力する pmdファイルが正常に読み込めるかどうか確認したことがありません メタセコイアのライセンスを購入して確認してみます
メンテ
Re: mqozについて ( No.4 )
名前:名無三 日時:2019/06/14 18:55

承知しました、お待ちしてます。
メンテ
Re: mqozについて ( No.5 )
名前:管理人 日時:2019/06/16 03:05

お待たせしました、.mqoz形式の読み込みに対応しましたので、よろしければお試しください ( ただ、mqo 形式レベルのファイルしか読み込めません( ボーン情報などがあっても無視されます ) ) https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) // ビューアー https://dxlib.xsrv.jp/temp/DxLibModelViewerTest.zip メタセコイアで出力した pmdファイルの読み込みを試してみたのですが、 near farの両方が 0 になってしまうということはありませんでした よろしければ最新版のビューアーでも near far の両方が 0 になって しまうか試してみていただけないでしょうか? あと、『光関係の処理が全て無効化されている』ように見えるのは恐らく トゥーンシェーディングになっているからだと思います マテリアルの設定の『レンダータイプ』を『標準レンダリング』にしていただければ 通常の見た目になりますので、試してみてください m(_ _)m
メンテ
Re: mqozについて ( No.6 )
名前:名無三 日時:2019/06/17 05:43

ありがとうございます、わざわざお手数をおかけして申し訳ありません… トゥーンシェーディング、mqoz共に送っていただいたviewerのほうで解決しました!ありがとうございます。 たびたび申し訳ございませんが、ラストの質問です。 hspにて先ほどpmdを動かそうと以下のようなものを組みました。 //変数等の説明 py_obj(sel_py) pmdのモデルハンドル cnt フレーム番号指定 todouble() floatをdoubleに変換する関数 //DxLib.as #func global MV1SetFrameUserLocalMatrix "dx_MV1SetFrameUserLocalMatrix" int,int,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float //フレームのリセット MV1ResetFrameUserLocalMatrix py_obj(sel_py) , cnt //ワールド座標を取得 MV1GetFramePositionD getposd , py_obj(sel_py) , cnt x_tmp = getposd(0) y_tmp = getposd(1) z_tmp = getposd(2) //床と10.0~-0.3の範囲で判定させ、当たった場合にはendpos(vector構造体の代用)に結果が代入するように x_tmp_s = x_tmp y_tmp_s = y_tmp+10.0 z_tmp_s = z_tmp x_tmp_e = x_tmp y_tmp_e = y_tmp-0.3 z_tmp_e = z_tmp startpos = vget( x_tmp_s , y_tmp_s , z_tmp_s ) endpos = vget( x_tmp_e , y_tmp_e , z_tmp_e ) MV1CollCheck_Line HitPoly , mapobj , 0 , startpos(0),startpos(1),startpos(2) ,endpos(0),endpos(1),endpos(2) if HitPoly(0)=1 { endpos = vget( todouble(HitPoly(1))-x_tmp , todouble(HitPoly(2))-y_tmp , todouble(HitPoly(3))-z_tmp ) } //移動行列の取得 MGetTranslate am , endpos(0) , endpos(1) , endpos(2) //適用(ここで変に) MV1SetFrameUserLocalMatrix py_obj(sel_py) , cnt , am(0,0),am(0,1),am(0,2),am(0,3),am(1,0),am(1,1),am(1,2),am(1,3),am(2,0),am(2,1),am(2,2),am(2,3),am(3,0),am(3,1),am(3,2),am(3,3) MV1SetFrameUserLocalMatrixを実行した段階で、フレームが数千倍に拡大されたかのように拡大してしまいました。 モデルの不備か、はたまた代入する行列の不備か見当つかずな状態です
メンテ
Re: mqozについて ( No.7 )
名前:管理人 日時:2019/06/17 23:58

> トゥーンシェーディング、mqoz共に送っていただいたviewerのほうで解決しました!ありがとうございます。 上手く動作したようで何よりです > MV1SetFrameUserLocalMatrixを実行した段階で、フレームが数千倍に拡大されたかのように拡大してしまいました。 > モデルの不備か、はたまた代入する行列の不備か見当つかずな状態です プログラム全体を拝見しないと何とも言えませんが、代入する行列の不備の可能性が高いです MV1GetFramePositionD で取得できる座標はワールド座標ですが、MV1SetFrameUserLocalMatrix で 設定する行列はフレームのローカル行列だからです なので MGetTranslate に渡す座標もワールド座標ではなくローカル座標である必要があります 現在の状態ですと、例えば元々設定されているローカル座標が x=10.0f, y=7.0f, z=0.0f のような小さな値の座標だとして、 MV1GetFramePositionD で取得できるワールド座標が仮に x=500.0f, y=1000.0f, z=-440.0f のような大きな値ですと、 MGetTranslate に渡す値( ワールド座標 x=500.0f, y=1000.0f, z=-440.0f )が元々の値( ローカル座標 x=10.0f, y=7.0f, z=0.0f )から かけ離れているので、フレームの座標がとんでもない所に飛んでしまい、それが拡大されているように見えている可能性があります フレームのローカル座標を取得するには MV1GetFrameLocalMatrix でローカル行列を取得して、 その行列の要素を見ることで取得できます( m[3][0] が x, m[3][1] が x, m[3][2] が z ) あと、HitPoly(0) が 1 だった場合と 0 だった場合で endpos の値が大きく異なってしまう プログラムになってしまっていますので( HitPoly(0) が 1 の場合は当たった座標から getposd座標を 引いた差分座標で、0 のときは getposd座標の y だけ -0.3 したワールド座標となっています )、 まず MV1CollCheck_Line による当たり判定を行わないようにした状態で MV1SetFrameUserLocalMatrix を使用して 『フレームが数千倍に拡大されたかのように拡大する』現象を修正してから当たり判定の処理を 追加したほうが良いのではないかと思います
メンテ
Re: mqozについて ( No.8 )
名前:名無三 日時:2019/06/26 04:47

drive.google.com/file/d/1LyltD3ZINFDiXqXreCfstQmCBoJ6A4cF/view?usp=sharing 大変返信が遅れてしまい申し訳ありません、一応数値などをすべて確認、修正したものです…が、現在もなお挙動が意図しないものになってしまいます。
メンテ
Re: mqozについて ( No.9 )
名前:管理人 日時:2019/06/26 23:18

プログラムは前回からかなり変更されているようですが 『フレームが数千倍に拡大されたかのように拡大する』現象は解決できたのでしょうか?
メンテ
Re: mqozについて ( No.10 )
名前:名無三 日時:2019/06/29 18:00

いえ、指摘されました内容などを見直しましたが、結論として解決できませんでした。 数値を表示してみたり実際にローカル座標を1000分の1などにしてみましたが、数値は正常そうでした…
メンテ
Re: mqozについて ( No.11 )
名前:.m1v 日時:2019/07/30 06:29

MGetTranslate am , endpos(0) , endpos(1) , endpos(2) の行の上に ddim am, 4, 4 を追加すれば直ると思います。 2019/07/30補足 思います、と書きましたが、実際に自分の環境では なし なら描画がおかしい あり なら正常描画 になります。
メンテ
Re: mqozについて ( No.12 )
名前:名無三 日時:2019/07/27 23:44

大変遅くなりました。 試しましたが、それもまた違うようです
メンテ
Re: mqozについて ( No.13 )
名前:管理人 日時:2019/07/29 22:37

現状はどのようになっていますでしょうか? かなり日数も経過していますし、本スレッドのmqozの件は終了していますので、 この件の継続を希望される際はお手数ですが新規にスレッドを立ててください m(_ _)m
メンテ
Re: mqozについて ( No.14 )
名前:名無三 日時:2019/08/01 20:59

環境をC++に移す事で一応解決しました、お手数をおかけし申し訳ありません。 郷に従え、で行きます、ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存