https://github.com/dnyarri/img2mesh
Converting bitmap heightfield to 3D mesh in POV-Ray, OBJ, STL and DXF formats
https://github.com/dnyarri/img2mesh
3d 3d-graphics 3d-models 3d-printing autodesk dxf obj pov pov-ray povray python python3 stereolithography stl stl-model wavefront wavefront-obj
Last synced: 25 days ago
JSON representation
Converting bitmap heightfield to 3D mesh in POV-Ray, OBJ, STL and DXF formats
- Host: GitHub
- URL: https://github.com/dnyarri/img2mesh
- Owner: Dnyarri
- License: unlicense
- Created: 2023-12-20T10:28:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-04-01T05:23:07.000Z (26 days ago)
- Last Synced: 2026-04-01T08:06:29.752Z (26 days ago)
- Topics: 3d, 3d-graphics, 3d-models, 3d-printing, autodesk, dxf, obj, pov, pov-ray, povray, python, python3, stereolithography, stl, stl-model, wavefront, wavefront-obj
- Language: Python
- Homepage: https://dnyarri.github.io/img2mesh.html
- Size: 653 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.RU.md
- License: LICENSE
Awesome Lists containing this project
README
| [〖EN〗](README.md) | 【RU】 |
| ---- | ---- |
# Конвертер из растровых картинок в 3D-сетку треугольников
Программа на Python для трассировки карты высот в графических форматах [PNG](http://www.libpng.org/pub/png/) или [PGM/PPM](https://dnyarri.github.io/pypnm.html) в трёхмерную векторную сетку треугольников (triangle mesh) в форматах [POV-Ray](https://www.povray.org/) POV, Wavefront OBJ, Autodesk DXF, а также STL для 3D-принтеров. Координаты x, y пикселя соответствуют координатам x, y узлов сетки, яркость пикселя соответствует высоте (z) узла сетки. В случае исходных графических файлов с низким разрешением полученная при трассировке 3D-сетка обеспечивает лучшее визуальное качество рендеринга, нежели исходные графические файлы при их использовании в качестве heightfield напрямую.
[](https://dnyarri.github.io/img2mesh.html)
## Совместимость с форматами
| Форматы импорта | Форматы экспорта 3D |
| ------ | ------ |
| 16 и 8 бит на канал PNG, PGM и PPM | POV, OBJ, ASCII STL, ASCII DXF |
## Содержимое
- **img2mesh** - удобный GUI, объединяющий все функции из программ ниже.
- **list2mesh** module, including:
- **list2pov**: конвертер изображений в сцену POV-Ray. Полученная сцена содержит 3D-сетку, объект box (CSG intersection), создающий боковые стенки и дно, свет и камеру. Текстуры заявлены в declare отдельно для удобства редактирования;
- **list2stl**: конвертер изображений в STL. Экспортированный файл содержит 3D-сетку и боковые и нижнюю поверхности в виде сетки, поскольку они необходимы 3D-принтеру;
- **list2obj**: конвертер изображений в Wavefront OBJ. Экспортированный файл содержит только 3D-сетку;
- **list2dxf**: конвертер изображений в Autodesk DXF. Экспортированный файл содержит только 3D-сетку;
- Модули **pypng** и **pypnm**, обеспечивающие чтение PNG и PGM/PPM файлов, соответственно.
[](https://dnyarri.github.io/img2mesh.html)
## Необходимые исходные и Внешние зависимости
1. [Python](https://www.python.org/) 3.11 или посвежее.
2. [PyPNG](https://gitlab.com/drj11/pypng). Копия включена в дистрибутив img2mesh.
3. [PyPNM](https://pypi.org/project/PyPNM/). Копия включена в дистрибутив img2mesh.
4. Tkinter. Обыкновенно входит в состав типового дистрибутива CPython.
> [!NOTE]
> Начиная с img2mesh 3.21.2.16 PyPNM, включённый в дистрибутив, обновлён до [PyPNM "Victory 2" main](https://github.com/Dnyarri/PyPNM), предназначенный для работы под Python 3.11 и выше. Единственное практическое ограничение совместимости - данная версия не содержит трюков для отображения 16 bpc картинок под старым Tkinter, включённым в старый CPython. Если вам хочется вернуть назад совместимость со старым TKinter, вы можете скачать руками [PyPNM extended compatibility version](https://github.com/Dnyarri/PyPNM/tree/py34) и вставить его на место нового PyPNM тем же местом (то есть руками).
## Развёртывание и боевое применение
Комплект программ самодостаточен и должен работать сразу после распаковки при наличии на машине стандартной установки CPython. Программа оборудована минималистическим GUI, в результате всё, что вы должны сделать после запуска программы, это с помощью двойного клика в диалог или Ctrl+O запустить "Open...", выбрать и открыть файл PNG, или PPM, или PGM, затем с помощью правого клика или Alt+F вызвать меню "File" и выбрать файл для сохранения, подождать, пока программа отработает и закроется, затем открыть полученный файл в подходящей 3D-программе.
> [!NOTE]
> Начиная с img2mesh 3.21.21.21 геометрия сетки изменена с *вер. 3* на *4*, представляющую собой смешенье двух подходов - *вер. 3* обеспечивает лучшие результаты для большинства областей объекта, в то время как свежедобавленная лучше работает на контрастных диагоналях.
Варианты геометрии переключаются с одного на другой в зависимости от локального контраста оригинала, контроль порога добавлен к GUI. Значение по умолчанию проставлено на основании результатов ряда экспериментов, однако для некоторых объектов может потребоваться ручная корректировка и повторный рендеринг для достижения наилучших результатов. *Но мы продолжаем наши опыты; главное для нас, конечно, здоровье людей* (ц) др. Жбах.
### Для разработчиков
Модуль экспорта, включающий функции 3D-экспорта, может быть использован другими разработчиками безвозмездно, то есть даром.
## Литература
1. [POV-Ray](https://www.povray.org/) и [спецификция POV SDL](https://www.povray.org/documentation/3.7.0/).
2. [Wavefront Object Files (.obj)](https://paulbourke.net/dataformats/obj/obj_spec.pdf) в [Paul Bourke collection](https://paulbourke.net/dataformats/).
3. [Cătălin IANCU et al., From CAD model to 3D print via “STL” file format](https://www.utgjiu.ro/rev_mec/mecanica/pdf/2010-01/13_Catalin%20Iancu.pdf).
4. [Marshall Burns, Automated Fabrication, Section 6.5](https://www.fabbers.com/tech/STL_Format).
5. [DXF Reference](https://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf) by Autodesk, Inc.
### Родственное
[Dnyarri website](https://dnyarri.github.io) - остальной питонистый навар, отставить, товар от Жабы Огромной Умственной Силы.
[img2mesh с иллюстрациями и объяснениями](https://dnyarri.github.io/img2mesh.html).
[Исходники img2mesh на Github](https://github.com/Dnyarri/img2mesh)
[Зеркало исходников img2mesh на Gitflic](https://gitflic.ru/project/dnyarri/img2mesh)