we'd like to use WebGL projects in moodle 4.2. These are similar to H5P projects: There's a zip file that contains an index.html and a number of assets.
I found some info, mainly this video playlist, about SCORM integration for WebGL. It seems possible to export WebGL projects in a SCORM compliant format. However, the contents for our website come from several teams. It might not be possible to make those teams change their workflows. The sample WebGL project I have is not SCORM compliant. When I try to upload it to a SCORM package activity, I get an error message: "Incorrect file package - missing imsmanifest.xml or AICC structure".
There's a plug-in available that adds a WebGL activity to moodle. A colleague has already used it and I will test it with our systems. However, there hasn't been any activity since 2021 and I doubt the plug-in will ever be approved for publication in the moodle plug-in directory.
Is there a proven solution to use WebGL projects in moodle courses without embedding them in an IFrame from an external server?
Thanks
Oliver
(I've not tried this with WebGL but it works with other ZIP files.)
Maybe test on desktop browsers; if it works there, it would be a webgl mobile compatibility issue rather than a moodle issue.
Yes, if you're embedding static HTML/Javascript/CSS in Moodle like this, the person writing the embedded files will need to take care of the CSS to make the page responsive. Moodle just embeds the HTML page, it has no control over the display beyond that.

/* The 'resourceobject' id is set by moodle */
const IFRAME = document.querySelector('#resourceobject')
const HEAD = IFRAME.contentWindow.document.getElementsByTagName('head')[0]
/* These ids come from the WebGL project. It might be possible
to compute the correct aspect ratio from inline CSS attributes. */
let cssText = '#unity-container { width: 100%; aspect-ratio: 1.43 / 1; }' + '\n' +
'#unity-canvas { width: 100% !important; height: 80% !important; }'
let cssNode = document.createElement("style")
cssNode.appendChild(document.createTextNode(cssText))
HEAD.appendChild(cssNode)