Полигональная сетка

Поделись знанием:
(перенаправлено с «Полигон (компьютерная графика)»)
Перейти к: навигация, поиск

Полигональная сетка (жарг. меш от англ. polygon mesh) — это совокупность вершин, рёбер и граней, которые определяют форму многогранного объекта в трехмерной компьютерной графике и объёмном моделировании. Гранями обычно являются треугольники, четырехугольники или другие простые выпуклые многоугольники (полигоны), так как это упрощает рендеринг, но сетки могут также состоять и из наиболее общих вогнутых многоугольников, или многоугольников с дырками.

Учение о полигональных сетках — это большой подраздел компьютерной графики и геометрического моделирования. Множество операций, проводимых над сетками, может включать булеву алгебру, сглаживание, упрощение и многие другие. Разные представления полигональных сеток используются для разных целей и приложений. Для передачи полигональных сеток по сети используются сетевые представления, такие как «потоковые» и «прогрессивные» сетки. Объемные сетки отличаются от полигональных тем, что они явно представляют и поверхность и объём структуры, тогда как полигональные сетки явно представляют лишь поверхность, а не объём. Так как полигональные сетки широко используются в компьютерной графике, для них разработаны алгоритмы трассировки лучей, обнаружения столкновений и динамики твердых тел.

Математический эквивалент полигональных сеток — неструктурированные сетки — изучаются методами комбинаторной геометрии.





Элементы моделирования сетки

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

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

Поверхности, чаще называемые группами сглаживания, полезны, но не обязательны для группирования гладких областей. Представьте себе цилиндр с крышками, такой как жестяная банка. Для гладкого затенения сторон, все нормали должны указывать горизонтально от центра, тогда как нормали крышек должны указывать в +/-(0,0,1) направлениях. Если рендерить как единую, затененную по Фонгу поверхность, вершины складок имели бы неправильные нормали. Поэтому, нужен способ определения где прекращать сглаживание для того, чтобы группировать гладкие части сетки, также, как полигоны группируют трехсторонние грани. Как альтернатива предоставлению поверхностей/групп сглаживания, сетка может содержать другую информацию для расчета тех же данных, такая как разделяющий угол (полигоны с нормалями выше этого предела либо автоматически рассматриваются как отдельные группы сглаживания, либо по отношению к ребру между ними применяется какая-либо техника, как например разделение или скашивание). Также, полигональные сетки с очень высоким разрешением менее подвержены проблемам, для решения которых требуются группы сглаживания, так как их полигоны настолько малы, что нужда в них пропадает. Кроме того, другая альтернатива существует в возможности просто отсоединения самих поверхностей от оставшейся части сетки. Рендереры не пытаются сглаживать ребра между несмежными полигонами.

Формат полигональной сетки может определять и другие полезные данные. Могут быть определены группы, которые задают отдельные элементы сетки и полезны для установления отдельных подобъектов для скелетной анимации или отдельных субъектов нескелетной анимации. Обычно определяются материалы, позволяя разным частям сетки использовать разные шейдеры при рендере. Большинство форматов сетки также предполагают UV координаты, которые являются отдельным двухмерным представлением полигональной сетки, "развернутым" чтобы показать какая часть двумерной текстуры применяется к разным полигонам сетки.

Представления

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

  • Список граней: описание граней происходит с помощью указателей в список вершин.
  • "Крылатое" представление: в нём каждая точка ребра указывает на две вершины, две грани и четыре (по часовой стрелке и против часовой) ребра, которые её касаются. Крылатое представление позволяет обойти поверхность за постоянное время, но у него бо́льшие требования по памяти хранения.
  • Полуреберные сетки: способ похож на "крылатое" представление, за исключением того, что используется информация обхода лишь половины грани.
  • Четырехреберные сетки[неизвестный термин], которые хранят ребра, полуребра и вершины без какого-либо указания полигонов. Полигоны прямо не выражены в представлении, и могут быть найдены обходом структуры. Требования по памяти аналогичны полуреберным сеткам.
  • Таблица углов, которые хранят вершины в предопределенной таблице, такой что обход таблицы неявно задает полигоны. В сущности, это "веер треугольников", используемый в аппаратном рендеринге. Представление более компактное и более производительное для нахождения полигонов, но операции по их изменению медленны. Более того, таблицы углов не представляют сетки полностью. Для представления большинства сеток нужно несколько таблиц углов (вееров треугольников).
  • Вершинное представление: представлены лишь вершины, указывающие на другие вершины. Информация о гранях и ребрах выражена неявно в этом представлении. Однако, простота представления позволяет проводить над сеткой множество эффективных операций.

Каждое из представлений имеет свои преимущества и недостатки.[1]

Выбор структуры данных определяется применением, необходимой производительностью, размером данных, операциями, которые будут выполняться. К примеру, легче иметь дело с треугольниками, чем с многоугольниками общего вида, особенно в вычислительной геометрии. Для определенных операций необходимо иметь быстрый доступ к топологической информации, такой как ребра или соседние грани; для этого требуются более сложные структуры, такие как "крылатое" представление. Для аппаратного рендеринга нужны компактные, простые структуры; поэтому в API низкого уровня, такие как DirectX и OpenGL обычно включена таблица углов (веер треугольников).

Вершинное представление

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

Однако, сетки ВП извлекают выгоду из малого использования памяти и эффективной трансформации. Рисунок 2 показывает пример параллелепипеда изображенный с использованием ВП сетки. Каждая вершина индексирует её соседние вершины. Заметьте, что последние две вершины, 8 и 9 сверху и снизу параллелепипеда, имеют четыре связанных вершины, а не пять. Главная система должна справляться с произвольным числом вершин связанных с любой данной вершиной.

Для более детального описания сеток ВП см. Smith (2006)(англ.).[1]

Список граней

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

Список граней лучше для моделирования, чем вершинное представление тем, что он позволяет явный поиск вершин грани, и граней окружающих вершину. Рисунок 3 показывает пример параллелепипеда в виде сетки с использованием списка граней. Вершина v5 подсвечена, чтобы показать грани, которые её окружают. Заметьте, что в этом примере у каждой грани обязательно 3 вершины. Однако это не означает что у каждой вершины одно и то же количество окружающих граней.

Для рендеринга грань обычно посылается в графический процессор как множество индексов вершин, и вершины посылаются как позиция/цвет/структуры нормалей (на рисунке дана лишь позиция). Поэтому изменения формы, но не геометрии, могут быть динамически обновлены просто переслав данные вершины без обновления связаности граней.

Моделирование требует легкого обхода всех структур. С сеткой использующей список граней очень легко найти вершины грани. Также, список вершин содержит список всех граней связанных с каждой вершиной. В отличие от вершинного представления, и грани и вершины явно представлены, так что нахождение соседних граней и вершин постоянно по времени. Однако, ребра не заданы явно, так что поиск все ещё нужен, чтобы найти все грани, окружающие заданную грань. Другие динамические операции, такие как разрыв или объединение грани, также сложны со списком граней.

"Крылатое" представление

Представленное Брюсом Баумгартом в 1975, "Крылатое" представление явно представляет вершины, грани и ребра сетки. Это представление широко используется в программах для моделирования для предоставления высочайшей гибкости в динамическом изменении геометрии сетки, потому что могут быть быстро выполнены операции разрыва и объединения. Их основной недостаток - высокие требования памяти и увеличенная сложность из-за содержания множества индексов.

"Крылатое" представление решает проблему обхода от ребра к ребру и обеспечивает упорядоченное множество граней вокруг ребра. Для любого заданного ребра число исходящих ребер может быть произвольным. Чтобы упростить это, "крылатое" представление предоставляет лишь четыре, ближайшие ребра по часовой и против часовой стрелки на каждом конце ребра. Другие ребра можно обойти постепенно. Поэтому информация о каждом ребре напоминает бабочку, поэтому представление называется "крылатым". Рисунок 4 показывает пример параллелепипеда в "крылатом" представлении. Полные данные по ребру состоят из двух вершин (конечные точки), двух граней (по каждую сторону), и четыре ребра("крылья" ребра).

Рендеринг "крылатого" представления графическим оборудованием требует генерирования списка индексов граней. Обычно это делается только когда изменяется геометрия. "Крылатое" представление идеально подходит для динамической геометрии, такой как подразделение поверхностей и интерактивное моделирование, так как изменения сетки могут происходить локально. Обход вокруг сетки, что может пригодиться для обнаружения столкновений, может быть эффективно выполнено.

См. Baumgart (1975) для подробностей (англ.)[2]

Сводка представлений сеток

Операция Вершинное представление Список граней "Крылатое" представление
V-V Все вершины вокруг вершины Явно V → f1, f2, f3, ... → v1, v2, v3, ... V → e1, e2, e3, ... → v1, v2, v3, ...
E-F Все ребра грани F(a,b,c) → {a,b}, {b,c}, {a,c} F → {a,b}, {b,c}, {a,c} Явно
V-F Все вершины грани F(a,b,c) → {a,b,c} Явно F → e1, e2, e3 → a, b, c
F-V Все грани вокруг вершины Поиск пары Явно V → e1, e2, e3 → f1, f2, f3, ...
E-V Все ребра вокруг вершины V → {v,v1}, {v,v2}, {v,v3}, ... V → f1, f2, f3, ... → v1, v2, v3, ... Явно
F-E Обе грани ребра Сравнение списков Сравнение списков Явно
V-E Обе вершины ребра E(a,b) → {a,b} E(a,b) → {a,b} Явно
Flook Найти грань с данными вершинами F(a,b,c) → {a,b,c} Пересечение множеств v1,v2,v3 Пересечение множеств v1,v2,v3
Размер памяти V*avg(V,V) 3F + V*avg(F,V) 3F + 8E + V*avg(E,V)
Пример с 10 вершин, 16 граней, 24 ребра:
10 * 5 = 50 3*16 + 10*5 = 98 3*16 + 8*24 + 10*5 = 290
Рисунок 5: сводка операций представлений сеток

В представленной выше таблице, явно указывает на то, что операция может быть выполнена за постоянное время, так как хранятся непосредственные данные; сравнение списков указывает на то, что для выполнения операции должно быть выполнено сравнение двух списков; и поиск пары указывает на то, что должен быть выполнен поиск двух индексов. Обозначение avg(V,V) означает среднее число вершин, соединенных с заданной вершиной; avg(E,V) означает среднее число ребер соединенных с заданной вершиной, и avg(F,V) - среднее число граней, соединенных с заданной вершиной.

Обозначение "V → f1, f2, f3, ... → v1, v2, v3, ..." показывает что для выполнения операции необходим обход вокруг нескольких элементов. К примеру, чтобы получить "все вершины вокруг заданной вершины V" используя список граней, нужно сначала найти грани вокруг заданной вершины V используя список вершин. Затем, из этих граней, используя список граней, найти вершины вокруг них. Заметьте, что "крылатое" представление хранит почти всю информацию в явном виде, и другие операции всегда обходят сначала ребро, чтобы получить дополнительную информацию. Вершинное представление - единственное представление, которое в явном виде хранит соседние вершины заданной вершины.

С увеличением сложности представлений (слева направо в сводке), количество информации, хранящейся в явном виде, растет. Это дает более прямой, постоянный по времени, доступ к обходу и топологии различных элементов, но ценой увеличения занимаемой памяти для сохранения индексов надлежащим образом.

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

Другие представления

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

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

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

Файловые форматы

Полигональные сетки могут храниться во множестве файловых форматов:

См. также

Напишите отзыв о статье "Полигональная сетка"

Примечания

  1. 1 2 Colin Smith, On Vertex-Vertex Meshes and Their Use in Geometric and Biological Modeling, algorithmicbotany.org/papers/smithco.dis2006.pdf
  2. Bruce Baumgart, Winged-Edge Polyhedron Representation for Computer Vision. National Computer Conference, May 1975. www.baumgart.org/winged-edge/winged-edge.html

Отрывок, характеризующий Полигональная сетка

Он приподнялся и сел. У костра, присев на корточках, сидел француз, только что оттолкнувший русского солдата, и жарил надетое на шомпол мясо. Жилистые, засученные, обросшие волосами, красные руки с короткими пальцами ловко поворачивали шомпол. Коричневое мрачное лицо с насупленными бровями ясно виднелось в свете угольев.
– Ca lui est bien egal, – проворчал он, быстро обращаясь к солдату, стоявшему за ним. – …brigand. Va! [Ему все равно… разбойник, право!]
И солдат, вертя шомпол, мрачно взглянул на Пьера. Пьер отвернулся, вглядываясь в тени. Один русский солдат пленный, тот, которого оттолкнул француз, сидел у костра и трепал по чем то рукой. Вглядевшись ближе, Пьер узнал лиловую собачонку, которая, виляя хвостом, сидела подле солдата.
– А, пришла? – сказал Пьер. – А, Пла… – начал он и не договорил. В его воображении вдруг, одновременно, связываясь между собой, возникло воспоминание о взгляде, которым смотрел на него Платон, сидя под деревом, о выстреле, слышанном на том месте, о вое собаки, о преступных лицах двух французов, пробежавших мимо его, о снятом дымящемся ружье, об отсутствии Каратаева на этом привале, и он готов уже был понять, что Каратаев убит, но в то же самое мгновенье в его душе, взявшись бог знает откуда, возникло воспоминание о вечере, проведенном им с красавицей полькой, летом, на балконе своего киевского дома. И все таки не связав воспоминаний нынешнего дня и не сделав о них вывода, Пьер закрыл глаза, и картина летней природы смешалась с воспоминанием о купанье, о жидком колеблющемся шаре, и он опустился куда то в воду, так что вода сошлась над его головой.
Перед восходом солнца его разбудили громкие частые выстрелы и крики. Мимо Пьера пробежали французы.
– Les cosaques! [Казаки!] – прокричал один из них, и через минуту толпа русских лиц окружила Пьера.
Долго не мог понять Пьер того, что с ним было. Со всех сторон он слышал вопли радости товарищей.
– Братцы! Родимые мои, голубчики! – плача, кричали старые солдаты, обнимая казаков и гусар. Гусары и казаки окружали пленных и торопливо предлагали кто платья, кто сапоги, кто хлеба. Пьер рыдал, сидя посреди их, и не мог выговорить ни слова; он обнял первого подошедшего к нему солдата и, плача, целовал его.
Долохов стоял у ворот разваленного дома, пропуская мимо себя толпу обезоруженных французов. Французы, взволнованные всем происшедшим, громко говорили между собой; но когда они проходили мимо Долохова, который слегка хлестал себя по сапогам нагайкой и глядел на них своим холодным, стеклянным, ничего доброго не обещающим взглядом, говор их замолкал. С другой стороны стоял казак Долохова и считал пленных, отмечая сотни чертой мела на воротах.
– Сколько? – спросил Долохов у казака, считавшего пленных.
– На вторую сотню, – отвечал казак.
– Filez, filez, [Проходи, проходи.] – приговаривал Долохов, выучившись этому выражению у французов, и, встречаясь глазами с проходившими пленными, взгляд его вспыхивал жестоким блеском.
Денисов, с мрачным лицом, сняв папаху, шел позади казаков, несших к вырытой в саду яме тело Пети Ростова.


С 28 го октября, когда начались морозы, бегство французов получило только более трагический характер замерзающих и изжаривающихся насмерть у костров людей и продолжающих в шубах и колясках ехать с награбленным добром императора, королей и герцогов; но в сущности своей процесс бегства и разложения французской армии со времени выступления из Москвы нисколько не изменился.
От Москвы до Вязьмы из семидесятитрехтысячной французской армии, не считая гвардии (которая во всю войну ничего не делала, кроме грабежа), из семидесяти трех тысяч осталось тридцать шесть тысяч (из этого числа не более пяти тысяч выбыло в сражениях). Вот первый член прогрессии, которым математически верно определяются последующие.
Французская армия в той же пропорции таяла и уничтожалась от Москвы до Вязьмы, от Вязьмы до Смоленска, от Смоленска до Березины, от Березины до Вильны, независимо от большей или меньшей степени холода, преследования, заграждения пути и всех других условий, взятых отдельно. После Вязьмы войска французские вместо трех колонн сбились в одну кучу и так шли до конца. Бертье писал своему государю (известно, как отдаленно от истины позволяют себе начальники описывать положение армии). Он писал:
«Je crois devoir faire connaitre a Votre Majeste l'etat de ses troupes dans les differents corps d'annee que j'ai ete a meme d'observer depuis deux ou trois jours dans differents passages. Elles sont presque debandees. Le nombre des soldats qui suivent les drapeaux est en proportion du quart au plus dans presque tous les regiments, les autres marchent isolement dans differentes directions et pour leur compte, dans l'esperance de trouver des subsistances et pour se debarrasser de la discipline. En general ils regardent Smolensk comme le point ou ils doivent se refaire. Ces derniers jours on a remarque que beaucoup de soldats jettent leurs cartouches et leurs armes. Dans cet etat de choses, l'interet du service de Votre Majeste exige, quelles que soient ses vues ulterieures qu'on rallie l'armee a Smolensk en commencant a la debarrasser des non combattans, tels que hommes demontes et des bagages inutiles et du materiel de l'artillerie qui n'est plus en proportion avec les forces actuelles. En outre les jours de repos, des subsistances sont necessaires aux soldats qui sont extenues par la faim et la fatigue; beaucoup sont morts ces derniers jours sur la route et dans les bivacs. Cet etat de choses va toujours en augmentant et donne lieu de craindre que si l'on n'y prete un prompt remede, on ne soit plus maitre des troupes dans un combat. Le 9 November, a 30 verstes de Smolensk».
[Долгом поставляю донести вашему величеству о состоянии корпусов, осмотренных мною на марше в последние три дня. Они почти в совершенном разброде. Только четвертая часть солдат остается при знаменах, прочие идут сами по себе разными направлениями, стараясь сыскать пропитание и избавиться от службы. Все думают только о Смоленске, где надеются отдохнуть. В последние дни много солдат побросали патроны и ружья. Какие бы ни были ваши дальнейшие намерения, но польза службы вашего величества требует собрать корпуса в Смоленске и отделить от них спешенных кавалеристов, безоружных, лишние обозы и часть артиллерии, ибо она теперь не в соразмерности с числом войск. Необходимо продовольствие и несколько дней покоя; солдаты изнурены голодом и усталостью; в последние дни многие умерли на дороге и на биваках. Такое бедственное положение беспрестанно усиливается и заставляет опасаться, что, если не будут приняты быстрые меры для предотвращения зла, мы скоро не будем иметь войска в своей власти в случае сражения. 9 ноября, в 30 верстах от Смоленка.]
Ввалившись в Смоленск, представлявшийся им обетованной землей, французы убивали друг друга за провиант, ограбили свои же магазины и, когда все было разграблено, побежали дальше.
Все шли, сами не зная, куда и зачем они идут. Еще менее других знал это гений Наполеона, так как никто ему не приказывал. Но все таки он и его окружающие соблюдали свои давнишние привычки: писались приказы, письма, рапорты, ordre du jour [распорядок дня]; называли друг друга:
«Sire, Mon Cousin, Prince d'Ekmuhl, roi de Naples» [Ваше величество, брат мой, принц Экмюльский, король Неаполитанский.] и т.д. Но приказы и рапорты были только на бумаге, ничто по ним не исполнялось, потому что не могло исполняться, и, несмотря на именование друг друга величествами, высочествами и двоюродными братьями, все они чувствовали, что они жалкие и гадкие люди, наделавшие много зла, за которое теперь приходилось расплачиваться. И, несмотря на то, что они притворялись, будто заботятся об армии, они думали только каждый о себе и о том, как бы поскорее уйти и спастись.


Действия русского и французского войск во время обратной кампании от Москвы и до Немана подобны игре в жмурки, когда двум играющим завязывают глаза и один изредка звонит колокольчиком, чтобы уведомить о себе ловящего. Сначала тот, кого ловят, звонит, не боясь неприятеля, но когда ему приходится плохо, он, стараясь неслышно идти, убегает от своего врага и часто, думая убежать, идет прямо к нему в руки.
Сначала наполеоновские войска еще давали о себе знать – это было в первый период движения по Калужской дороге, но потом, выбравшись на Смоленскую дорогу, они побежали, прижимая рукой язычок колокольчика, и часто, думая, что они уходят, набегали прямо на русских.
При быстроте бега французов и за ними русских и вследствие того изнурения лошадей, главное средство приблизительного узнавания положения, в котором находится неприятель, – разъезды кавалерии, – не существовало. Кроме того, вследствие частых и быстрых перемен положений обеих армий, сведения, какие и были, не могли поспевать вовремя. Если второго числа приходило известие о том, что армия неприятеля была там то первого числа, то третьего числа, когда можно было предпринять что нибудь, уже армия эта сделала два перехода и находилась совсем в другом положении.
Одна армия бежала, другая догоняла. От Смоленска французам предстояло много различных дорог; и, казалось бы, тут, простояв четыре дня, французы могли бы узнать, где неприятель, сообразить что нибудь выгодное и предпринять что нибудь новое. Но после четырехдневной остановки толпы их опять побежали не вправо, не влево, но, без всяких маневров и соображений, по старой, худшей дороге, на Красное и Оршу – по пробитому следу.
Ожидая врага сзади, а не спереди, французы бежали, растянувшись и разделившись друг от друга на двадцать четыре часа расстояния. Впереди всех бежал император, потом короли, потом герцоги. Русская армия, думая, что Наполеон возьмет вправо за Днепр, что было одно разумно, подалась тоже вправо и вышла на большую дорогу к Красному. И тут, как в игре в жмурки, французы наткнулись на наш авангард. Неожиданно увидав врага, французы смешались, приостановились от неожиданности испуга, но потом опять побежали, бросая своих сзади следовавших товарищей. Тут, как сквозь строй русских войск, проходили три дня, одна за одной, отдельные части французов, сначала вице короля, потом Даву, потом Нея. Все они побросали друг друга, побросали все свои тяжести, артиллерию, половину народа и убегали, только по ночам справа полукругами обходя русских.
Ней, шедший последним (потому что, несмотря на несчастное их положение или именно вследствие его, им хотелось побить тот пол, который ушиб их, он занялся нзрыванием никому не мешавших стен Смоленска), – шедший последним, Ней, с своим десятитысячным корпусом, прибежал в Оршу к Наполеону только с тысячью человеками, побросав и всех людей, и все пушки и ночью, украдучись, пробравшись лесом через Днепр.
От Орши побежали дальше по дороге к Вильно, точно так же играя в жмурки с преследующей армией. На Березине опять замешались, многие потонули, многие сдались, но те, которые перебрались через реку, побежали дальше. Главный начальник их надел шубу и, сев в сани, поскакал один, оставив своих товарищей. Кто мог – уехал тоже, кто не мог – сдался или умер.


Казалось бы, в этой то кампании бегства французов, когда они делали все то, что только можно было, чтобы погубить себя; когда ни в одном движении этой толпы, начиная от поворота на Калужскую дорогу и до бегства начальника от армии, не было ни малейшего смысла, – казалось бы, в этот период кампании невозможно уже историкам, приписывающим действия масс воле одного человека, описывать это отступление в их смысле. Но нет. Горы книг написаны историками об этой кампании, и везде описаны распоряжения Наполеона и глубокомысленные его планы – маневры, руководившие войском, и гениальные распоряжения его маршалов.
Отступление от Малоярославца тогда, когда ему дают дорогу в обильный край и когда ему открыта та параллельная дорога, по которой потом преследовал его Кутузов, ненужное отступление по разоренной дороге объясняется нам по разным глубокомысленным соображениям. По таким же глубокомысленным соображениям описывается его отступление от Смоленска на Оршу. Потом описывается его геройство при Красном, где он будто бы готовится принять сражение и сам командовать, и ходит с березовой палкой и говорит:
– J'ai assez fait l'Empereur, il est temps de faire le general, [Довольно уже я представлял императора, теперь время быть генералом.] – и, несмотря на то, тотчас же после этого бежит дальше, оставляя на произвол судьбы разрозненные части армии, находящиеся сзади.
Потом описывают нам величие души маршалов, в особенности Нея, величие души, состоящее в том, что он ночью пробрался лесом в обход через Днепр и без знамен и артиллерии и без девяти десятых войска прибежал в Оршу.
И, наконец, последний отъезд великого императора от геройской армии представляется нам историками как что то великое и гениальное. Даже этот последний поступок бегства, на языке человеческом называемый последней степенью подлости, которой учится стыдиться каждый ребенок, и этот поступок на языке историков получает оправдание.
Тогда, когда уже невозможно дальше растянуть столь эластичные нити исторических рассуждений, когда действие уже явно противно тому, что все человечество называет добром и даже справедливостью, является у историков спасительное понятие о величии. Величие как будто исключает возможность меры хорошего и дурного. Для великого – нет дурного. Нет ужаса, который бы мог быть поставлен в вину тому, кто велик.
– «C'est grand!» [Это величественно!] – говорят историки, и тогда уже нет ни хорошего, ни дурного, а есть «grand» и «не grand». Grand – хорошо, не grand – дурно. Grand есть свойство, по их понятиям, каких то особенных животных, называемых ими героями. И Наполеон, убираясь в теплой шубе домой от гибнущих не только товарищей, но (по его мнению) людей, им приведенных сюда, чувствует que c'est grand, и душа его покойна.
«Du sublime (он что то sublime видит в себе) au ridicule il n'y a qu'un pas», – говорит он. И весь мир пятьдесят лет повторяет: «Sublime! Grand! Napoleon le grand! Du sublime au ridicule il n'y a qu'un pas». [величественное… От величественного до смешного только один шаг… Величественное! Великое! Наполеон великий! От величественного до смешного только шаг.]
И никому в голову не придет, что признание величия, неизмеримого мерой хорошего и дурного, есть только признание своей ничтожности и неизмеримой малости.
Для нас, с данной нам Христом мерой хорошего и дурного, нет неизмеримого. И нет величия там, где нет простоты, добра и правды.


Кто из русских людей, читая описания последнего периода кампании 1812 года, не испытывал тяжелого чувства досады, неудовлетворенности и неясности. Кто не задавал себе вопросов: как не забрали, не уничтожили всех французов, когда все три армии окружали их в превосходящем числе, когда расстроенные французы, голодая и замерзая, сдавались толпами и когда (как нам рассказывает история) цель русских состояла именно в том, чтобы остановить, отрезать и забрать в плен всех французов.
Каким образом то русское войско, которое, слабее числом французов, дало Бородинское сражение, каким образом это войско, с трех сторон окружавшее французов и имевшее целью их забрать, не достигло своей цели? Неужели такое громадное преимущество перед нами имеют французы, что мы, с превосходными силами окружив, не могли побить их? Каким образом это могло случиться?
История (та, которая называется этим словом), отвечая на эти вопросы, говорит, что это случилось оттого, что Кутузов, и Тормасов, и Чичагов, и тот то, и тот то не сделали таких то и таких то маневров.
Но отчего они не сделали всех этих маневров? Отчего, ежели они были виноваты в том, что не достигнута была предназначавшаяся цель, – отчего их не судили и не казнили? Но, даже ежели и допустить, что виною неудачи русских были Кутузов и Чичагов и т. п., нельзя понять все таки, почему и в тех условиях, в которых находились русские войска под Красным и под Березиной (в обоих случаях русские были в превосходных силах), почему не взято в плен французское войско с маршалами, королями и императорами, когда в этом состояла цель русских?