Skip to main content

A library for ray-mesh intersections on triangular meshes

Project description

pyraymesh

Description

pyraymesh is a Python library for performing ray intersection and occlusion tests on 3D meshes using a Bounding Volume Hierarchy (BVH). The library uses the C++ library bvh for building the BVH and performing the intersection tests.

While this library is reasonably fast for simpler meshes (benchmarks coming soon), it is not as fast as Embree, espcially for larger and more complex meshes. However, it does not have any dependencies on external libraries, and is thus easier to install and use.

Installation

Install the package either by

pip install pyraymesh

or cloning the repo and using pip:

pip install .

Note that the package requires a C++ compiler to build the C++ extension.

Usage

Building the BVH

To build the BVH for a mesh:

from pyraymesh import Mesh
import numpy as np

vertices = np.array([[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0]])
faces = np.array([[0, 1, 2], [2, 3, 0]])
mesh = Mesh(vertices, faces)
mesh.build("medium")

The build method takes a string argument that specifies the BVH build type, which can be one of the following: "low", "medium" and "high". The build type determines the trade-off between build time and query time. For most cases "medium" is almost always the right choice.

Ray Intersection

To perform ray intersection tests:

ray_origin = [[0.1, 0.2, 1], [0.2, 0.1, 1]]
ray_direction = [[0, 0, -1], [0, 0, 1]]
## or 
ray_origin = [[0.1, 0.2, 1], [0.2, 0.1, 1]]
ray_direction = [0, 0, -1]  # multiple rays with same direction
## or 
ray_origin = [0.1, 0.2, 1]
ray_direction = [[0, 0, -1], [0, 0, 1]]  # multiple rays with same origin

result = mesh.intersect(ray_origin, ray_direction, tnear=0, tfar=1000)
print(result.num_hits)
print(result.coords)
print(result.tri_ids)
print(result.distances)

tnear and tfar can be scalars or lists of the same length as the number of rays. If they are scalars, the same value will be used for all rays. If they are lists, each value will be used for the corresponding ray.

If you set tnear to a value greater than 0, the intersection tests will ignore any intersections that are closer than tnear. Similarly, if you set tfar to a value less than infinity, the intersection tests will ignore any intersections that are farther than tfar. This library does not support negative values for tnear or tfar.

Reflections

If you want to get the reflection of the rays, add the calculate_reflections = True parameter to the intersect method:

ray_origin = [[0.1, 0.2, 1], [0.2, 0.1, 1]]
ray_direction = [[0, 0, -1], [0, 0, 1]]
result = mesh.intersect(ray_origin, ray_direction, tnear=0, tfar=1000, calculate_reflections=True)
print(result.reflections)

results.reflections is a list of noramlized vectors representing the directions of the reflection of the rays. Only do this if you need the reflections, as it will slow down the intersection tests.

Occlusion Test

If you just care about whether a ray is occluded or not (i.e., you don't care about the intersection point) you can use the occlusion method which is faster than the intersect method and just returns an array of booleans.

ray_origin = [[0.1, 0.2, 1], [0.2, 0.1, 1]]
ray_direction = [[0, 0, -1], [0, 0, 1]]
occluded = mesh.occlusion(ray_origin, ray_direction)
print(occluded)

Count intersections

If you want to know the total number of intersections for each ray along its path, without stopping at the first intersection, you can use the count_intersections method:

total_intersections = mesh.count_intersections(ray_origin, ray_direction)
print(total_intersections)

This method returns an array of integers representing the total number of triangles that each ray intersects between tnear and tfar.

Test line-of-sight

If you want to know if two points are visible to each other, you can use the line_of_sight method:

origin_point = [[0.1, 0.2, 1], [0.2, 0.1, 1]]
target_point = [[0, 0, -1], [0, 0, 1]]
## or 
origin_point = [[0.1, 0.2, 1], [0.2, 0.1, 1]]
target_point = [0, 0, -1]  # multiple origin points with same target
## or 
origin_point = [0.1, 0.2, 1]
target_point = [[0, 0, -1], [0, 0, 1]]  # multiple target points with same origin

visible = mesh.line_of_sight(origin_point, target_point)

visible is a list of booleans representing whether the target point is visible from the origin point.

Traverse the BVH

If you want to traverse the BVH and get all triangles that are along a ray in the BVH, you can use the traverse method. This is useful if you want to do some custom processing on the triangles that are potentially intersected by a ray.

origin = [0, 0, 10]
direction = [0, 0, -1]

for t_id in mesh.traverse(origin, direction):
    print(f"Triangle {mesh.vertices[mesh.faces[t_id]]} is potentially intersected by the ray.")

Note that the current implementation traverses the entire BVH when the method is called, even if you break early from the loop. For huge meshes, this can be a performance bottleneck. Hopefully, this will be fixed in future versions.

Parallelization

The intersect and occlusion methods can be parallelized by passing threads parameter when calling the methods:

result = mesh.intersect(ray_origin, ray_direction, tnear=0, tfar=1000, threads=4)

The threads parameter specifies the number of threads to use for the intersection tests. If set to -1, the number of threads will be equal to the number of cores on the machine. In general you shouldn't set the number of threads to be greater than the number of cores on the machine.

For a small number of rays, the overhead of parallelization might make the parallel version slower than the serial version, so it is recommended to test the performance of both versions for your specific use case.

Testing

To run the tests:

pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

pyraymesh-0.2.2.tar.gz (53.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyraymesh-0.2.2-pp310-pypy310_pp73-win_amd64.whl (110.3 kB view details)

Uploaded PyPyWindows x86-64

pyraymesh-0.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (136.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pyraymesh-0.2.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (142.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

pyraymesh-0.2.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl (98.3 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

pyraymesh-0.2.2-cp313-cp313-win_amd64.whl (112.0 kB view details)

Uploaded CPython 3.13Windows x86-64

pyraymesh-0.2.2-cp313-cp313-win32.whl (96.2 kB view details)

Uploaded CPython 3.13Windows x86

pyraymesh-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl (574.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyraymesh-0.2.2-cp313-cp313-musllinux_1_2_i686.whl (620.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

pyraymesh-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyraymesh-0.2.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (143.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

pyraymesh-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (100.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyraymesh-0.2.2-cp313-cp313-macosx_10_14_universal2.whl (200.7 kB view details)

Uploaded CPython 3.13macOS 10.14+ universal2 (ARM64, x86-64)

pyraymesh-0.2.2-cp312-cp312-win_amd64.whl (112.1 kB view details)

Uploaded CPython 3.12Windows x86-64

pyraymesh-0.2.2-cp312-cp312-win32.whl (96.2 kB view details)

Uploaded CPython 3.12Windows x86

pyraymesh-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl (574.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyraymesh-0.2.2-cp312-cp312-musllinux_1_2_i686.whl (620.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

pyraymesh-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyraymesh-0.2.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (143.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

pyraymesh-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (100.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyraymesh-0.2.2-cp312-cp312-macosx_10_14_universal2.whl (200.7 kB view details)

Uploaded CPython 3.12macOS 10.14+ universal2 (ARM64, x86-64)

pyraymesh-0.2.2-cp311-cp311-win_amd64.whl (112.7 kB view details)

Uploaded CPython 3.11Windows x86-64

pyraymesh-0.2.2-cp311-cp311-win32.whl (96.4 kB view details)

Uploaded CPython 3.11Windows x86

pyraymesh-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl (575.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyraymesh-0.2.2-cp311-cp311-musllinux_1_2_i686.whl (621.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

pyraymesh-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (139.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyraymesh-0.2.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (145.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

pyraymesh-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (101.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyraymesh-0.2.2-cp311-cp311-macosx_10_14_universal2.whl (202.1 kB view details)

Uploaded CPython 3.11macOS 10.14+ universal2 (ARM64, x86-64)

pyraymesh-0.2.2-cp310-cp310-win_amd64.whl (112.7 kB view details)

Uploaded CPython 3.10Windows x86-64

pyraymesh-0.2.2-cp310-cp310-win32.whl (96.6 kB view details)

Uploaded CPython 3.10Windows x86

pyraymesh-0.2.2-cp310-cp310-musllinux_1_2_x86_64.whl (575.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyraymesh-0.2.2-cp310-cp310-musllinux_1_2_i686.whl (622.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

pyraymesh-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (139.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyraymesh-0.2.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (145.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

pyraymesh-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (101.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyraymesh-0.2.2-cp310-cp310-macosx_10_14_universal2.whl (202.5 kB view details)

Uploaded CPython 3.10macOS 10.14+ universal2 (ARM64, x86-64)

File details

Details for the file pyraymesh-0.2.2.tar.gz.

File metadata

  • Download URL: pyraymesh-0.2.2.tar.gz
  • Upload date:
  • Size: 53.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2.tar.gz
Algorithm Hash digest
SHA256 a8d71453a31c13271244de4c735e9f9769baebb885fbf5cbc73b0ebeaf43de32
MD5 3c18fd1c5ca8080d6f79abc8e5bae19f
BLAKE2b-256 cac3be40a75fdda7e41d9aed6a38625c1b75a0c85e97d63c9913973617509cc4

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 45f9217e455e070d9dae5555de0043a12e2ed79179e45023080bf453693cd12a
MD5 386ce5d5d0762e9d53c5026f85cfa9d2
BLAKE2b-256 0181fb4ee52a16d57c3a5caa237a68e20271984c2947a33f63f2c08b30b18ab6

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83b881e417031a20816141d7675d70518ab9d77e0015527efda6993ab2f628cc
MD5 0acfa5c3eeb18c305dee2364f86f12c4
BLAKE2b-256 1ca41b4ca6b78003136609eed735829679daab3ed8e367690849694ae6961649

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a9a2f948d132dbc7e16d5f957e4a64bee8767dee8f7c6f1fe97b1e0f7d613902
MD5 5dd193750185f8f2b852b116d2b0a01c
BLAKE2b-256 bec4ff8f2e32f758e748e4f1bbad2e71551e538c63310cbcd573ef879bf53707

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74af642cb7e497f9872d37cae9aa099e5c1f261a69927c3d97a1c489fffaeac4
MD5 51a666d902c646e74df02f5fab3f4dfd
BLAKE2b-256 6a8a9a50d67bb503307008d782e8074bf999085f7b9d2d235c27f55fd461792d

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 112.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 39836455bbfcfb71bbcdafbfa1863ac6b00fd7c91784c558cf52376258396aae
MD5 1e25405bbc96baf0a39ff5e4c220c4a6
BLAKE2b-256 4fcde6f8b3089bffa8084b01f5663ac36ff02ffb641ea3b01f11983b6db2b050

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-win32.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 96.2 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 8225e16071a1ba740757325617450263988628e835f672700a17e47234d7aa06
MD5 7045b2e60bf7aeebd3542b95f3c3290d
BLAKE2b-256 3733f9531bab2458133570c24f9f5e2d4f5eebe6206c47e2a4a2a50317ce02db

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2b0d6078a1dcd0b01ba361ea8799affda83043cd8ad4d225ee2d32ac355c689
MD5 9e27ec7348ff190d602deee5d50f98ac
BLAKE2b-256 a39632792117b75e2ec6252c4f675ee68b8d27ce7f91c1b0e83657de3e3c20bb

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 56b1325252260c0d10d0d436018ecf54cf0a33b2c00df092ac62cfcb52fb383c
MD5 605fdfb0ac6a3c9a47e082a2c7cd0ba8
BLAKE2b-256 117373b9eadae60180e5d450807ca269ea00634ea352a86bdfb544579b02d44f

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c4f28ab0ccd1ad4e7e90b68e0eefbabba6ece3f5361ab4b5aa80952e8f02ec8a
MD5 8bfcb6346fa237d5e7defc8c1c6b86c9
BLAKE2b-256 0d582f7d987b74ddd27c6be653653906c154e8814ae9a5dc325f56b9414af08a

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dbadb05af3a9b3fb5655ba05ca2e7af45d5865fb3aef9c423d86e0d14e83f7f9
MD5 5022c2b1068a20f706cbc4cb3fe9cc8a
BLAKE2b-256 f89784a0f83ec73a147d5797c53c2cadadf91d66c049df0c29e13e7ab0af5434

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03988220e2544cb9afde3facce312e7d2f866a87620be4e9595d4db24fb0fed1
MD5 c3f3bc64be7b0352c63ef023ec9b9dd3
BLAKE2b-256 2a20ba51e490492b2edbb14df47d86f2bb6024c83f168cc2eb659a071bcc7d7c

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp313-cp313-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp313-cp313-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 4a41c3862dac0ac973cd186c5ce90a243c530a2207f60651e527f7726b1868a2
MD5 457c0487d5d47563f185d799b0c9bdda
BLAKE2b-256 0621faca3c899dc375fa72bcdd0b8a03c29735b0acf38eef9b2d20f3e21468b1

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 112.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 38b21ae4c59856ef97a4482418d7573e45f17d6c9da91702a4efd45eecc65e65
MD5 78607ff43313051cfda4a978006987ec
BLAKE2b-256 33761f273db2c7015620e6c270bc8eee78eb296be1c565fa5ffadd445443d30b

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-win32.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 96.2 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6aa60ba9670398415921ebdbe26bde907bfdfe8117c03a7ea89b5ee467ef7348
MD5 58ff282037ccbbd29359efbccc10ca2e
BLAKE2b-256 a5f6e6c06d24530278e8e87c9422bf3d87003ab18874800279ad3880bccc95a3

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 98e1eeddd07a776793e5de139859fedce46e9ebf4bc0f55d36058881e8e40da3
MD5 b11741fb998b922afec2c7c2aeed249b
BLAKE2b-256 806bf9dbae4e72899ecb9dc47f366a6778d4e1e89a3f8435f66ea40b60dae8e7

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d6296bd1fd0b83f0a7841630e90888e86adabdd1d438cfa216b7b071c0603b54
MD5 b67ba769f82df64a69869f2610a915b1
BLAKE2b-256 930e749d2a324f88fc5c40818e2535a467a807c7f1073ed7024c19edf538c504

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02c32b212463a00e27f2b60ee67b9d0e070a5c1a46a1bd193fbad27ceacef3a2
MD5 8fbf2bbc53e48d0845553c424d976b52
BLAKE2b-256 fcf1512fb1beb10d49a3a93d8352dd36df6fcba4d72bc6073309fdec3410140f

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 327f73dafafa25836ddf3b45a2523334a9dcaa57b99ada56392cb4b6002d7499
MD5 2e565fd3310df0513bf0f3583e1fa019
BLAKE2b-256 e6f72daef66643ac2e45f7db67c768028906fde1b08cbcc0e867fd3786fc5711

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40ee3263cd2a1ff1d1309a622839f45e51734ffc6523faeeb1ee35fd1ff732c1
MD5 53953c3a56117e2d5fe0e6f28c986618
BLAKE2b-256 2d8d5093220cdb822160070c7fc988c3e5897148bd36a64190e937758f4b086a

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp312-cp312-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp312-cp312-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 9bc025541e19e6436bd64022c0bda3365d5ec3d38549c6f30b0f2c146035dc5f
MD5 8e19dae9272a871de10c3b202fefeb51
BLAKE2b-256 7990bb291732507aa9d16ac86de2453ba06dd76db97e37f7c74a6189d64af6ff

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 112.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dcafaf2c963dad86a68b7323d6926841bd071cb320bfe3c52cf337f572d58c9b
MD5 2c5a4334ba88fa200d51211d6b68e963
BLAKE2b-256 a9d38e8dfc2fcd9af1fcd116f53a5670840323a883a4d37d2ca893bd71f30b45

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-win32.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 96.4 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 81260e92a660345dfb56a49b864090640618bfbea8587f62cbaf88a3b020d4d1
MD5 fb286ec09b5681011fb85f487208d1c3
BLAKE2b-256 07962945e508e5cc80c2bf6c8bd74db63f27aa3132141ccb2fa5d6cda06c23a1

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9bcb29aa15d48efef4cb93edbd0e0a8c6eede610e4dc256e1179f2d811737a44
MD5 b26d83cf40a9c522b9c070fc4a4dbf8e
BLAKE2b-256 75aa72e1eb6ea0f661a305b423ddf31c8dada0c43f2d1273405714b5f1387eff

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 314c3b456c026f64265654c6838b3a7d46b8ff9b3137c527e31b9dfd4f4263ad
MD5 72f8bda04af7f21e160c2b1a7477db51
BLAKE2b-256 c89cceb3df80525c3d9d1e6b8e8ae7571183d6704d29cfce3bcbba8675927221

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6be3e75768a664fab62548b84632218bcca88ce7fec0533e97fd7ececc301017
MD5 ef7c4d2252b65a9c3cb80c93bab90678
BLAKE2b-256 cdea3d3d8325c2297b126d15fe98c646010153817e13d596301ae5f56cb7a673

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a629c325dc26dfbf0dd1603a7a87777455a596db6f3086428f93a9ea6010b9e1
MD5 f0543d932133e7a68fcd7e092a8fefba
BLAKE2b-256 af41633a7e5efe98608178edc89eacfd8c7249e075e6390e15042b450e1f57bb

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0689575b17f603378c7cd823757cd67c80d53f6e4833fce3d9938d18a5281127
MD5 7dd738279ac20ac0c7d503fe88af4b5b
BLAKE2b-256 48192e5e9bbd5d74a6bbec88070b00c0ba741bd8fc842b3ad41563f918160bdf

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp311-cp311-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp311-cp311-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 d2fbef64aad8dc325e4fc187bd614267dd03c3cf9cafbbd332ee5be847f889c0
MD5 06f005e0e1cfc288ec297d2384e280eb
BLAKE2b-256 63ba539bd969847f498a2fa86b09a92efcfb00cde153d1f3c28bde849504b6bb

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 112.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e957fffae52f0186f8859894c9cc2db3570732abab57e01e66a723813ce8c1bb
MD5 957f9533a3fd97f0f0ebfc48351c523d
BLAKE2b-256 c5218a2d8815cb51601beebfdf87f35b2a150ff9b66f6aad6187155313554ede

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-win32.whl.

File metadata

  • Download URL: pyraymesh-0.2.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 96.6 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 7b1b6d213a894458a976b043f99c05cf291123d6569724f41b28761e5dc78c18
MD5 f336d6e2c8e714c7760058a65ca85540
BLAKE2b-256 aa6c6f73b99157acc3f53712858a9947e821865d01996c44e1a4f587efe3322e

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 52ee62502d0187613a9dc558f3cf254a441e4e750d787dcd73d9823418d9edfd
MD5 ebb2279eb47d4f08a66aaff7f7c406cf
BLAKE2b-256 f9a722ada205a1e7bab2d36a5a831ebd0efe3896c7b1454d1810cfd7b900e974

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7e0fca53f792d5a9dfa718061710f07136122ca8ad818d002cac0dd0768f8cf0
MD5 4d02b86708e056be224a1fae264bcd83
BLAKE2b-256 a530b23b04bef6863930cbf740966627d22087f3111248f2483c6fd5fd12011b

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 889a51f657fb85fced20acc58d12b923dfd3d742a61efc938c5a2c4eba30c61e
MD5 cbd17f3e1a82f35c234ef09e89796bec
BLAKE2b-256 ded241088279fa67e0cbcf944fa418b341841957b9a2ad45810cd02e10bc4a57

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 75cf0bbded43bc5d350e2f08a1c2c149c666caeda3c3d7554c23ada5d854eccc
MD5 3cb422030a849fd95057fc8a2a25b65d
BLAKE2b-256 7c0e865bd82f6b2458b39b721fb7d37c45fd294ec4ffed2c398baa82fc2b1e3b

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5bb2996bdf6a585161ad1a85891fa778a327bd3932cceeb4ec6b0efce3cd92b
MD5 c128420670943734c4106fe8ffcd05ae
BLAKE2b-256 97093f856b0345b546babd35950f328730a0985ec24f452c4b3a04f8c5936393

See more details on using hashes here.

File details

Details for the file pyraymesh-0.2.2-cp310-cp310-macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for pyraymesh-0.2.2-cp310-cp310-macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 2d3db000713247ab3ad501fb9755d66fdd10da36a9aec906428a66475c7c3c6e
MD5 6c975fb614e21b1f78712e9797d1af50
BLAKE2b-256 8c9dc482b44154cb1eca1ef7b37ae3c193e3e9592fabcfbdacd973ba508fb69a

See more details on using hashes here.

Supported by

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