OROCHI
 
Loading...
Searching...
No Matches
GxShapeTrimesh Class Reference

三角メッシュ形状クラス More...

#include <GxShape.h>

Inheritance diagram for GxShapeTrimesh:
Collaboration diagram for GxShapeTrimesh:

Public Member Functions

初期化
 GxShapeTrimesh (void)
 デフォルトコンストラクタ
 
 GxShapeTrimesh (const GxMatrixAffine &matrix, const GxVector3 *pVertex, u32 numVertex, const u32 *pIndex, u32 numIndex, const u32 *pCheckFlag, const s32 *pMaterial)
 
アクセサ
GX_FORCE_INLINE const GxVector3getVertex (u32 number) const
 頂点を取得
 
GX_FORCE_INLINE const GxVector3getVertexAddress (void) const
 頂点アドレスを取得
 
GX_FORCE_INLINE const u32 * getIndexAddress (void) const
 インデックスアドレスを取得
 
b32 getTriangleVertex (u32 triangleIndex, GxVector3 &vertex0, GxVector3 &vertex1, GxVector3 &vertex2) const
 Indexから3頂点を取得
 
const GxVector3 getNormal (const GxVector3 &position) const override
 指定位置への法線を取得
 
GX_FORCE_INLINE const GxMatrixAffinegetMatrix (void) const
 マトリクス取得
 
GX_FORCE_INLINE void setMatrix (const GxMatrixAffine &matrix)
 マトリクス設定(スケールは許可しない)
 
constexpr u32 getNumVertex (void) const
 頂点数を取得
 
constexpr u32 getNumTriangle (void) const
 三角メッシュの数を取得する
 
constexpr u32 getCheckFlag (u32 triangleIndex) const
 判定用フラグを取得
 
GX_FORCE_INLINE b32 isCheckFlagExist (void) const
 判定用フラグが存在するかチェック
 
constexpr s32 getMaterial (u32 triangleIndex) const
 マテリアルを取得
 
GX_FORCE_INLINE b32 isMaterialExist (void) const
 マテリアルが存在するかチェック
 
- Public Member Functions inherited from GxShape
 GxShape (void)
 コンストラクタ
 
 ~GxShape (void) override
 デストラクタ
 
virtual b32 isInclude (const GxVector3 &) const
 
- Public Member Functions inherited from GxClassBase
constexpr GxClassBase (void)
 コンストラクタ
 
constexpr GxClassBase (const GxClassBase &base)
 コピーコンストラクタ
 
 ~GxClassBase (void) override
 デストラクタ
 
- Public Member Functions inherited from GxClassBaseRoot
constexpr GxClassBaseRoot (void)
 コンストラクタ
 
constexpr GxClassBaseRoot (const GxClassBaseRoot &)
 コピーコンストラクタ
 
virtual ~GxClassBaseRoot (void)
 デストラクタ
 
constexpr GxClassBaseRootoperator= (const GxClassBaseRoot &)
 代入演算子
 
virtual GxRttigetRtti (void) const =0
 Rttiの取得
 
virtual GX_FORCE_INLINE const GxTypedObjectgetDefaultObject (void)
 デフォルトオブジェクトを取得
 
GX_FORCE_INLINE b32 isDefaultObject (void)
 デフォルトオブジェクト判定
 

操作

static void getRingTriangleIndices (const GxVector3 *pVertexList, u32 vertexCount, GxArray &triangleIndices, u32 vertexStartIndex=0)
 リング状の頂点配列をそのままポリゴン化したインデックスを取得
 
static void getDelaunayTriangles (const GxVector3 *pVertexList, u32 vertexCount, GxArray &triangleVertices)
 ドロネー分割三角形を取得
 
static void getDelaunayTriangleIndices (const GxVector3 *pVertexList, u32 vertexCount, GxArray &triangleIndices, u32 vertexStartIndex=0)
 ドロネー分割三角形をインデックスで取得
 

Additional Inherited Members

- Static Public Member Functions inherited from GxShape
static b32 isHit (const GxShapeSphere &sphere0, const GxShapeSphere &sphere1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球と球の衝突判定
 
static b32 isHit (const GxShapeSphere &sphere, const GxShapeBox &box, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球と箱の衝突判定
 
static b32 isHit (const GxShapeSphere &sphere, const GxShapeCylinder &cylinder, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球と円柱の衝突判定
 
static b32 isHit (const GxShapeSphere &sphere, const GxShapeMultisphere &multisphere, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球とカプセルの衝突判定
 
static b32 isHit (const GxShapeSphere &sphere, const GxShapePlane &plane, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球と平面の衝突判定
 
static b32 isHit (const GxShapeSphere &sphere, const GxShapeTrimesh &trimesh, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球と三角メッシュの衝突判定
 
static b32 isHitSphereRay (const GxShapeSphere &sphere, const GxShapeRay &ray, f32 *pParameter=nullptr, GxVector3 *pHitNormal=nullptr)
 球と線分の衝突判定
 
static b32 isHit (const GxShapeSphere &sphere, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 球と光束の衝突判定
 
static b32 isHit (const GxShapeBox &box0, const GxShapeBox &box1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱と箱の衝突判定
 
static b32 isHit (const GxShapeBox &box, const GxShapeCylinder &cylinder, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱と円柱の衝突判定
 
static b32 isHit (const GxShapeBox &box, const GxShapeMultisphere &multisphere, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱とカプセルの衝突判定
 
static b32 isHit (const GxShapeBox &box, const GxShapePlane &plane, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱と平面の衝突判定
 
static b32 isHit (const GxShapeBox &box, const GxVector3 &n, const GxVector3 &p, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱と平面の衝突判定
 
static b32 isHit (const GxShapeBox &box, const GxShapeTrimesh &trimesh, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱と三角メッシュの衝突判定
 
static b32 isHitBoxRay (const GxShapeBox &box, const GxShapeRay &ray, f32 *pParam=nullptr, GxVector3 *pHitNormal=nullptr)
 箱と線分の衝突判定
 
static b32 isHit (const GxShapeBox &box, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 箱と光束の衝突判定
 
static b32 isHit (const GxShapeCylinder &cylinder0, const GxShapeCylinder &cylinder1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 円柱と円柱の衝突判定
 
static b32 isHit (const GxShapeCylinder &cylinder, const GxShapeMultisphere &multisphere, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 円柱とカプセルの衝突判定
 
static b32 isHit (const GxShapeCylinder &cylinder, const GxShapePlane &plane, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 円柱と平面の衝突判定
 
static b32 isHit (const GxShapeCylinder &cylinder, const GxShapeTrimesh &trimesh, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 円柱と三角メッシュの衝突判定
 
static b32 isHitCylinderRay (const GxShapeCylinder &cylinder, const GxShapeRay &ray, f32 *pParameter=nullptr, GxVector3 *pHitNormal=nullptr)
 円柱と線分の衝突判定
 
static b32 isHit (const GxShapeCylinder &cylinder, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 円柱と光束の衝突判定
 
static b32 isHit (const GxShapeCapsule &multisphere0, const GxShapeCapsule &multisphere1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 カプセルとカプセルの衝突判定
 
static b32 isHit (const GxShapeCapsule &multisphere, const GxShapePlane &plane, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 カプセルと平面の衝突判定
 
static b32 isHit (const GxShapeCapsule &multisphere, const GxShapeTrimesh &trimesh, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 カプセルと三角メッシュの衝突判定
 
static b32 isHitCapsuleRay (const GxShapeCapsule &multisphere, const GxShapeRay &ray, f32 *pParameter=nullptr, GxVector3 *pHitNormal=nullptr)
 カプセルと線分の衝突判定
 
static b32 isHit (const GxShapeCapsule &multisphere, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 カプセルと光束の衝突判定
 
static b32 isHit (const GxShapeMultisphere &multisphere0, const GxShapeMultisphere &multisphere1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 マルチ球とマルチ球の衝突判定
 
static b32 isHit (const GxShapeMultisphere &multisphere, const GxShapePlane &plane, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 マルチ球と平面の衝突判定
 
static b32 isHit (const GxShapeMultisphere &multisphere, const GxShapeTrimesh &trimesh, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 マルチ球と三角メッシュの衝突判定
 
static b32 isHitMultisphereRay (const GxShapeMultisphere &multisphere, const GxShapeRay &ray, f32 *pParameter=nullptr, GxVector3 *pHitNormal=nullptr)
 マルチ球と線分の衝突判定
 
static b32 isHit (const GxShapeMultisphere &multisphere, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 マルチ球と光束の衝突判定
 
static b32 isHit (const GxShapeAxisAlignedBox &aab0, const GxShapeAxisAlignedBox &aab1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 AABとAABの衝突判定
 
static b32 isHit (const GxShapeAxisAlignedBox &aabb, const GxShapePlane &plane, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 AABBと平面の交差判定
 
static b32 isHit (const GxShapeAxisAlignedBox &aabb, const GxVector3 &n, const GxVector3 &p, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 AABBと平面の交差判定
 
static b32 isHit (const GxShapePlane &plane0, const GxShapePlane &plane1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 平面と平面の衝突判定
 
static b32 isHit (const GxShapePlane &plane, const GxShapeTrimesh &trimesh, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 平面と三角メッシュの衝突判定
 
static b32 isHitPlaneRay (const GxShapePlane &plane, const GxShapeRay &ray, f32 *pParameter=nullptr, GxVector3 *pHitNormal=nullptr)
 平面と線分の衝突判定
 
static b32 isHit (const GxShapePlane &plane, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 平面と光束の衝突判定
 
static b32 isHit (const GxShapeTrimesh &trimesh0, const GxShapeTrimesh &trimesh1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 三角メッシュと三角メッシュの衝突判定
 
static b32 isHit (const GxShapeTrimesh &trimesh, const GxShapeRay &ray, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 三角メッシュと線分の衝突判定
 
static b32 isHit (const GxShapeTrimesh &trimesh, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 三角メッシュと光束の衝突判定
 
static b32 isHit (const GxShapeRay &ray0, const GxShapeRay &ray1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 線分と線分の衝突判定
 
static b32 isHit (const GxShapeRay &ray, const GxShapeBeam &beam, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 線分と光束の衝突判定
 
static b32 isHit (const GxShapeBeam &beam0, const GxShapeBeam &beam1, GxVector3 *pHitPosition=nullptr, GxVector3 *pAdjustVector=nullptr)
 光束と光束の衝突判定
 
static void getClosestPoint (const GxVector3 &point, const GxShapeBox &box, GxVector3 &closestPoint, GxVector3 &surfacePoint)
 点と箱の最近接点を求める
 
static void getClosestPoint (const GxVector3 &point, const GxShapeRay &ray, GxVector3 &closestPoint)
 点と線分の最近接点を求める
 
- Static Public Member Functions inherited from GxClassBaseRoot
static GX_FORCE_INLINE GxRtti__getStaticRtti (void)
 Rttiの取得
 
- Static Public Attributes inherited from GxShape
static const f32 HIT_DISTANCE = 5.0e-1
 この距離未満なら衝突と判定
 
static const f32 NORMALIZED_JUDGE_MAX = 1.0e-3
 fabs(lengthSquare - 1.f)がこの値未満なら正規化と判定
 

Detailed Description

三角メッシュ形状クラス

Constructor & Destructor Documentation

◆ GxShapeTrimesh()

GxShapeTrimesh::GxShapeTrimesh ( const GxMatrixAffine & matrix,
const GxVector3 * pVertex,
u32 numVertex,
const u32 * pIndex,
u32 numIndex,
const u32 * pCheckFlag,
const s32 * pMaterial )
inline

コンストラクタ

Parameters
matrix[in] 位置・姿勢マトリクス
pVertex[in] メッシュ頂点座標データ
numVertex[in] 頂点数
pIndex[in] メッシュ頂点インデックスデータ
numIndex[in] インデックスデータ数
pCheckFlag[in] チェックフラグデータ(?)
pMaterial[in] メッシュのマテリアルデータ(?)

Member Function Documentation

◆ getDelaunayTriangleIndices()

void GxShapeTrimesh::getDelaunayTriangleIndices ( const GxVector3 * pVertexList,
u32 vertexCount,
GxArray & triangleIndices,
u32 vertexStartIndex = 0 )
static

ドロネー分割三角形をインデックスで取得

Parameters
pVertexList[in] 頂点リスト
vertexCount[in] 頂点数
triangleIndices[out] 三角形頂点インデックスリスト
vertexStartIndex[in] 頂点開始インデックス
Here is the call graph for this function:

◆ getDelaunayTriangles()

void GxShapeTrimesh::getDelaunayTriangles ( const GxVector3 * pVertexList,
u32 vertexCount,
GxArray & triangleVertices )
static

ドロネー分割三角形を取得

Parameters
pVertexList[in] 頂点リスト
vertexCount[in] 頂点数
triangleVertices[out] 三角形頂点リスト
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getNormal()

const GxVector3 GxShapeTrimesh::getNormal ( const GxVector3 & position) const
overridevirtual

指定位置への法線を取得

Parameters
position[in] 表面位置
Returns
法線

Implements GxShape.

◆ getRingTriangleIndices()

void GxShapeTrimesh::getRingTriangleIndices ( const GxVector3 * pVertexList,
u32 vertexCount,
GxArray & triangleIndices,
u32 vertexStartIndex = 0 )
static

リング状の頂点配列をそのままポリゴン化したインデックスを取得

Parameters
pVertexList[in] 頂点リスト
vertexCount[in] 頂点数
triangleIndices[out] 三角形頂点インデックスリスト
vertexStartIndex[in] 頂点開始インデックス
Here is the call graph for this function:

◆ getTriangleVertex()

b32 GxShapeTrimesh::getTriangleVertex ( u32 triangleIndex,
GxVector3 & vertex0,
GxVector3 & vertex1,
GxVector3 & vertex2 ) const

Indexから3頂点を取得

Parameters
triangleIndex[in] 取得したい三角形のインデックス
vertex0[out] 頂点座標0
vertex0[out] 頂点座標1
vertex0[out] 頂点座標2
Returns
成功ならtrue
Here is the call graph for this function:

The documentation for this class was generated from the following files: