| Re: 【機能追加提案】ビルボード機能にDrawRotaGraph3の要素を追加した関数 ( No.1 ) |
- 名前:管理人 日時:2025/12/09 01:01
機能追加のご提案ありがとうございます
> 現行の仕組みでは、DrawBillboard3Dに代表されるビルボードを描画する関数には画像を矩形で切り取って描画する仕組みがなく、
> またサイズは必ず縦横で同一の値を使用しており正方形での描画しかできないため、
DrawBillboard3D 単体で切り取って描画することはできませんが、DerivationGraph で画像の一部をグラフィックハンドルとしたものを
使用すれば現状でも画像の一部を切り取って描画する事はできます
また、DrawBillboard3D で描画するグラフィックハンドルが正方形ではない場合は引数 Size の値に合わせて長方形で描画されますので、
正方形でしか描画できないわけではありません( 寧ろ正方形ではない画像を正方形で描画することはできません )
> // 画像の指定矩形部分を切り取り、3D空間上に画像を描画
> DrawRectRotaBillboard3D3(VECTOR pos, int SrcX, int SrcY, int SrcWidth, int SrcHeight, float cx, float cy, float SizeX, float SizeY, float Angle, int GrHandle, int TransFlag, int ReverseXFlag, int ReverseYFlag)
こちらは仮に実装した場合は was-blue.0793さんが使用されるご予定でしょうか?
|
| Re: 【機能追加提案】ビルボード機能にDrawRotaGraph3の要素を追加した関数 ( No.2 ) |
- 名前:was-blue.0793 日時:2025/12/09 01:23
>>管理人さん
ご返答ありがとうございます。
DerivationGraphを使うような方法なども考えたのですが、1枚に複数のグラフィックをまとめているような場合は不利になりそうです。
あくまで私の場合ですが、もし実装されればこの関数を使いたい用途があります。
それではよろしくお願いします。
|
| Re: 【機能追加提案】ビルボード機能にDrawRotaGraph3の要素を追加した関数 ( No.3 ) |
- 名前:管理人 日時:2025/12/10 05:04
> DerivationGraphを使うような方法なども考えたのですが、1枚に複数のグラフィックをまとめているような場合は不利になりそうです。
> あくまで私の場合ですが、もし実装されればこの関数を使いたい用途があります。
ご返答ありがとうございます、では実装しようと思います
関数の仕様についてなのですが、float SizeX と float SizeY は、例えば SrcWidth と SrcHeight が 300 と 600 の場合で
SizeX と SizeY を 100.0f と 100.0f にした場合、画面上には横幅300 と縦幅600 を 3D空間上のサイズに変換された状態で描画される
( 縦方向に長い状態で描画される( 『SrcWidth と SrcHeight の値に関係なく SizeX と SizeY の比率で描画される』という訳ではない ) )という認識で合っていますでしょうか?
|
| Re: 【機能追加提案】ビルボード機能にDrawRotaGraph3の要素を追加した関数 ( No.4 ) |
- 名前:was-blue.0793 日時:2025/12/12 00:17
>>管理人さん
ご検討ありがとうございます。
従来のDrawBillboard3DのSizeと、DrawRectRotaGraph3のExtRateX・ExtRateYに近い使い方になると思うので、その認識で問題ありません。
それではよろしくお願いします。
|
| Re: 【機能追加提案】ビルボード機能にDrawRotaGraph3の要素を追加した関数 ( No.5 ) |
- 名前:管理人 日時:2025/12/13 22:18
ご返答ありがとうございます
とりあえず DrawRectBillboard3D を追加したバージョンをこちらにアップしましたので
よろしければダウンロードしてください 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.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/DxLibMakeTest.zip // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
DrawRectBillboard3D の定義は以下のようになっています
// 3D空間上に画像を描画( 画像内矩形指定あり )
int DrawRectBillboard3D( VECTOR Pos, int SrcX, int SrcY, int SrcWidth, int SrcHeight, float cx, float cy, float Size, float Angle, int GrHandle, int TransFlag, int ReverseXFlag = FALSE, int ReverseYFlag = FALSE ) ;
はい、DrawBillboard3D に SrcX, SrcY, SrcWidth, SrcHeight が加わりましたが、SizeX, SizeY は無く、Size のみとなっています
ご返答を頂いた後改めて内部の実装を確認したのですが、サイズの決定は以下のような計算を行っていました
float 3D上のサイズX = Size ;
float 3D上のサイズY = Size * 画像縦幅 / 画像横幅 ;
式を見ていただくと分かるのですが、3D上のサイズは横幅 は Size をそのまま、縦幅 は Size に画像横幅と画像縦幅の割合を使って算出したものとなっています
この場合、Size を 100.0f とした場合は、3D上では 横幅は100.0f 縦幅は( 画像の縦幅 / 画像の横幅 * 100.0f )となります
Size がそのまま3D上の横幅となっているので、例えば SizeX と SizeY をそれぞれ指定できるようにした場合、同じような計算を行うと
SizeX は3D上のサイズXそのものを指定することになり、3D上のサイズY は指定した SizeY とは異なるサイズ( 画像横幅と画像縦幅の比を考慮されたサイズ )で描画されることになります
というところで、『これで良いのか…?』と少し疑問になり実装しませんでした
was-blue.0793さん的に『こうすれば良いのでは?』という案はありますでしょうか? (・・;
 |
| Re: 【機能追加提案】ビルボード機能にDrawRotaGraph3の要素を追加した関数 ( No.6 ) |
- 名前:was-blue.0793 日時:2025/12/14 23:42
>> 管理人さん
ご対応ありがとうございます。
DrawRectRotaGraph3のExtRateX・ExtRateYのようなイメージでSizeX・SizeYを追加する想定でしたが、
できる限り縦横の比率を保ったままにする仕様が存在する従来のDrawBillboard3Dとの互換性を考えると
Size引数の仕様はDrawBillboard3Dに合わせておいた方がよさそうですね……
動作確認できたら追って連絡します。
|