Unity Ninja Unity 3D Forum
To have exclusive access to all downloads, recourses and links within this forum, a free registered account is required. Just a heads up Wink

You are not connected. Please login or register

Unity Ninja Unity 3D Forum » General Dicussions » Calculate bounds of a box including rotation

Calculate bounds of a box including rotation

View previous topic View next topic Go down  Message [Page 1 of 1]

1 Calculate bounds of a box including rotation on Wed Nov 18, 2015 8:00 am

bhupi


Member [Lv. 0]
Member [Lv. 0]
hi

I working on collision system for my game i have custom colliders.

I used "http://answers.unity3d.com/questions/777855/bounds-finding-box.html" to create bounding box for collisions.

I am getting problem for the boxes where right and forward values have been used to create box. Otherwise its working fine. Anybody has any idea how to include right and forward vectors in calculating 8 points for the cube.

Below is my code for calculating points.

    public static void GetBoundsPointsNoAlloc(BoxRegion bx, Matrix4x4 colliderBox4x4,Vector3[] points, Matrix4x4 mx) {
    Transform tr = Utils.FromMatrix4x4(ref DebugCollisionTestSphere.trans,mx);
    Vector3 v3Center = bx.center;
    Vector3 v3ext = bx.GetExtents();
    Vector3 right = bx.right;
    Vector3 forw = bx.forward;
      //Quaternion qua = Quaternion.LookRotation (bx.forward,Vector3.Cross (bx.forward, bx.right));
//    tr.TransformDirection (bx.forward);
    http://tr.localRotation = qua;
    tr.forward = bx.forward;
    tr.right =   bx.right;
    http://tr.rotation = qua;
    points [0] = tr.TransformPoint (new Vector3 (v3Center.x - v3ext.x, v3Center.y + v3ext.y, v3Center.z - v3ext.z));  // Front top left corner
    points [1] = tr.TransformPoint (new Vector3 (v3Center.x + v3ext.x, v3Center.y + v3ext.y, v3Center.z - v3ext.z));  // Front top right corner
    points [2] = tr.TransformPoint (new Vector3 (v3Center.x - v3ext.x, v3Center.y - v3ext.y, v3Center.z - v3ext.z));  // Front bottom left corner
    points [3] = tr.TransformPoint (new Vector3 (v3Center.x + v3ext.x, v3Center.y - v3ext.y, v3Center.z - v3ext.z));  // Front bottom right corner
    points [4] = tr.TransformPoint (new Vector3 (v3Center.x - v3ext.x, v3Center.y + v3ext.y, v3Center.z + v3ext.z));  // Back top left corner
    points [5] = tr.TransformPoint (new Vector3 (v3Center.x + v3ext.x, v3Center.y + v3ext.y, v3Center.z + v3ext.z));  // Back top right corner
    points [6] = tr.TransformPoint (new Vector3 (v3Center.x - v3ext.x, v3Center.y - v3ext.y, v3Center.z + v3ext.z));  // Back bottom left corner
    points [7] = tr.TransformPoint (new Vector3 (v3Center.x + v3ext.x, v3Center.y - v3ext.y, v3Center.z + v3ext.z));  // Back bottom right corner
}


View user profile

View previous topic View next topic Back to top  Message [Page 1 of 1]

Permissions in this forum:
You cannot reply to topics in this forum