Metadata-Version: 2.1
Name: threevis
Version: 0.1.0.post25
Summary: Visualize meshes, point clouds, and other geometry in a Jupyter Notebook
Home-page: https://graphics.rwth-aachen.de:9000/threevis/threevis
Author: Dario Seyb, Isaak Lim, Janis Born
Author-email: isaak.lim@cs.rwth-aachen.de
License: BSD 3-Clause
Project-URL: Source, https://www.graphics.rwth-aachen.de:9000/threevis/threevis
Project-URL: Tracker, https://www.graphics.rwth-aachen.de:9000/threevis/threevis/issues
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pythreejs >=1.0.0

![](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/raw/master/docs/images/logo-90.png)

# threevis

[![](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/badges/master/pipeline.svg)](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/commits/master)

A Python library for visualizing meshes, point clouds, and other geometry in Jupyter notebooks

## Installation
`pip install threevis`

## Examples

### Quick Mesh Inspection

```python
import threevis
import openmesh as om

m = om.read_trimesh('examples/models/bunny.obj')

threevis.display_openmesh(m)
```

### Custom Rendering

```python
import threevis
import openmesh as om
import numpy as np

# Load Mesh
m = om.read_trimesh('mouse.obj')

# Create Context
ctx = threevis.Context(width=640, height=480)

# Get vertices and faces from the mesh
vertices = m.points()
faces = m.face_vertex_indices()

# We don't have normals, calculate them
normals = threevis.calculateFaceNormals(m.points(), m.face_vertex_indices())

# Choose a random color for each face
colors = threevis.FaceAttribute(np.random.rand(len(faces), 3))

# Draw the mesh with flat shading
ctx.draw_faces(vertices, faces, 
               normals = normals,
               colors = colors,
               shading = 'flat')

# Draw edges on top with random colors
ctx.draw_edges(vertices, m.ev_indices(), 
               colors = threevis.FaceAttribute(np.random.rand(len(m.ev_indices()), 3)),
               linewidth=3)

# Calculate data to display normals as edges
normal_vis_verts, normal_vis_edges = threevis.calculateNormalEdges(vertices, faces, normals, length=0.05)

# Draw the normals in
ctx.draw_edges(normal_vis_verts, normal_vis_edges, colors = colors)

# Draw a point for each vertex
ctx.draw_vertices(vertices, point_size=4, colors='red')

# Finally display it
ctx.display()
```

![](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/raw/master/docs/images/mouse.PNG)

## Development Setup

- Install dependencies
- Clone the repository
- `pip install -e .`

## Dependencies

- [pythreejs](https://github.com/jovyan/pythreejs/) >= 1.0.0

### Optional
- [openmesh-python](https://graphics.rwth-aachen.de:9000/adielen/openmesh-python) latest

