Strona Główna CNC FORUM
Amatorskie maszyny CNC

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum
Akcesoria CNC

Poprzedni temat «» Następny temat
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)
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group - forum anime

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.plsilniki krokoweŁożyska linioweśruby trapezowe i kulowe
Strona wygenerowana w 0,27 sekundy. Zapytań do SQL: 14