Python Binding for Efficiently Combining Positions and Normals for Precise 3D Geometry
Project description
normal-position-combination
Python Binding for Efficiently Combining Positions and Normals for Precise 3D Geometry
Before | After | Before | After |
---|---|---|---|
Efficiently Combining Positions and Normals for Precise 3D Geometry
Nehab, D.; Rusinkiewicz, S.; Davis, J.; Ramamoorthi, R.
ACM Transactions on Graphics - SIGGRAPH 2005
Los Angeles, California, July 2005, Volume 24, Issue 3, pp. 536-543
Original C++ implementation: normal-position-combination
Install
pip install normal-position-combination
Usage
First you need to have a mesh with (relatively) accurate vertex normals. The method will optimize the vertex positions to better fit the normals.
Process a trimesh.Trimesh
Object
import trimesh
import normal_position_combination as npc
mesh = trimesh.load_mesh('./sample_data/panel.ply')
optimized_mesh = npc.process_trimesh(mesh)
Directly Process a Mesh File
import normal_position_combination as npc
npc.process_mesh_file(
input_filename='./sample_data/panel.ply',
output_filename='./sample_data/processed-panel.ply'
)
Parameters
Please refer to the original implementation's manual for the detailed explanation of the parameters.
Build from Source
Ubuntu / Debian
# build trimesh2
sudo apt install libglu1-mesa libglu1-mesa-dev libxi-dev
cd submodules/trimesh2
make -j
# build normal-position-combination
cd ../..
sudo apt install libsuitesparse-dev
pip install .
RHEL Series
sudo yum install mesa-libGLU mesa-libGLU-devel libXi-devel suitesparse-devel openblas-devel libomp-devel
cd submodules/trimesh2
make -j
cd ../..
sudo yum install suitesparse-devel
pip install .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Close
Hashes for normal-position-combination-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 821580b4ebbdfd39626a10bddcb9b980b61057592ef4d43dbf7f30b0be990472 |
|
MD5 | 2da279852d57b4a80404d2775c080b87 |
|
BLAKE2b-256 | a04a0527c144bf615b0f3fd55285b3ccbacb2979108d5948c43f45739cf10947 |
Close
Hashes for normal_position_combination-0.0.2-cp312-abi3-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 811de17cc3654a5b71aff2cafdaa11975051115964ff591542f022fd09df7291 |
|
MD5 | 04c001956717faf58c8a4968132506bf |
|
BLAKE2b-256 | e677d0e7481e580cbc3f6a15d0c1ba61a2e5b7bc1b5061cf455699bc4ef7980f |
Close
Hashes for normal_position_combination-0.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31370c1cfa36a6cc381c9c45ff48817699543b0c5a854bae32919a3782ca49e3 |
|
MD5 | c3ce021627be315c3c3086d7845675f5 |
|
BLAKE2b-256 | dff34c2ab9765000d57f1a0bcf19e4644ea25c7f36eda293976612462ea7d355 |
Close
Hashes for normal_position_combination-0.0.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e93ec7fc8fdf04ba217648de9dc6d2d93cbe731fdc20a7770f7897a50d8c6572 |
|
MD5 | 3fabce0e77c79700fc85146fa37382e5 |
|
BLAKE2b-256 | 421c57f35a02a2c1cd1a9d94a4a1ce47ba4e8e40b7f34870a0bfe34ebd633ce1 |
Close
Hashes for normal_position_combination-0.0.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 236465b549026282bf3ac3bb16df130442a508c2cfe7cf4b61c040028d2b441f |
|
MD5 | c9e231ac64e882525e64b394a40741da |
|
BLAKE2b-256 | 98badde23636bd7c193dfe9c0e25dd523f6e84da320255f885630298201c78e1 |
Close
Hashes for normal_position_combination-0.0.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a94146493c05b198e46224eda51b7c11e5adfc70fa0db54b8a0b1e2ff36acc03 |
|
MD5 | 7a94ed7fbb70b6a120e79dac0697ef87 |
|
BLAKE2b-256 | c3518cc621dea08c0f79586603f0bbbeaeebeb7779cccce48ccc43e962b3d245 |