Визуализация расположения археологических находок в трехмерных компьютерных моделях

 просмотров

IV

3D – ТЕХНОЛОГИИ В АРХЕОЛОГИИ

, , , .

Визуализация расположения археологических находок в трехмерных компьютерных моделях[1]

Введение

Трехмерное компьютерное моделирование в археологии давно стало реальностью и никого не удивляет. В России над разработками трехмерных моделей давно трудятся как целые коллективы, так и отдельные энтузиасты [Алексейчук, http://www., 2003]. Проводятся конференции и круглые столы по темам ГИС, включающих проблемы трехмерной визуализации. Компьютер прочно вошел в жизнь археолога, что сразу заметил ОПИ и рекомендовал прикладывать электронный вариант отчета. Успешно функционирует ассоциация «История и компьютер» и уже давно на Интернет - форумах не обсуждается тема «нужен ли компьютер в поле». Однако, несмотря на это, не отрицая преимущество трехмерных моделей, в «повседневной» археологической работе пока слабо используется возможность персональных компьютеров в области трехмерной моделирования. На наш взгляд, есть три главные причины, объясняющие это обстоятельство: слабая подготовка археологов в плане знания языков общения с компьютером; высокая стоимость разработок моделей с помощью специалистов; и существенное расширение материальных и временных затрат на создание трехмерных моделей. Подобные причины существуют не только в пределах археологического братства. Профессиональными исследователями отмечается, что необходимое для 3D моделирования аппаратное обеспечение с каждым днем становится все более совершенным, и задача разработчиков сейчас - создание технологий автоматического конструирования 3D моделей с использованием различных данных. [Гречищев и др., 2003].

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

Технические аспекты подготовки качественных трехмерных моделей, еще долго будут оставаться одними из самых важных [Гречищев и др., 2003]. Поэтому работа над моделью начинается с подготовки данных и выбора программ.

Подготовка трехмерного построения и выбор программного обеспечения

Выбор программного обеспечения проводился из следующих соображений:

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

– методы построения легко осваиваются при получении первичных навыков работы с компьютером на уровне освоения электронных таблиц Excel;

– благодаря тому, что модели строятся с помощью «больших» широко поддерживаемых программ Excel и 3ds max, то на их жизнеспособность не влияют изменения операционных систем, усовершенствования «железа» и прочие новшества компьютерных технологий. То есть программы легко доступны, надежны и постоянно обновляются. Модели, построенные этими программами, будут находиться в рабочем состоянии долгие годы. Результаты визуализации будут легко экспортироваться в другие программы;

– исследователь строит модели, выбирая признаки и комбинируя их по своему желанию. Это динамичная модель с многомерным признаковым пространством.

Для создания трехмерной модели археологического объекта необходимо три условия. В первую очередь нужны правильно организованные данные не только о местоположении, но и о формах и размерах находок. Необходим компьютер с установленным на нем программным обеспечением, включающим MS Office и 3Ds max. Для хранения базы данных с информацией о находках было решено использовать Excel не столько в силу его внешней привлекательности, сколько благодаря его распространенности в среде археологов и простоте в обращении [Курбатова, 2004]. При отсутствии этого программного продукта, можно загрузить 60-ти дневную триальную версию с сайта производителя

(http://microsoft. order-10.com/OfficeStandardEdition/welcome. aspx? id=enusdl),

или использовать альтернативные бесплатные программные продукты

(OpenOffice. org Calc, адрес: http://download. openoffice. org/2.0.0/index. html).

Для трехмерного отображения находок, как одна из наиболее распространенных, использовалась программа 3ds max. Это не менее распространенная программа, но цена ее значительна выше. Однако на сайте производителя всегда можно скачать бесплатную 30-ти дневную пробную версию (http://usa. /adsk/servlet/index? id=5659302&siteID=123112). За это время можно успеть сделать многое для анализа планиграфии.

Получить полный текст

В 3ds max можно постепенно нарисовать каждую находку от руки, поставить ее на нужное место, повернуть на необходимый угол и придать соответствующий размер. Автоматизировать процесс позволяют макросы в виде скриптов, которые эту работу проделывают почти мгновенно (1500 находок можно отрисовать в модель за 15 минут).

"Макрос" - термин, хорошо знакомый компьютерщикам, и обозначающий последовательность определенных, часто выполняемых действий. Термин взят из литературы и означает греческую односложную стопу, обычно состоящая из одного долгого слога (две моры). У нас примеры макросов у Асеева: «Соловей, вей, вей, — Запороги, гей, гей…» . Скрипт - программа, содержащая набор инструкций для некоторых приложений или утилит. Семантика и синтаксис инструкций в скриптах определяются соответствующими приложениями. Обычно язык скриптов включает простые структуры управления: линейные последовательности, циклы и условные выражения.

К сожалению, литература по написанию скриптов в 3ds max практически отсутствует. Однако многие вопросы написания скриптов (свойства конкретных объектов, дополнительные параметры и пр.) освящены в справке по 3ds max script

(http://usa. /adsk/servlet/ps/dl/item? siteID=123112&id=5663588&linkID=5573636)

Организация таблиц данных

Каждый исследователь использует свою структуру таблицы, содержащей информацию о находках, для построения трехмерной модели начало таблицы, по крайней мере, первые 15 колонок должны быть унифицированы. Для использования таблицы в качестве файла данных для скрипта достаточно в начало таблицы просто добавить 15 пустых столбцов. Необходимо помнить, что верхняя строка в работе скрипта не участвует и подписи в верхней строке сделаны исключительно для удобства пользователю. Для успешного выполнения работы скрипта по трехмерному отображению находок необходима следующая структура таблицы: в первом столбце «A» должны быть данные (текстовые) о наименовании находки, в столбце «B» — ее тип (код), в столбцах «C», «D», «E» — координаты находок (в см) x, y, z, в столбцах «F», «G», «H» — размеры (длина, ширина, толщина в см), в столбцах «I», «J», «K» — ориентация находок в градусах, в столбцах «L», «M», «N» — цвет RGB (рис. 1). То есть все поля, кроме наименования находок должны представлять собой числа без указания единиц измерений.

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

Таблица. Кодирование типов находок для создания условных фигур в трехмерной модели

Тип находки

Отображаемый объект

Код

Базовый примитив 3ds max

кости

«туба пополам»

1

Tube

отщеп

«призма»

2

Prism

орудия

«сглаженный параллелепипед»

3

ChamferBox

пластины

«повернутая призма»

4

Prism

обломки

«пирамида»

5

Pyramid

нуклеусы

«конус»

6

Cone

колотая галька

«полусфера»

7

Sphere

галька

«сфера»

8

Sphere

отбойник

«капсула»

9

Capsule

наковальня

«сглаженный цилиндр»

10

ChamferCyl

манупорт

«параллелепипед»

11

Box

осколки

«шпиндель»

12

Spindle

сверленые изделия

«тор»

13

Torus

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

Рис. 1. Образец размещения данных в таблице Microsoft Excel.

Следующие шесть столбцов содержат координаты артефактов и их размеры. Если для каких-то находок отсутствуют размеры, то пустые ячейки необходимо заменить разумными положительными числами, исходя из фантазии и памяти исследователя. Иногда (например, в ситуации, когда раскоп большой, а плотность находок невысока) для наглядности может возникнуть необходимость увеличить размеры находок. Координата Z должна быть записана с соблюдением правила, что чем находка выше, тем значение ее по высоте больше, а чем ниже, тем меньше, вплоть до использования отрицательных значений.

В столбцах «I», «J», «K» заносится ориентация находки, т. е. угол ее поворота относительно каждой из осей координат в градусах. Все три угла меряются против часовой стрелки в плоскости перпендикулярной каждой их осей координат по длинной оси находки. Первая – горизонтальная ориентация, затем две вертикальных. Горизонтальная ориентация – угол, который измеряется в горизонтальной плоскости с помощью азимутального кольца горного компаса. Две вертикальные ориентации измеряются в вертикальных плоскостях с помощью эклиметра горного компаса по шкале отвеса.

Получить полный текст

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

Первой замеряется горизонтальная ориентация (рука при этом располагается, как изображено на плакате 1931 г. неизвестного художника (рис. 2)). Измеряется угол поворота системы координат находки относительно системы координат раскопа. Фиксируется угол поворота против часовой стрелки от направления оси OY системы координат раскопа до направления оси OY системы координат находки (относительной системы координат). При этом ось OY системы координат находки выбирается произвольно и направлена туда, где, по вашему мнению, находится «верх» находки, если бы вам пришлось ее рисовать. Впоследствии измеренный отрезок между крайними точками находки по оси OY относительной системы координат будет длиной. Осью вращения является ось OZ системы координат раскопа. Значения этого параметра могут быть в пределах от 0° до 360°.

Рис. 2. Плакат неизвестного художника 1931 г. Демонстрация правильного
направления отсчета пространственной ориентации находок.

Следующей замеряется вертикальная ориентация I — поворот находки от горизонтальной плоскости до падения оси OY относительной системы координат. Центром вращения является ось OX. Угол измеряется так: кулак (с плаката рис.2) располагается так, что направление большого пальца показывает возрастание значений по оси OX системы координат находки (ширина находки), загнутые пальцы показывают положительное значение угла от строго горизонтальной плоскости до направления оси OY. Этот параметр может иметь значения от -90° до 90°.

В последнюю очередь проводится замер вертикальной ориентации II — поворот находки от горизонтальной плоскости до падения оси OX относительной системы координат. Замеры делаются так же, как и при измерении ориентации I, но с той разницей, что измеряется угол падения ширины находки, а осью вращения будет 0Y. Значения угла могут колебаться от –90° до 0°, если угол измеряется по часовой стрелке, и от 0° до +90°, если угол измеряется против часовой стрелки. В случае если археологу по каким-либо соображениям не интересно замерять все или какие-либо из трех углов ориентации находок, то столбцы «ориентация» просто заполняются нулями.

Последние три столбца определяют цвет находок в системе RGB (от англ. Red Green Blue). В каждом столбце определяется насыщенность каждого цвета числами от 0 до 255.

Автоматическая отрисовка находок из таблиц

Существует две возможности получения текста скрипта: напечатать текст скрипта в редакторе Max-Script или в любом другом текстовом редакторе (например, в редакторе «Блокнот» в Windows). В первом случае нужно зайти в пункт меню «Max-Script» в программе 3ds max и выбрать пункт меню «Новый скрипт», при этом откроется текстовый редактор, в котором и надо напечатать текст скрипта. После того, когда текст будет набран, необходимо сохранить его под каким-нибудь именем. Это делается стандартно. Во втором случае надо перепечатать текст скрипта в текстовом редакторе, сохранить как текстовый документ, а затем изменить его расширение на *.ms.

Структура скрипта

Тело скрипта можно разделить на четыре блока:

1.  блок диалога с пользователем;

2.  блок создания (инициализации) переменных;

3.  блок «считывания» данных и отображения находок;

4.  блок освобождения оперативной памяти компьютера от переменных (деинициализация).

Блок диалога с пользователем

В самом простом варианте состоит из единственной функции, которая выводит диалоговое окно о выборе файла с расширением xls и присваивает переменной filename имя выбранного файла.

filename = getOpenFileName types:"Excel(*.xls)|*.xls|All|*.*|"

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

Блок создания (инициализации) переменных

У данного раздела две части.

Первая функция создает переменную для «считывания» данных из документа Excel.

ExcelApp = CreateOLEObject "excel. application"

Вторая часть из трех функций открывает в фоновом режиме выбранную пользователем книгу в программе Microsoft Excel.

ExcelApp. Visible = false

ExcelApp. Workbooks. Add(filename)

ExcelApp. application. Visible = false

Блок «считывания и отображения данных»

Самый объемный блок, включающий собственно выполнение всех операций по прорисовке объектов. Для удобства понимания его структуры он в тексте статьи разделен на две части. Первая часть, описываемая ниже касается считывания информации из таблицы Microsoft Excel, а вторая, объясняющая создания примитивов 3ds max вынесена в самостоятельный раздел.

Получить полный текст

Блок состоит из 3 разделов.

Раздел 1

Начинается с функции, котораяй присваивает переменной i числовое значение номера первоначальной строки данных в документе. Цифра 2 – означает в данном случае, что в таблице Microsoft Excel первая строка занята заголовками колонок, а данные идут только со второй строки.

i=2

Далее необходимо записать начало цикла «считывания» данных и отображения объектов. Значение переменной i в теле этого цикла будет изменяться в соответствии с номером текущей строки таблицы.

do

(

Последней в этом разделе идет функция, которая присваивает переменной ii символьное значение переменной i для последующего получения номера текущей ячейки в документе с исходными данными.

ii=i as string

Раздел 2

Состоит из набора команд для считывания данных из таблицы Microsoft Excel. Вводятся переменные, и им присваеиваются значения из соответствеющих столбцов. Принцип везде один и тот же. Задается имя переменной, затем указывается ячейка с ее значением. ExcelApp. Range ("a"+ii), где a – это столбец в Excel, а ii – номер строки.

Переменной v_name назначается наименование находки, и указывается, что это строковой параметр (текст).

v_name=((ExcelApp. Range ("a"+ii)).Value) as string

Далее необходимо указать тип находки.

n=((ExcelApp. Range ("b"+ii)).Value)

Затем, ее координаты - x, y, z.

x=((ExcelApp. Range ("c"+ii)).Value)

y=((ExcelApp. Range ("d"+ii)).Value)

z=((ExcelApp. Range ("e"+ii)).Value)

Также необходимо указать размеры находки – длину, ширину и толщину, соответственно.

length=((ExcelApp. Range ("f"+ii)).Value)

width=((ExcelApp. Range ("g"+ii)).Value)

height=((ExcelApp. Range ("h"+ii)).Value)

В том случае, если эти данные отсутствуют, то их необходимо придумать (можно одинаковые для всех находок) и ввести в таблице вручную, или явно указать в скрипте, например:

length=3

width=2

height=1

После этого необходимо указать положение находки в пространстве - ориентации по горизонтали и вертикали относительно осей системы координат.

rz=((ExcelApp. Range ("i"+ii)).Value)

rx=((ExcelApp. Range ("j"+ii)).Value)

ry=((ExcelApp. Range ("k"+ii)).Value)

В последнюю очередь задется цвет находки в системе RGB (red, green, blue).

r=((ExcelApp. Range ("l"+ii)).Value)

g=((ExcelApp. Range ("m"+ii)).Value)

b=((ExcelApp. Range ("n"+ii)).Value)

В конце этого блока, когда считаны все переменные, переменной flag присваивается логическое значение true (истина), если переменные x, y, z не пустые. В противном случае переменная принимает значение false (ложь). Это позволяет повторить скрипт столько раз, сколько есть строк с информацией о находках в таблице, и завершить его, когда строки будут пустыми.

flag=(x!=null and y!=null and z!=null)

Раздел 3

Рисование находок начинается с проверки значения переменной flag и, если оно равно True (истина), то выполнит операторы, которые заключены в скобках.

If flag then

Затем начинается рисование объектов. Функция case n of выбирает, какой объект (примитив 3ds max) рисовать, в зависимости от значения переменной n (типа находки). После цифры с двоеточием идет набор функций для рисования того или иного объекта (это будет рассмотрено отдельно ниже)

case n of

(

1: (набор функций для рисования 1-го объекта)

2: (набор функций для рисования 1-го объекта)

13: (набор функций для рисования 1-го объекта)

)

После того, как объект нарисован, значение переменной i увеличивается на единицу для перехода на следующую строку документа.

i+=1

В конце цикла значение переменной flag проверяется снова. Если это значение равно true (истина), то процедура выполнения данного цикла повторяется. В противном случае цикл прекращает своё выполнение.

) while flag

Блок удаления переменных

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

ExcelApp. ActiveWorkbook. Close(0)

ExcelApp. visible = false

ExcelApp. Quit()

releaseOLEObject ExcelApp

gc()

Рисование объектов.

Отображение геометрических примитивов в 3ds мах имеют специфику в зависимости от вида примитива. Прежде всего различные примитивы имеют разные исходные точки построения от которых рассчитываются координаты и углы поворота. Построение объектов имеет следующую схему:

1.  Создание объекта. (присвоение имени; перемещение объекта в системе координат на его место; установление размеров объекта; модифицирование формы объекта; назначение цвета); и

2.  Поворота объекта.

Создание объекта

Рассмотрим создание объекта на примере первого объекта tube.

Задается базовый примитив 3ds max и ему присваивается имя находки.

d=tube name:v_name

Затем задаются координаты находки в пространстве.

move d [x, y,z]

Получить полный текст

Здесь возможны вариации в зависимости от того, где находится центр построения находки. Так, у примитива capsule в 3ds max вычисление координат объекта осуществляются до центра основания, тогда как для корректного положения находоки такой формы координаты определяются по центру. Для этого необходимо сдвинуть объект соответствующим образом.

move d [x,(y-length/2),(z+width/2)]

Когда создавался скрипт, для каждого типа находок специально подбирались пропорции объектов, размеры и зависимости одних измерений от других. Размеры объекта задаются в зависимости от того, какие параметры требуются для исходного примитива (см. помощь в 3ds max script). Например, для фигур tube, cone и torus– это два радиуса оснований фигуры и высота.

d. radius_1=(width/2)

d. radius_2=(width/3)

d. height=length

Исследователь может сам менять зависимости между размерами реальных находок и различными измерениями примитивов 3ds max.

После определения положения в системе координат и размеров объекта указывается ряд дополнительных служебных параметров, которые индивидуальны для каждого объекта (см. помощь в 3ds max script).

d. smooth=on

d. slice=on

d. slice_from=90

d. slice_to=270

После того, как все необходимые параметры объекта заданы, он выделяется и ему задаётся цвет в системе RGB (красный, зеленый, синий)

d. isSelected=on

d. wirecolor=color r g b

Поворот объекта

Поворот объекта можно осуществить двумя способами. В первом случае объект просто поворачивается относительно своего центра.

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

Второй способ основан на создании вспомогательного объекта sphere. У различных фигур в 3Ds max центром поворота считаются различные точки. Дело усложняется, когда мы используем фрагменты этих фигур. Необходимо смещать объект по всем трем осям координат в зависимости от его размеров и угла наклона. Расчет этих параметров весьма затруднителен. Мы предлагаем более простой и понятный способ. Вокруг находки создается сфера, центр которой соответствует координатам находки, эта сфера группируется с объектом находки, и тогда поворот осуществляется вокруг центра сферы. В этом случае нет необходимости в сложных расчетах, а сфера после выполнения операции поворота удаляется.

Необходимо создать объект sphere и поместить в ту же точку пространства, что и находку:

dd=sphere name:"vvv"

dd. radius=10000

move dd [x, y,z]

затем выделить оба объекта: находку и сферу.

select #(d, dd)

Поворот в таком случае осуществляется относительно центра сферы, и находка поворачивается корректно.

about $.center (rotate $ - rx [1,0,0]; rotate $ ry [0,1,0]; rotate $ rz [0,0,1])

Затем снимается выделение, выделяется только сфера, и удаляется.

deselect $

select dd

max delete

Полный текст скрипта

Таким образом, у вас на компьютере в одной папке с файлом данных должен быть файл с расширением *.ms и следующим текстовым содержанием:

filename=getOpenFileName types:"Excel(*.xls)|*.xls|All|*.*|"

If (filename!=null) then

(

ExcelApp=CreateOLEObject "excel. application"

ExcelApp. Visible = false

ExcelApp. Workbooks. Add(filename)

ExcelApp. application. Visible = false

flag=true

i=2

ii=i as string

do

(

ii=i as string

v_name=((ExcelApp. Range ("a"+ii)).Value) as string

n=((ExcelApp. Range ("b"+ii)).Value)

x=((ExcelApp. Range ("c"+ii)).Value)

y=((ExcelApp. Range ("d"+ii)).Value)

z=((ExcelApp. Range ("e"+ii)).Value)

length=((ExcelApp. Range ("f"+ii)).Value)

width=((ExcelApp. Range ("g"+ii)).Value)

height=((ExcelApp. Range ("h"+ii)).Value)

rz=((ExcelApp. Range ("i"+ii)).Value)

rx=((ExcelApp. Range ("j"+ii)).Value)

ry=((ExcelApp. Range ("k"+ii)).Value)

r=((ExcelApp. Range ("l"+ii)).Value)

g=((ExcelApp. Range ("m"+ii)).Value)

b=((ExcelApp. Range ("n"+ii)).Value)

flag=(x!=null and y!=null and z!=null)

if flag then

(

case n of

(

1:

(

d=tube name:v_name

move d [x,(y-length/2),(z+width/2)]

d. rotation. x_rotation=-90

d. radius_1=(width/2)

d. radius_2=(width/3)

d. height=length

d. smooth=on

d. slice=on

d. slice_from=90

d. slice_to=270

d. wirecolor=color r g b

dd=sphere name:"vvv"

dd. radius=10000

move dd [x, y,z]

select #(d, dd)

about $.center (rotate $ - rx [1,0,0]; rotate $ ry [0,1,0]; rotate $ rz [0,0,1])

deselect $

select dd

max delete

)

2:

(

d=Prism name:v_name

move d [(x-width/2),(y-Length/2),z]

d. side1Segs=1

d. side2Segs=1

d. side3Segs=1

d. heightsegs=1

d. side1Length=width

d. side2Length=(sqrt(width*width/4+Length*Length))

d. side3Length=(sqrt(width*width/4+Length*Length))

d. height=height

d. isSelected=on

d. wirecolor=color r g b

dd=sphere name:"vvv"

Получить полный текст

dd. radius=10000

move dd [x, y,z]

select #(d, dd)

about $.center (rotate $ - rx [1,0,0]; rotate $ ry [0,1,0]; rotate $ rz [0,0,1])

deselect $

select dd

max delete

)

3:

(

d=ChamferBox name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,z]

d. Length_Segments=1

d. Width_Segments=1

d. Height_Segments=1

d. Fillet_Segments=1

d. length=length

d. width=width

d. height=height

d. Fillet=(height/2.5)

d. isSelected=on

d. wirecolor=color r g b

)

4:

(

d=Prism name:v_name

d. rotation. x_rotation=-90

d. rotation. y_rotation=180

move d [(x+width/2),(y-length/2),z]

d. side1Segs=1

d. side2Segs=1

d. side3Segs=1

d. heightsegs=1

d. side1Length=width

d. side2Length=(sqrt(width*width/4+height*height))

d. side3Length=(sqrt(width*width/4+height*height))

d. height=Length

d. isSelected=on

d. wirecolor=color r g b

dd=sphere name:"vvv"

dd. radius=10000

move dd [x, y,z]

select #(d, dd)

about $.center (rotate $ - rx [1,0,0]; rotate $ - ry [0,1,0]; rotate $ rz [0,0,1])

deselect $

select dd

max delete

)

5:

(

d=Pyramid name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,z]

d. width=width

d. depth=length

d. height=height

d. isSelected=on

d. wirecolor=color r g b

)

6:

(

d=cone name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,z]

d. radius_1=(length/2)

d. radius_2=(width/2)

d. height=height

d. smooth=off

d. sides=7

d. isSelected=on

d. wirecolor=color r g b

)

7:

(

d=Sphere name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,z]

d. radius=(length/2)

d. Hemisphere=0.5

d. isSelected=on

d. wirecolor=color r g b

)

8:

(

d=Sphere name:v_name

move d [x, y,(z+length/2)]

d. radius=(length/2)

d. Hemisphere=0

d. isSelected=on

d. wirecolor=color r g b

)

9:

(

d=Capsule name:v_name

d. rotation. x_rotation=-90

move d [x,(y-length/2),(z+width/2)]

d. radius=(width/2)

d. height=length

d. heighttype=0

d. sides=12

d. isSelected=on

d. wirecolor=color r g b

dd=sphere name:"vvv"

dd. radius=10000

move dd [x, y,z]

select #(d, dd)

about $.center (rotate $ - rx [1,0,0]; rotate $ rz [0,0,1])

deselect $

select dd

max delete

)

10:

(

d=ChamferCyl name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,z]

d. radius=(length/2)

d. height=height

d. Fillet=(height/4)

d. Height_Segments=1

d. Fillet_Segments=1

d. sides=12

d. Cap_Segments=1

d. Smooth_On=1

d. isSelected=on

d. wirecolor=color r g b

)

11:

(

d=box name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,z]

d. length=length

d. width=width

d. height=height

d. isSelected=on

d. wirecolor=color r g b

)

12:

(

d=Spindle name:v_name

move d [(x-length/4),y, z]

d. radius=(length/2)

d. Cap_Height=(height/2)

d. height=height

d. Blend=0

d. sides=3

d. Height_Segments=1

d. Cap_Segments=5

d. Smooth_On=1

d. Slice_On=1

d. Slice_From=90

d. Slice_To=270

d. isSelected=on

d. wirecolor=color r g b

dd=sphere name:"vvv"

dd. radius=10000

move dd [x, y,z]

select #(d, dd)

about $.center (rotate $ - rx [1,0,0]; rotate $ ry [0,1,0]; rotate $ rz [0,0,1])

deselect $

select dd

max delete

)

13:

(

d=Torus name:v_name

d. rotation. x_rotation=-rx

d. rotation. y_rotation=ry

d. rotation. z_rotation=rz

move d [x, y,(z+height)]

d. smooth=2

d. segs=24

d. sides=12

d. radius1=(length/2)

d. radius2=height

d. isSelected=on

d. wirecolor=color r g b

)

)

i+=1

)

) while flag

ExcelApp. ActiveWorkbook. Close(0)

ExcelApp. Visible=false

ExcelApp. Quit()

releaseOLEObject ExcelApp

gc()

)

Заключение

Весь процесс работы с уже готовым скриптом выглядит следующим образом. Сначала запускается программа 3Ds Max, затем сам скрипт. В меню открывшийся программы выбрать Max Script и в выпадающем меню нажать Run script (рис. 3). После этого появится окно, где надо будет через обзор найти ваш скрипт и выбрать его и запустить (рис. 4). Сразу же после запуска выводится окно диалога, в котором предлагается выбрать файл с данными (рис. 5). Когда файл выбран, начинается процесс его обработки, который может занять некоторое время, зависит от количества данных в таблице Excel и мощности компьютера. По окончании работы скрипта на экран трехмерная модель плана находок (рис. 6). Если у вас не появилось на экране ничего, то это еще не означает, что модель не построена. В правом нижнем углу в 3D мах есть кнопка «все объекты на экран». О предназначении других кнопок и команд лучше всего прочитать в специализированной литературе по описанию этой действительно удивительной и богатой возможностями программе [Петерсон, 1999; Росс, Баусквит, 2004].

Получить полный текст

Особых системных требований к работе самого скрипта нет, но мощность компьютера должна позволять работать в программе 3ds Max. Работа скрипта проверялась в 4.0, 5.0, 5.1, 6.0, 7.0, 7.1, 8.0 версиях программы 3ds Max.

Имея трехмерную схему расположения каменных орудий и отходов производства, исследователь, используя стандартные средства 3ds max, получает ряд дополнительных возможностей при анализе находок. Во-первых, трехмерный объект, обозначающий находку, точно отражает углы ее залегания, т. е. горизонтальную и вертикальную ориентации, которые не видны на плоскости. Это имеет значение для планиграфического анализа, позволяет определить смещение или растаскивание культурного слоя.

Рис. 3. Запуск скрипта в 3ds max из основного меню.

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

Рис. 4. Выбор скрипта в диалоговом окне.

Рис. 5. Выбор файла данных Excel в диалоговом окне после запуска скрипта.

Кроме того, ряд специальных функций в 3ds max позволяет делать более глубокий анализ археологического материала. Объекты можно группировать по различным признакам, которые задаются в таблице Excel. В таблице есть поля данных, касающиеся размещения находок. Заполнение этих полей остается для работы неизменным. Однако поля «тип находки», «наименование» и «цвет» динамичные. Эти поля могут кодироваться данными по различным признакам. Программа легко распознает эти признаки. Она может их объединять, скрывать или представлять в нужной модификации. Дифференциация признакового пространства может происходить по сырью, из которого изготовлены каменные артефакты, по типам орудий, огранке сколов и т. д.

Рис. 6. Полученный результат построения моделей находок из демонстрационной таблицы (рис. 1).

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

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

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

Литература:

http://www. arheo3d. *****/

Гречищев А., Барниченко В., Монастырев С., Шпильман А. Трехмерное моделирование и фотореалистичная визуализация городских территорий // ARCREVIEW, 2003. - № 2 (25). – С. 12 – 13.

Microsoft Excel 2002. – СПб: Диалектика/Вильямс, 2004. – 540 с.

Петерсон М. Эффективная работа с 3d studio max 2. – СПб: Питер, 1999. – 656 с.

Росс Э., Баусквит М. Освоение 3ds max 5. – СПб: Вильямс, 2004. – 720 с.

[1] Работа поддержана проектами РГНФ № в и РФФИ № -а



Подпишитесь на рассылку:

Тайны и мифы археологии
или научные факты и исследования древности

Смотрите полные списки: Профессии

Профессии: Гуманитарии



Проекты по теме:

Основные порталы, построенные редакторами

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством

Каталог авторов (частные аккаунты)

Авто

АвтосервисАвтозапчастиТовары для автоАвтотехцентрыАвтоаксессуарыавтозапчасти для иномарокКузовной ремонтАвторемонт и техобслуживаниеРемонт ходовой части автомобиляАвтохимиямаслатехцентрыРемонт бензиновых двигателейремонт автоэлектрикиремонт АКППШиномонтаж

Бизнес

Автоматизация бизнес-процессовИнтернет-магазиныСтроительствоТелефонная связьОптовые компании

Досуг

ДосугРазвлеченияТворчествоОбщественное питаниеРестораныБарыКафеКофейниНочные клубыЛитература

Технологии

Автоматизация производственных процессовИнтернетИнтернет-провайдерыСвязьИнформационные технологииIT-компанииWEB-студииПродвижение web-сайтовПродажа программного обеспеченияКоммутационное оборудованиеIP-телефония

Инфраструктура

ГородВластьАдминистрации районовСудыКоммунальные услугиПодростковые клубыОбщественные организацииГородские информационные сайты

Наука

ПедагогикаОбразованиеШколыОбучениеУчителя

Товары

Торговые компанииТоргово-сервисные компанииМобильные телефоныАксессуары к мобильным телефонамНавигационное оборудование

Услуги

Бытовые услугиТелекоммуникационные компанииДоставка готовых блюдОрганизация и проведение праздниковРемонт мобильных устройствАтелье швейныеХимчистки одеждыСервисные центрыФотоуслугиПраздничные агентства