//---------------------------------------------------------
int CMesh::FrustumSelect( Vector3 Normals[4], Vector3 Points[8] )
{

	int nbHits = 0;
	Vector3 Tri[3];
	
	for (int nTri = 0; nTri < (int)mTriCount; nTri++ )
	{	
		int nV = nTri*3;
		Tri[0] = mVertices[ mIndices[ nV ] ];
		Tri[1] = mVertices[ mIndices[ nV+1 ] ];
		Tri[2] = mVertices[ mIndices[ nV+2 ] ];

		if ( TriInFrustum( Tri, Normals, Points ) )
		{
			selectTriangle( nTri );			
			nbHits++;			
		}
	}
	return nbHits;
}
示例#2
0
//
// Select mesh triangles that are in a frustum defined by 8 Points( and 4 face normals )
// I'm currently ignoring near and far planes, but they could be easily added
//
int CMesh::FrustumSelect( CVec3 Normals[4], CVec3 Points[8] )
{
	int nbHits = 0;
	CVec3 Tri[3];
	
	for (int nTri = 0; nTri < m_nbTris; nTri++ )
		{	
		int nV = nTri*3;
		Tri[0] = m_pVerts[ m_pTris[ nV ] ];
		Tri[1] = m_pVerts[ m_pTris[ nV+1 ] ];
		Tri[2] = m_pVerts[ m_pTris[ nV+2 ] ];

		if ( TriInFrustum( Tri, Normals, Points ) )
			{
			SelectTriangle( nTri );			
			nbHits++;			
			}
		}
	
	return nbHits;
}