• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
Question by Sendatsu_Yoshimitsu · Jul 15, 2019 at 01:17 PM · boundsboundingbox

Why isn't Bounds.Encapsulate working as expected?

Based on reading https://docs.unity3d.com/ScriptReference/Bounds.html my expectation is that if I initialize a Bounds with one object's position, then encapsulate a number of additional objects' positions, I'll end up with a bounding box that completely encloses all of the specified objects. To test this, I wrote a quick & dirty script:

         public List<GameObject> objectsToEncapsulate = new List<GameObject>();
 
         private void OnDrawGizmos()
         {
             Gizmos.color = Color.green;
 
             if (objectsToEncapsulate.Count > 0)
             {
                 Bounds newBounds = new Bounds(objectsToEncapsulate[0].transform.position, new Vector3(0,1,0));
                 for (int i = 0; i < objectsToEncapsulate.Count; i++)
                 {
                     newBounds.Encapsulate(objectsToEncapsulate[i].transform.position);
                 }
 
                 Gizmos.DrawWireCube(newBounds.center, newBounds.extents);
             }
         }

This seems to produce weird results when I run it:

alt text The above is a screenshot of the test in action, the only objects in objectsToEncapsulate are the four cubes but instead of the wireframe outline completely encapsulating them, it seems to just be transcribing a smaller internal section of their area- am I just completely misunderstanding how bounds are supposed to behave?

Comment

People who like this

0 Show 0
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by Dragate · Jul 15, 2019 at 02:05 PM

Extents is always half of the size. As DrawWireCube() requests the size as the 2nd argument, you should have given the size (not the extents) of the bounds. If you want to fully encapsulate your objects (not only their centers), it's best to give Encapsulate() the bounds of the objects instead of their position.

Comment
Bunny83

People who like this

1 Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Sendatsu_Yoshimitsu · Jul 15, 2019 at 02:24 PM 0
Share

Oh that makes perfect sense, thank you for clarifying!

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

107 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Skinned Mesh disappears if the camera is too close. 2 Answers

Reporting the vertices of a 3D Bounding Box to Screen position 0 Answers

"Recalculate" the mesh bounds to the objects rotation? 3 Answers

Is the gameobject is on the same level with it's surface on which it is located? 0 Answers

render the bounding box of collider or mesh how to? 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges