Zastanawiałem się, czy zakładać ten wątek. A co tam. Może komuś się przyda coś takiego. Może ktoś napisze lepszą wersję, albo to sobie wykorzysta w inny sposób.
Oto program przy któym dłubię od końca lutego, w wolnych chwilach. Na razie jest w wersji "U mnie działa", kod zabałaganiony, itd. Proszę taktować triangularez jako działąjącą makietę, i nie spodziewać zbyt wiele.
Brak interfejsu graficznego!
Po przeczytaniu wątku kolegi Inf-el o jego programie generującym G-code z bitmap olśniło mnie, że "na rastrach" można znacznie łatwiej generować ścieżkę narzędzia, niż w "prawdziwym 3D" - za cenę znacznie większego obciążenia pamięci. Widzę tutaj duże możliwości, ale do prac małoformatowych. Triangularez powstał jako wprawka do właściwego programu (albo programów, bo produkowanie takich wielofunkcyjnych kobył jest trudne w jednoosobowo-amatorskich warunkach).
Program ma przetwarzać:
1. Obrazki JPG na płaskorzeźby w formace STL na zasadzie "im jaśniej - tym wyżej" - najlepszy efekt uzyskuje się ze specjalnie do tego celu przeznaczonymi obrazkami. Kolorowe piksele są przetwarzane na szare według wzoru "GRAY = R * 0.299 + G * 0.587 + B * 0.114".
2. Pliki STL na obrazki JPG - na tej samej zasadzie. Wynikiem jest JPG w skali szarości. Przy bardziej skomplikowanych modelach pojawiają się jakieś niedokładności (niepomalowane piksele na styku trójkątów). Paskudne czarne kropy. ale na razie nie mogę znaleźć błędu - prawdopodobnie za dużo przeliczeń zmiennoprzecinkowych.
Są odczytywane i zapisywane zarówno tekstowe jak i binarne STL-e, ale sprawdzałem je tylko w programie Blender. Szczerze polecam generowanie binarnych STL-i (opcja -b) - przebiega to znacznie szybciej, i binarny STL zajmuje tylko około 1/3 tego miejsca co plik tekstowy! A STL-e są strasznie dyskożerne!
Kompilacja i instalacja: Trzeba rozpakować archiwum, przejść do uzyskanego katalogu, i wydać polecenie "make" (wymagana jest tylko biblioteka libjpeg). Powinien powstać plik triangularez. Żeby ułatwić sobie zabawę tym programem, można przenieść go do jakiegoś katalogu "na ścieżce". Polecam zrobienie sobie w katalogu domowym katalogu "bin", dodanie go "do ścieżki" (export PATH=$PATH:/home/XXX/bin:) i przekopiowanie tam triangularez.
Użycie:
triangularez [OPCJE] nazwa_pliku
Opcje ogólne:
-i --help Wypisuje ten tekst.
Opcje konwersji JPEG -> STL:
-x --xskip PX Piksele JPEG-a do pominięcia w poziomie.
Ta opcja zmniejszy rozmiar pliku STL.
-y --yskip PX Piksele JPEG-a do pominięcia w pionie.
Ta opcja zmniejszy rozmiar pliku STL.
-w --width MM Szerokość obiektu zapisanego w STL w milimetrach.
-h --height MM Wysokość obiektu zapisanego w STL w milimetrach.
UWAGA: Jeśli ma być zachowana proporcja szerokości
do wysokośći należy podać tylko -h lub tylko -w.
-d --depth MM Głębokość obiektu zapisanego w STL w milimetrach.
-s --save Przekonwertuj JPEG źródłowy na odcienie szarości
i zapisz pod starą nazwą.
-c --compres PROC Stopień kompresji JPEG-a w procentach.
UWAGA: Działa z opcją -s.
-b --binary Generuj binarny STL.
Opcje konwersji STL -> JPEG:
-w --width PX Szerokość JPEG-a w pikselach.
-h --height PX Wysokość JPEG-a w pikselach.
-d --depth GRAY Ilość odcieni (od 2 do 255)
Uwaga: Wynikiem jest plik zapisany w tym samym katalogu, i pod tą samą nazwą, ale z rozszerzeniem formatu docelowego.
Uwaga 2: triangularez nie zadaje zbędnych pytań. Jeśli podamy mu plik MojBardzoWaznyProjekt.jpg, a w tym samym katalogu jest też MojBardzoWaznyProjekt.stl, to stl zostanie nadpisany nową treścią.
Czyli np.
triangularez ~/grafika/rentgen/head.jpg -w 8.2 -d 1.2 -x 10 -y 10 -b
wygeneruje binarny plik ~/grafika/rentgen/head.stl o szerokości 8.2 (mm?) (wysokość proporcjonalnie) głębokości 1.2 (mm?) przy czym siatka trójkątów będzie generowana z co dziesiątego piksela w wierszu i rzędzie wczytanego obrazka.
Jeśli komuś zechce się bawić tym programikiem, to proszę o uwagi. Jeśli ktoś uważa że "to" jest użyteczne, albo ma pomysł jak można "to" rozbudować, to też proszę o uwagi.