{"action":"created","issue":{"url":"https://api.github.com/repos/KhronosGroup/glTF/issues/695","repository_url":"https://api.github.com/repos/KhronosGroup/glTF","labels_url":"https://api.github.com/repos/KhronosGroup/glTF/issues/695/labels{/name}","comments_url":"https://api.github.com/repos/KhronosGroup/glTF/issues/695/comments","events_url":"https://api.github.com/repos/KhronosGroup/glTF/issues/695/events","html_url":"https://github.com/KhronosGroup/glTF/issues/695","id":173313739,"number":695,"title":"Handling unsupported extensions","user":{"login":"emackey","id":1235080,"avatar_url":"https://avatars.githubusercontent.com/u/1235080?v=3","gravatar_id":"","url":"https://api.github.com/users/emackey","html_url":"https://github.com/emackey","followers_url":"https://api.github.com/users/emackey/followers","following_url":"https://api.github.com/users/emackey/following{/other_user}","gists_url":"https://api.github.com/users/emackey/gists{/gist_id}","starred_url":"https://api.github.com/users/emackey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emackey/subscriptions","organizations_url":"https://api.github.com/users/emackey/orgs","repos_url":"https://api.github.com/users/emackey/repos","events_url":"https://api.github.com/users/emackey/events{/privacy}","received_events_url":"https://api.github.com/users/emackey/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/KhronosGroup/glTF/labels/extension","name":"extension","color":"7fdadc"},{"url":"https://api.github.com/repos/KhronosGroup/glTF/labels/specification","name":"specification","color":"d7e102"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-08-25T21:24:07Z","updated_at":"2016-08-26T15:15:26Z","closed_at":null,"body":"How should user agents handle models that declare unknown or unsupported extensions?\r\n\r\nCurrently, Cesium [scans the extensions list](https://github.com/AnalyticalGraphicsInc/cesium/blob/1.24/Source/Scene/Model.js#L3430-L3439) and will `throw` if it finds anything it doesn't recognize.  This is problematic for example with glTF models exported from the [Blender exporter](https://github.com/Kupoman/blendergltf), which define some as-yet-unused Blender-specific extensions, all of which should be perfectly safe for Cesium to disregard.\r\n\r\nMy proposal is that glTF should specify that user agents follow the typical web behavior of making a best-effort to display the provided content, and not fail due to the mere presence of unknown extensions.  Likewise, glTF authoring software should strive to produce models that are at least minimally useful (or at least valid glTF) even if the extension block(s) were completely removed from the file.\r\n\r\nIn the case of the `BLENDER_Physics` extension, this is trivial:  Blender encodes settings needed by its physics engine into the model, and rendering engines are free to display the model outside of any physics engine, safely ignoring the unknown extension.\r\n\r\nThings get more complicated with proposed material extensions.  Ideally, a glTF author could provide a simple fallback material, of lower visual quality, to be a stand-in for rendering engines where the high-quality material extension is unavailable.  If this is not practical, I believe there may be a [default (unlit gray) rendering strategy](https://github.com/KhronosGroup/glTF/issues/84#issuecomment-145932150) that could be used in lieu of the missing material extension."},"comment":{"url":"https://api.github.com/repos/KhronosGroup/glTF/issues/comments/242763976","html_url":"https://github.com/KhronosGroup/glTF/issues/695#issuecomment-242763976","issue_url":"https://api.github.com/repos/KhronosGroup/glTF/issues/695","id":242763976,"user":{"login":"emackey","id":1235080,"avatar_url":"https://avatars.githubusercontent.com/u/1235080?v=3","gravatar_id":"","url":"https://api.github.com/users/emackey","html_url":"https://github.com/emackey","followers_url":"https://api.github.com/users/emackey/followers","following_url":"https://api.github.com/users/emackey/following{/other_user}","gists_url":"https://api.github.com/users/emackey/gists{/gist_id}","starred_url":"https://api.github.com/users/emackey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emackey/subscriptions","organizations_url":"https://api.github.com/users/emackey/orgs","repos_url":"https://api.github.com/users/emackey/repos","events_url":"https://api.github.com/users/emackey/events{/privacy}","received_events_url":"https://api.github.com/users/emackey/received_events","type":"User","site_admin":false},"created_at":"2016-08-26T15:15:25Z","updated_at":"2016-08-26T15:15:25Z","body":"Hmm, OK, so, what should the proposal look like now?  There's an `extensionsUsed` array in glTF that has the complete list of extensions used, including optional ones.  Should there be an `extensionsRequired` array in addition to this?  Or some better way of indicating which ones are required?\r\n\r\nAnother thought, is there any need to specify the \"optional\" extensions used at all?  The required ones are listed just so the rendering engine can find them and abort early.  But do the optional ones need to be listed?  If not, maybe we could get rid of `extensionsUsed` and just have `requiredExtensions` or such?"}}
{"actor":{"display_login":"emackey"}}