忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

メッシュから境界球を得る

LPD3DXMESHの変数から境界球(半径)を算出する方法を紹介します。
D3DXComputeBoundingSphere()という関数を用います。
MSDNもどうぞ。


// メッシュの境界球の半径を返す。
float GetRadiusMesh( LPD3DXMESH _pMesh )
{
    float rad;
    
    VOID* l_pFirst = NULL;
    if(FAILED( _pMesh->LockVertexBuffer(0, &l_pFirst) ))
    {
        _pMesh->UnlockVertexBuffer();
        return ER_READ;
    }
    D3DXVECTOR3 vCenter;    
    D3DXComputeBoundingSphere(
        static_cast<D3DXVECTOR3 *>(l_pFirst), 
        _pMesh->GetNumVertices(), 
        D3DXGetFVFVertexSize(_pMesh->GetFVF()), 
        &vCenter,   // 中心座標
        &rad        // 半径
        );
    m_pMesh->UnlockVertexBuffer();
    
    return rad;
}

中心座標について
モデル作成時に中心にモデルが来るようにしていればいいんだけど、
ちょっと上の位置に作られていたりしたら
中心座標のYの値が大きくなります。

テストしていないので、うまくいかなかったら巷のサイトを参考にして欲しいです。

byリーダ和田

拍手[0回]

PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]