 |
CNC FORUM
Amatorskie maszyny CNC
|
|
|
Triangularez - konwersja dwukierunkowa STL i JPG |
| Autor |
Wiadomość |
x
Specjalista poziom 1


Pomógł: 9 razy Dołączył: 29 Mar 2006 Posty: 209 Skąd: okolice Warszawy
|
Wysłany: 2007-03-26, 18:57 Triangularez - konwersja dwukierunkowa STL i JPG
|
|
|
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:
| Cytat: | 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.
| Cytat: | | 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.
e3_kula.jpg Konwersja z stl do jpg. Widać paskudne czarne kropy!!! |
 |
| Plik ściągnięto 99 raz(y) 20,63 KB |
e2_head.jpg zdjęcie rentgenowskie na stl |
 |
| Plik ściągnięto 102 raz(y) 50,61 KB |
e1_triangl.jpg Napis na gradiencie na stl. Przydało by się inteligentniejsze rozmieszczanie wierzchołków. |
 |
| Plik ściągnięto 81 raz(y) 22,33 KB |
triangularez-20070312.tar.gz żródła. |
Pobierz Plik ściągnięto 195 raz(y) 10,88 KB |
|
_________________ "Później doświadczyłem jeszcze jednego zjawiska: gdzieś w połowie roboty okazuje się, że mieliśmy pomysł tylko na tę połowę roboty." - Adam Cebula (wnioski po budowie gołębnika) |
|
|
|
 |
Inf-el
Specjalista poziom 2


Pomógł: 13 razy Dołączył: 22 Cze 2004 Posty: 365 Skąd: Szczecin
|
Wysłany: 2007-03-26, 19:41 Re: Triangularez - konwersja dwukierunkowa STL i JPG
|
|
|
Wstępnie oceniając, program może być bardzo przydatny jakby wyeliminować kropy bo frezarka zwariuje.
| x napisał/a: | | Kolorowe piksele są przetwarzane na szare według wzoru "GRAY = R * 0.299 + G * 0.587 + B * 0.114". |
Dlaczego zastosowałeś taki wzór ?
Ja mam: (R+G+B)/3. Czyżbym przeoczył jakąś ważną zasadę ? |
|
|
|
 |
x
Specjalista poziom 1


Pomógł: 9 razy Dołączył: 29 Mar 2006 Posty: 209 Skąd: okolice Warszawy
|
Wysłany: 2007-03-26, 23:55
|
|
|
Też zacząłem od wyliczania średniej, ale jako że kiedyś lubiłem fotografować na czarno-białych filmach, to przypomniało mi się, że kolory mają różną jasność, trzeba było o tym pamiętać. Sprawdziłem, i zmieniłem. Znalazłem gotowy przepis z mnożeniem, tutaj są troszkę inne wartości. W zasadzie obraz jest poddawany tak abstrakcyjnemu przetworzeniu, że to nie ma większego znaczenia, ale zależało mi, żeby zminimalizować wpływ koloru.
Co do krop, to mnie przygnębiły. Nie spodziewałem się takiego problemu. Rasteryzacja jest kłopotliwa, w dodatku trudno znaleźć dobre opisy szczegółów. Od dawna nikt tego nie robi ręcznie, tylko przez OpenGL, DirectX, itd. Teraz widzę, że ta opcja będzie bardziej potrzebna, więc trzeba się będzie dokształcić, i to zrobić porządnie.
Mam wersję .exe, ale jeszcze nie sprawdzałem jak działa pod windowsami. |
_________________ "Później doświadczyłem jeszcze jednego zjawiska: gdzieś w połowie roboty okazuje się, że mieliśmy pomysł tylko na tę połowę roboty." - Adam Cebula (wnioski po budowie gołębnika) |
|
|
|
 |
Inf-el
Specjalista poziom 2


Pomógł: 13 razy Dołączył: 22 Cze 2004 Posty: 365 Skąd: Szczecin
|
Wysłany: 2007-03-27, 09:54
|
|
|
Może pominiesz temat bitmap i jpg i zajmiesz się generowaniem g-kodów z tego stl-a ?
Wydaje się, że jesteś już blisko. I program po dobudowaniu jakiegoś łatwego interfejsu nadawał by sie do normalnej pracy pod linuxem. |
|
|
|
 |
x
Specjalista poziom 1


Pomógł: 9 razy Dołączył: 29 Mar 2006 Posty: 209 Skąd: okolice Warszawy
|
Wysłany: 2007-03-28, 20:29
|
|
|
| Inf-el napisał/a: | Może pominiesz temat bitmap i jpg i zajmiesz się generowaniem g-kodów z tego stl-a ?
Wydaje się, że jesteś już blisko. |
Też mi się kilka razy wydawało, że jestem już blisko.
Grafika 3D jest naprawdę trudna, trzeba mieć opanowaną geometrę analityczną, dużo czasu, itd. A tutaj zamieniam trudne zagadnienie matematyczno-algorytmiczne na proste zadanie obliczeniowe. W tej chwili (bez bitmapy) był bym w stanie wygenerować ścieżkę dla narzędzia o zerowej średnicy, a takie się rzadko trafiają.
| Inf-el napisał/a: | | program po dobudowaniu jakiegoś łatwego interfejsu nadawał by sie do normalnej pracy pod linuxem. |
Interfejs graficzny (FLTK) będzie, ale we właściwym programie. Właśnie przy nim dłubię. Jak wydłubię, to mi się zachce zabrać za te kropki.
P.S.
Na sourceforge znalazłem program mesh2hmap (GPL), w działaniu bardzo podobny do mojego, ale lepszy. Konwertuje pliki VRML v. 1 ( .wrl ) na obrazki z rodziny pnm/ppm/pgm. Ładnie to wychodzi. Autor zastosował inną metodę niż ja - dla każdego trójkąta sprawdza cały prostokąt obudowujący (BoundingBox) - dla każdego punktu leżącego wewnątrz trójkąta interpoluje wysokość. Znacznie bardziej to dopracowane i dobrze działa.
Znalazłem też inny ciekawy program: geomorph który generuje dokładnie takie "heightmapy" jak potrzebuję. Jest na bieżąco podgląd 3D. Można zwiększać/zmniejszać jasność, dynamikę, dodawać efekty takie jak erozja od deszczu, wiatru, kratery. pęknięcia regularne i nieregularne. |
_________________ "Później doświadczyłem jeszcze jednego zjawiska: gdzieś w połowie roboty okazuje się, że mieliśmy pomysł tylko na tę połowę roboty." - Adam Cebula (wnioski po budowie gołębnika) |
|
|
|
 |
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
| sponsorem forum jest www.akcesoria.cnc.info.pl |
Informacje na witrynie cnc.info.pl są podawane tylko w celach edukacyjnych oraz hobbystycznych. Jedynie użytkownik wysyłający wiadomość lub plik ponosi pełnoprawną odpowiedzialność za ich treść. Jeżeli wynikną z tego konsekwencje prawne, cnc.info.pl może przekazać wszelkie informacje właściwym organom państwowym na temat danego użytkownika oraz pomóc w jego zlokalizowaniu. Zgodnie z ustawą o ochronie danych osobowych cnc.info.pl nie przekazuje informacji odnośnie użytkowników firmom i osobom prywatnym. Hasła, adresy e-mail oraz numery IP są szyfrowane w bazie danych i jedynie administrator jest w stanie odczytać te informacje. Cnc.info.pl jest przeciwna łamaniu zabezpieczeń oraz łamaniu praw autorskich, jednak niektóre osoby nie przestrzegają naszego regulaminu. Jeżeli zobaczyłeś wiadomość lub plik, który twoim zdaniem jest nielegalny lub narusza twoje dobra osobiste, prosimy o natychmiastowy kontakt:
Administrator |
|
www.akcesoria.cnc.info.pl
• silniki krokowe • Łożyska liniowe • śruby trapezowe i kulowe
|