Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3D commentary annotation orientation #2315

Open
gjcope opened this issue Oct 11, 2024 · 0 comments
Open

3D commentary annotation orientation #2315

gjcope opened this issue Oct 11, 2024 · 0 comments

Comments

@gjcope
Copy link

gjcope commented Oct 11, 2024

This issue addresses commentary annotations in a 3D space. Specifically, the common use case of comments that describe and are associated with a specific point on the surface of the 3D model.

TL;DR - I propose that some fairly common issues with positioning of commentary annotations in 3D could be solved by including a vector describing the orientation of the annotation body relative to the point on the model that it references.

I couldn't find any current draft manifest code for commentary annotations, but from TSG discussions my understanding was that the proposed spec for these annotations would include placement in 3D space but not orientation. I think this will be limiting in a couple of ways, described below.

  1. Placing of comments in a non-obscuring/optimal way
    Determining placement of a point-relative comment annotation is fairly simple, with many 3d applications and viewers (ex. , Voyager) allowing you to select this position by simply clicking the point on the surface of the model that will be referenced. For certain implementations of the actual commentary annotation though, a position alone is not enough. Placing the visual annotation body at a point directly on the surface of the model can result in occlusion and intersecting geometries. Nearby commentary annotations can overlap and become unreadable. This issue can easily be solved by providing the annotation with an offset from the surface of the model. This can be achieved by moving the annotation away from the model along a local orientation vector. Including this vector in the spec would not only allow developers to easily and efficiently create these offsets, but it also accounts for unique scenarios where one may want the offset to happen in a non-normal direction.

The images below show an example of an occluded annotation, and the same annotation revealed by providing an offset along a defined vector.

anno1
anno2

  1. Automatically hiding/showing annotations relative to camera position
    An orientation vector can also be valuable for hiding commenting annotations when the points they reference are not visible to the user. This is often done for html screen-space style annotations that would otherwise never be occluded by the model. This technique could be implemented in a rudimentary without a defined orientation vector, but does not account for model-specific behavior. For instance, in the images above there is a semi-transparent annotation titled "Padding" that is visible. This annotation is actually referencing an unseen point on the inside of the helmet model, but is visible because the surface it is attached to is technically still pointing at the camera. With a definable orientation vector, we could fix this scenario by adjusting the orientation such that it is only visible when the underside of the model is facing the camera.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants