Jak się zabrać za budowanie interaktywnej aplikacji 3D?

0

Dzień dobry.

Mam taki pomysł, żeby stworzyć interaktywną aplikację 3d do nauki. Na razie jest to tylko pomysł, ale zastanawiam się jak by trzeba było się do tego zabrać.
Modele 3d z teksturami mogłabym wykonać sama w programie do grafiki 3D. Chciałabym, aby te modele były o jak najlepszej rozdzielczości, aby można było je obracać, przybliżać itd. Chodzi o to żeby była jak najlepsza jakość kształtu i tekstur. Powiedzmy, że chce coś obejrzeć, dokładnie, zobaczyć składowe tej części, a najważniejsze to właśnie oddanie kształtu i tekstur.

I teraz pytanie, co dalej jest potrzebne, czy można to zrobić za pomocą silnika do gier typu Unity czy Unreal Engine czy może jakiś programista np.: Javy czy innego języka mógłby mi w tym pomóc?

Czy ktoś mógłby mi podpowiedzieć jak należałoby się do tego zabrać? Nie chodzi mi o dokładny opis, ale jak od modeli 3D można przejść do interaktywnej aplikacji. Jakie etapy należy wykonać. Dodam, ze bardzo ważne jest możliwość oddania jak najlepszej jakości modeli ,przy ich stosunkowo małej liczbie ( tzn nie tyle modeli, plansz, etapów jak przy grach).

Dodam, że nie jestem programistką (co zapewne można wywnioskować z treści ;-)). Rozważam naukę któregoś języka, ale takiego który by się w przyszłości przydał do tego o czym wspominam.

Z góry dziękuje za pomoc.

1

Chodzi o to żeby była jak najlepsza jakość kształtu i tekstur.

Grafika 3D to jedna wielka iluzja i szukanie najlepszych możliwych kompromisów. Czasem renderuje się np. modele z mniejszą liczbą wierzchołków, ale z nałożonymi mapami normalnych. Ale to trzeba by rozważyć pod kątem konkretnego use case.

1

Z tego co mówi internet to three.js jest kompatybilne z React Native 😛

3

Unity powinno być najłatwiejsze do tego. Robisz normalnie model w blenderze, przeciągasz je na "scenę" i właściwie już masz coś co możesz odpalić na komputerze, telefonie czy co tam chcesz, do tego co piszesz być może obędzie się całkiem bez kodowania, za to będzie potrzebne parę sztuczek.

Nie da rady zrobić tak bardzo szczegółowych modeli, w grach bardziej szczegółowe modele z lepszymi teksturami pojawiają się im bliżej obiektu się znajdujesz. Tak naprawdę będziesz potrzebować prawdopodobnie przygotować kilka - kilkadziesiąt modeli jednej rzeczy i podmieniać model i jakość tekstur w zależności od pozycji obserwatora żeby pokazać szczegóły. Jak wyżej - możesz a nawet powinnaś używać map normalnych, bump map, shaderów do poprawienia wyglądu i iluzji lepszej jakości - te są dość proste do wygenerowania w blenderze czy innej aplikacji 3d, ale jak chcesz zrobić model rzeczy której można przyjrzeć się pod lupą z jakością 4k to prawdopodobnie potrzebujesz różnych modeli fragmentów tej rzeczy, a na pewno potrzebujesz wielu tekstur w różnej jakości.

Oczywiście wszystko zależy o jak dużej szczegółowości mówimy - dzisiejsze karty graficzne potrafia naprawdę sporo, nawet te na smartfonach

Język nie jest za bardzo ważny - może to być nawet javascript bo od momentu w którym pracę przejmuje GPU właściwie nie ma to znaczenia, a logiki nie będzie dużo. Za to w three.js czy javie będzie to znacznie trudniej zrobić niż w gotowym silniku gier typu unity czy unreal więc zostaje tak naprawdę C++ lub C#. W unity do tego co piszesz prawdopodobnie nie będzie trzeba napisać ani jednej linijki kodu.

0
LukeJL napisał(a):

Chodzi o to żeby była jak najlepsza jakość kształtu i tekstur.

Grafika 3D to jedna wielka iluzja i szukanie najlepszych możliwych kompromisów. Czasem renderuje się np. modele z mniejszą liczbą wierzchołków, ale z nałożonymi mapami normalnych. Ale to trzeba by rozważyć pod kątem konkretnego use case.

Tak, tak mam tego świadomość. Dziekuję.

0
obscurity napisał(a):

Unity powinno być najłatwiejsze do tego. Robisz normalnie model w blenderze, przeciągasz je na "scenę" i właściwie już masz coś co możesz odpalić na komputerze, telefonie czy co tam chcesz, do tego co piszesz być może obędzie się całkiem bez kodowania, za to będzie potrzebne parę sztuczek.

Nie da rady zrobić tak bardzo szczegółowych modeli, w grach bardziej szczegółowe modele z lepszymi teksturami pojawiają się im bliżej obiektu się znajdujesz. Tak naprawdę będziesz potrzebować prawdopodobnie przygotować kilka - kilkadziesiąt modeli jednej rzeczy i podmieniać model i jakość tekstur w zależności od pozycji obserwatora żeby pokazać szczegóły. Jak wyżej - możesz a nawet powinnaś używać map normalnych, bump map, shaderów do poprawienia wyglądu i iluzji lepszej jakości - te są dość proste do wygenerowania w blenderze czy innej aplikacji 3d, ale jak chcesz zrobić model rzeczy której można przyjrzeć się pod lupą z jakością 4k to prawdopodobnie potrzebujesz różnych modeli fragmentów tej rzeczy, a na pewno potrzebujesz wielu tekstur w różnej jakości.

Oczywiście wszystko zależy o jak dużej szczegółowości mówimy - dzisiejsze karty graficzne potrafia naprawdę sporo, nawet te na smartfonach

Język nie jest za bardzo ważny - może to być nawet javascript bo od momentu w którym pracę przejmuje GPU właściwie nie ma to znaczenia, a logiki nie będzie dużo. Za to w three.js czy javie będzie to znacznie trudniej zrobić niż w gotowym silniku gier typu unity czy unreal więc zostaje tak naprawdę C++ lub C#. W unity do tego co piszesz prawdopodobnie nie będzie trzeba napisać ani jednej linijki kodu.

Bardzo dziękuje za tak szczegółową odpowiedź :-)
Mam świadomość, że przy modelach konieczne będzie użycie map, jednak niesie to za sobą ograniczenia w jakości wyświetlania, choć są oczywiście niezbędne.

Jak rozumiem, nie powinnam się skupiać szczególnie na żadnym języku programowania (chyba, że C++ lub C#). W takim razie chyba powinnam się skupić na takim silniku, który mógłby udźwignąć jak największą ilość wierzchołków. Czy pod tym kątem Unity jest lepsze od Unreal E?

0

@Patris: W Unity są takie limity:

In Unity, the format of the mesh index buffer dictates the maximum number of vertices that each 3D object can use: A 16-bit index buffer supports up to 65,535 vertices. A 32-bit index buffer supports up to 4 billion vertices.

Nie wiem jakie naprawdę masz potrzeby, ale wątpię, żeby Twoje modele zajechały ten silnik.

0
Patris napisał(a):

Powiedzmy, że chce coś obejrzeć, dokładnie, zobaczyć składowe tej części, a najważniejsze to właśnie oddanie kształtu i tekstur.

No to woksele.

I teraz pytanie, co dalej jest potrzebne, czy można to zrobić za pomocą silnika do gier typu Unity czy Unreal Engine czy może jakiś programista np.: Javy czy innego języka mógłby mi w tym pomóc?

Powyższe operują na wielokątach więc nie. Z drugiej strony GPU przyśpieszają operację na wielokątach a CPU są boleśnie słabe i energożerne.

Odpowiedź: Obecna technologia nie pozwala na realizację zadanych wymagań na sprzęcie mobilnym.

0

Woksele....ciekawe. Musze sie przyjrzeć tematowi. Na razie zainstalowałam i testuję Unity.

Chciałam prosić o ostatnią rzecz. Czy ktoś mógłby mi napisać łopatologicznie he,he. Jak od Unity przechodzi się do aplikacji. Próbuję ogarnąć kolejne kroki, algorytm postepowania prowadzący do utworzenia aplikacji czy to mobilnej czy webowej.

1
  1. To co zrobisz w edytorze gotowe jest do utworzenia builda.
  2. Przy instalacji Unity wybierasz jakie platformy chcesz obsługiwać. One będą dostępne w Build Settings... ( https://docs.unity3d.com/Manual/PublishingBuilds.html ).
  3. Aplikacja dla WebGL nie wymaga jakiejś specjalnej konfiguracji. Po wykonaniu builda dostajesz gotową stronkę, w której osadzona jest aplikacja. Możesz robić z nią co chcesz - upiększyć itp.
  4. Dla Androida trzeba skonfigurować apkę w Player settings: https://docs.unity3d.com/Manual/class-PlayerSettingsAndroid.html
  5. Z tego co pamiętam, to ostatnio Unity sam sobie instaluje SDK androida. Ale dobrze mieć zainstalowaną przynajmniej Javę (JDK).

Unity ma bardzo dużą społeczność i jest sporo materiałów w Internecie, które lepiej (bardziej szczegółowo) odpowiedzą na Twoje pytania.
Np. przy wyszukiwaniu "unity build for android tutorial" to jest pierwszy wynik w Google Wideo:

0
Spine napisał(a):
  1. To co zrobisz w edytorze gotowe jest do utworzenia builda.
  2. Przy instalacji Unity wybierasz jakie platformy chcesz obsługiwać. One będą dostępne w Build Settings... ( https://docs.unity3d.com/Manual/PublishingBuilds.html ).
  3. Aplikacja dla WebGL nie wymaga jakiejś specjalnej konfiguracji. Po wykonaniu builda dostajesz gotową stronkę, w której osadzona jest aplikacja. Możesz robić z nią co chcesz - upiększyć itp.
  4. Dla Androida trzeba skonfigurować apkę w Player settings: https://docs.unity3d.com/Manual/class-PlayerSettingsAndroid.html
  5. Z tego co pamiętam, to ostatnio Unity sam sobie instaluje SDK androida. Ale dobrze mieć zainstalowaną przynajmniej Javę (JDK).

Unity ma bardzo dużą społeczność i jest sporo materiałów w Internecie, które lepiej (bardziej szczegółowo) odpowiedzą na Twoje pytania.
Np. przy wyszukiwaniu "unity build for android tutorial" to jest pierwszy wynik w Google Wideo:

Baaaaardzo dziękuję. Tak, tak resztę poczytam sama. Zanim zadałam pytanie to szukałam w necie, tylko czasami trzeba wiedzieć jakie zadać pytanie, żeby dostać dobrą odpowiedź. Teraz już będę wiedziała gdzie "kopać". Dziękuje bardzo!

1 użytkowników online, w tym zalogowanych: 0, gości: 1