次の方法で共有


Geometry.ComputeBoundingSphere

ComputeBoundingSphere メソッド

使用例

  • 境界球の生成

メッシュの境界球を算出する。

オーバーロード リスト

public Single ComputeBoundingSphere (GraphicsStream, Int32, VertexFormats, Vector3)
public Single ComputeBoundingSphere (Array, VertexFormats, Vector3)

使用例

境界球の生成

この例では、Geometry.ComputeBoundingSphere メソッドを使って、3D オブジェクトの周りに簡単な境界球を生成する方法を示す。3D グラフィックでは、境界球にはさまざまな使い方がある。たとえば、ある 3D オブジェクトが別のオブジェクトと交差するかどうかをテストするときに役に立つ。

次のサンプル コードでは、メッシュ オブジェクトの頂点データから頂点バッファを作成している。次に、新しい頂点バッファをロックし、その頂点バッファに対して Geometry アルゴリズムを計算できるようにする。ComputeBoundingSphere の出力は、メッシュ オブジェクトの中心から最も遠い端までの半径である。

using Microsoft.DirectX.Direct3D;

protected Device device; // The rendering device
device = null;
Mesh pMesh = null;
GraphicsStream adj = null;
ExtendedMaterial[] mtrl = null;
MeshFlags i32BitFlag;

float objectRadius = 0.0f; // Radius of bounding sphere of object

// Load the mesh from the specified file.
pMesh = Mesh.FromFile("tiger.x", MeshFlags.Managed, device,
                      out adj,out mtrl);
i32BitFlag = pMesh.Options.Use32Bit ? MeshFlags.Use32Bit : 0;

// Retrieve the vertex buffer data in the mesh object
VertexBuffer vb = pMesh.VertexBuffer;

// Lock the vertex buffer to generate a simple bounding sphere
GraphicsStream vertexData = vb.Lock(0, 0, LockFlags.NoSystemLock);
objectRadius = Geometry.ComputeBoundingSphere(vertexData,
                                              pMesh.NumberVertices,
                                              pMesh.VertexFormat,
                                              out objectCenter);
vb.Unlock();
vb.Dispose();

© 2002 Microsoft Corporation. All rights reserved. Terms of use.