トップページ > 記事閲覧
テクスチャの色を超えた明るさで描画したい
名前:そめ 日時: 2021/05/09 20:26

お世話になっております Android/Windowsで3Dベースで開発を行っています パワーアップ状態(や色違い)などを表現するため表題を実現したいです 仮にGを+0.5fした状態で描画したいとします 例えばDrawGraphで実現する場合は  1.一時スクリーンにテクスチャを複写→  2.真緑のBoxをα128で加算半透明描画し→  3.その一時スクリーンを使ってバックスクリーンに描画 という手段が考えられます(Fill3倍) 3DオブジェクトをDrawModelで実現する場合も恐らく同様でしょうか パーティクルに対してもこれをやりたいのですがこいつがネックになりそうです DrawPrimitive3D を使って大量の粒子をワンコールで描画する機能を実装しようと思っているのですが 粒子ごとに1.のテクスチャ複写をするとワンコール描画ができなくなってしまいます (実際にFont描画は上記のやり方でDrawPrimitive2Dでまとめて描画していますが元のテクスチャが白いので別段問題はありません) Windowsならピクセルシェーダーで実現できるのですがAndroidが引っかかっています 法線を無視してスペキュラを任意強度で発現させるようなことができれば解決できそうですが何かやりようはないでしょうか (エミッシブだとテクスチャの黒部分が明るくなりません) もしくは↓このような関数があると非常に助かります void SetAdditionalColor( COLOR_U8 addColor );//描画時にaddColorを加算して描画する void SetSpecularForceAdd( BOOL forceAdd )//VERTEX3Dメンバspcをライティングや法線を無視して加算する機能にスイッチする ご検討よろしくお願いいたします
メンテ

Page: 1 | 2 |

Re: テクスチャの色を超えた明るさで描画したい ( No.7 )
名前:そめ 日時:2021/05/13 13:18

わかりました SetUseDirect3DVersion( DX_DIRECT3D_9EX ); でライティングオフの状態がspc加算に該当するみたいです
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.8 )
名前:管理人 日時:2021/05/14 02:12

> この場合MV1DrawModelなどのモデル描画に対しても効果をコントロールできますか? モデルの描画は使用するシェーダーが異なるので、また別の話となります ライティング無しの場合はマテリアルのスペキュラカラーを単純加算する、という仕様に 変更すれば、マテリアルのスペキュラカラーを MV1SetMaterialSpcColor で変更して ライティング無しで描画すればコントロールできるということになりますが… > わかりました >  > SetUseDirect3DVersion( DX_DIRECT3D_9EX ); >  > でライティングオフの状態がspc加算に該当するみたいです ご情報ありがとうございます なるほど、Direct3D 9 の場合にそのような挙動になるということだったのですね… 調べてみた所、Direct3D 9 でライティングがOFFの場合にスペキュラカラーが出力カラーに単純加算 されるというのは Direct3D 9 の仕様のようなので、バグではなくそれが仕様ということのようです なので、とりあえず Direct3D 11 でも DrawPrimitive3D ではライティングOFFの場合は スペキュラカラーが出力カラーに単純加算されるように処理を変更してみました よろしければその変更を加えたこちらのバージョンをお試しください m(_ _)m ( とりあえず Windows版のみ作成しました ) https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 > SetAdditionalColorがあればこれ以外にも適用範囲が広がるので単純に助かります 了解です、実装してみます ただ、現在ちょっと作業時間が殆ど確保できない状態なので、少し日数をいただくかもしれません… m(_ _;m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.9 )
名前:そめ 日時:2021/05/14 03:35

対応ありがとうございます ひとまずダウンロードしました >モデルの描画は使用するシェーダーが異なるので、また別の話となります >ライティング無しの場合はマテリアルのスペキュラカラーを単純加算する、という仕様に >変更すれば、マテリアルのスペキュラカラーを MV1SetMaterialSpcColor で変更して >ライティング無しで描画すればコントロールできるということになりますが… 了解です これで全て解決しそうです 助かります >( とりあえず Windows版のみ作成しました ) ありがとうございます Android版もお待ちしております >ただ、現在ちょっと作業時間が殆ど確保できない状態なので、少し日数をいただくかもしれません… m(_ _;m ありがとうございます お待ちしております
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.10 )
名前:管理人 日時:2021/05/15 01:55

> >ライティング無しの場合はマテリアルのスペキュラカラーを単純加算する、という仕様に > >変更すれば、マテリアルのスペキュラカラーを MV1SetMaterialSpcColor で変更して > >ライティング無しで描画すればコントロールできるということになりますが… >  > 了解です > これで全て解決しそうです > 助かります すみません、てっきり『それでは解決しない』というご返答を頂くことになると思っていました (・・; 確認なのですが、ライティングが無くなるとモデルの陰( 影ではなく陰 )がなくなり平らでノッペリとした 見た目になりますが、その状態でスペキュラカラーが加算されれば問題ないのでしょうか?
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.11 )
名前:そめ 日時:2021/05/15 06:00

なるほど、、、 早とちりしてたのですが SetDrawBrightは全ての描画に干渉するだろうと思っていました ライティングの有無によらずMV1DrawModelには影響していないのですね 似たようなSetAdditionalColorも同様に影響される機能になると思っていました ですが、3Dモデルの色加算はテクスチャに直接書き込む方式で行くか、 強調を表現する場合はライティング角度などで工夫しようと思います >その状態でスペキュラカラーが加算されれば問題ないのでしょうか? ですので、問題ないです よろしくお願いします また関数名は周りのものと適宜合わせていただいて構いません よろしくお願いいたします
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.12 )
名前:管理人 日時:2021/05/17 01:43

> >その状態でスペキュラカラーが加算されれば問題ないのでしょうか? > ですので、問題ないです > よろしくお願いします > また関数名は周りのものと適宜合わせていただいて構いません 了解です では『SetAdditionalColor 関数の追加』と 『ライティング無しの状態での MV1DrawModel ではマテリアルのスペキュラカラーを単純加算するように仕様を変更』を行います ただ、ちょっと5/24まで作業時間が全く確保できそうにないので、対応は一週間以上先となります、すみません m(_ _;m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.13 )
名前:そめ 日時:2021/05/17 16:56

かしこまりました お待ちしております もし段階的にご提供いただける流れになりそうであれば 『android版のDrawPrimitive3Dのライティング無し時のspc加算』を優先していただけると助かります ご検討よろしくお願いします それではよろしくお願いいたします
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.14 )
名前:管理人 日時:2021/05/20 03:21

ご返信が遅くなり申し訳ありません > もし段階的にご提供いただける流れになりそうであれば > 『android版のDrawPrimitive3Dのライティング無し時のspc加算』を優先していただけると助かります > ご検討よろしくお願いします 了解しました ただ、ちょっとした作業をする時間も確保できない状態となってしまいましたので、 大変申し訳ありませんが対応は 5月24日以降となります m(_ _;m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.15 )
名前:管理人 日時:2021/06/04 02:08

大変お待たせしました 『android版のDrawPrimitive3Dのライティング無し時のspc加算』を実装したバージョンになります https://dxlib.xsrv.jp/temp/DxLibAndroidTest.zip // Android版 『SetAdditionalColor 関数の追加』と 『ライティング無しの状態での MV1DrawModel ではマテリアルのスペキュラカラーを単純加算するように仕様を変更』 についてはもう暫くお待ち下さい m(_ _;m # < 他スレッドの方へ > # 現在作業時間が非常に少なくなっています # 投稿の順番でご返信しますので今暫くお待ち下さい m(_ _)m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.16 )
名前:そめ 日時:2021/06/04 15:46

お世話になっております お忙しい中対応ありがとうございます!
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.17 )
名前:そめ 日時:2021/06/05 06:31

動作確認できましたのでご報告です 対応ありがとうございます >『SetAdditionalColor 関数の追加』と >『ライティング無しの状態での MV1DrawModel ではマテリアルのスペキュラカラーを単純加算するように仕様を変更』 >についてはもう暫くお待ち下さい m(_ _;m こちらも気長にお待ちしております よろしくお願いいたします
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.18 )
名前:管理人 日時:2021/06/15 01:09

ご返信が大変遅くなり申し訳ありません 『SetAdditionalColor 関数の追加』はまだですが、とりあえず 『ライティング無しの状態での MV1DrawModel ではマテリアルのスペキュラカラーを単純加算するように仕様を変更』 を先に行ってみましたので、よろしければお試しください 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 10.3 用 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.zip // Android版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) // ビューアー https://dxlib.xsrv.jp/temp/DxLibModelViewerTest.zip すみません、『SetAdditionalColor 関数の追加』は次の時に実装します m(_ _;m # < 他スレッドの方へ > # 現在作業時間が非常に少なくなっています # 投稿の順番でご返信しますので今暫くお待ち下さい m(_ _)m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.19 )
名前:そめ 日時:2021/06/15 12:03

>ご返信が大変遅くなり申し訳ありません 滅相もございません 対応感謝いたします >『ライティング無しの状態での MV1DrawModel ではマテリアルのスペキュラカラーを単純加算するように仕様を変更』 >を先に行ってみましたので、よろしければお試しください m(_ _)m 以下動作確認できました ・VC++版 ・Android版 SetUseLight(FALSE);とMV1SetMaterialSpcColorの組み合わせで動作確認できました ・ビューアー オプションのライティングをOFFにした際、xファイルのスペキュラが法線無視で加算されているのを確認できました ありがとうございました >すみません、『SetAdditionalColor 関数の追加』は次の時に実装します m(_ _;m ありがとうございます 全然ゆっくりで構いませんのでお手すきのときに無理のない範囲でよろしくお願いいたします
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.20 )
名前:管理人 日時:2021/06/19 23:01

正常に動作したようで何よりです > 全然ゆっくりで構いませんのでお手すきのときに無理のない範囲でよろしくお願いいたします すみません、引越し後の片付けに加えてタイミング悪く仕事の方も忙しさが最高潮も迎えてしまっているので お言葉に甘えさせていただき、実装は少し後にさせていただきます m(_ _;m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.21 )
名前:管理人 日時:2021/06/27 01:44

大変お待たせしました、SetAdditionalColor を追加しました ただ、SetDrawBright や SetDrawBlendMode などに関数名を合わせて SetDrawAddColor という関数名にしました // 描画カラーに加算する色を設定する //   Red, Green, Blue : 加算する色 //   0 = 0% 255 = 100% -255 = -100% ( マイナスの値で減算もできます ) int SetDrawAddColor( int Red, int Green, int Blue ) ; こちらの関数を追加したバージョンをとりあえず Windows版だけ作成しましたので、 よろしければダウンロードしてください 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 10.3 用 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 // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 使い方は単純で SetDrawBright等と同じように DrawGraph や DrawBox等の描画関数で 描画を行う前に SetDrawAddColor( 255, 0, 64 ); のように加算する色を指定するだけです ( 注釈にもあります通り、マイナスの値を指定すると減算もできます ) とりあえずこちらでそめさんの想定通りの機能となっているかご確認ください m(_ _)m ( 合っていましたら Android版など Windows版以外にも実装しようと思います )
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.22 )
名前:そめ 日時:2021/06/30 03:17

返信が遅くなり申し訳有りません 追加対応本当にありがとうございます とりいそぎダウンロードさせていただきました 説明を読む限り全く問題ないです。ありがとうございます(マイナスまで対応していただき感謝です) 今日明日中に動作確認をさせていただきます。すぐに対応できず申し訳有りません
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.23 )
名前:そめ 日時:2021/06/30 19:08

遅れて申し訳有りません DrawGraphにて ・プラスの値 ・マイナスの値 ・SetDrawBrightのと順序関係 ・Get関数 全て希望の動作をしていました 本当にありがとうございます この方向でよろしくお願いいたします
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.24 )
名前:管理人 日時:2021/07/02 00:51

ご確認ありがとうございます ではこの方向で機能を実装しますのでもう少しお待ち下さい m(_ _)m
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.25 )
名前:管理人 日時:2021/07/19 03:37

大変お待たせしました SetDrawAddColor の Android対応を行いましたので、よろしければお使いください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibAndroidTest.zip // Android版
メンテ
Re: テクスチャの色を超えた明るさで描画したい ( No.26 )
名前:そめ(解決済) 日時:2021/07/22 21:38

ありがとうございます ひとまずダウンロードさせていただきました すべての要望に丁寧に対応いただき本当にありがとうございました
メンテ

Page: 1 | 2 |

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

   クッキー保存