{
"cells": [
{
"cell_type": "markdown",
"id": "f4ce92ce",
"metadata": {},
"source": [
"# PyGfx Cube Example"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f00886ec",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WGPU could not load some backends:\n",
"jupyter: No module named 'jupyter_rfb'\n"
]
},
{
"ename": "ImportError",
"evalue": "WGPU Could not load any of the supported GUI backends.\n You may need to ``pip install -U jupyter_rfb``.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[1], line 18\u001b[0m\n\u001b[1;32m 16\u001b[0m disp\u001b[38;5;241m.\u001b[39mbefore_render \u001b[38;5;241m=\u001b[39m animate\n\u001b[1;32m 17\u001b[0m disp\u001b[38;5;241m.\u001b[39mstats \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m---> 18\u001b[0m \u001b[43mdisp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mshow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcube\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/voila-huggingface/venv/lib/python3.11/site-packages/pygfx/utils/show.py:165\u001b[0m, in \u001b[0;36mDisplay.show\u001b[0;34m(self, object, up)\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[39m# Process renderer\u001b[39;00m\n\u001b[1;32m 164\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrenderer \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcanvas \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m--> 165\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mwgpu\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mgui\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mauto\u001b[39;00m \u001b[39mimport\u001b[39;00m WgpuCanvas\n\u001b[1;32m 167\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcanvas \u001b[39m=\u001b[39m WgpuCanvas()\n\u001b[1;32m 168\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrenderer \u001b[39m=\u001b[39m WgpuRenderer(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcanvas)\n",
"File \u001b[0;32m~/voila-huggingface/venv/lib/python3.11/site-packages/wgpu/gui/auto.py:190\u001b[0m\n\u001b[1;32m 186\u001b[0m \u001b[39myield\u001b[39;00m backend_name, \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mlibname\u001b[39m}\u001b[39;00m\u001b[39m can be imported\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 189\u001b[0m \u001b[39m# Load!\u001b[39;00m\n\u001b[0;32m--> 190\u001b[0m module \u001b[39m=\u001b[39m select_backend()\n\u001b[1;32m 191\u001b[0m WgpuCanvas, run, call_later \u001b[39m=\u001b[39m module\u001b[39m.\u001b[39mWgpuCanvas, module\u001b[39m.\u001b[39mrun, module\u001b[39m.\u001b[39mcall_later\n",
"File \u001b[0;32m~/voila-huggingface/venv/lib/python3.11/site-packages/wgpu/gui/auto.py:75\u001b[0m, in \u001b[0;36mselect_backend\u001b[0;34m()\u001b[0m\n\u001b[1;32m 71\u001b[0m msg \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m Install glfw using e.g. ``pip install -U glfw``,\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 72\u001b[0m msg \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m (\n\u001b[1;32m 73\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m\\n\u001b[39;00m\u001b[39m or install a qt framework using e.g. ``pip install -U pyside6``.\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 74\u001b[0m )\n\u001b[0;32m---> 75\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mImportError\u001b[39;00m(msg) \u001b[39mfrom\u001b[39;00m \u001b[39mNone\u001b[39;00m\n",
"\u001b[0;31mImportError\u001b[0m: WGPU Could not load any of the supported GUI backends.\n You may need to ``pip install -U jupyter_rfb``."
]
}
],
"source": [
"\n",
"import pygfx as gfx\n",
"import pylinalg as la\n",
"\n",
"cube = gfx.Mesh(\n",
" gfx.box_geometry(200, 200, 200),\n",
" gfx.MeshPhongMaterial(color=\"#336699\"),\n",
")\n",
"\n",
"\n",
"def animate():\n",
" rot = la.quat_from_euler((0.005, 0.01), order=\"XY\")\n",
" cube.local.rotation = la.quat_mul(rot, cube.local.rotation)\n",
"\n",
"\n",
"disp = gfx.Display()\n",
"disp.before_render = animate\n",
"disp.stats = True\n",
"disp.show(cube)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cc0ca8b1",
"metadata": {},
"outputs": [
{
"ename": "",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31mJupyter cannot be started. Error attempting to locate Jupyter: Running cells with 'Python 3.11.6 ('venv': venv)' requires jupyter and notebook package.\n",
"\u001b[1;31mRun the following command to install 'jupyter and notebook' into the Python environment. \n",
"\u001b[1;31mCommand: 'python -m pip install jupyter notebook -U\n",
"\u001b[1;31mor\n",
"\u001b[1;31mconda install jupyter notebook -U'\n",
"Click here for more info."
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "c964ed64",
"metadata": {},
"outputs": [
{
"ename": "",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31mJupyter cannot be started. Error attempting to locate Jupyter: Running cells with 'Python 3.11.6 ('venv': venv)' requires jupyter and notebook package.\n",
"\u001b[1;31mRun the following command to install 'jupyter and notebook' into the Python environment. \n",
"\u001b[1;31mCommand: 'python -m pip install jupyter notebook -U\n",
"\u001b[1;31mor\n",
"\u001b[1;31mconda install jupyter notebook -U'\n",
"Click here for more info."
]
}
],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.11.6 ('venv': venv)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.6"
},
"vscode": {
"interpreter": {
"hash": "74b572f558bec4b6e8ae72dcaeb196eb4b5b3785afbb5ff05f58614eacab3cc1"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}