Re: MV1LoadModelFromMemの第三引数以降について ( No.1 ) |
- 名前:管理人 日時:2022/12/23 01:23
|
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
|
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 を返せば大丈夫です
|