CAD cz.3: technika 3D - BRLCAD: Różnice pomiędzy wersjami

Z Technique.pl
Skocz do: nawigacja, szukaj
m (Doświadczenia własne)
m (BRL CAD w trakcie transformacji ustrojowej)
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 53: Linia 53:
 
[[File:1 Screenshot_20260221_165352 pusty.jpg|thumb|400px|MGED. Program po starcie wygląda niepozornie. Okno graficznego podglądu i okno komend oraz komunikatów. Interfejs użytkownika powstał w języku TCL/TK.]]
 
[[File:1 Screenshot_20260221_165352 pusty.jpg|thumb|400px|MGED. Program po starcie wygląda niepozornie. Okno graficznego podglądu i okno komend oraz komunikatów. Interfejs użytkownika powstał w języku TCL/TK.]]
 
[[File:2 Screenshot_20260221_164437 cyst wire.jpg|thumb|400px|Załadowany jeden z rysunków demonstracyjnych. Jako siatka wygląda strasznie skomplikowanie. Specjalnie wybrałem ten rysunek, bo był pierwszym jaki otworzyłem w 1996 r.]]
 
[[File:2 Screenshot_20260221_164437 cyst wire.jpg|thumb|400px|Załadowany jeden z rysunków demonstracyjnych. Jako siatka wygląda strasznie skomplikowanie. Specjalnie wybrałem ten rysunek, bo był pierwszym jaki otworzyłem w 1996 r.]]
[[File:3 Screenshot_20260221_165152 cyst ray.jpg|thumb|400px|Ale renderowany jest bardzo w porządku. Wieść niesie, że w natywnej wersji dla Silicon Graphics renderowanie odbywało się w czasie rzeczywistym. Na PC nie było tak różowo, szczególnie na 80386 ;) .]]
+
[[File:3 Screenshot_20260221_165152 cyst ray.jpg|thumb|400px|Renderowany rysunek jest bardzo w porządku. Wieść niesie, że w natywnej wersji dla Silicon Graphics renderowanie odbywało się w czasie rzeczywistym. Na PC nie było tak różowo, szczególnie na 80386 ;) .]]
 
</div>
 
</div>
  
Linia 102: Linia 102:
 
</div>
 
</div>
  
Hasło działało, ku pewnemu zaskoczeniu kod źródłowy bezproblemowo się kompilował i instalował.  
+
Hasło działało. Ku pewnemu zaskoczeniu kod źródłowy bezproblemowo się kompilował i instalował w systemie.
  
 
Generalnie BRL-CAD posłużył mi głównie do zabawy… Jednak „utrzymywałem” go na dysku przez wiele lat, regularnie aktualizując.
 
Generalnie BRL-CAD posłużył mi głównie do zabawy… Jednak „utrzymywałem” go na dysku przez wiele lat, regularnie aktualizując.

Aktualna wersja na dzień 17:05, 1 mar 2026

CAD 3. Część poprzednia: CAD cz.2: technika 2D

Wstęp

W technice 2D najpopularniejszym zastosowaniem systemów CAD było kreślenie. Oczywiście, powstawały różnorakie moduły automatyzujące wiele czynności, lub przeprowadzające obliczenia. Jednak sercem systemu był rysunek, który na końcu ulegał przeniesieniu na papier.

Głównym aspektem rozwoju takich systemów musiała być możliwość pracy z grafiką. Podgląd tego co się dzieje. Podgląd rysunku. A ograniczeniami rozwoju, możliwości tworzenia grafiki przez komputery.

W technice 3D było już trochę inaczej. Pierwotnie wizualizacja obiektów 3D była na dalszym planie (dygresja na temat nieprawidłowości używania terminu „obiekt” w tej serii artykułów znajduje się w części pierwszej). Głównym zastosowaniem systemów CAD było przygotowanie danych o wyglądzie, czy też budowie projektowanego obiektu do dalszej analizy.

Dalszą analizą mogło być np. badanie rozmieszczenia sekcji urządzenia w przestrzeni i wykrywanie kolizji pomiędzy nimi lub obliczenia fizyczne czy wytrzymałościowe itd.

Dlatego też pierwotnie trójwymiarowe systemy CAD mogły być i były oddzielone od warstwy prezentacyjnej – czyli wyświetlania na ekranie lub wydruku widoku projektowanego obiektu.

Architektura systemów była (i jest) klasyczna: baza danych o geometrii obiektu oraz zestaw narzędzi do definiowania i modyfikacji tej geometrii.

Oczywiście te narzędzia przechodziły swój rozwój, a w zasadzie cały czas są rozwijane. Możemy wymienić co najmniej cztery kroki milowe w rozwoju trójwymiarowych systemów CAD:

  • CSG (Constructive Solid Geometry) – czyli możliwość tworzenia skomplikowanych kształtów poprzez wykonywanie operacji logicznych (bool-owskich) na podstawowych bryłach (np. sumowanie obiektów, odejmowanie ich od siebie, znajdowanie części wspólnych itd.),
  • modelowanie parametryczne – czyli określanie parametrów obiektów poprzez wspólne zmienne (także dla różnych obiektów),
  • B-Rep (Boundary Representation) – czyli opisywanie brył, nie poprzez definicje podstawowych brył składowych i działań przeprowadzonych między nimi (CSG), ale poprzez opis powierzchni i krawędzi, które ograniczają przestrzeń. O tym systemie opisu obiektów 3D opowiemy w następnych częściach niniejszego cyklu artykułów.
  • relacje – czyli narzucenie geometrii pewnych warunków, jak np. symetria lub rozmieszczenie względem innych obiektów lub ich fragmentów. Zauważmy, że w technice 2D popularne jest rysowanie przy pomocy „opcji konstrukcyjnych”, jak np. równoległość linii, odległość od jakiegoś punktu, styczność itd. Jednak działanie takich opcji najczęściej ogranicza się do momentu tworzenia elementu graficznego. Przy późniejszych zmianach nie są one brane pod uwagę. Natomiast relacje są zapamiętywane i stosowane „na wciąż”, także przy modyfikacji obiektu.

BRL-CAD

Pierwsze systemy tego typu zaczęto tworzyć już pod koniec lat ‘50 XX w. (!). I właśnie takim systemem pamiętającym czasy „komputerów łupanych”, realizującym CSG, jest właśnie BRL-CAD.

Pierwszą linijkę jego kodu napisano mniej więcej około 1958 roku. Oczywiście projekt nazywał się inaczej. System nie przechodził rewolucyjnych zmian, ale ciągle ewoluował. Na początku to był zbiór narzędzi do budowy geometrii. Możliwość graficznej prezentacji projektowanego obiektu pojawiła się dopiero w połowie lat ‘60. Oczywiście w tamtych czasach nie każdego było stać na tworzenie takiego systemu.

Na ekranie czołg XM1 symulowany w oprogramowaniu, które niebawem stanie się BRLCADem. Przed ekranem, plecami do fotografa, siedzi osobiście Mike Muuss. Nie tylko współautor BRLCADa, ale również TCP/IP i np. programu "ping". W tle komputer PDP-11/70. Około 1980 r. (Źródło: https://ftp.arl.army.mil/~mike/comphist/hist.html oraz https://BRLCAD.org).

Kontekst społeczno-polityczny

Na początku, do jakichkolwiek prób stworzenia czegoś takiego jak system modelowania bryłowego, potrzeba było autentycznych superkomputerów. Nie każdy mógł sobie na taką maszynę pozwolić. Ale mogła to zrobić armia USA. System zaczęto tworzyć w ośrodku U.S. Army Ballistic Research Laboratory (BRL). Przeszedł on całą drogę rozwojową, wymuszoną przez rozwój techniki komputerowej.

Sprzętowo, od superkomputerów (‘60), przez komputery, nazwijmy je, inżynierskie (‘70) (chyba najbardziej znany to PDP-11), aż do stacji roboczych pracujących pod kontrolą systemu Unix (‘80). Oczywiście musiało się to skończyć na Linuxie (‘00).

A programowo, od języka Fortran do kompilowanego w systemie Unix języka C.

Oprogramowanie osiągnęło stan, który widzimy w postaci BRL-CAD, około 1985 r. Tak, BRL-CAD często jest określany jako „najstarszy nadal rozwijany system CAD na świecie”.

Pierwotne zastosowania

Biorąc pod uwagę ośrodek w którym BRL-CAD powstał, nietrudno zgadnąć, że jego pierwotnym zastosowaniem było badanie wpływu trajektorii pocisków, przestrzelin, odłamków i fal uderzeniowych na obiekty geometryczne. Wzajemnego oddziaływania uszkodzeń i rozplanowania różnych elementów wewnątrz badanych obiektów. Nietrudno też wpaść na pomysł, że to podstawy techniki „ray-tracing”, później stosowanej w komputerowych wizualizacjach oświetlonych obiektów lub całych scen 3D…

Możliwości

Klasyczna architektura systemu BRL-CAD pozostała niezmieniona do dziś. Tzn. Mamy bazę danych (obecnie to pliki z rozszerzeniem „*.g”). I mamy zestaw poleceń do tworzenia obiektów geometrycznych.

Pierwotnie te polecenia operowały (CSG) bezpośrednio w systemie operacyjnym na pliku z danymi. Jednak z czasem doczekaliśmy się specjalizowanej powłoki (tzn. tej części z wierszem poleceń) pamiętającej konfigurację systemu, rysunku, wartości zmiennych itd.

Ba, później doczekaliśmy się nawet części interaktywnie wizualizującej tworzoną geometrię.

Powstało narzędzie o nazwie „MGED”, składające się z dwóch okien. Tekstowego z poleceniami i graficznego z podglądem rysowanego obiektu. W oknie graficznym dostępne są również menu ze skrótami do najpopularniejszych poleceń, w szczególności związanymi z prezentacją (widokami), tworzeniem podstawowych brył oraz grupowaniem i wybieraniem elementów przy pomocy myszy.

MGED. Program po starcie wygląda niepozornie. Okno graficznego podglądu i okno komend oraz komunikatów. Interfejs użytkownika powstał w języku TCL/TK.
Załadowany jeden z rysunków demonstracyjnych. Jako siatka wygląda strasznie skomplikowanie. Specjalnie wybrałem ten rysunek, bo był pierwszym jaki otworzyłem w 1996 r.
Renderowany rysunek jest bardzo w porządku. Wieść niesie, że w natywnej wersji dla Silicon Graphics renderowanie odbywało się w czasie rzeczywistym. Na PC nie było tak różowo, szczególnie na 80386 ;) .

Kod źródłowy systemu był dostępny dla podwykonawców od początku lat ‘80, a w 2004 r. został oficjalnie udostępniony jako „open source”.

Po otwarciu kodu, w ramach „resocjalizacji” projektu, powstał kolejny „modeler” dla tego systemu o nazwie „Archer” (około 2007 r.).

Archer. To powiew "nowoczesności". Ma jednak nadal sporo niedopracowań. Przykładowy rysunek ciężarówka M35 z użyciem perspektywy.
A tu M35 renderowane w rzucie równoległym.
Archer dysponuje obiecującym trybem renderowania rysunków, przydatnym w czarno-białych publikacjach.

W każdym razie w systemie dobrze zaimplementowano narzędzia CSG i częściowo parametryzację.

W latach 1980-tych BRL-CAD był głównym narzędziem do tworzenia obiektów 3D na potrzeby symulacji prowadzonych przez wojskowe ośrodki badawcze i ich kooperantów. Symulacje zarówno badawcze (obliczenia), jak i środowiskowe (np. symulatory pojazdów, pola walki itp.).

Ograniczenia

BRL-CAD był zawsze rozwijany jako narzędzie analityczne. Niektóre opcje i narzędzia nie były priorytetowe lub „nie tworzyły podstawowych abstrakcji” (jakby powiedział specjalista). Chodzi o to, że po prostu niektóre opcje lub narzędzia działają skrajnie źle, czy też niewygodnie. I nikt nigdy ich nie poprawił, bo nie były uważane za kluczowo ważne.

Jednym z takich narzędzi jest grupowanie elementów. Składanie drobnych obiektów w większą całość. Problem w tym, że wskazując w oknie graficznym obiekt należący do grupy, wybieramy nie grupę, a tylko ten drobny detal. Prowadzi to do wielu pomyłek, w tym także przypadkowych translacji (przesunięć) takiego pojedynczego obiektu, a nie całej grupy.

Podobnie jest z podręcznymi edytorami umożliwiającymi wykonywanie szkiców 2D (np. zarysów do obrócenia wokół osi symetrii lub „wyciągnięcia” do postaci bryły). Są skrajnie uproszczone i dysfunkcyjne. Ale ten system po prostu nie do tego miał służyć.

Doświadczenia własne

Na początku 1996 r. pierwszy raz zainstalowałem Linuxa i rozglądałem się za jakimś „fajnym” oprogramowaniem, które by na nim pracowało… Moja dystrybucja była dostarczona na dwóch płytach CD. Jedna z systemem, a druga z jakimś wyborem „wolnego” oprogramowania, w większości z serwera FTP „Sunsite”.

Właśnie tam, w dziale „CAD”, znalazłem kopię kodu źródłowego BRL-CAD.

Oryginalne płyty Slackware 3.0 z kolekcji autora. Cóż, to była chyba najgorsza wersja Slackware w historii, ale od czegoś trzeba było zacząć. Nadmienię, że od wersji 3.4 wszystkie błędy były poprawione i późne wersje rodziny 3.x były uważane za bardzo stabilne, czy też "zacne".

BRL CAD w trakcie transformacji ustrojowej

To, że kod źródłowy był dostępny, nie znaczy, że każdy mógł mieć do niego dostęp :D

Plik archiwum był zaszyfrowany i do odczytu wymagał hasła. Do zaszyfrowanego pliku było dołączone narzędzie do deszyfracji i… formularz dla uzyskania hasła. Należało go wydrukować, wypełnić i wysłać faxem lub pocztą prosto do U.S. Army Research Laboratory (ARL), które ówcześnie zarządzało kodem.

Właśnie zmieniliśmy ustrój i sojusze. Więc pełen optymizmu wydrukowałem, wypełniłem i wysłałem formularz zwykłym listem. Wszystko trwało tak długo, że zdążyłem o tym zapomnieć ;)

Pewnego dnia, po paru miesiącach dostałem list z USA z odpowiedzią. Pozytywną odpowiedzią. List zawierał hasło i instrukcje jak go użyć.

Koperta była najwyraźniej otwierana przez nasza cenzurę. Przy czym ze stempli wynikało, że co najmniej miesiąc list był „przetwarzany” przez nasze krajowe służby „pocztowe”…

Zaskakujący list jak na rok 1996.
W środku uniwersalna kserówka bez adresata datowana na 1994 r., ale oryginał był podpisany osobiście przez Mike Muussa.

Hasło działało. Ku pewnemu zaskoczeniu kod źródłowy bezproblemowo się kompilował i instalował w systemie.

Generalnie BRL-CAD posłużył mi głównie do zabawy… Jednak „utrzymywałem” go na dysku przez wiele lat, regularnie aktualizując.

Drugi raz miałem kontakt z ARL w 2002 r. Przy którejś kolejnej aktualizacji oprogramowania hasło przestało działać. Oczywiście powtórzyłem procedurę i dostałem nowe hasło. Potem kolejna zmiana hasła nastąpiła w 2003... Długo nie działało. Parę miesięcy później BRL-CAD oficjalnie został oprogramowaniem „open source”, rozpowszechnianym na licencji LGPL i w nieszyfrowanych plikach. Zastanawiam się, czy cała operacja zmian hasła do pliku archiwum w katach 2002-2003 nie miała na celu zorientowania się przez ARL jak dużo użytkowników nadal interesuje się tym oprogramowaniem…

Przydał się na coś ;)

Można zadać pytanie, „jak wykorzystać oprogramowanie sprzed 50 lat w XXI w. ?”. Oprogramowanie niby fajne. W końcu to „technika gwiezdnych wojen” w pełni tego słowa znaczenia.

Taka okazja nadarzyła się około 2012 r.

W ramach pewnego bardzo poważnego projektu, zaistniała potrzeba wykonania wizualizacji różnych wariantów zabudowy chłodnicy i intercoolera w pewnym bardzo poważnym silniku… Grafiki to prezentujące wykonałem właśnie w tym programie :D

Widok siatki uproszczonego modelu silnika z zastosowaniem perspektywy.
A tu widok renderowany.
Zestaw widoków w podzielonym oknie MGED.
Skan przykładowej ilustracji z oryginalnej, papierowej publikacji.

Podsumowanie odcinka

Jak widzimy, problematyka modelowania 3D jest niewiele młodsza niż same komputery. Istnieje pewna grupa oprogramowania, które zaczęto tworzyć ponad 50 lat tamu i nadal potrafi być ono użyteczne. A co najmniej zadziwia swoimi możliwościami.

W następnej części cyklu będziemy kontynuować tematykę 3D.


Tekst i zdjęcia: Szymon Dowkontt


Powrót do "Strony głównej"


Powrót do "Wydania 2026"