Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • 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
0
Question by ryf9059 · May 17, 2015 at 10:28 AM · cameracollisiongeometryvisiblefrustum

GEOMETRYUTILITY.TESTPLANESAABB not working

Hi,

I'm trying to make make a FPS where there is a tag on the top of a enemy indicating where it is (similar to the objective/follow tag in battlefield/COD). It's is a 3D position (top of the enemy) that's been projected into 2D space using camera.WorldToScreenPoint, which is then rendered in 2D UI camera.

There is one problem however, is that when my camera is completely back-facing the tag it still gets rendered, after some debugging, my assumption is that the camera.WorldToScreenPoint will project a normal and penetrate the camera so no matter the angle of the camera it will get calculated in the screen even it's at the back of the camera.

I then came up with an idea that, I just simple test if the tag is inside the camera frustum, if not, the UI will simply not render, that should solve the problem.

During my research I found that the method GEOMETRYUTILITY.TESTPLANESAABB could test if an object or bounding box is inside (or intersects with) the frustum planes or not. I have then took the code sample from THIS LINK and interfaced with my scripts.

However, when it actually runs it gives me completely wrong result. Saying object detected no matter what, even that object is completely outside the frustum. Here is the screenshot.

alt text

I can't figure out what's going on. Did I miss something? Please Help.

Comment
Add comment
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
2

Answer by Bunny83 · May 17, 2015 at 11:33 AM

camera.WorldToScreenPoint just projects the 3d position onto a 2d plane. The projection of course happens both ways, no matter if it's before the camera or behind. You might want to check the returned z value of the projected point as it contains the signed distance from the camera. That means if the z value is positive the object is before the screen plane and if it's negative it's behind.

If you use the example code as it is, it's abvious why it's not working ^^. The example code calculates the cameras frustum planes only once in start. So moving the camera afterward doesn't change the planes according to the new camera position / orientation.

Comment
Add comment · 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 ryf9059 · May 17, 2015 at 12:45 PM 0
Share

Thanks!! It worked!

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.

Follow this Question

Answers Answers and Comments

20 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

Related Questions

Camera Zoom When Camera Touches Geometry 2 Answers

3rd Person Cam Collides when it shouldn't 1 Answer

Camera looking through objects when touching 1 Answer

Camera Question 0 Answers

Know if gameObject is being seen 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