I use Jupyter notebooks to teach fluid mechanics. It allows me to present students with various forms of media from basic python examples to videos and 3D models. https://github.com/nolankucd/MEEN20010
Currently I use pyGEL3D to display simple OBJ files and it works reasonably well. The models can be rotated and zoomed etc but there is no support for materials or animation. I can export the notebooks to embedded html and everything works. This is convenient because I can support students with different technical abilities.
I’d like to transition to glTF files created in Blender to avail of animation and material support. I want to keep the solution simple or self contained to keep the simplicity of the material.
I’ve tried a few different approaches. I’ve found pyVista can load the scene but does not support animation and performance can be poor.
Using an iframe I’ve tried a few viewers. Don McCurdy’s viewer (https://gltf-viewer.donmccurdy.com) works well but I need to manually load local files via drag and drop. I can load a file hosted via CORS but I’d like to load a local file automatically.
from IPython.display import IFrame
model_url = "https://www.khronos.org/assets/gltf/BusterDrone.glb"
IFrame("https://gltf-viewer.donmccurdy.com#kiosk=1&model="+model_url, width=800, height=600)
There is a loader example on threejs.org which works nicely and loads the example files but I’m unsure how to modify it to load a local file.
https://threejs.org/examples/#webgl_loader_gltf
Can anyone help me understand how display a glTF file in Jupyter?