И человек

Меч, который вы видите выше, - это конец небольшого предприятия, которое многие сделали до меня: учебное пособие, которое начинается со сцены Minecraft и заканчивается мечом короля Артура. Мой очень похож на другие мечи, взятые из учебника Робби Бранхам: Blender Fast Track. Лемминги, все мы. Я знаю. Но даже несмотря на то, что он похож на клон, я все еще горжусь им, потому что за его созданием стоит уникальная история, а я много работал над копированием компьютерной графики.

Я не собираюсь просто показывать вам конец и двигаться дальше. Я покажу вам часть процесса. Очень часто в нашем обществе мы получаем только результат чьих-то усилий, что заставляет нас думать, что это было легко для них - и будет легко для нас. Эти творения в виде черного ящика могут иногда помочь нам отказаться от наших собственных идей еще до того, как мы начнем. И скрытые пути к успеху случаются в каждой отрасли.

Мы получаем эпическую видеоигру Fortnite после шести лет упитания кофе и разработки, которые редко видят мои дети (скорее всего), романа, выигравшего Хьюго, «Пятый сезон» после четырех лет написания, 15-секундного TikTok (тонны их) после того, как создатель потратил месяц на выяснение их стиля - так говорит Лорен из We Remotely.

И хотя результат может быть потрясающим, это путешествие вдохновляет. Неудача. Итерации. Уродливое, серое начало. Прототип из квадратов. Потому что, если мы видим борьбу, тогда мы знаем, что мы тоже можем это сделать. И да, это отсылка к Legend of Korra.

Итак, я покажу вам изображения пошагового процесса, который я скопировал при создании 3D-меча в Blender. Я дам вам не учебник, а ссылки на видео на YouTube. 3D-моделирование помогло мне научиться быть лучшим программистом и человеком. Надеюсь, некоторые из этих советов вам помогут.

1. Blender может научить вас не ожидать шедевра только потому, что вы потратили время и силы.

Вы когда-нибудь хотели, чтобы шедевр был готов, прежде чем приступить к его созданию?

Я делаю. Я нетерпелив и полон энергии.

До 22 октября 2019 года я думал, что чем больше часов, тем лучше продукт. Но я быстро понял, что это неправда, когда ты новичок. Имеет смысл, но я тупой человек. Поэтому я каждый день часами проводил в библиотеке. Мой компьютер был дерьмом. Я садился в автобус, ехал 15–20 минут и приезжал в свое любимое место. Попросив библиотекарей загрузить Blender 2.82, я провел два часа за компьютером, взволнованный, уверенный, что из этого выйдет шедевр, подобный шедевру Бранхама. Вот что я сделал:

Плоский памятник Вашингтону. Я ожидал большего. Я провел два часа и был чертовски нетерпелив. Но, честно говоря, я потратил большую часть этого времени, пытаясь починить сломанные части, что сделал слишком быстро. Большая часть средних углублений была скручена в каркасном режиме и выступала в объектном режиме, некоторые части лезвия имели отверстия, и свет странно отражался. В итоге пришлось пару раз переделать.

Почему я сделал так много ошибок? Я был слишком занят, не слушая, и пытался идти своим путем. Большая проблема для разработчика. Изготовление этого меча помогло бы мне не решать, а упорно пытаться решить программную ошибку в течение двух месяцев, потому что я научился ждать.

Работать медленнее и научиться быть хорошим последователем - отличные черты программистов. Особенно, если вы понятия не имеете, что делаете.

2. Blender может научить вас смотреть на вещи с разных сторон.

Большая часть работы по изготовлению меча требовала, чтобы я двигал им. Вращайте его, перемещайте, изменяйте размеры, просматривайте ортогонально. После двух с половиной часов в библиотеке (другой день) я увидел лезвие со всех сторон - и отрегулировал каждую деталь. Это помогло мне стать более гибким. В моей личной жизни, мыслительном процессе и подходе к программированию я был жестким. Мне было трудно видеть другие точки зрения и оттенки серого. Не самый лучший вариант для начинающего программиста.

Сам по себе уровень крошечных настроек помог мне распространить гибкость на программирование - и на жизнь.

Два режима работы

В программировании есть два основных режима работы: немного неправильный и много неправильный. Blender помог мне понять, что когда я меняю свой взгляд, я вижу, что ужасно неправильная функциональность состоит из множества мелких неправильных функций. Исправляйте каждый, пока он не заработает правильно. Кроме того, настраивая каркас, я узнал, что программисты должны не просто заставить программу работать, но исследовать и фактически исправлять ошибку, вызывающую проблему.

Переворачивайте, вращайте, увеличивайте и уменьшайте масштаб. Будьте листом.

3. Blender научит вас писать точные комментарии.

Взяв эти фотографии полуторагодичной давности, у меня есть около четырех дней для этого урока в своих заметках, и я знаю, что это неправильно. Так что давайте прибавим день к этому путешествию и продолжим его движение.

Следующим был охранник. Я, должно быть, заснул, документируя время, потому что CG - и, в более широком смысле, я - создал охрану, создав одну сторону, а затем отразив ее, чтобы она соответствовала другой, и я знаю, что это заняло у меня пару часов. Но хорошей документации я не оставил.

В моей документации отсутствуют не только изображения и файлы Blender, но и даты. При написании кода или создании идеи для вашего приложения добавление точных комментариев поможет вам и всем после вас. Но добавляйте комментарии только к тем частям, которые действительно нужно объяснять. Не хочу переборщить. Вот несколько советов о том, как писать комментарии.

В своих личных проектах оставляйте забавные - и точные - комментарии, вроде того, что я написал в мобильном приложении, я закончу в какой-то момент:

/* trickyWordsHelperTestCase5.cpp
test case: check if userFirstName prints message and rejects curse words
*/
bool isNameCurseWord = false;

if (find(nameCurseWordsVector.begin(), nameCurseWordsVector.end(), userFirstName) != nameCurseWordsVector.end()) {
      cout << "Curse word entered. SAILOR MOUTH present.\n"; //19-century sailors would be proud, lol...
// getNameCurseWordMessages(userFirstName);
      isNameCurseWord = true;
} 	
else {
     isNameCurseWord = false;
}
} while (isNameCurseWord || firstNameOnlyAlpha != string::npos || userFirstName.empty());

// found solution at https://stackoverflow.com/questions/28584551/c-if-text-file-contains-specific-word-or-not

Или кататься по полу, смеясь над этими 56 реальными комментариями разработчиков :)

В любом случае учебные пособия научат вас подробно отслеживать, как все меняется - и как вы улучшаетесь.

4. Blender научит вас не замечать совершенства.

В другой день закрученная рукоятка заняла пару часов. Так что прибавьте к общей сумме три часа. Я склонен к перфекционизму, потому что беспокоюсь о том, чтобы что-то отправить; Я чувствую, что этого недостаточно - и я тоже. Во время урока Бранхам сказал нам не беспокоиться о том, чтобы хватка была идеальной. Просто сделай все в порядке. Так я и сделал.

Во многих случаях в программировании все более чем достаточно. Часто бывает множество почти невыполнимых сроков и кода, 3D-моделей и проектов, которые необходимо отправить. Как два дня позавчера. Нет времени пытаться достичь совершенства, и действительно, это верно для всего. Идеально невозможно. Для всех нас.

Сделай это. Отправьте это. Исправляйте ошибки по мере того, как пользователи жалуются. Потому что мы все знаем, что они будут. Быстро и громко. Но это только улучшит то, что вы сделали. Значит, они делают вам одолжение. Ага, смещение перспективы. Спасибо, Блендер.

Пришло время создать и добавить луку. Я добавил на его конец руну, похожую на золотую рыбку.

Закончив с основами, я перешел к шейдерам. Как и CSS, шейдеры делают так, чтобы ресурсы выглядели хорошо. На этом этапе меч выглядел так, как будто он был сделан из глянцевого пластилина.

Нанесите на карту различные части меча, чтобы подготовить его к полировке. Использовал очень крутой режим редактирования UV.

В режиме затенения я добавил шейдер, чтобы создать отражающую поверхность меча. Скорректированы некоторые узлы и усилены «металлический» и «зеркальный», чтобы сделать его более блестящим.

Больше возможностей для нод Blender, чтобы он выглядел более реалистичным и менее унылым. Надо осветить это смертоносное оружие перед следующей битвой.

Для этого раздела я оставил себе несколько заметок. Но не цитируйте меня. Они были написаны полтора года назад. Следите за обновлениями видео Бранхама. Будь офигенным. Вот что я оставил об узлах:

  • Установите узел текстуры изображения. Когда «царапины на цветовом пространстве» больше линейного, царапины видны лучше, потому что Blender не пытается вычислить цвета RGB.
  • Дважды добавлена ​​цветовая шкала, что делает царапины более заметными. Затем отрегулировали черный и белый ползунки.
  • Добавлен узел bump, который добавляет текстуру, которая выглядит как неровная поверхность. Когда расстояние больше -1, неровности обращены к середине меча. Нехорошо.
  • Как сделать царапины меньше. Необходимо «замостить текстуру», добавив вектор. Шаги: добавьте узел координат текстуры, затем вставьте UV в VECTOR.

5. Blender научит вас дорабатывать и отправлять

Я закончил меч через три часа в библиотеке, почти через две недели после начала, а затем отправил его себе.

Сила этого меча сильна.

Но он съел слишком много пирожных эспрессо, и ему нужно присесть. Эта светящаяся лука неправильная, поэтому я исправил ее и сохранил новую версию. Всего было выпущено около 20 разновидностей этого меча. Как и в программировании, мне нужно было сэкономить тонну, чтобы я мог вернуться к другой версии, если допустил ошибку. Еще раз спасибо, Блендер.

А, вот оно. Меч, моя прелесть.

Но руководство Бранхама еще не закончено. Видите ли, мы должны устроить сцену, а не просто меч. А как насчет камней? А что насчет пейзажа?

Еще через два с половиной часа в библиотеке я добавил камни в третью часть. Бранхам помог мне скачать рок, доработать источники света и добавить анимированного трехмерного персонажа с помощью Mixamo. Вы можете добавить любого персонажа, какой захотите. И есть несколько странных.

Я выбрал зомби и создал «Короля Артура против зомби». Но не злись на зомби, они просто пытаются выбраться из-под тирании короля Артура.

6. Blender может научить вас быть частью чего-то большего.

В финальной сцене меч крошечный, и вы не можете увидеть никаких деталей. Тем не менее, усилия по его реализации того стоили, потому что в этом и заключается суть творчества: каждый раздел - это часть большого видения, и скромность каждой части заставляет их работать вместе. Программы могут состоять из тысяч файлов, миллионов строк кода и десятков разработчиков. У всех есть роль. Мы все маленькие блестящие винтики среди миллиардов других маленьких блестящих винтиков.

Блендер меня этому тоже научил.

Ресурсы

Часть 1 руководства: Настройка

Часть 2 урока: Меч

Часть 3 урока: Камень

Советы, как писать хорошие комментарии

56 забавных комментариев разработчиков

Mixamo для анимированных 3D-персонажей

Доброго вам дня, разработчики.