トップページ > 記事閲覧
3Dモデルの輪郭線の透明度について
名前:みこ 日時: 2024/09/17 09:25

長らくご愛用させていただいております。 トゥーンレンダリング3Dモデルの輪郭線のドット感が気になるのでアンチエイリアスっぽく滑らかに表現できればと思い色々試しているのですが、 輪郭線を半透明ににして少しでも改善しようと思いましたが透明度が反映されず、仕様でしょうか? 以下3Dモデルの初期化部分です。 // モデルの読み込み int ModelHandle = MV1LoadModel("data.mv1"); // モデルの大きさを調整 const float scale = 65.0f; MV1SetScale(ModelHandle , VGet(scale, scale, scale)); // 輪郭線の設定 for (int i = 0; i < MV1GetMaterialNum(ap.ModelHandle[0]) + 1; i++) { // 拡大した分輪郭線を小さくする float dotline = MV1GetMaterialOutLineDotWidth(ModelHandle, i); MV1SetMaterialOutLineDotWidth(ModelHandle, i, dotline / scale); float line = MV1GetMaterialOutLineWidth(ModelHandle, i); MV1SetMaterialOutLineWidth(ModelHandle, i, line / scale); // 既存の輪郭線の色を取得する COLOR_F color = MV1GetMaterialOutLineColor(ModelHandle, i); // 輪郭線を半透明にする //color.a /= 2.0f; color.a = 0.1f; MV1SetMaterialOutLineColor(ModelHandle, i, color); }
メンテ

Page: 1 |

Re: 3Dモデルの輪郭線の透明度について ( No.1 )
名前:管理人 日時:2024/09/17 22:57

> 輪郭線を半透明ににして少しでも改善しようと思いましたが透明度が反映されず、仕様でしょうか? はい、仕様となります 輪郭線のみ半透明にした場合、輪郭線の部分のみ背後の描画物が透けて見えるなどの見た目上の問題が 発生するので、輪郭線の色のアルファ値は無視されるようになっています SetFullSceneAntiAliasingMode という関数を DxLib_Init の呼び出し前に使用することで3Dの描画に アンチエイリアスを掛けることができますので、こちらを使用することでドット感を軽減することができます // 画面のフルスクリーンアンチエイリアスモードの設定をする // int Samples : マルチサンプルレベル // int Quality : マルチサンプルクオリティ int SetFullSceneAntiAliasingMode( int Samples, int Quality ) ; <SetFullSceneAntiAliasingModeの解説> https://dxlib.xsrv.jp/function/dxfunc_graph3.html#R4N8 // 使用例 SetFullSceneAntiAliasingMode( 8, 8 ) ; Samples と Quality の値を大きくすればするほどドット感が軽減されますが、 値の大きさに比例して描画負荷が高くなりますので負荷と見た目のバランスの取れた値を探ってみてください m(_ _)m
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.2 )
名前:みこ 日時:2024/09/18 02:00

ありがとうございます! 了解しました! 完全にドット感を抜ききるのは難しそうですね...輪郭線の色を薄くして調整してみます また表題とは関係無いですが別件で2点お尋ねしたいです&#128166; ・DxLibModelViewerで選択テクスチャの削除をして保存をするとmv1ファイルが破損して読み込めなくなります ※同じテクスチャが重複して読み込まれていたので軽量化のために同じテクスチャを削除しようとしました 念のためmv1ファイルを共有します ttps://drive.google.com/open?id=1bF2BSQY37Bw9tAQ312hV2mKuduzOmClo&usp=drive_fs ・テクスチャを新規追加する関数は無いでしょうか? やりたい事としましては、マテリアルでディフューズグラデーションマップが読み込まれてない場合は(indexが-1なら) 予めグラフィックハンドルに読み込んだグラデーションマップ画像を追加したいです お手数をお掛けしますがよろしくお願いいたします m(_ _)m
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.3 )
名前:管理人 日時:2024/09/19 16:46

> ・DxLibModelViewerで選択テクスチャの削除をして保存をするとmv1ファイルが破損して読み込めなくなります > ※同じテクスチャが重複して読み込まれていたので軽量化のために同じテクスチャを削除しようとしました すみません、『選択テクスチャの削除』というのは具体的にはどのような操作をされたのでしょうか? > ・テクスチャを新規追加する関数は無いでしょうか? > やりたい事としましては、マテリアルでディフューズグラデーションマップが読み込まれてない場合は(indexが-1なら) > 予めグラフィックハンドルに読み込んだグラデーションマップ画像を追加したいです 新規追加する関数は最近追加しましたが、グラフィックハンドルを使用する形ではなく画像ファイルのパスを 渡す形だったので、新たにグラフィックハンドルを使用して新規追加する関数を追加しました よろしければ関数を追加したこちらのバージョンをダウンロードしてください m(_ _)m 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 12 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 以下の関数を追加しました // 3Dモデルで使用するテクスチャを追加する( グラフィックハンドルをテクスチャとして追加 ) // MHandle : 3Dモデルハンドル // Name : テクスチャの名前 // GrHandle : グラフィックハンドル // SemiTransFlag : グラフィックハンドルに半透明のピクセルがあるかどうか( TRUE:ある FALSE:ない ) int MV1AddTextureGraphHandle( int MHandle, char *Name, int GrHandle, int SemiTransFlag ); こちらの関数を使用すると3Dモデルにグラフィックハンドルをテクスチャとして追加できます テクスチャは常にテクスチャリストの末尾に追加されますので、追加したテクスチャの番号は MV1GetTextureNum( ModelHandle ) - 1 となります
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.4 )
名前:みこ 日時:2024/09/20 00:33

お世話になっております わざわざ関数を追加して頂きありがとうございます!助かります! > すみません、『選択テクスチャの削除』というのは具体的にはどのような操作をされたのでしょうか? 以下にスクリーンショット "選択テクスチャの削除.png" ファイルを追加しました ttps://drive.google.com/open?id=1bF2BSQY37Bw9tAQ312hV2mKuduzOmClo&usp=drive_fs DxLibModelViewer(64bit)の『テクスチャ』タブにて、 テクスチャ一覧から不要なテクスチャ(重複したテクスチャ)を選択して、 "選択テクスチャの削除.png" の赤枠のボタンをクリックしてテクスチャ一覧から削除しました。 その状態でmv1形式で保存したファイルが破損してしまい読み込めなくなります。 ※また、一旦すべてのテクスチャを上記の方法で削除し、『マテリアル』タブにてテクスチャを再読み込みしても結果は同じでした お手数をお掛けしますがご確認の程よろしくお願いいたしますm(_ _)m
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.5 )
名前:管理人 日時:2024/09/20 02:48

> DxLibModelViewer(64bit)の『テクスチャ』タブにて、 > テクスチャ一覧から不要なテクスチャ(重複したテクスチャ)を選択して、 > "選択テクスチャの削除.png" の赤枠のボタンをクリックしてテクスチャ一覧から削除しました。 > その状態でmv1形式で保存したファイルが破損してしまい読み込めなくなります。 スクリーンショットと詳しいご説明ありがとうございます 『選択テクスチャの削除』の機能を完全に失念していました… こちらの機能は『3Dモデル内で使用されているテクスチャは削除できない』ようになっている筈なのですが、 コードを確認したところ『3Dモデル内で選択されたテクスチャが使用されているかどうか』の判定処理にバグがあり、 『3Dモデル内で使用されているテクスチャ』を削除できてしまった場合にその後保存されたファイルが 破損ファイルとなってしまうことが分かりました 『3Dモデル内で使用されているかどうか』の判定処理のバグを修正したことで使用されているテクスチャが 誤って削除されなくなり、破損ファイルが保存されることもなくなりましたので、よろしければこちらの 修正版をお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibModelViewerTest.zip
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.6 )
名前:みこ 日時:2024/09/21 00:12

お世話になっております ありがとうございます! 確認したところ無事使用されていないテクスチャのみ削除ができました ただ、また新たな問題が見つかりました... 【新たな問題について】 先日共有したmv1ファイルですが、64bit版では正常に読み込みますが32bit版で読み込みが失敗しました DxLibModelViewer と MV1LoadModel関数 両方失敗しましたのでライブラリ自体の問題かもしれません // Log.txt 7650: Total size:507974204(496068.562kb) Alloc num:2033 7650: 7650: Read Model Convert Error : 頂点座標と頂点法線を格納するメモリ領域の確保に失敗しました 7665: Fbx Load : MV1LoadModelToReadModel が失敗しました // 確認環境 Windows11 i9-13900K RAM 64GB GPU RTX4070 Direct3DVersion DX_DIRECT3D_9EX // 確認した事 Dxlib 3.24d および 3.24e(ベータ?) の両方で32bit版のみ読み込み失敗を確認 元の3Dモデルファイル(fbx)も32bit版のみ読み込み失敗を確認 【関数追加バージョンについて】 先日追加頂いたDXライブラリのAndroidとiOS版のコンパイルバージョンは共有可能でしょうか? DxLibMakeTest.zip を使って自力でコンパイルしようとWindows版までは出来ましたがモバイル版は情報が少なく骨が折れそうでして、、申し訳ございませんm(_ _)m お手数をお掛けしますが何卒よろしくお願いいたしますm(_ _)m
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.7 )
名前:管理人 日時:2024/09/21 22:00

> 先日共有したmv1ファイルですが、64bit版では正常に読み込みますが32bit版で読み込みが失敗しました 32bitアプリでは一つのアプリが使用できるメモリの上限が 500MB 程なのですが、 以前アップしていただいた mv1ファイルを読み込むと使用メモリ容量が 957MB ほどになるので、 ログに出ています通り 32bit版ではメモリが足りず読み込みが失敗します > 先日追加頂いたDXライブラリのAndroidとiOS版のコンパイルバージョンは共有可能でしょうか? はい、こちらにアップしましたのでよろしければお使いください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 https://dxlib.xsrv.jp/temp/DxLibAndroidTest.zip // Android版
メンテ
Re: 3Dモデルの輪郭線の透明度について ( No.8 )
名前:みこ(解決) 日時:2024/09/22 09:53

> 32bitアプリでは一つのアプリが使用できるメモリの上限が 500MB 程なのですが、 > 以前アップしていただいた mv1ファイルを読み込むと使用メモリ容量が 957MB ほどになるので、 > ログに出ています通り 32bit版ではメモリが足りず読み込みが失敗します なるほどです、意外とメモリ食いますね... 32bitアプリは2〜4GBまでいける認識だったので盲点でした Android版とiOS版のライブラリありがとうございます!助かります! メモリの問題は鬼門ですがこちらで対策考えてみます どうしてもうまくいかない場合はまたご相談させて頂きたいです(汗
メンテ

Page: 1 |

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

   クッキー保存