Programowanie prawie od zera: C++ oraz grafika 3D (+ ew. 2D). Czy to ma sens?

0

Witam.
Mam już ponad 30 wiosen i postanowiłem zupełnie się przebranżowić na programistę + grafika 3D. W młodości żywo interesowałem się technologiami komputerowymi. Na Commodore 64 pisałem jakieś programy w Basicu, a z czasem w assemblerze procesora 6510 (6502). W tym ok. 4 kilobajtową grę podobną w działaniu do Froggera (było to gdzieś 1-1.5 tyś instrukcji ML + grafika). Potem jakieś przeróbki tekstur w grach PC - modowanie na własny użytek. Generalnie wtedy myślałem o karierze na programisty. Ale po liceum jakoś się tego nie podjąłem i poszedłem na studia humanistyczne. Dotychczasowa kariera zawodowa - od magazynu do handlowca, w tym handel zagraniczny, trochę grafiki 2d. W ogóle nie moja bajka, ale jakoś przebiedowałem te kilka lat, z tym, że jestem już wypalony. Ja nie widzę za bardzo możliwości rozwoju. A przede wszystkim mam jednak zmysł techniczny i takie humanistyczne czynności mnie po prostu męczą. Pomijam już, że finansowo też jakoś utknąłem.

W wakacje tak kontemplując moje życie zacząłem żałować, że nie poszedłem w kierunku informatyki. No i zaraz stwierdziłem, że może by tak zacząć się samemu przebranżawiać. Studia czy studium raczej odpadają, bo już jestem na to za stary, więc stwierdziłem, że się sam dokształcę. Myślałem początkowo o grafice 3D, ale po 1 tutorialu jakoś tak zacząłem się uczyć C++
Co do możliwości rozwoju to nie mam zobowiązań rodzinnych, więc mogę sporo czasu przeznaczać na naukę. Przerobiłem już kursy M. Zelenta, te z cpp0x.pl i jeszcze jakiś inny. Do tego aktualnie czytam "Primer C++ (6th ed)" Stephena Praty oryginał po angielsku (z językiem nie mam najmniejszego problemu, szczególnie ze strony informatyki - lata czytania artykułów IT). No i w planie jeszcze parę innych pozycji o C++ a także o tworzeniu grafiki 3D.

Dlaczego C++? Ja raczej chciałbym iść w stronę programowania na desktopy, a szczerze mnie ani webmasterka ani aplikacje mobilne w ogóle nie pociągają. Dwa chciałbym to połączyć z grafiką 3D. Niekoniecznie tworzenie gier, ale raczej jakaś architektura (domy), albo filmy 3D, ew. rozwijanie aplikacji czy sterowników 3D - coś w tych klimatach. To tego też grafika 2D by się przydała. I mam wobec tego parę pytań:

  1. Czy warto łączyć C++ i 3D (i ew. 2D). Czy ma sens takie szerokie pole.
  2. Jeśli tak to w jakich najlepiej kombinacjach (z tworzeniem gier, architektury, aplikacji 3D itd.).
  3. Jeśli już 3D to jaki program? Blender, 3DS Max, Maya, Autocad - wiadomo to raczej zależeć będzie od "specjalizacji" tego mojego 3D.
    Proszę o ewentualnie inne sugestie.
1

C++ to trochę kiepski wybór, gdyż nawet na desktopach panują już C# i Java. Jakieś ciężkie rzeczy można oczywiście w C++ zakodzić, ale w innych językach łatwiej utrzymać porządek w projekcie i pisać czysty kod.

1 i 2) C++ i 3D możesz połączyć np. w Unreal Engine, jeśli masz mocnego kompa.

  1. Blender bardzo fajnie współpracuje z Unity 3D (C#). Unity importuje geometrię prosto z pliku blend, więc można się obejść bez eksportowania modeli do plików FBX. W Unreal nie jestem pewien czy prosto z blend można zaimportować.

Widzę, że raczej programowanie grafiki Cię kręci. Jak zrobisz kilka gier, to powinieneś mieć podstawy by aplikować do jakichś firm zajmujących się tym. Robiąc gry na własną rękę może być ciężko zarobić na życie. W ogóle z tego co piszesz, to chcesz potrafić wszystko robić sam (grafikę 3D, 2D, aplikacje wykorzystujące tą grafikę). To się chwali, ale wydaje mi się, że jak będziesz pracował w firmie, to lepiej mieć mocne umiejętności albo graficzne, albo programistyczne. Jak będziesz programistą, to grafiką zajmie się ktoś inny i vice versa, w ten sposób dostajemy dobrze napisaną grę z dobrym wyglądem.

Architektura 3D to bardziej zajęcie dla grafików, programista z współczesnymi technologiami bardzo łatwo może poskładać gotowe modele 3D w aplikację do oglądania domu itp., więc nie widzę zbytnio roboty przy takich projektach. Być może są nawet gotowe przeglądarki architektury, które obsługuje tylko grafik (wprowadza do nich swoje modele i tworzy przegląd, zero programowania).

1

Próg wejścia w C++ jest dużo wyższy niż w inne popularne języki. Dodatkowo jeżeli chcesz robić w grafice to pewnie będziesz musiał znać matmę i fizykę na trochę wyższym poziomie.

0
mechanix napisał(a):

Próg wejścia w C++ jest dużo wyższy niż w inne popularne języki. Dodatkowo jeżeli chcesz robić w grafice to pewnie będziesz musiał znać matmę i fizykę na trochę wyższym poziomie.

Liczę się z tym od początku i mam w planie też to. Na razie chcę zaznajomić się C++, potem obczaję rendering 3D i albo w to pójdę do końca albo: dalsze szkolenie się w C++, algorytmy, str. danych + matematyka i ew. fizyka - zależnie od od zapotrzebowania.

0

Przerobiłem C++ Pratty i jednak pójdę w stronę 3D. Zdecydowanie bardziej 3D i 2D mnie kręci. Na C64 programowałem namiętnie, bo trzeba było maszynę zaprogramować, aby tą grafikę w ogóle wyświetlało. Plus BASICowe programiki świetnie czuły się w trybie tekstowym. Można było banalnie prosto ze znaków graficznych stworzyć bajerancki (jak na lata 80-te) kolorowy interfejs graficzny. To zastawia daleko w tyle nawet konsolę Windows w kolorze. Pomimo, że VIC-II nie był tu idealny. Programowanie też jest super, szczególnie fajne jest C++ ale dzisiejsze programowanie jest na tyle zajmujące, ze należałoby się w tą mocno zagłębić. A z dwojga tych fajnych zajęć (tzn. programowania i grafiki) wybieram zdecydowanie grafikę 3D. To mnie zawsze najbardziej kręciło. Poza tym to właśnie to było moją pierwszą myślą. Oczywiście nadal sobie hobbistycznie "poogarniam" C++ i np. C# jak będę miał potrzebę czy ochotę.

Dzięki wszystkim za odpowiedzi.

1

Jeśli chcesz to traktować jako hobby, to bardzo fajnie.
Ale jeśli chcesz robić w tym zawodowo, to bez studiów technicznych/ścisłych, nic nie zdziałasz. To wąska działka z wysokim progiem wejścia. Ludzie, którzy robili z tego jakieś projekty na studiach będą od ciebie o niebo lepsi na każdej rekrutacji. Nie wszystkiego można się nauczyć z książki i videotutoriala.
Jeśli chcesz pociągnąć ten temat, to idź na zaoczne studia na politechnikę.

0
sqlka napisał(a):

Jeśli chcesz to traktować jako hobby, to bardzo fajnie.
Ale jeśli chcesz robić w tym zawodowo, to bez studiów technicznych/ścisłych, nic nie zdziałasz. To wąska działka z wysokim progiem wejścia. Ludzie, którzy robili z tego jakieś projekty na studiach będą od ciebie o niebo lepsi na każdej rekrutacji. Nie wszystkiego można się nauczyć z książki i videotutoriala.
Jeśli chcesz pociągnąć ten temat, to idź na zaoczne studia na politechnikę.

Racja, języka programowania nie nauczy się człowiek z książki. O tych videotutorialach czy kursach na internecie nawet nie wspominam na poważnie, ja je tylko przerobiłem by mieć jakikolwiek pogląd co do tego języka. Jak mówisz tu jedna książka na pewno nie wystarczy. Ja mam przygotowanych jeszcze z 3 o C++ plus kilka pozycji o strukturach danych, optymalizacji kodu itd. Ale i to mało. Bo na pewno przydałoby się zrobić na własną rękę kilka sporych projektów w C++, bo suche książki guzik dadzą. Nawet te ćwiczenia u Pratty to zdecydowanie za mało, bo te 10 ćw. na rozdział średnio utrwala zagadnienia z dalszych rozdziałów. Do tego dochodziłaby nauka matmy na wyższym niż licealnym poziomie. Wiadomo, że studia to inna sprawa (szczególnie ze względów formalnych), ale szczerze mi się już nie za bardzo to chce tego cyklu edukacyjnego powtarzać. Myślę, że jednak bym podołał sam. Niemniej byłoby to czasochłonne, zajęłoby to nawet kilka lat by dojść do jakiegoś sensownego poziomu. Tu nie chodzi o to, że mnie to przerasta, tylko lepiej zamiast tego skupić się przez te kilka lat na jednej czasochłonnej rzeczy (programowanie vs. grafika 3D) szczególnie, gdy dla mnie priorytetem jest jednak 3D. Bo jak sugerował Spine, i tak dzisiejszy świat technologii dzieli się na programowanie ALBO grafikę 3D. Rzadko to się dziś łączy. Właśnie najbardziej mi zależało na tego typu odpowiedziach - w kontekście sensu łączenia tych dwóch dziedzin IT. I tu wolę poświęcić ten spory czas na naukę czegoś co mnie bardziej kręci niż programowanie (które też jest świetne, ale z dwojga 'dobrego' wybiorę to pierwsze). A jakieś tam poziomy C++ od czasu do czasu sobie będę przyswajać. Uczeniem się C++ nie jestem też rozczarowany. W zasadzie od początku byłem nastawiony na 3D (patrz posty sprzed miesiąca), ale postanowiłem spróbować C++ ponieważ:

  1. Chciałem się go zawsze nauczyć (na jakimkolwiek poziomie)
  2. Bo może mi się bardziej to spodoba od 3D

A, że pierwszy punkt osiągnięty, a drugi się nie ziścił stąd taka a nie inna decyzja.

Dziękuje raz jeszcze wszystkim za odpowiedzi!

1

Można programować grafikę 3d samą matematyką bez narzędzi, shadera klepiesz, ale poziom matematyki dość wysoki żeby zrobić coś fajnego.

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