3D空間のビルボード描画について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
coco

3D空間のビルボード描画について

#1

投稿記事 by coco » 5年前

3D空間内でHPの描画などにDrawBillboard3Dを用いてみました。
敵のモデルを描画するタイミングでHPの画像も描画してみているのですが、例えばMap上で山を挟んで自分と敵が居る場合に
敵のモデルは見えないが、HPのバーは見えてしまう状態となってしまっております。

ステージよりHPを後に描画しているせいなのですが、MV1DrawModelの様に画像もカメラを考慮して
障害物より先に画像があれば見えなくなる様に描画するにはどの様にしたら宜しいでしょうか?

・力技としてカメラからHpバーの位置までレイを飛ばして接触が無ければ描画というのを考えてみましたが、かなり処理が重そうで実用性は無いと感じます。

・板ポリゴンを用意し、それにテクスチャとしてHPバーの画像を貼り付ける。このモデルをMV1DrawModelで通常通り描画する。
 ビルボード描画の自作?ですが、これが果たして正しいのか自信がないため、より良い方法をご存知の方に教わりたい一心です・・・m(_ _)m

アバター
h2so5
副管理人
記事: 2212
登録日時: 9年前
住所: 東京
連絡を取る:

Re: 3D空間のビルボード描画について

#2

投稿記事 by h2so5 » 5年前

coco さんが書きました: ・力技としてカメラからHpバーの位置までレイを飛ばして接触が無ければ描画というのを考えてみましたが、かなり処理が重そうで実用性は無いと感じます。
なぜ処理が重いと考えているのでしょうか。
例えば敵に攻撃が当たるかどうかの判定でもそのような処理は必要なわけで、その程度で重いとなると何もできないんじゃないかと思いますが、
coco さんが書きました: ・板ポリゴンを用意し、それにテクスチャとしてHPバーの画像を貼り付ける。このモデルをMV1DrawModelで通常通り描画する。
 ビルボード描画の自作?ですが、これが果たして正しいのか自信がないため、より良い方法をご存知の方に教わりたい一心です・・・m(_ _)m
その方法だと遠くの敵のHPバーは小さくなりますがそれは良いのでしょうか。

アバター
nullptr
記事: 239
登録日時: 8年前

Re: 3D空間のビルボード描画について

#3

投稿記事 by nullptr » 5年前

環境が書かれていませんが、DXライブラリでしょうか。
DXライブラリの仕様は知りませんが、ビルボードはZバッファの対象にされていないんですかね。Zバッファを有効にして描画していますか?
 
 
✜ で C ご ✜
: す + 注 :
¦ か + 文 ¦
?
Is the は :
order C++? ✜
     糸冬   
  ――――――――
  制作・著作 NHK
 
 

coco

Re: 3D空間のビルボード描画について

#4

投稿記事 by coco » 5年前

>>h2so5さん
通常のビルボード描画に比べるとレイを飛ばしてポリゴンと衝突判定を行うため、重くなると考えておりました。
攻撃判定で同様の処理を行ってますから、描画で行った所で今はまだ処理落ちが発生するとかはありません。
しかしこういうものは積もり積もって結果として処理落ちに繋がっていくと考えておりますので、どの処理でも
自分としてはなるべく軽い処理を優先してます。

距離によるサイズ変化は確かに発生してしまいますね・・・。
一応今DrawModiBillboard3Dを用いて距離によるサイズ変化への対応を行っておりましたので、
もし板ポリゴンの方法が採用されるのであれば同様にMV1SetScaleで距離に応じたサイズ変化を行おうかと考えておりますが
如何でしょうか・・?


>>nullptr
すみません、DXライブラリとC++です。

リファレンスから
DrawSphere3D, DrawCapsule3D, DrawCone3D, DrawPolygon3D, DrawPolygonIndexed3D の3D図形描画関数で描画処理をする際にZバッファを使用するかどうかを設定します。

一応試してみたのですが、どうもビルボードは該当しない?様です。

閉鎖

“C言語何でも質問掲示板” へ戻る