-
Notifications
You must be signed in to change notification settings - Fork 1.2k
EXT_mesh_primitive_edge_visibility #2479
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
base: main
Are you sure you want to change the base?
Conversation
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
kring
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for opening this @pmconne! I have a few thoughts below.
Overall it looks good! I can't see any particular reason it couldn't be implemented in Unreal Engine or Unity.
...ndor/EXT_mesh_primitive_edge_visibility/schema/primitive.BENTLEY_edge_visibility.schema.json
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
...ndor/EXT_mesh_primitive_edge_visibility/schema/primitive.BENTLEY_edge_visibility.schema.json
Outdated
Show resolved
Hide resolved
|
@kring @javagl @lexaknyazev or others - do you have any additional feedback for @pmconne on this extension? |
|
@pmconne I read through the spec again and I think this looks great! No further suggestions from me. I would like to see a complete implementation of this extension in CesiumJS or iTwinJS, though, if there isn't one already. It would be useful both as proof that it can be implemented sensibly in WebGL (2?), and for my own interest in the rendering techniques involved. |
Most of the rendering pieces are already in place in iTwin.js. I think the quickest path to a complete implementation would be for me to update the iModel -> 3D Tiles pipeline to encode the edges according to the spec and update iTwin.js decode accordingly. |
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
...sh_primitive_edge_visibility/schema/primitive.EXT_mesh_primitive_edge_visibility.schema.json
Outdated
Show resolved
Hide resolved
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
Co-authored-by: Aaron Franke <[email protected]>
aaronfranke
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Beveling and rounding are only meaningful for wide (> 1 pixel) lines. Wide lines/edges are important in many of the same CAD use cases as visible edges, but IMO they are mostly orthogonal. I plan to propose a separate "line material" extension to describe wide/patterned lines (which would also be applicable to edges). |
|
@kring said:
We have implemented this extension in iTwin.js. |
extensions/2.0/Vendor/EXT_mesh_primitive_edge_visibility/README.md
Outdated
Show resolved
Hide resolved
|
@lexaknyazev Any other changes required preventing us from getting this approved and merged? Like |
|
The spec has been updated to now list CesiumJS as a known implementation in addition to iTwin.js. These implementations have the caveat that they do not implement the full capability of this specification, namely materials. This support is forthcoming. |

The
EXT_mesh_primitive_edge_visibilityextension augments a triangle mesh primitive with sufficient information to enable engines to produce non-photorealistic visualizations of 3D objects with visible edges. The edge visibility is encoded in a highly compact form to avoid excessively bloating the glTF asset. Adapted for glTF from iTwin/itwinjs-core#5581. We intend to add support for the extension to the CesiumJS engine.