{"id":10019,"library":"panda3d-gltf","title":"Panda3D glTF Utilities","description":"`panda3d-gltf` provides utilities to load glTF (GL Transmission Format) 3D models into the Panda3D engine. It handles parsing glTF files and converting their data (meshes, materials, textures, animations, scenes) into Panda3D's native scene graph format, simplifying the process of integrating glTF assets. The current version is 1.3.0, with releases occurring as needed for fixes and feature enhancements, rather than on a fixed schedule.","status":"active","version":"1.3.0","language":"python","source_language":"en","source_url":"https://github.com/panda3d/panda3d-gltf","tags":["panda3d","gltf","3d","model-loading","game-development","asset-pipeline"],"install":[{"cmd":"pip install panda3d-gltf","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Core 3D engine that this library integrates with.","package":"panda3d"},{"reason":"Used internally for parsing glTF file structures.","package":"pypi-gltf"}],"imports":[{"wrong":"from panda3d_gltf import gltf_loader","symbol":"GltfSettings","correct":"from gltf import GltfSettings"},{"wrong":"from panda3d_gltf import gltf_loader","symbol":"load_model","correct":"from gltf import load_model"}],"quickstart":{"code":"from direct.showbase.ShowBase import ShowBase\nfrom panda3d_gltf import gltf_loader\n\nclass MyApp(ShowBase):\n    def __init__(self):\n        ShowBase.__init__(self)\n\n        self.disableMouse() # Disable default camera control\n        self.cam.setPos(0, -10, 0)\n        self.cam.lookAt(0, 0, 0)\n        self.setBackgroundColor(0.1, 0.1, 0.1)\n\n        # --- User provided glTF model is required ---\n        # Replace 'path/to/your_model.gltf' with an actual glTF file path.\n        # For a runnable example, ensure this file exists or use a known sample.\n        # Example: a simple 'box.gltf' in a 'models' directory.\n        model_path = 'models/box.gltf' \n        \n        try:\n            model = gltf_loader.load_gltf(model_path)\n            if model:\n                model.reparent_to(self.render)\n                model.setPos(0, 0, 0) # Adjust position as needed\n                model.setScale(1)    # Adjust scale as needed\n                print(f\"Successfully loaded {model_path}\")\n            else:\n                print(f\"Failed to load {model_path}. Model object is None.\")\n        except Exception as e:\n            print(f\"Error loading glTF model from {model_path}: {e}\")\n            print(\"Please ensure the glTF file exists and is valid.\")\n\napp = MyApp()\napp.run()","lang":"python","description":"This quickstart demonstrates how to initialize a basic Panda3D application and load a glTF model using `panda3d-gltf`. It sets up a camera and a dark background for visibility. Users must replace `'models/box.gltf'` with the actual path to their glTF file. It also includes basic error handling for file loading issues."},"warnings":[{"fix":"Refer to the `panda3d-gltf` GitHub README for updated import paths and usage patterns for versions 1.0.0 and newer.","message":"Version 1.0.0 introduced a complete rewrite of the API. Code written for pre-1.0 versions is not compatible with 1.x and will require significant updates.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Ensure that the directory containing your glTF model and its dependencies (textures, bins) is added to Panda3D's VFS using `loader.mountFileSys` or `Filename.setModuleDir(os.path.abspath(os.path.dirname(__file__)))` at the start of your application, or provide absolute paths.","message":"Panda3D's Virtual File System (VFS) handles asset paths, and it might not automatically resolve relative paths as expected without `addDirectory` calls or using Panda3D's `Filename` object. This can lead to `FileNotFoundError` for models or textures.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Check the `panda3d-gltf` documentation for supported extensions. If an extension isn't supported, you may need to preprocess the glTF file to bake down unsupported features or manually implement custom loading logic.","message":"Not all glTF extensions are fully supported by `panda3d-gltf`. Models using advanced or custom extensions (e.g., specific PBR material extensions not common in core glTF, or complex animation nodes) may not load correctly or might lose certain features.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"search_vec":"'1.3.0':53 '3d':15,72 'anim':33 'asset':48,80 'asset-pipelin':79 'convert':27 'current':50 'data':29 'develop':78 'engin':20 'enhanc':63 'featur':62 'file':25 'fix':60,68 'format':14,41 'game':77 'game-develop':76 'gl':12 'gltf':2,6,11,24,47,71 'graph':40 'handl':22 'integr':46 'load':10,75 'materi':31 'mesh':30 'model':16,74 'model-load':73 'nativ':38 'need':58 'occur':56 'panda3d':1,5,19,36,70 'panda3d-gltf':4 'pars':23 'pipelin':81 'process':44 'provid':7 'rather':64 'releas':55 'scene':34,39 'schedul':69 'simplifi':42 'textur':32 'transmiss':13 'util':3,8 'version':51","created_at":"2026-04-17T01:21:57.863679+00:00","updated_at":"2026-04-17T01:21:57.863679+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.3.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/Moguri/panda3d-gltf","docs":null,"changelog":null,"pypi":"https://pypi.org/project/panda3d-gltf/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["serialization","ai-ml"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-06-30","next_check":"2026-07-30","install_tag":null}}