Суббота, 20 Апреля 2024, 02:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Подскажите как учить 3D программирование
Подскажите как учить 3D программирование
SnuuxДата: Суббота, 13 Июля 2013, 10:48 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Небольшая история:

Я скачал книгу по OpenGL, OpenGL. Суперкнига Ричард С. Райт, мл., Бенджамин Липчак, и начал читать. Все очень хорошо написано, и главное что объясняются не только функции OpenGL (как например в книге Введение в OpenGL Р.Д.Верма), а 2D, 3D теория тоже.

И вот решил приобрести эту книгу. Захожу в Библио-Глобус (такой большой книжный магазин в Москве) и там книги нету. Тогда я полез в интернет, и оказалось, что вообще книга нигде не продается. После этого пишу другу в скайп, говорю, что "- Прикинь, нигде нет книги по 3д графике на Си/Си++.". Ну он мне и отвечает "- Да забей ты, это вообще не актуально сейчас, бери готовый 2D движок, и делай игры!".

И теперь я вообще сбит с толку... Что учить? Я хочу 3D графику, но без нормальной книги, я теорию вообще не пойму. Пробовал по урокам Lazyfoo, но там что то не то, когда объясняют зачем:
Код
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
и
Код
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

Я в принципе то понял, но понял я только после книги OpenGL. Суперкнига Ричард С. Райт, мл., Бенджамин Липчак о которой писал в начале.
Если Вы знаете какую-нибудь книгу или ресурс, где можно реально изучить 3D (в плане программирования), и чтоб был результат, напишите пожалуйста. Или мне продолжать читать книгу OpenGL. Суперкнига Ричард С. Райт, мл., Бенджамин Липчак? За любой совет с меня +.


P.S. Не обязательно чтоб ЯП был C/C++. Если вы знаете хорошие книгу/туториалы по другим языкам/движкам, которые могут действительно помочь разобраться в 3D, аффинных преобразованиях и другой теории, буду очень благодарен.
P.P.S. А с чего все началось? Да просто мне по бумажной книге гораздо удобнее учиться. Но похоже не судьба с бумажными изданиями... Россия...
P.P.P.S. А и Вы можете сказать, что бери уроки NeHe, так вот, я хочу сказать, что не буду учить технологии 10+ летней давности.

Сейчас я сижу на библиотеке Allegro, но там только 2D...
Или может вообще забить на это 3D?..


Сообщение отредактировал Snuux - Суббота, 13 Июля 2013, 11:26
yarickyarickДата: Суббота, 13 Июля 2013, 11:50 | Сообщение # 2
Маленький лицемер
Сейчас нет на сайте
Snuux,

Конечно, 3Д уже давно не актуально, сейчас 2Д все решает @Сарказм

Разве что, единственное, что хочу сказать, учить OpenGL для 3D уже не актуально, это да, для 2D его учить еще более или менее актуально, но допустим в Unity3D, CryEngine 3, UDK вроде как на их шейдерных языках все пишется.
Эти знания не помешают уж точно, определенные основы будешь знать, но можно было сначала подобрать движок, который тебе по душе и уже в нем разбираться.

Если говорить более реально, вам стоит изучить, что такое шейдеры, нормали, полигоны и построение трехмерный графиков, если углубляться, то изучать, типы рендера, его способы, современный и устаревший. В общем 3D ни разу ни сложнее, чем 2D, просто нужно знать чуть больше понятий, даже все особенности Normal Map, Bump Map-ов не сразу понимаешь, но со временем и это прийдет, как только понадобится, тут практика решает больше, чем теория. Я бы советовал просто брать справку Unity3D и зубрить ее. Шейдерный язык у них простой и сильный, когда будете с ним работать изучите много нового, сделаете парочку простеньких линейных шутеров и уже будете достаточно хорошо разбираться в 3D.
ArchidoДата: Суббота, 13 Июля 2013, 15:30 | Сообщение # 3
Сэнсэй
Сейчас нет на сайте
Snuux
Так хочется именно программировать графику (почти с нуля) или просто 3д игры делать? В первом случае нужно копаться и разбираться на довольно глубоком уровне, это да, а во втором случае большинство современных движков абстрагируется от GAPI и тому, кто использует эти движки в дебри лезть не надо обычно, даже для написания своих шейдеров. Но если знаешь как оно внутри работает, то это может стать хорошим плюсом (но не всегда).

Цитата (Snuux)
Я скачал книгу по OpenGL, OpenGL. Суперкнига Ричард С. Райт, мл., Бенджамин Липчак, и начал читать. Все очень хорошо написано, и главное что объясняются не только функции OpenGL (как например в книге Введение в OpenGL Р.Д.Верма), а 2D, 3D теория тоже.

Хорошая книга, подтверждаю. Ее продолжать читать обязательно надо, правда переведенное 3-е издание уже чуток подустарело, вроде 6-тое в этом году должно выйти (или уже вышло), но читать придется на английском.

Цитата (Snuux)
А и Вы можете сказать, что бери уроки NeHe, так вот, я хочу сказать, что не буду учить технологии 10+ летней давности.

Хоть они и старые, но кое-какие основы можно подчерпнуть и оттуда.

С точки зрения простых основ - 3D почти не отличается от 2D, те же вершины, треугольники, текстуры, блендинг, трансформации \ преобразования, рендеринг. Дальше - уже сильно сложнее, если нормально делать (это я как для программиста рендера говорю), не зря 3д движки годами пишут smile . Взять тот же Normal Mapping - со стороны и на стороннем движке он может казаться не особо сложным, но при реализации онного с нуля - будет над чем ночами посидеть happy , а чем дальше в лес - тем больше дров... И соответственно, времени на изучение и осознание всей этой кухни уйдет немало, поэтому если хочется таки 3D игр, а в дебрях копаться особого фана не доставляет - то лучше тогда взять готовое... и его уже досконально изучать. Ну и хорошее знание математики никто не отменял smile , для 3D - это сильно критично.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Суббота, 13 Июля 2013, 15:33
ДоброДата: Суббота, 13 Июля 2013, 15:32 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата (yarickyarick)
сейчас 2Д все решает

правда. При GT 650M, 3D игры не переношу, ибо дезориентация в пространстве и деградация зрения вследствие обмана зрения путем показа трехмерной картинки на плоском ЖК-экране.


Сообщение отредактировал Добро - Суббота, 13 Июля 2013, 15:34
XakepДата: Воскресенье, 14 Июля 2013, 00:19 | Сообщение # 5
めちゃくちゃちゃ
Сейчас нет на сайте
где-то я уже советовал этот сайт: http://www.ray-tracing.ru/
очень хороший сайт по современному OpenGL, лично мне очень нравятся их уроки, с помощью них научишься не тупо скаченные шейдеры ислоьзовать, но и писать свои (хоть и не сложные) ну и 3д математику закрепишь smile так же советую разобраться с Ray-Tracing, KD-Tree, BVH-Tree, ну и вообще с бинарными деревьями, в 3Д графике они тебе очень пригодятся. Еще есть хорошая книга: Майкл Ласло - Вычислительная геометрия и компьютерная графика на C++
Цитата (yarickyarick)
В общем 3D ни разу ни сложнее, чем 2D

ну да блин, походу ты нормально никогда не пытался писать 3D графику, в 2D ты просто рисуешь квады и накладываешь спрайты (ну может еще полигоны рисуешь для определенной поверхности), с 3Д сразу начинается помимо квадов нужно во первых грузить 3Д модели, ну это в принципе не сложно, а вот со скелетной анимацией уже сложнее, в 3Д графике постоянно нужно думать об оптимизациях, и по этой причине исопльзовать традиционную реализацию скелетной анимации не всегда уместно, а лучше взять допустим технологию R2VB, нужно думать об разбиении 3д пространства (в 2д тоже желательно, но там все же проще), так же если хочешь сделать игру реалистичнее, то придется начать вдаваться в изучение помимо шейдеров еще и теорию освещения, и там тоже много чего интересного накопать, в 3д графике освещение является одной из самых сложных тем, потому-что решение задачи в лоб просто сожрет всю память и игра превратится в слайдшой с задеркой в несколько минут.


Сообщение отредактировал Xakep - Воскресенье, 14 Июля 2013, 00:23
yarickyarickДата: Воскресенье, 14 Июля 2013, 00:39 | Сообщение # 6
Маленький лицемер
Сейчас нет на сайте
Xakep,
Цитата (Xakep)
ну да блин, походу ты нормально никогда не пытался писать 3D графику, в 2D ты просто рисуешь квады и накладываешь спрайты (ну может еще полигоны рисуешь для определенной поверхности), с 3Д сразу начинается помимо квадов нужно во первых грузить 3Д модели, ну это в принципе не сложно, а вот со скелетной анимацией уже сложнее, в 3Д графике постоянно нужно думать об оптимизациях, и по этой причине исопльзовать традиционную реализацию скелетной анимации не всегда уместно, а лучше взять допустим технологию R2VB, нужно думать об разбиении 3д пространства (в 2д тоже желательно, но там все же проще), так же если хочешь сделать игру реалистичнее, то придется начать вдаваться в изучение помимо шейдеров еще и теорию освещения, и там тоже много чего интересного накопать, в 3д графике освещение является одной из самых сложных тем, потому-что решение задачи в лоб просто сожрет всю память и игра превратится в слайдшой с задеркой в несколько мину

Некст ген графика почти-что не ограничивает, персонажи в некст гене от 30к до 50к полигонов, а инди девелопер такого кол-ва полигонов в ручную не достигнет, так-что не думаю, что с некст геном у него будут проблемы.
Скелетная анимация же встречается и в 2D графике, согласен, с ней меньше мороки, так как даже те же самые вертексы не нужно крепить, но все же, это не так сложно. Писать освещение и тд. с нуля, не спорю это не легко, но на это собственно есть и движки, в своем посте я всецело советовал движки для работы с 3D графикой, ибо писать с нуля, действительно слишком сложно.
ArchidoДата: Воскресенье, 14 Июля 2013, 06:42 | Сообщение # 7
Сэнсэй
Сейчас нет на сайте
Цитата (yarickyarick)
Некст ген графика почти-что не ограничивает

Как может некая "Некст ген графика" что-либо ограничивать? Такого рода ограничениями может "заниматься" только железо, либо оно потянет, либо нет.

Цитата (yarickyarick)
персонажи в некст гене от 30к до 50к полигонов, а инди девелопер такого кол-ва полигонов в ручную не достигнет, так-что не думаю, что с некст геном у него будут проблемы.

Раза в два полигонаж завысил в целом, и это потолок на фоне общей массы. Консоли даже в половину меньше с трудом осилят, а есть еще и мобильный рынок. При этом надо понимать, что CryEngine еще способен потянуть эти 50К в частично реальной сцене, а если делать все это самому, то у тебя только эти 50К полигонов могут уронить производительность самого топового ПК. Тут уж как сделаешь.
А Indie c "некст-геном" вообще не вяжется, большая их часть сейчас на мобильниках сидит, а вот там нет волшебного "некст-гена".

Цитата (yarickyarick)
Скелетная анимация же встречается и в 2D графике, согласен, с ней меньше мороки, так как даже те же самые вертексы не нужно крепить, но все же, это не так сложно

Во-первых, скелетка встречается там не очень часто, а в 3D - обязана быть. Во-вторых, в 2D фактически не нужно делать частичный и полный Blending разных анимаций, не нужно прикручивать IK, не нужно думать об ограничениях кол-ва костей на вершину, не нужно думать о том, как-бы сэкономить и не вычислять повторно положение вершин при рендеринге теней, etc. Продолжать можно почти бесконечно.

Так, что это все таки сложно. Если сам не писал ничего подобного, зачем говорить о том, чего не знаешь?


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Воскресенье, 14 Июля 2013, 06:57
SnuuxДата: Воскресенье, 14 Июля 2013, 12:26 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Спасибо всем, я наверно все таки продолжу чтение книги OpenGL. Суперкнига Ричард С. Райт, мл., Бенджамин Липчак, и когда уже более менее буду ориентироваться, то возьму почитать книгу "Майкл Ласло - Вычислительная геометрия и компьютерная графика на C++". Ну а дальше посмотрим)
ПушистайДата: Понедельник, 15 Июля 2013, 08:57 | Сообщение # 9
был не раз
Сейчас нет на сайте
В ААА-играх анимацию записывают с помощью настоящих людей.


Стадии развития грамотного тролля: 1) Грамотей-не тролль 2) Король русского-полезный/добрый тролль 85) Король русского-тролль-"грамотей"
ArchidoДата: Понедельник, 15 Июля 2013, 15:47 | Сообщение # 10
Сэнсэй
Сейчас нет на сайте
Цитата (Пушистай)
В ААА-играх анимацию записывают с помощью настоящих людей.

Ок. Значит во всех остальных играх анимацию записывают с помощью ненастоящих людей?


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
yarickyarickДата: Понедельник, 15 Июля 2013, 15:55 | Сообщение # 11
Маленький лицемер
Сейчас нет на сайте
Пушистай, это тоже костная анимация, на людей вешают костюмы с точками, точки находятся там где находятся кости у модели и далее уже аппаратура записывает передвижение этих точек.
goldsphereДата: Среда, 24 Июля 2013, 14:16 | Сообщение # 12
заслуженный участник
Сейчас нет на сайте
Snuux, А зачем её покупать? Купи электронную книжку и загрузи, дешевле будет. Тем более у этой книги очень ограниченный тираж.

FinderX - Android Аркада
Форум игроделов » Программирование » Общие обсуждения программистов » Подскажите как учить 3D программирование
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг