What’s up with RectangleClipping?

Software: Away3D Lite

Declan Bullock, Newbie
Posted: 20 August 2011 02:16 PM   Total Posts: 2

I’m a bit confused with the RectangleClipping class.
I know that sometimes it culls out faces that are still (partially) in the view.
I’m wondering why this is happening.

Let’s have a look at lite’s collectFaces method:
For the sake of simplicity, I’ve removed quadfaces code

arcane override function collectFaces(mesh:Meshfaces:Vector.<Face>):void
  {
   _faces 
mesh._faces;
   
_uvtData mesh._uvtData;
   
_screenVertices mesh._screenVertices;

   
_screenVerticesCull = new Vector.<int>();
   
_index _screenVerticesCull.length _screenVertices.length 2;
   
_screenVerticesCull.fixed true;

   while (
_index--) // for every screen vertex
   
{
    _indexX 
_index 2;
    
_indexY _indexX 1;
    
_indexZ _index 2;

    if (
_uvtData[_indexZ] 0// check the t of uvt.
    
{
     _screenVerticesCull[_index] 
+= 0x10000//add 16
    
}
    
else
    
{
     
if (_screenVertices[_indexX] _minX)
      
_screenVerticesCull[_index] += 0x1000//outside minX : add 8
     
else if (_screenVertices[_indexX] _maxX)
      
_screenVerticesCull[_index] += 0x100//outside maxX : add 4

     
if (_screenVertices[_indexY] _minY)
      
_screenVerticesCull[_index] += 0x10//outside minY : add 2
     
else if (_screenVertices[_indexY] _maxY)
      
_screenVerticesCull[_index] += 0x1//outside maxY : add 1
    
}
   }

   
for each (_face in _faces// for each face
   
{
   
      
if (mesh.bothsides || _screenVertices[_face.x0] * (_screenVertices[_face.y2] _screenVertices[_face.y1]) + _screenVertices[_face.x1] * (_screenVertices[_face.y0] _screenVertices[_face.y2]) + _screenVertices[_face.x2] * (_screenVertices[_face.y1] _screenVertices[_face.y0]) > 0// This is for checking whether we're viewing it from a visible side or not.
     
{
      _cullCount 
_screenVerticesCull[_face.i0] _screenVerticesCull[_face.i1] _screenVerticesCull[_face.i2]//describes the face's situation with a number

      
if (!(_cullCount >> 16) && (_cullCount >> 12 15) < && (_cullCount >> 15) < && (_cullCount >> 15) < && (_cullCount 15) < 3)
       
faces[faces.length] _face;
    
}
   }
  } 

Could somebody explain to me why unwanted culling happens using RectangleClipping? Because it checks the position of every screen vertex, so it shouldn’t do this, right?


Many thanks in advance,

Declan

   
   

X

Away3D Forum

Member Login

Username

Password

Remember_me



X