↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |
18+ Имитаторы. Часть Х.
Современные видеокарты считают трёхмерное изображение кодом, не будем обсуждать, как они это делают, но их 3Д модели состоят из полигонов и они полые внутри, а сами полигоны никак не пересекаются друг с другом. Причём видеокарта рассчитывает только вершины треугольного полигона, а это всего три точки в пространстве, всё остальное пустое. Для создания физики в компьютерных играх используют псевдофизику, не будем углубляться в подробности, чтобы никто не придирался к моим словам. Но, говоря простым языком, любая 3Д модель по сути полая, и крайне сложно построить взаимодействие одной модели с другой, и даже если это взаимодействие есть, оно осуществляется очень криво не эффективно и недостоверно. И хотя мы играем в игры, но очень часто коллайдеры моделей не повторяют всю модель целиком, а указывают лишь внешние габариты модели и всё. Если встаёт задача рассчитать трёхмерный объект, который внутри не полый, например, для авиации или инженерных задач в таких программах как солид, юниграфикс или ансис, то используется метод конечных элементов, суть которого очень примитивно состоит в том, что модель разбивается на много маленьких кубиков и это взаимодействие кубиков считается опять же кодом. Это очень не эффективно и разрезка детали может считаться несколько секунд, то есть, ни о каком расчёте такой физики в кадре при 60ФПС речи быть не может. Одна деформация детали считается мощностью всего процессора в течение нескольких секунд. Следовательно, полноценно объёмно порезать объект в бою современная видеокарта не сможет при всём желании, потому что одна операция разрезки одной модели может длиться несколько секунд. Когда в играх вы разрезаете мечом противника пополам, там обычно используется обман, вы бьёте противника мечом и одна три де модель заменяется на две, по заранее прописанному сценарию, фактического расчёта процедуры разрезки не происходит, потому что это слишком сложно. Однако очень хотелось бы получить подобные возможности, и это пригодилось бы не столько в играх, но и в военном деле, а также в сложных инженерных имитациях, которые сегодня выполняются на суперкомпьютерах и очень ограничены. Я имею ввиду имитацию разрушения крупной системы по методу конечных элементов, например чтобы достоверно сымитировать на компьютере аварию морского судна и возникающие нагрузки. Также современные компьютеры очень плохо и с трудом рассчитывают поведение сложных осязаемых трёхмерных систем, например расчёт движения электронов в атоме весьма непростая задача, если это не псевдо графика, а полноценная симуляция движения частиц, и иногда выполнить такую симуляцию можно только на супер компьютере, потратив на это много времени. А такие задачи нужны для очень разных целей, в том числе для расчёта на прочность кристаллической решётки, или математического моделирования поведения вещества в экстремальных условиях, которые дорого получить в лаборатории. А ещё хуже если результат неизвестен, и чтобы нащупать нужные условия надо провести много симуляций, подставляя разные параметры, пока не получишь нужное. Для современных компьютеров это трагедия. Ну, то есть мы видим, что современные компьютеры со своими расчётами не всесильны, и есть куда расти. На самом деле все чудеса современной три де графики и физики в компьютерных играх, это в основном псевдомеханизмы, обманным путём имитирующие изображение и физику, без фактической достоверной имитации, когда всё выглядит достоверно, а на самом деле компьютер схалтурил чтобы получить картинку более лёгким обманным путём, но пользователь всё равно не заметит и не оценит, ему главное чтобы игра работала. Однако когда компьютеры сталкиваются со сложными инженерными задачами, расчётами различных балок, и не дай бог таких балок несколько, а само устройство сложной формы, то это тяжело.
Существует устройство, которое называется имитатор, его цель, по сути, та же что и у видеокарты. В простейшем варианте исполнения задача имитатора построение трёхмерной сцены, то есть кадра игры. Только в отличие от видеокарты он работает на ином принципе, он имитирует трёхмерное пространство, а не пытается его рассчитать кодом. Мы рассмотрим простейший имитатор, и некоторые неявные для глупых инженеров моменты, которые необходимо выполнить, чтобы устройство работало не совсем криво.
Следует уточнить, что современные компьютеры развиваются примерно с начала 1940ых годов, то есть уже 85лет, за это время было создано много этапов разработки этих устройств, много поколений, они усложнялись и дорабатывались шаг за шагом, современный компьютер не был разработан в один короткий этап. То есть полный цикл создания современных компьютеров был осуществлён примерно за 85 лет, и было выполнено много промежуточных этапов создания процессоров. И да самые первые процессоры были невероятно примитивными и кривыми по сравнению с современными. Однако даже первые компьютеры созданные в 1940ые годы уже иногда имели миллионы деталей, то есть были очень сложными, но всё равно кривыми. Видеокарты создавались на базе процессоров и оперативной памяти, и их создание от самых первых до современных также заняло около 40лет, то есть никто не создал видеокарты и готовый современный три де двигатель в один шаг. И глупо было бы надеяться, что можно создать современную видеокарту в один этап, не имея никаких предыдущих наработок, опыта, оборудования и готовых отработанных образцов. Это очень сложное устройство создание и разработка, которого заняла много лет и осуществлялась последовательно в много этапов шаг за шагом. Стоит ли говорить о том, что и процессор и видеокарта в современном виде были созданы бессмертным по имени Год, который был гением своего дела и позже в середине 1990ых был убит. Я говорю это к тому, что я не верю, что рядовые инженеры людей смогли бы выполнить эту задачу и создать процессор и видеокарту без него. Люди очень часто знают устройство, но не понимают его работы и не могут его улучшить, а создание процессора потребовало радикальных улучшений конструкции в много этапов, раз за разом, шаг за шагом.
Я подвожу вопрос к тому, что имитатор структурно ещё более сложное устройство, чем процессор или видеокарта, его создание требует сложных методов математики, трёхмерного мышления и глубокого понимания микроэлектроники и принципов её работы, которых сегодня нет ни у кого, и поэтому создание такого устройства будет непростой задачей. Создавать имитатор придётся с нуля, потому что ранее таких устройств просто не было, и придётся пройти весь путь от начала до конца также, как процессоры создавали с 1940ых годов, то есть не стоит надеяться, что имитатор созданный на первом же этапе будет эффективным устройством на уровне современной видеокарты. Создание имитатора непростая задача, работать над которой должны гениальные инженеры, и даже им вряд ли удастся создать его в короткие сроки, скорее всего первые устройства ещё долго будут кривыми и примитивными, подобно компьютерам 1950ых годов, сравнение самое точное. Причём я думаю, сейчас многим даже не понятны принципы создания такого устройства, потому что до сих пор существует только самый примитивный базовый вариант устройства в простейшем исполнении, а разработка более сложной версии требует большого количества мозгов. Поскольку придётся решать инженерные задачи, которые раньше никто не решал и придумывать новые гениальные инженерные решения, и я не уверен, что команда разработчиков готова к этому и обладает достаточной квалификацией. Существует миллион сложностей и нюансов, которые придётся решить и учесть, и только после этого устройство заработает. Простой пример, к 1955ому году над созданием компьютеров работали уже 15 лет, но едва ли компьютеры тех лет можно сравнить хотя бы с ИНТЕЛ4004 выпуска 1971ого года, что уж говорить про современные. Электронно-лучевую литографию изобрели в 1965ом году спустя 25лет после начала работ над компьютерами, осознаём да? Так вот имитатор никто никогда не создавал, а те люди, которым было поручено его разработать на самом деле гораздо тупее Года и даже тупее меня, и толком вообще не понимают что делать, и возможно даже не горят желанием делать эту хрень, потому что не понятно, как и зачем. Обидно, неприятно, но правда, принимаем к сведению и работаем дальше. При этом имитатор как устройство, в общем-то, сложнее бинарного процессора. Про то, что процессоры могут быть не бинарными, а, например, на тетра логике и сложнее, я вам рассказывал давно, но для меня весьма сомнительно, что были достигнуты успехи в области разработки реально работающих процессоров на тетра логике. Я просто к тому, что микроэлектронике Земли есть, куда качественно расти, и не только по пути замены материалов позволяющих увеличить скорость процессора, но и по пути сложности самих логических схем. И я не уверен, что сейчас мы способны расти, а надо. И вот тут встаёт вопрос о более умном и качественном потомстве, а вы уверены, что современные инженеры в принципе не способные создать ни тетра процессор, ни имитаторы, являются сверхквалифицированными специалистами, как они о себе думают? Вспоминаем мой код 3Д двигателя, что я презентовал недавно, и осознаём, что это лишь частный пример сложных программ и микроэлектроники, то, что мы имеем сегодня далеко не потолок, и это всё можно значительно усложнить и улучшить, был бы мозг. Просто немного обидной правды, необходимой чтобы всё же выполнить задачу, хотя бы когда-нибудь.
Тем не менее, развитие имитаторов необходимо и нам придётся начать их разработку с самого начала, как самые первые компьютеры 1940ых годов, потому что имитаторы никто и никогда раньше не создавал, и нет никаких наработок на создание этих устройств, никакого опыта и понимания как они должны быть устроены. Вы ранее сказали мне, что первые опытные устройства работают супер примитивно и едва строят кривые деревянные фигурки, которые с точки зрения практики просто НИКАК не могут эксплуатироваться. Но я хочу сказать, что именно так и должно быть, это нормальный результат, учитывая то, что вы начали с самого начала, а инженеры, которым поручили задачу это не Год и даже не я. То, что они не сделали сразу устройство, имеющее уровень совершенства аналогично современным топовым видеокартам и процессорам это абсолютно нормально, им пришлось начать с нуля, вступив на абсолютно неизвестное им болото. При этом признаю сразу, имитатор как технология в принципе сложнее чем 3Д видеокарта или процессор, требует более сложных алгоритмов, математики и понимания создания трёхмерных конструкций, то есть имитатор в принципе сложнее. Следовательно, и сделать его с первого захода вряд ли получится, и то, что первые образцы очень кривые это абсолютно нормально и ожидаемо. И очень может быть, что развитие этих устройств займёт много лет, подобно тому, как развивались компьютеры, но это не значит что такое работоспособное устройство в принципе невозможно. Тем более что по вашим данным кривая деревянная версия имитатора кой как уже работает, хотя при этом она абсолютно не функциональна.
Итак, начнём, в простейшем случае имитатор это 1000х1000х1000чипов, каждый из которых является пикселом. Чипы расположены трёхмерно, и если так очень примитивно, то если выключить все чипы, поставив в режим невидимости, скажем, позиция НОЛЬ, и включить один чип с заданными координатами с заданным цветом, то мы получим цветную точку, которая висит в трёхмерном пространстве и имеет систему координат. Допустим, наша задача построить кадр, скажем для видеокарты. Я думаю, несложно догадаться, что изображение двумерно, и в простейшем варианте должно проецироваться на некоторую камеру, которая имеет разрешение например тоже 1000х1000 точек, то есть такое плоское проецирование изображения в принципе позволяет нам что-то увидеть. Чтобы увидеть, мы используем принцип эхолота, когда луч посылается от картинки камеры, к противоположной стенке, в простейшем случае перпендикулярно, и мы видим пиксел. Когда луч напарывается на первый же непрозрачный пиксел, он просто проецирует его на картинку обратно. Если пиксел полупрозрачный, его цвет запоминается и луч летит дальше, таким образом, полупрозрачных слоёв будет множество, а в отличие от современной видеокарты они будут строиться правильно, на современных видеокартах есть большие проблемы с дистанцией между полупрозрачными слоями, и эту проблему не решили за много лет. Потому что на изначальном 3Д движке Года полупрозрачных слоёв не было, и господа инженеры/программисты добавляли их сами в 1990ые годы. Преимущество такой схемы перед видеокартой в том, что мы можем одинаково производительно спроецировать любое количество полупрозрачных слоёв, и абсолютно неважно, сколько слоёв изображения позади последнего пиксела, потому что в кадре видно только видимый слой. На современных видеокартах, если наложить много полигонов друг на друга в много слоёв, будет плохо, видеокарта скажет КРЯ.
Все микрочипы соединены друг с другом, они находятся относительно друг друга под прямыми углами, как кубики, и каждый микрочип контактирует с 26 соседями, сверху, снизу и по диагонали, если этот чип в середине, и меньше соседей, если он с краю.
Вы могли заметить, что попытка построить трёхмерную модель в кадре может быть очень тяжёлой, если включать каждый микрочип/пиксел извне, так как это делает обычная видеокарта, и для построения осязаемой, не полой модели, придётся включить извне миллионы пикселей, и это очень ресурсоёмкая задача, если выполнять её по идиотски и в лоб. Поэтому три де модели в имитаторе сохраняются также, как 2Д картинки-текстуры в моём 3Д двигателе. Вы могли заметить, что там используется принцип, когда модель строится из точки или нескольких точек. Модель записана следующим образом. Возьми точку Х У Зет, построй из неё луч длинной 10 пикселей, и спроецируй перпендикулярно лучу из каждого пиксела ещё по лучу в 10 пикселей, после чего мы получим 10х10пикселей, которые можно спроецировать ещё раз на 10 пикселей из каждого пиксела и будет внутри трёхмерной области кубики 10х10х10 пикселей, и можно задать ему цвет, и не только цвет, но и температуру, мехсвойства материала и многое другое. Код на проецирование выполняется внутри имитатора его микрочипами, он не управляется извне, извне посылается только изначальный код/программа построения всей модели из точки в начальный микрочип, дальше модель строится по программе, что позволяет имитатору самому и очень быстро строить объёмную не полую модель, и не важно, сколько много внутри неё точек, потому что каждый микрочип имитатора делает свою работу сам, без участия центрального процессора извне, ничего не нагружая и очень быстро. Аналогично строится любая другая три де модель любой формы, по программе можно закодировать что угодно. В аналоге 3Д макса для построения моделей также используются геометрические примитивы или готовые шаблонные команды на всякое. То есть в 3Д редакторе и фотошопе всё будет рисоваться точно также как сейчас, мучаться с кодом не придётся. Мы не можем просто запомнить все пиксели 3Д модели, потому что их слишком много, и это слишком большой объём информации, который будет очень тяжёл, и обрабатываться медленно. Мы строим начальную точку, и пишем код, как из этой начальной точки строятся все последующие пикселы, это не сложно, а работает быстро. Мы отдаёт команду на пиксел с координатами 15,15,15 и из этой точки происходит построение кубика, а сам процесс построения кубика осуществляется силами имитатора. Наш процессор кидает в микрочип имитатора лишь изначальную точку координат, и несколько простейших программ построения, что из чего растёт и в какую сторону, это может занять 500байт или 7кбайт, но не много, всё остальное построение выполняется силами имитатора. Таким образом, имитатор, не тратя мощность процессора компьютера, может построить объёмную не пустотелую модель, процессор тратит на построение модели очень мало ресурсов, даже если это крупная объёмная модель, состоящая из большого количества точек. При этом мы можем сразу задать цвет модели, и этот цвет даже может быть разным, и можно натянуть на кубик текстуру, меняя цвет пикселей, а если спроецировать этот кубик на кадр, мы получим трёхмерный кубик с текстурой. Однако такое проецирование не будет учитывать расстояние до объекта, так как лучи будут перпендикулярно параллельны и для три де построения это не совсем годится. (в случае если модель в дальнейшем надо будет разрезать пополам, то можно написать алгоритм запоминающий линию разрезки по крайним пикселам, что позволяет резать модель в кадре и формировать новые уже разрезанные три де модели в следующий кадр, что в обычной видеокарте невозможно)
↓ Содержание ↓
↑ Свернуть ↑
| Следующая глава |