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
1
Question by blackpag · Jul 08, 2012 at 04:02 PM · cameraworldtoscreenpoint

Camera.WorldToScreenPoint strange behaviour

the function returns (110.9,-3.3,28.9) i have 2 questions

1)isn't it supposed to return int? 2) why it returns negative y. it seems that the camera can see it.

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

2 Replies

· Add your reply
  • Sort: 
avatar image
6

Answer by aldonaletto · Jul 08, 2012 at 04:28 PM

1- No, the screen coordinates returned are floats (a Vector3, where the Z component is the distance from the camera);
2- A 3D world point doesn't need to be visible to be converted to screen coordinates - actually, even points behind the camera are returned in the screen space! It's like an infinite line passing through the camera and the 3D point: if the point is behind the camera, the line still crosses the screen space and reports valid screen coordinates.

If you need to avoid off-screen results from WorldToScreenPoint, use a dot product to detect points behind the camera, and Rect.Contains to get only valid screen coordinates (code attached to the camera):

  // checking if worldPoint isn't behind the camera:
  if (Vector3.Dot(transform.forward, worldPoint-transform.position) >= 0){
    var screenPoint: Vector3 = camera.WorldToScreenPoint(worldPoint);
    // checking if screenPoint is inside the screen area:
    if (Rect(0, 0, Screen.width, Screen.height).Contains(screenPoint){
      // screenPoint is a valid screen point
    }
  }
Comment
Add comment · Show 2 · 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 blackpag · Jul 09, 2012 at 06:51 AM 0
Share

sorry for not asking a clear question. i use the GetComponent().bounds.$$anonymous$$; to get the lowest point on the mesh. visualy it seems that the mesh is on screen but it returns negative as if it is out of screen. so it really confuse me.

all i want is to translate a position of the object in world to screen .

avatar image wikiemol · Dec 12, 2018 at 02:11 AM 0
Share

Note: This does not take into account points which are between the camera and the near plane of the view frustum.

avatar image
1

Answer by blackpag · Jul 09, 2012 at 08:01 AM

ok found a fix. my camera was perspective. when I changed it to orthographic it fixed it

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

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

7 People are following this question.

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

Related Questions

Correcting Object Offset on WorldToScreenPoint 0 Answers

How can touch input directly control an orthographic camera? 1 Answer

drawings secondary cameras in specifics places 1 Answer

Raycasting forward from screen perspective instead of game position. 1 Answer

WorldToScreenPoint, isn't getting it right? 1 Answer


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