DrawCapsule3D

3D空間にカプセルを描画する

DrawCapsule3D Pos1, Pos2, r, DivNum, DifColor, SpcColor, FillFlag

VECTOR Pos1 : カプセルを形成する二点中の一点の座標
VECTOR Pos2 : カプセルを形成する二点中の一点の座標
float r : カプセルの幅
int DivNum : カプセルを形成するポリゴンの細かさ
unsigned int DifColor : カプセルの頂点ディフューズカラー
unsigned int SpcColor : カプセルの頂点スペキュラカラー
int FillFlag : カプセルを塗りつぶすかどうか( TRUE:塗りつぶす FALSE:塗りつぶさない )

(プラグイン / モジュール : DxLibW)

解説

3D空間にカプセルを描画します。

この関数は大きさ r の Pos1 と Pos2 を中心座標とするカプセルの外側を結んだような形のカプセルを描画します。

DivNum はカプセルを形成するポリゴンの細かさです。

引数 Pos1 と Pos2 は float x, y, z の三つのメンバ変数を持っている構造体 VECTOR で、
この3要素を使用して3次元の座標を指定します。

引数が構造体だと事前に引数に渡す構造体を宣言してメンバ変数に座標値を代入して・・・と準備が面倒ですが、
引数に x, y, z の値を渡すとそれを元にした VECTOR 構造体を戻り値で返してくれる関数 VGet を使用することで簡素に引数を渡すことが出来ます。

// 例:
// 座標 ( 320.0f, 100.0f, 0.0f ) と ( 320.0f, 300.0f, 0.0f ) を2点とする
// 半径 40.0f のカプセルを描画する
DrawCapsule3D( VGet(320.0f,100.0f,0.0f), VGet(320.0f,300.0f,0.0f), 40.0f,8,GetColor(255,255,0), FALSE);

引数 DifColor と SpcColor はそれぞれカプセルの頂点ディフューズカラーと頂点スペキュラカラーです、
この関数で描かれるカプセルはライティング計算が行われるので、
ただの「描画カラー」ではなくライティング計算で使用される「頂点ディフューズカラー( 拡散光色 )」と「頂点スペキュラカラー( 反射光色 )」を指定します。

この二つの色の値はライブラリの関数『GetColor』を使って取得します。

尚、この引数で指定する値はカプセルを描画する際に用意される頂点データに含まれるディフューズカラーとスペキュラカラーですので、
SetMaterialUseVertDifColorSetMaterialUseVertSpcColor で頂点カラーを使用しない設定にした場合はこの引数の値は使用されず、
SetMaterialParam の引数で指定されたマテリアルのディフューズカラーとスペキュラカラーがそれぞれ使用されます。

因みにカプセルの中身を塗りつぶす場合、
ZバッファとZバッファへの書き込みをそれぞれ SetUseZBuffer3D 関数と SetWriteZBuffer3D 関数で有効にしておかないと手前の面を描画した後に後ろの面が描画されたりして正常な見た目になりませんので注意してください。

戻り値:
  0:成功

関連項目

DrawCapsule3DD3Dのカプセルを描画する(DxLibW)

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib グラフィック描画
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs