[![pipeline status](https://gitlab.com/nicolalandro/obj2html/badges/main/pipeline.svg)](https://gitlab.com/nicolalandro/obj2html/-/commits/main) [![coverage report](https://gitlab.com/nicolalandro/obj2html/badges/main/coverage.svg)](https://gitlab.com/nicolalandro/obj2html/-/commits/main) [![License: MIT](https://img.shields.io/badge/license-MIT-lightgray)](LICENSE) [![pypi package](https://img.shields.io/badge/pypi%20package-obj2html-blue)](https://pypi.org/project/obj2html/) [![pypi downloads numbers](https://img.shields.io/pypi/dm/obj2html.svg)](https://pypistats.org/packages/obj2html) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/11mWxDwAf1tR7vivAN18Vo8vLRvI9nT5T?usp=sharing) [![Open Streamlit in HuggingFace spaces](https://img.shields.io/badge/Streamlit-Open%20in%20Spaces-blueviolet)](https://huggingface.co/spaces/z-uo/monocular_depth_estimation) # Obj2Html This lib is able to transform an .obj file to HTML that use three.js. In this way it is possible to have an interactive 3D view that can be used on the browser or into a jupyter notebook. Install with `pip install obj2html` and use with `obj2html('model.obj', 'index.html')` ![](imgs/colab_sample.png) * run into [jupyter notebook](https://jupyter.org/) ([jupyter_example.ipynb](examples/jupyter_example.ipynb)): ``` ! pip install obj2html ! wget https://gitlab.com/nicolalandro/obj2html/-/raw/main/test/assets/model.obj from obj2html import obj2html from IPython.display import display, HTML obj2html('model.obj', 'index.html') display(HTML('index.html')) ``` * run into [streamlit](https://streamlit.io/) app ([streamlit_example.py](examples/streamlit_example.py)): ``` # pip install obj2html streamlit # have a model.obj (wget https://gitlab.com/nicolalandro/obj2html/-/raw/main/test/assets/model.obj) import streamlit as st import streamlit.components.v1 as components from obj2html import obj2html html_string = obj2html("model.obj", html_elements_only=True) components.html(html_string) with open("model.obj") as f: st.download_button('Download model.obj', f, file_name="download_name.obj") ``` ![](imgs/streamlit_example.png) ## Features - [x] .obj files support - [x] pipy delivery - [x] guide for notebook - [x] pypi doc add image - [x] edit html positions and other 3D params - [x] add param for streamlit - [x] document param for streamlit - [ ] auto center and fit the 3D object on the camera view - [ ] dist wheel for pypi - [ ] load three.js as static file - [ ] .mat files support # Dev * run test ``` python3.8 -m unittest discover ``` * run test with coverage ``` pip install coverage python3.8 -m coverage run --source=src -m unittest discover python3.8 -m coverage report -m ``` * deploy pipy ``` pip install twine rm -rf dist python setup.py sdist twine check dist/* twine upload dist/* # in one line ``` # References In this chapter I add at least a link for each of the knowledge needed for develop this project. * [python](https://www.python.org/): programming language for develop the tool * [HTML](https://www.w3schools.com/html/): markup language for the output file generated by the tool * [JavaScript](https://www.w3schools.com/js/): programming language used into the HTML for logic implementation * [mustache](https://www.elated.com/easy-html-templates-with-mustache/): sintax for dynamic templating ( exist [pymustache](https://github.com/lotabout/pymustache) but I use a custom function with same sintax because of it does not work into js inside html) * [git](https://git-scm.com/doc): tool used for version control * [how to write a setup.py](https://medium.com/@joel.barmettler/how-to-upload-your-python-package-to-pypi-65edc5fe9c56) * [unittest](https://docs.python.org/3/library/unittest.html): the used python framework for test automation * [coverage.py](https://coverage.readthedocs.io/en/6.1.2/): lib used for code coverage computation * [gitlab ci/cd](https://docs.gitlab.com/ee/ci/quick_start/): for run the integration test * [gitlab ci/cd display coverage](https://www.activestate.com/blog/how-to-set-up-ci-cd-for-python-on-gitlab/): how to display code coverage into badge * [three.js](https://threejsfundamentals.org/): js lib to open and visualize 3D model * [Shields.io](https://shields.io/): for custom static badges like pypi