トップページ > 記事閲覧
MV1LoadModelFromMemの第三引数以降について
名前:東海鉄道 日時: 2022/12/22 21:31

お久しぶりです 今回ご質問したいことはMV1LoadModelFromMemの第3引数以降についてで コメントによれば // メモリ上のモデルファイルイメージと独自の読み込みルーチンを使用してモデルを読み込む とのことで引数名がそれぞれFileReadFuncとFileReleaseFuncなので 恐らくそれぞれ読み込み時の関数のポインタと解放時の関数のポインタなのだろうと予測出来ました しかしながら具体的にどのような関数のポインタを渡せばいいのかがわからず困っています
メンテ

Page: 1 |

Re: MV1LoadModelFromMemの第三引数以降について ( No.1 )
名前:管理人 日時:2022/12/23 01:23

MV1LoadModelFromMem についてはこちらに詳しい解説が載っていますので、よろしければご覧ください m(_ _)m https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4097
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.2 )
名前:東海鉄道 日時:2022/12/23 21:32

わかりましたそれで試してみます
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.3 )
名前:東海鉄道 日時:2023/01/06 20:10

お久しぶりです なんかちょっと変でWinAPIに逃げてそれがひと段落したので戻ってきた者です MV1LoadModelFromMemを使ってxファイルを 自作のデータファイル(バイナリ形式)からロードしようとしたら マテリアルに画像を使っていないものはうまく読めましたが マテリアルに画像を使っていいるものは読めませんでした(それはそう) 何かしらの方法で画像ファイルも含めてメモリからロードする方法はありますでしょうか ないのであればdxaファイルをメモリから展開する強引な方法で行こうかと思います
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.4 )
名前:東海鉄道 日時:2023/01/06 20:53

なんか変な感じがしたので質問を改めさせてください DxLibが対応している3Dオブジェクトのフォーマットにマテリアルの画像ファイルが含まれているものはありますか または MV1SetMaterial(ModelHandle,"texture.tga.",LoadGraph("texture2.tga")); 的なマテリアルをグラフィックハンドルやソフトウェアグラフィックハンドルなどから置き換える方法はありませんか 無ければ本当はしたくありませんが自作データファイルにdxaファイルを入れてDXArchiveSetMemImageで展開する方法をとりたいと思います
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.5 )
名前:管理人 日時:2023/01/07 01:21

> 何かしらの方法で画像ファイルも含めてメモリからロードする方法はありますでしょうか MV1LoadModelFromMem の引数 FileReadFunc に渡すコールバック関数内で 自作のデータファイルに埋め込まれた画像ファイルを読み込むようにすれば正常にロードできます > DxLibが対応している3Dオブジェクトのフォーマットにマテリアルの画像ファイルが含まれているものはありますか 今のところありません > MV1SetMaterial(ModelHandle,"texture.tga.",LoadGraph("texture2.tga")); > 的なマテリアルをグラフィックハンドルやソフトウェアグラフィックハンドルなどから置き換える方法はありませんか MV1SetTextureGraphHandle を使用することで指定のテクスチャを指定のグラフィックハンドルに 置き換えることができます // テクスチャで使用するグラフィックハンドルを変更する( GrHandle を -1 にすると解除 ) int MV1SetTextureGraphHandle( int MHandle, int TexIndex, int GrHandle, int SemiTransFlag ) ; <MV1SetTextureGraphHandle> https://dxlib.xsrv.jp/function/dxfunc_3d_model_2.html#R15N3 第二引数でモデルに設定されたテクスチャ番号を指定するのですが、何番のテクスチャ番号が何の テクスチャファイル名なのかを取得する際は MV1GetTextureName を使用してください m(_ _)m // テクスチャの名前を取得 const char *MV1GetTextureName( int MHandle, int TexIndex ) ;
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.6 )
名前:東海鉄道 日時:2023/01/07 19:15

アドバイスありがとうございます MV1SetTextureGraphHandleはモデルを読み込んでからでないと使えなさそうなので FileReadFuncに渡すコールバック関数内で画像ファイルを読み込む という方法を検討していますが3D初心者なもので(関係あるかは知りませんが) どう読み込んでやればいいのかわかりません ご教授いただけないでしょうか
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.7 )
名前:管理人 日時:2023/01/08 20:39

No.1 でご紹介したこちらのスレッドの https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4097 No.1 に FileReadFunc も使ったサンプルプログラムがありますのでごよろしければ覧ください m(_ _)m
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.8 )
名前:東海鉄道 日時:2023/01/08 21:18

ありがとうございます そのサンプルを見て自分に勘違いがあったので直してきました 今後忘れそうな自分といないであろう初見さんのためにメモを少し FileReadFuncはxファイルを読み込むためのものでなくxファイルで使われている依存ファイルを読むためのもの ということで前記の通り修正をしたのですが DxChara.xを読み込んだ時FileReadFuncが2回よばれ 1回目はDxCharaEye.tga 2回目はDxCharaEye_a.tgaが必要のようです DxCharaEye.tgaは見つかりましたが DxCharaEye_a.tgaの方が見たところ サンプルプログラム実行用フォルダにありませんでした またテキストエディタでDxChara.xを見てみましたが DxCharaEye_a.tgaが必要になっているところは見受けられずよくわかりません そこで次の事をお聞きしたいです DxCharaEye_a.tgaとは何のファイルなのか DxCharaEye_a.tgaが必要なのにディレクトリ内に見受けられないのはなぜか この事象を解決するためにはどうすれば良いか 以上3つです よろしくお願いします
メンテ
Re: MV1LoadModelFromMemの第三引数以降について ( No.9 )
名前:管理人 日時:2023/01/08 23:47

> DxCharaEye_a.tgaとは何のファイルなのか アルファチャンネル用の画像です DXライブラリを公開した 2001年頃はまだアルファチャンネルを付けられる画像フォーマットである png が一般的ではなく、アルファチャンネルの存在しない bmp や jpeg が一般的だったため、 読み込んだ画像のファイル名の末尾に _a を追加した画像の赤成分をアルファチャンネルとして読み込む という処理を追加しました、これによってアルファチャンネルのない画像フォーマットである bmp や jpeg でも アルファチャンネル付きの画像を表現できるというわけです これは MV1LoadModel 専用の機能ではなくDXライブラリの画像読み込み全般の機能となっていますので LoadGraph の解説にも載っています <LoadGraph> https://dxlib.xsrv.jp/function/dxfunc_graph1.html#R3N2 > DxCharaEye_a.tgaが必要なのにディレクトリ内に見受けられないのはなぜか DxCharaEye_a.tga が不要だからです 前述の通りDXライブラリの画像読み込み処理は読み込んだ画像ファイルの末尾に _a を付けた 画像ファイルを自動で読み込もうとしますので、DxCharaEye.tga を読み込むと、末尾に _a を付けた DxCharaEye_a.tga が必要かどうかに関係なく読み込もうとします > この事象を解決するためにはどうすれば良いか FieReadFunc で存在しないファイルが指定された場合は -1 を返せば大丈夫です
メンテ

Page: 1 |

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

   クッキー保存