{ "info": { "author": "Dario Seyb, Isaak Lim, Janis Born", "author_email": "isaak.lim@cs.rwth-aachen.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Graphics :: 3D Rendering" ], "description": "![](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/raw/master/docs/images/logo-90.png)\n\n# threevis\n\n[![](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/badges/master/pipeline.svg)](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/commits/master)\n\nA Python library for visualizing meshes, point clouds, and other geometry in Jupyter notebooks\n\n## Installation\n`pip install threevis`\n\n## Examples\n\n### Quick Mesh Inspection\n\n```python\nimport threevis\nimport openmesh as om\n\nm = om.read_trimesh('examples/models/bunny.obj')\n\nthreevis.display_openmesh(m)\n```\n\n### Custom Rendering\n\n```python\nimport threevis\nimport openmesh as om\nimport numpy as np\n\n# Load Mesh\nm = om.read_trimesh('mouse.obj')\n\n# Create Context\nctx = threevis.Context(width=640, height=480)\n\n# Get vertices and faces from the mesh\nvertices = m.points()\nfaces = m.face_vertex_indices()\n\n# We don't have normals, calculate them\nnormals = threevis.calculateFaceNormals(m.points(), m.face_vertex_indices())\n\n# Choose a random color for each face\ncolors = threevis.FaceAttribute(np.random.rand(len(faces), 3))\n\n# Draw the mesh with flat shading\nctx.draw_faces(vertices, faces, \n normals = normals,\n colors = colors,\n shading = 'flat')\n\n# Draw edges on top with random colors\nctx.draw_edges(vertices, m.ev_indices(), \n colors = threevis.FaceAttribute(np.random.rand(len(m.ev_indices()), 3)),\n linewidth=3)\n\n# Calculate data to display normals as edges\nnormal_vis_verts, normal_vis_edges = threevis.calculateNormalEdges(vertices, faces, normals, length=0.05)\n\n# Draw the normals in\nctx.draw_edges(normal_vis_verts, normal_vis_edges, colors = colors)\n\n# Draw a point for each vertex\nctx.draw_vertices(vertices, point_size=4, colors='red')\n\n# Finally display it\nctx.display()\n```\n\n![](https://www.graphics.rwth-aachen.de:9000/threevis/threevis/raw/master/docs/images/mouse.PNG)\n\n## Development Setup\n\n- Install dependencies\n- Clone the repository\n- `pip install -e .`\n\n## Dependencies\n\n- [pythreejs](https://github.com/jovyan/pythreejs/) >= 1.0.0\n\n### Optional\n- [openmesh-python](https://graphics.rwth-aachen.de:9000/adielen/openmesh-python) latest", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://graphics.rwth-aachen.de:9000/threevis/threevis", "keywords": "", "license": "BSD 3-Clause", "maintainer": "", "maintainer_email": "", "name": "threevis", "package_url": "https://pypi.org/project/threevis/", "platform": "", "project_url": "https://pypi.org/project/threevis/", "project_urls": { "Homepage": "https://graphics.rwth-aachen.de:9000/threevis/threevis", "Source": "https://www.graphics.rwth-aachen.de:9000/threevis/threevis", "Tracker": "https://www.graphics.rwth-aachen.de:9000/threevis/threevis/issues" }, "release_url": "https://pypi.org/project/threevis/0.1.0.post25/", "requires_dist": null, "requires_python": "", "summary": "Visualize meshes, point clouds, and other geometry in a Jupyter Notebook", "version": "0.1.0.post25" }, "last_serial": 3694615, "releases": { "0.1.0.post11": [ { "comment_text": "", "digests": { "md5": "af7f3cf1a82829267e8c69c97e48f435", "sha256": "8837ed799ecc46ca2e6aa864fde36ddb8fc33257baf2b68b3cf187e92f1af065" }, "downloads": -1, "filename": "threevis-0.1.0.post11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af7f3cf1a82829267e8c69c97e48f435", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11336, "upload_time": "2018-03-20T13:12:10", "url": "https://files.pythonhosted.org/packages/03/05/0e87c664bdd69d385111e236ab21a859ab569443b831e921229f7cbdbd6b/threevis-0.1.0.post11-py2.py3-none-any.whl" } ], "0.1.0.post20": [ { "comment_text": "", "digests": { "md5": "5b99568f588aa299b5c25d310d6edf1b", "sha256": "4261ce58f88bf29c7bf92029db5edad6402a1fc2f4f3a3d6562f44c23ba5df4f" }, "downloads": -1, "filename": "threevis-0.1.0.post20-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b99568f588aa299b5c25d310d6edf1b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11313, "upload_time": "2018-03-21T08:17:41", "url": "https://files.pythonhosted.org/packages/0e/10/19c708774323efc95d38d0a7c6784f9fad238b1f86898a976accb3ad64cf/threevis-0.1.0.post20-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f852b4be2f0ea1c60b6443acae94d49f", "sha256": "cba7b8730270e7c264bb3af518909274577730ef61361b55c32034e4d8cecc63" }, "downloads": -1, "filename": "threevis-0.1.0.post20.tar.gz", "has_sig": false, "md5_digest": "f852b4be2f0ea1c60b6443acae94d49f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 510122, "upload_time": "2018-03-21T09:50:41", "url": "https://files.pythonhosted.org/packages/50/dc/835ba3aee0cc4bdedab1aa09985164a993d900dde89ae676a1aefeea9c6e/threevis-0.1.0.post20.tar.gz" } ], "0.1.0.post21": [ { "comment_text": "", "digests": { "md5": "466d20cde168b314f4a2cb67284ca067", "sha256": "3e3a4f873e96574bc61f6dd113dcabf2feeda7fd00b7011b7ee75be36304a1c4" }, "downloads": -1, "filename": "threevis-0.1.0.post21-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "466d20cde168b314f4a2cb67284ca067", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11281, "upload_time": "2018-03-21T10:03:08", "url": "https://files.pythonhosted.org/packages/ce/11/2bb9abacb3e957e5e9d70c457ecd6d5f03b5ae0fe9e536b8937e529848cd/threevis-0.1.0.post21-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee3f0c1580e8ee9f039f5ca3c3adc122", "sha256": "9d7bed390ea85088cfb1cc39fd605658eab567474689e567c16014e6069bc178" }, "downloads": -1, "filename": "threevis-0.1.0.post21.tar.gz", "has_sig": false, "md5_digest": "ee3f0c1580e8ee9f039f5ca3c3adc122", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 510448, "upload_time": "2018-03-21T10:02:51", "url": "https://files.pythonhosted.org/packages/df/77/6c3e4eb63863d56bf0218ebd9930ba7aff3e39d2891aee01e83e8fdd5356/threevis-0.1.0.post21.tar.gz" } ], "0.1.0.post25": [ { "comment_text": "", "digests": { "md5": "6c1506e39478056921d62415374858e8", "sha256": "ca989d2d2c6f63da14c4b977dc109b662ffebefb8976980c0fc62a1a7afaffe8" }, "downloads": -1, "filename": "threevis-0.1.0.post25-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6c1506e39478056921d62415374858e8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11469, "upload_time": "2018-03-22T08:32:06", "url": "https://files.pythonhosted.org/packages/b2/ff/9597cc0ff28c940bc0f229b1c67e8357ecad95edc7b08ac14752c119d7e3/threevis-0.1.0.post25-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d91d199366c044376bab7a3720faaf33", "sha256": "f1d9d2b2805283cb1e2beb4ffb3d2962ac44c23ef0444d4289f08705632d31ae" }, "downloads": -1, "filename": "threevis-0.1.0.post25.tar.gz", "has_sig": false, "md5_digest": "d91d199366c044376bab7a3720faaf33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506046, "upload_time": "2018-03-22T08:31:51", "url": "https://files.pythonhosted.org/packages/43/03/3162174df26ca0a4ea057d772903396c53d275665c997dbc787fdd41fae3/threevis-0.1.0.post25.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6c1506e39478056921d62415374858e8", "sha256": "ca989d2d2c6f63da14c4b977dc109b662ffebefb8976980c0fc62a1a7afaffe8" }, "downloads": -1, "filename": "threevis-0.1.0.post25-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6c1506e39478056921d62415374858e8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11469, "upload_time": "2018-03-22T08:32:06", "url": "https://files.pythonhosted.org/packages/b2/ff/9597cc0ff28c940bc0f229b1c67e8357ecad95edc7b08ac14752c119d7e3/threevis-0.1.0.post25-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d91d199366c044376bab7a3720faaf33", "sha256": "f1d9d2b2805283cb1e2beb4ffb3d2962ac44c23ef0444d4289f08705632d31ae" }, "downloads": -1, "filename": "threevis-0.1.0.post25.tar.gz", "has_sig": false, "md5_digest": "d91d199366c044376bab7a3720faaf33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506046, "upload_time": "2018-03-22T08:31:51", "url": "https://files.pythonhosted.org/packages/43/03/3162174df26ca0a4ea057d772903396c53d275665c997dbc787fdd41fae3/threevis-0.1.0.post25.tar.gz" } ] }