Skip to main content

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.

Screenshot

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

impasse-5.0.1.tar.gz (31.1 kB view details)

Uploaded Source

Built Distribution

impasse-5.0.1-py2.py3-none-any.whl (32.6 kB view details)

Uploaded Python 2 Python 3

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

Hashes for impasse-5.0.1.tar.gz
Algorithm Hash digest
SHA256 8f610e7592e3bc14ff22a56a44a25ad314414d892a6d3cc99fd49a3459ce06d5
MD5 bfb1967095d17bf256bbc6010b22d95f
BLAKE2b-256 269f19e1d19eba39a49b69ed40c76e5e133a9af968c66daeb4f4efc667225b7e

See more details on using hashes here.

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

Hashes for impasse-5.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c6e36c601a22db1880ff2a2e41caa353dd7e249e2775d8d7ea707b3bb94f4faf
MD5 93117f30c7a8b491f384c4d9e53b2183
BLAKE2b-256 0f7062d6073fb1c2ad1bf77c16a6f8e064bdce4bb446adab3cfcc2b950992b01

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page