Alternate Python bindings for the Open Asset Import Library (ASSIMP)
Project description
Impasse Readme
A simple Python wrapper for Assimp using cffi
to access the library.
Requires Python >= 3.8.
It's largely based on PyAssimp, Assimp's official Python port. In contrast to PyAssimp, it strictly targets modern Python 3 and provides type hints. It also aims to allow mutating scenes before exporting by having all wrapper classes operate directly on the underlying C data structures.
Note that impasse is not complete. Many ASSIMP features are missing.
USAGE
Complete example: 3D viewer
impasse
comes with a simple 3D viewer that shows how to load and display a 3D
model using a shader-based OpenGL pipeline.
To use it:
$ cd scripts
$ python ./3d_viewer_py3.py <path to your model>
You can use this code as starting point in your applications.
Writing your own code
To get started with impasse
, examine the simpler sample.py
script in scripts/
,
which illustrates the basic usage. All Assimp data structures are wrapped using
ctypes
. All the data+length fields in Assimp's data structures (such as
aiMesh::mNumVertices
, aiMesh::mVertices
) are replaced by simple python
lists, so you can call len()
on them to get their respective size and access
members using []
.
For example, to load a file named hello.3ds
and print the first
vertex of the first mesh, you would do (proper error handling
substituted by assertions ...):
from impasse import load
with load('hello.3ds') as scene:
assert len(scene.meshes)
mesh = scene.meshes[0]
assert len(mesh.vertices)
print(mesh.vertices[0])
Another example to list the 'top nodes' in a scene:
from impasse import load
with load('hello.3ds') as scene:
for c in scene.root_node.children:
print(str(c))
INSTALL
Install impasse
by running:
$ pip install -e .
Impasse requires an assimp dynamic library (DLL
on Windows,
.so
on linux, .dynlib
on macOS) in order to work. The default search directories are:
- the current directory
- on linux additionally:
/usr/lib
,/usr/local/lib
,/usr/lib/x86_64-linux-gnu
To build that library, refer to the Assimp master INSTALL
instructions. To look in more places, edit ./impasse/helper.py
.
There's an additional_dirs
list waiting for your entries.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file impasse-5.0.1.tar.gz
.
File metadata
- Download URL: impasse-5.0.1.tar.gz
- Upload date:
- Size: 31.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f610e7592e3bc14ff22a56a44a25ad314414d892a6d3cc99fd49a3459ce06d5 |
|
MD5 | bfb1967095d17bf256bbc6010b22d95f |
|
BLAKE2b-256 | 269f19e1d19eba39a49b69ed40c76e5e133a9af968c66daeb4f4efc667225b7e |
File details
Details for the file impasse-5.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: impasse-5.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 32.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6e36c601a22db1880ff2a2e41caa353dd7e249e2775d8d7ea707b3bb94f4faf |
|
MD5 | 93117f30c7a8b491f384c4d9e53b2183 |
|
BLAKE2b-256 | 0f7062d6073fb1c2ad1bf77c16a6f8e064bdce4bb446adab3cfcc2b950992b01 |