Posty

Wyświetlanie postów z lipiec, 2021

Robię własną planetę

Obraz
Niektórzy latają w kosmos, a ty co? A ja nic, ja tylko robię własną planetę. W Three.js Tylko nie mówcie, że wygląda jak wirus. Bo to jest planeta planetowa. No i wygląda prosto, ale musiałem się namęczyć z tym, żeby dało się po kliknięciu rysować te sześciany i rurki w taki sposób, żeby były obrócone zgodnie z powierzchnią kuli. I próbowałem na różne sposoby, a to kombinowałem, żeby brać normalne , dodać do pozycji i wywołać metodę lookAt, ale to jakoś nie działało w każdej sytuacji, czasem kąty były dziwne. Próbowałem też korzystać z obiektów THREE.Spherical, z kwaternionów, czego ja nie próbowałem. Kombinowałem też, jak wydobyć styczną do powierzchni. W końcu nastąpił u mnie paradigm shift. I zamiast rozglądać się na to, co widać gołym okiem, na samą powierzchnię kuli, postanowiłem zajrzeć do samego środka. Bo każda kula ma środek. I zrobiłem tak, że obiekty "patrzą" na środek kuli (mesh.lookAt(0, 0, 0) zakładając, że środek kuli jest w pozycji (0, 0, 0) I oto je

Slidery w Three.js

Obraz
Zrobiłem video-slider w Three.js: https://hex13.netlify.app/videoslider.html Ładuje on videa, a potem renderuje do tekstur (używam WebGLRenderTarget i postprocessingu w Three.js), no i miesza w shaderze, tak, że przejście z jednego filmu odbywa się za pomocą efektów specjalnych. Takie tam. Choć ładnych kilka godzin nad tym spędziłem. Jest quasi tutorial do tego, ale to tylko ogólny opis techniki. Przydatne, ale skrótowe, trzeba dużo główkować samemu, żeby wyglądało i działało to dobrze, biorąc pod uwagę choćby cały boilerplate, jaki musiałem napisać w Three.js oraz kwestie typu usuwanie problemów z ładowaniem filmów czy obsługa eventów na różnych urządzeniach. Dało radę zrobić, ale szczerze mówiąc jeśli miałbym to zrobić coś podobnego kolejny raz, to wolałbym nie robić tego od zera, a mieć już jakiś szablon czy silnik do robienia sliderów/karuzeli, coś co już działa out of the box i jest już dobrze przetestowane i co wystarczy lekko dostosować, żeby działało i było fajne. No

Zrobiłem latające kółko

Obraz
W ramach nauki desktopienia w Rust (patrz poprzedni wpis) zrobiłem aplikację, w której można jechać myszą i będzie się kolorowe kółko przesuwać. Niesamowite! Po tylu latach programowania dalej cieszą proste rzeczy. Wyżej wymienioną rzecz wykonałem za pomocą biblioteki winit (która daje mi okienko i zdarzenia myszowe) oraz za pomocą biblioteki pixels mogłem ustawić wartości RGBA poszczególnych pikseli. Na razie robię to tak, że przelatuję przez wszystkie piksele i ustawiam dany kolor (zastanawiam się, czy nie można tego zrobić bardziej optymalnie, żeby tylko przelatywać przez niektóre piksele, te, które chcę zmienić?). Dokładnego kodu nie będę tu wrzucał, zresztą przykłady użycia tych bibliotek są łatwo dostępne w sieci.

Uczę się desktopić (Rust)

Obraz
Powracam do robienia apek desktopowych. Tym razem robię to w Ruście. Oto jest taka biblioteka winit , gdzie normalnie możesz sobie zrobić okno i odbiera ono różne eventy, np. myszowe i inne. No i zrobiłem sobie to okno. Później planuję użyć biblioteki pixels , żeby móc robić grafikę do tego, wstawiać piksele, czy co tam można robić w tych pikselach.

Zapomniane biblioteki JSowe

Lodash Zastanawiam się, czy ktoś tego używa w 2021 roku? Ja już dawno nie używam. To była dobra biblioteka z 7 lat temu, jak JS jeszcze wiele nie miał. Teraz natomiast jaka korzyść, skoro to wszystko w JS jest? Np. tablice w JS mają natywną metodę find czy inne oferowane przez Lodasha? No i dobre to było, kiedy nie było funkcji strzałkowych w JS, wtedy skróty lodashowe były może i bardziej poręczne niż pisanie function () { .... return ... } Lodash byłby również może lepszą biblioteką, gdyby... miał mniej funkcji. Nawet za czasów, kiedy używałem Lodasha, to wertowanie dokumentacji i szukanie odpowiedniej funkcji, która robi to, co chcę (po nazwach czasem ciężko się domyslić), zajmowało mi więcej czasu niż potrzebowałbym na napisanie takiej funkcji od zera. Czytając doksy, zastanawiam się "po co ktoś z tego zrobił funkcję". Np. funkcja _.drop, która zwraca wycinek tablicy pomijając n pierwszych elementów. Kurczę, to jest to samo, co arr.slice(n). Po co mam importować bibl