2013-12-09 3 views
1

큰 상자에 작은 상자가 포함되어 있지 않은 이유를 알아 내려고하고 있습니다.XNA 경계 상자가 교차하지 않음

BoundingBox b = new BoundingBox(new Vector3(soldier.Position.X - 0.3f, soldier.Position.Y, soldier.Position.Z + 0.2f), new Vector3(soldier.Position.X + 0.3f, soldier.Position.Y + 1.8f, soldier.Position.Z - 0.2f)); 
BoundingBox b2 = new BoundingBox(new Vector3(soldier.Position.X - 0.015f, soldier.Position.Y + 0.01f, soldier.Position.Z + 0.07f), new Vector3(soldier.Position.X + 0.015f, soldier.Position.Y + 0.015f, soldier.Position.Z - 0.055f)); 
Console.WriteLine(b.Contains(b2)); 
Console.WriteLine(soldier.Position); 

BoundingBoxRenderer.Render(b, GraphicsDevice, cam.View, cam.Projection, Color.Red); 
BoundingBoxRenderer.Render(b2, GraphicsDevice, cam.View, cam.Projection, Color.White); 

을 그리고는 "연결되지 않은"인쇄 :

나는 다음 있습니다. 그러나 작은 상자 (b2)는 분명히 큰 상자 (b) 안에 있습니다. 그것이 왜곡 된 이유가 있습니까?

enter image description here 빨간색 상자 (b) 안에 흰색 상자 (b2)를 그립니다. 그러나, 그것은 인쇄 : 내 경계 상자에 문제가

Disjoint {X:22.5 Y:0 Z:-21.5}

있습니까?

답변

0

내 경계 상자에 문제가 있습니까?

예. 상자가 밖으로 나와 있습니다. 모든 경계 상자의 경우; min.x는 max.x보다 낮은 값이어야합니다. min.y는 최대 값보다 낮은 값이어야합니다. min.z는 max.z.보다 낮은 값이어야합니다.

하지만 두 상자 모두 min.z는 max.z보다 큰 값입니다. 이것은 요구되는 것과는 정반대이기 때문에 상자가 실패하게됩니다.

그러면 왜 제대로 렌더링되는 것입니까?

아마도 Z 구성 요소를 무효화하는 렌더링 코드에 문제가 있습니다.

관련 문제