3D Engineering

...Лучшее из общего.

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

3D моделирование

Нажмите что бы увеличитьСегодня уже сложно представить современный мир без 3d технологий. 3D моделирование уверенно вошло и прочно закрепилось в нашей ежедневной жизни. Уже сложно представить фильм без 3D эффектов или сайт без новомодной графики. Что же представляет из себя 3D моделирование? Как правило, это создание объемной модели из плоской графической фигуры. После долгих геометрических преобразований и трансформаций простая фигура начинает принимать объемные формы. Часто для одной объемной фигуры используется несколько плоских, делается это для того, чтобы итоговая фигура была более ровной, естественной, обтекаемой, желательно, чтобы заготовки не содержали в себе явных углов и граней, иначе будет сложно избавиться от видимых стыков на готовом объеме.

Подробнее...
 

Большие возможности 3D моделирования

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

Подробнее...
 

Здравствуйте! В этом рассказе о том как я делал работу «Запретная ...

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

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

Нажмите что бы увеличить

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

Нажмите что бы увеличить

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

Нажмите что бы увеличить

Я постепенно отрабатывал вариант за вариантом, пока образ не был окончательно завершен.

Нажмите что бы увеличить

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

Нажмите что бы увеличить

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

Нажмите что бы увеличить

Когда модель была готова и я был доволен ее финальным видом, я приступил к продумыванию подходящего окружения.

Нажмите что бы увеличить

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

Нажмите что бы увеличить

Забор сломался, соответственно, запретность территории изжила себя, но присутствие обслуживающего персонала говорит нам о том, что машина еще на ходу и используется по назначению. Для большего разнообразия и наполнения деталями было решено изобразить открытый ангар со стоящим внутри слоном-экскаватором — моей работой 2005 года (правда полностью перемоделеной и перетекстуренной).

Нажмите что бы увеличить

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

Нажмите что бы увеличить

Вкратце говоря, сцена освещена при помощи системы physical sun and sky и лишь нескольких вспомогательных подсветок. Внушительное количество тестовых рендеров было сделано, много объектов было добавлено.

Нажмите что бы увеличить

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

Нажмите что бы увеличить

Ощущение раннего утра нового рабочего дня на мой взгляд удалось. В последствии, я решил усилить атмосферу, добавив признаки времени года — осени. Пришло время отправлять сцену на рендер. Как обычно, главным делом был просчет пасса beauty. Из-за большого размера изображения просчет занял порядка 12 часов. Остальные проходы, их было три, считались гораздо быстрее. Occlusion, color ID и Z-Depth – изображения, которые помогли мне добиться нужной атмосферы, объема и просто служили вспомогательными при композе в photoshop.

Нажмите что бы увеличить

Процесс сборки и доведения до нужного состояния не занял много времени.

И вот, у меня уже все готово! Как же прекрасен и сладок этот миг. Идея реализована, технические вопросы решены и тот момент, когда я собирал первый эскиз, так далеко. У меня есть готовая работа и новые идеи уже стоят в очередь в моей голове.

Нажмите что бы увеличить

Надеюсь, вам было интересно читать мой рассказ. Желаю вам творческих свершений и побед!

Страница Даниила: http://www.alikov.net/main_rus.php

 

Уважаемые наши читатели и пользователи 3dgo

Уважаемые наши читатели и пользователи 3dgo.ru, представляем вашему вниманию интервью с замечательным талантливым mate painting художником – Станиславом Лобачевым. В этом интервью Станислав расскажет о том, о начале своего пути в компьютерной графике, о его  выборе направления mate painting о своем опыте и расскажет о том, к чему следует стремиться в постижении инструментов и методов цифрового искусства.

Нажмите что бы увеличить3dgo.ru: Здравствуйте, Станислав. Расскажите немного о себе, где Вы родились и сейчас проживаете, кем сейчас работаете?

Станислав: Всем пламенный привет! Вкратце: родился, живу и работаю в Москве. В данный момент фрилансер, занимаюсь mate painting, concept art. А для себя традиционной живописью и рисунком.

3dgo.ru: Вы начали рисовать с раннего детства, это повлияло на выбор учебных заведений, где Вы учились?

Нажмите что бы увеличитьСтанислав: Рисовать начал с раннего детства, это так. Совсем маленьким с 6 до 8 лет ходил в художественный кружок. Точнее, мама таскала, а я там безобразничал, прятался от учителя, мазал его гуашью, а так же своих сверстников, юных живописцев. К слову сказать, учитель был классным парнем – художник по декорациям из Большого театра. Шутник еще тот, с большим запасом отборного юмора. Потом, правда, в Израиль сбежал. Кружок распался, и больше мне некого было разукрашивать. Я рыдал.
До 8-го класса учился в школе с английским уклоном, родители хотели видеть меня лингвистом, профессиональным переводчиком. Я от души упирался, хотя владение английским мне сейчас весьма помогает в общении с зарубежными заказчиками. В общем, ходил, учил этот английский, а вместо домашних уроков рисовал небоскребы, по линейке. Причем маньячил по-страшному, вырисовывал каждое окошечко, к примеру, на пятисотэтажном гиганте. Похоже, любовь к кромешной детализации и ко всякого рода архитектурным формам проявилась еще с тех детских времен. В связи с этим, после 7-го класса пошел в школу, которую курировал наш московский архитектурный институт и поступил в архитектурный класс. В основном занимались рисунком, черчением и композицией. Черчение, кстати, меня очень угнетало. А вот живописи и цветоведения как таковых дисциплин у нас не было. После школы слету поступил в МархИ, из которого, проучившись пару лет ушел в свободное рисование. Так что, безусловно, мои детские увлечения рисунком повлияли в дальнейшем на выбор учебных заведений :-)

Нажмите что бы увеличить3dgo.ru: Получив основы художественного образования «урывками», скажите, Вы считаете, тех знаний, которые Вам дали, достаточно или все же Вам есть, что еще наверстать?

Станислав: Я бы, конечно, не сказал, что мое образование проходило урывками. Конкретно тех знаний, о которых мечтал, в МархИ я не получил. Конечно, рисунок, живопись и композиция вкупе с историей искусств были любимыми дисциплинами, но живопись давали только на первых двух курсах. И то через пень-колоду. Мне тогда преподаватель по рисунку сказал замечательные слова: "Стас, хотите рисовать, бросайте всё и рисуйте". Я обеими руками "ЗА" системное образование, только с самого начала следует выбирать правильный вуз. С другой стороны, у меня есть замечательный друг, художник-монументалист, выпускник строгановки, так у них вообще не было предмета "цветоведение", не помню по какой причине, но самого важного им не дали. Тут дело еще вот в чем, сейчас всё делаю сознательно, это важнее. После "школы" схватил бы всё по верхам, не осталось бы в памяти. А повторять уже не интересно. Другой разговор, что увлечение цифровым искусством не очень одобряют в академической среде. К этому направлению, относятся, мягко говоря, с недоумением, по типу: " Так вы на компьютере рисуете? Ааа, ну всё понятно, хи-хи". Ну вот эти "хи-хи, ха-ха" меня раньше круто раздражали. Порой думаю, что бы случилось, если воскресить великого Леонардо да Винчи и подвести к графической станции? Полагаю, знаменитый гений и изобретатель приклеился бы намертво к планшету, а из компа всю дорогу валил густой дым.
Поэтому, в данном случае, не может идти речь о том, чтобы что-то наверстывать. В школе и вузе рисунок получил довольно крепкий. Теперь вот самостоятельно изучаю цвет. На самом деле, художник учится всю жизнь. Великий Клод Моне примерно говорил следущее: "Только в 80 лет я понял как надо писать картины". Неплохая пища для размышлений. Картину написать – не пирожок испечь.

Нажмите что бы увеличить3dgo.ru: Если рассматривать самостоятельное изучение материала, то на что следует обратить внимание в первую очередь? Стоит ли запастись литературой и общаться с другими художниками по интересующим вопросам?

Станислав: Определенно это очень важный момент в развитии навыков. Зачем что-то высасывать из пальца, когда все уже давно придумано. Изучайте базу, общайтесь с коллегами и развивайтесь.

 

Нажмите что бы увеличить3dgo.ru: Станислав, некоторые работы созданы по фильмам или литературным рассказам. Сейчас вы используете книги, фильмы или компьютерные игры для вдохновения при создании новых работ, или стараетесь самостоятельно создавать сюжет?

Станислав: Всегда по разному. Да, к конкурсу "Аватар", который проходил на cgtalk.ru и в котором участвовал, предварительно тщательно отсматривал тизер (дело было еще до премьеры фильма), пытался отследить атмосферу, углубиться с головой в новые миры. Так вот специально стараюсь не брать какие-либо сюжеты. Да, определенный фильм с определенной атмосферой может вдохновить на создание работы, в целом. И вдохновляет, особенно в жанре "исторического кино". Очень люблю "Храброе Сердце", "Царство Небесное", "Гладиатор", "300" и т.п. Не дурак и фантастику посмотреть, особенно впечатляют "Хроники Риддика" в паре с "Черной дырой". Круто радуют фильмы-апокалипсисы: "Армагеддон", "2012". Сюжет работы "TornadoStorm. The Beginning" был навеян прекрасным фильмом Роланда Эмериха "Послезавтра", скорее всего все помнят  сцену с гигантским торнадо "гуляющим" по Лос-Анжелесу . Как-то после очередного просмотра бросился рисовать этот торнадо, только вместо LA решил изобразить город будущего, да и ландшафт позаковыристей, не земной :-) Тут уже подсознательно нафантазировал пейзаж в духе риддиковских. А потом смотрю на скалы и думаю, где-то я уже это видел, ха-ха))). Так что, от любимых фильмов никуда не деться. Здесь, конечно, существует риск сделать точно так же, повторить концептуальные ходы, цвет, остальные авторские "примочки". Тысячу раз подмывало сделать работу под "Властелина Колец", этакий фан-арт. Может и нарисую когда-нибудь, но пока ставлю более серьезные задачи, композиция должна быть свежей, оригинальной, сложной.  С книгами проще, читаешь того же Хаггарда и перед твоими глазами во всей красе древняя Александрия, Мемфис или Иерусалим. Считай, композиция готова, ха-ха :-) Так же и компьютерные игры вдохновляют на многие идеи. Большой поклонник стратегии серий Total War, в этой связи готовится кое-какой концепт арт с батальными сценами.

Нажмите что бы увеличить3dgo.ru: Что для Вас было самым трудным в освоении техники mattepainting, и какие сложные моменты остаются посей день? Есть ли какие-то общие для всех подводные камни, с которыми обязательно столкнется начинающий маттепаинтер?

Станислав: Может показаться странным, но я не сталкивался ни с какими ультрасложными проблемами при освоении техники мэт-пеинтинг, так как начинал с монохромного монтирования. Что я делал - быстро черкал композицию на скетче, брал нужные референсы допустим небо/землю/горы/лес, переводил их в ч/б, накладывал друг на друга послойно и склеивал. Потом лез в color balance и добавлял так называемый "цвет". И всё, вся процедура. И я был доволен, т. к. понятия не имел как их "раскрашивать", да, впрочем, и особым желанием-то не горел. Потом уже, когда увидел замечательные работы знаменитых мэт-пеинтеров мне захотелось творить подобные вещи. Начал потихоньку вводить цвет и тогда встал вопрос о том, что все референсы разные по качеству, по освещению, колориту. А в конечном итоге они должны были гармонично "звучать" и создавать образ цельности изображения. Здесь мне помогли многие вещи: изучение работ старых и современных мастеров, специальная литература, видео-уроки и т.п. С самого начала, напирал на технические стороны владения пакетом Adobe Photoshop, уже потом, позже стала вырисовываться картина общей теории цвета. Вообщем, очень борзо взялся за дело. Поэтому, полагаю, что общий подводный камень для всех начинающих мэт-пеинтеров это "уживание" в гармонии всех рабочих элементов, а так же разделение на планы – передний, средний, задний. Вот этот вопрос мне чаще всего и задают начинающие мэт-пеинтеры.

Нажмите что бы увеличить3dgo.ru: Станислав, расскажите, пожалуйста, как Вы собираете материалы для своих работ? Используете все возможности Интернет, или самостоятельно создаете подборку фотографий и материалов собранных Вами?

Станислав: Когда только начинал заниматься монтажом из различных фотографий и слыхом не слыхивал о том, что существует такая техника как matte painting, была основная проблема в доступе к референсам. Где я только не "лазил", чтобы найти качественные фотки. Потом купил обычную мыльницу и снимал все, что попадется под руку. Потом узнал о многих замечательных сток-ресурсах, в том числе cgtextures.com и sxc.hu. Сейчас доступно много стоков, бесплатных и платных. В итоге, за несколько лет у меня набралось около15 000 референсов общим объемом 20 Гб. А сейчас думаю, что половину надо снести, т.к. на заре своего творчества достаточно плохо разбирался в качестве/необходимости. Порой просматривая свою коллекцию натыкаешься на просто уникальнейшие по своей безобразности и убогости так называемые "фотографии" ))  Говорю это к тому, что так же немаловажно ценить собственное время, с убогими рефами вы потеряете и время и нервы. 

Нажмите что бы увеличить3dgo.ru: Скажите, в чем ищите вдохновение? Бывают ли творческие застои, и как вы с ними боритесь, какой ваш рецепт?

Станислав: Не знаю, что такое творческие застои. Всегда есть над чем работать. Бывает лень подходить к компьютеру, но я придумал для себя одну фишку, просто садишься за планшет, открываешь Photoshop, начинаешь рисовать, проходит 5 мин и ты уже с головой в работе. Главное открыть программу и сделать пару десятков мазков. Всё. Включается воображение, мозг начинает лихорадочно работать и уже не хочется отрываться от картинки.
А вдохновение ищу практически во всем. В первую очередь – это работы старых мастеров. Хожу на выставки художников, в музеи, коллекционирую альбомы и книги об искусстве. Посещение выставок и музеев для меня играет важную роль. Когда смотришь на оригинал, к примеру старого мастера, замечаешь тысячу нюансов, можешь чуть ли не носом тыкаться в полотно, всё тщательно фиксировать, перед твоими глазами всё "живое". Это совсем не то, что нам дают картинки из интернета, скажем того же Веласкеса или Верещагина, порой ужасного качества, с засветами и искаженной гаммой. Поэтому, хотелось бы посоветовать, если есть возможность чаще ходите на выставки, покупайте альбомы художников в хорошем качестве, это всё потом сторицей окупится.
Музыка так же для меня играет не последнюю роль. Прослушивая Д. Верди  пришла в голову идея создания "Golden Sunrise in Fairy Land".
Общение с коллегами и просмотр их работ так же вдохновляет и невероятно подстегивает к работе.

Нажмите что бы увеличить3dgo.ru: У вас совершенно фантастические пейзажи, расскажите, пожалуйста, о технике их создания? Как Вам удается передать столько деталей и обширную цветовую палитру?

Станислав: Я всегда работаю по определенной схеме. В первую очередь в голову приходит идея. Потом эту идею развиваю в виде эскиза. Могу сделать один, а могу и 25, пока не найду нужную мне композицию. Далее развиваю этот эскиз, смотрю по массам, по освещению, по ритму.  Потом идет работа с референсами, детализация, а в самом конце обобщение. Насчет того как удается передать множество деталей…. Вообще-то, я полагал, что мне наоборот недостает деталей :-) Ну, вообще, да - слышу это не в первый раз, что Стас это тот тип который любит подетализировать. Открою секрет, мне хотелось бы больше деталей и детализации. Здесь, правда, может возникнуть проблема перегруза. Очень важно, чтобы в работе не было ничего лишнего.
Всегда работаю в большом формате, так удобнее отрабатывать детали. Или, к примеру, увеличиваю объект и отрисовываю в отдельном файле. Потом обратно уменьшаю и кидаю в оригинал. Люблю отъезжать от монитора на пару-тройку метров, флипать картинку по горизонтали и вертикали.
Очень критично отношусь к своим картинкам. Если все детали отработаны, а в цвете что-то "вываливается" переделываю. Могу кинуть в wip и послушать советы коллег. Некоторые работы "замораживаю" от месяца до года или больше. Это, естественно, касается только персональных работ. С заказчиком, конечно же, такие приколы не пройдут, тут приходится быть пунктуальным.
Насчет обширной палитры, здесь больше интуиция помогает и законы цвета. Цвет – дело тонкое, предельно серьезно продолжаю изучать. Хочется большего.

Нажмите что бы увеличить3dgo.ru: Создавая mate painting работы, Вы достигли высокого уровня, задумывались ли Вы о расширении своего вектора интересов, есть ли планы изучить другие области CG? Например, трехмерную графику и использовать её в своей работе? На ваш взгляд это расширило бы ваши возможности?

Станислав: Расширило бы в плане скорости. Дело в том, что трехмерная графика не решает вопросы рисунка, цвета и композиции. Не люблю вести работу просто давя на кнопки. Обязательно надо рисовать, чем больше, тем лучше. У меня на компе стоят Maya, Cinema 4D, Vue, Zbrush. Ковыряюсь эпизодически. Архитектуру кое-какую лепил. Согласен: весело, занятно, но не мое. Тем не менее, с огромным удовольствием захожу в 3D галереи и любуюсь прекрасными работами многих 3D художников. У меня и друзей-то тридешников больше чем цифровых живописцев. Вообще, сейчас больше нацелен на concept art, mate painting для меня уже как игрушка.

Нажмите что бы увеличить3dgo.ru: Поделитесь своим опытом использования ZBrush. Какие работы уже были созданы в этом пакете или будут созданы? Что в этом пакете может подойти художникам mate-painting направления?

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

3dgo.ru: Какой 3D пакет Вам больше нравится, и для каких задач вы стараетесь использовать его?

Станислав: Из 3D пакетов мне больше по душе Cinema 4D. Все задачи опять же связаны с разработкой архитектурных форм.

Нажмите что бы увеличить3dgo.ru: Вам нравятся работы художников раннего Возрождения, прерафаэлитов и ориенталистов. Расскажите подробней о работах ориенталистов, что это за направление в искусстве, каких известных художников и их картины можно отнести к ним?

Станислав: Целый ряд художников Западной Европы от Делакруа и Шассерье до Жерома, Верещагина и Лорда Уикса разрабатывали тему Востока в своих произведениях. И этот вектор направленный на Восток давно и глубоко укоренен в западном менталитете, выбрав путь так называемого "прогресса" Европа почувствовала себя лишенной того, что вносит в жизнь таинственность, возвышенную красоту, жертвенность, подлинность и в конце концов сказку. Мы можем вспомнить "Персидские письма" Монтескье или "Саламбо" Гюго, в них ощущается волшебство, пряный колорит и страстность Востока. Вот за всем этим туда направлялись и живописцы, чтобы потом явить глазам публики ярчайшие краски, новые невиданные цветовые гармонии и, по большому счету, "другую реальность".

Нажмите что бы увеличить3dgo.ru: Есть ли современные художники, чье творчество Вам нравится и вдохновляет, чья техника исполнения для Вас является примером?

Станислав: Безусловно. Целая плеяда великолепных и замечательных российских и зарубежных художников. Откровенно говоря,  наши художники мне больше нравятся, в работах чувствуется больше души, некий оригинальный шарм, свободная импровизация, нет той холодной техничности, которая в большинстве своем присуща иностранным коллегам. Потенциал у нас громадный и это круто.  Хотелось бы отметить таких крепких художников и мэт-пеинтеров как Dimms, Джама Джурабаев, Алексей Сорока, Евгений Сидельников, Дима Глазырин, Алексей Головченко, mvn78. Да всех и не перечислишь. Из иностранных коллег нравятся Sean Samuels, Raphael Lacoste, Jaime Jones, Brett Northcutt, Chris Stoski, Chris Thunig и многие другие.
Ну, а примером для меня являются Василий Верещагин, Аркадий Пластов, Жан-Леон Жером (Jean-Leon Gerome), Эдвин Лорд Уикс (Edwin Lord Weeks) и, конечно же, великий Рембрандт.

Нажмите что бы увеличить3dgo.ru: В своей работе Вы используете пакет Adobe Photoshop, почему Вы выбрали его? Есть ли у Вас свои секреты работы с этой программой? Чего вам не хватает в рабочем ПО или же напротив все устраивает?

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

3dgo.ru: Станислав, какие у Вас есть увлечения? Как проводите свободное время?

Нажмите что бы увеличитьСтанислав: Все мои увлечения неразрывно связаны с искусством. Раньше занимался спортом, музыкой, марки собирал :-) А сейчас даже на нервах поиграть некогда. Мой зад накрепко приклеен к креслу, а кресло к столу, а на столе планшет. Вот и всё увлечение. Но, по возможности, делаю вылазки в музеи, выставочные залы, книжные магазины и кинотеатры.

3dgo.ru: Вы следите за работами молодых художников? Стараетесь ли помогать им советами или обмениваться опытом? Нам нередко пишут пользователи с просьбой выбить у вас Making Of одной из работ, у вас нашлось бы для этого время?

Нажмите что бы увеличитьСтанислав: Слежу за всем, что происходит в художественной среде, и за молодыми талантами и за мастерами. Ребята обращаются, пишут письма, стараюсь по возможности помогать советами. Когда начинал заниматься мэт-пеинтом, вовсю собирал работы художников, раскладывал их в папочки, каталогизировал, а потом очень захотелось всем этим поделиться с другими, даже создал в "в контакте" группу "MATTE PAINTING & VISUAL EFFECTS (VFX)" и закачал всю свою коллекцию. Добавил ссылки на уроки, полезные ресурсы и т.д. Сейчас уже почти нет времени заниматься группой, в связи с плотной загруженностью по работе, слава Богу мне с этим помогает замечательная девушка Елена Королева, контролирует весь процесс. Так что если кому интересно, милости просим в маленькое сообщество почитателей matte painting.
Насчет уроков. У меня есть пара уроков на cg.creativefan.com, но я их писал на английском. "Golden Sunrise" даже получил звание "лучшие уроки августа" и выставлялся на многих ресурсах. Сейчас дополняю оба текста эксклюзивно для 3dgo.ru и готовлю, можно сказать гигантский по объему тутор на работу "Post-Atlantis. Sacred Lands" c большим кол-вом скриншотов и технической базой. Надеюсь редакция 3dgo.ru меня не пришибет большим тяжелым тапком за мою гигантоманию и словоблудие. Ну и дорогие читатели, очень надеюсь, раньше времени не отправят меня в ад, скакать по сковородкам. Похоже, черти там очень злые.

Нажмите что бы увеличить3dgo.ru: Что можете порекомендовать начинающим художникам, работающим в направлении mattepainting?

Станислав: В первую очередь, это огромнойлюбви и уважения к своему роду деятельности, во-вторых, смелости и даже борзости и, в третьих, железного терпения. Это то, что я для себя определил с самого начала и держусь этих правил до сих пор.  Очень бы хотелось, чтобы юные таланты особое внимание уделяли изучению работ не только современных художников, но и старых мастеров. Помимо технической базы, главную роль играют азы рисунка, перспективы, теория цвета. Читайте и изучайте любую доступную литературу по рисунку и живописи. По возможности, делайте копии великих художников, скрупулезно штудируйте. Ходите на выставки, в музеи. Самое важное, помимо практики, это работа с натуры. Выбирайтесь на улицу, делайте почеркушки карандашом или акварелькой, запоминайте состояния природы, можно просто на листике записывать цвета неба, объектов, переходы различных оттенков, запоминайте, фотографируйте, снимайте на видео, вообщем, делайте что хотите, но обязательно как-то фиксируйте окружающую обстановку. И держите в памяти. Развивает память и воображение. Россия гигантская по террирории страна, можно найти пейзажи похлеще Новой Зеландии, Аляски или Сахары. Если отправляетесь в отпуск берите обязательно фотики, видеокамеры, блокнотики, хотя бы один карандаш, наблюдайте и фиксируйте натуру.
Чаще общайтесь с коллегами на различных сайтах и форумах посвященных цифровому искусству, смотрите и изучайте уроки и видео-туторы. Последнее, вообще бесценный материал для апгрейда.
Нажмите что бы увеличить Сейчас большое кол-во бесплатных и платных стоков, собирайте свою персональную коллекцию. Изучение 3D пакетов тоже весьма полезное занятие для мэт-пеинтера, если, конечно, не собираетесь всю жизнь посвятить концепт-арту.
И последнее, в начале своего творческого пути старайтесь не работать с одним референсом, используйте больше фотографий (3-4 вполне достаточно), режьте их, кромсайте, вытягивайте, крутите в разные стороны, клонируйте по кусочкам, манипулируйте как хотите. Не бойтесь экспериментировать. Я с самого начала, что только с ними не делал, это очень помогает развитию воображения, круто включает фантазию. Второй момент, начинайте работать с простыми композициями, не стоит с самого начала гнать по 10 планов с кучей объектов. Так как на самом деле плана всего три: передний, средний, задний. Максимально упрощайте на первых порах свои задачи. Если что-то не получается, разбивайте задачу на несколько частей и поэтапно ее решайте. И третье, придумали идею, сразу рисуйте минимальный скетч, хотя бы слегка линиями наметьте композицию, можете просто подписывать расположение основных деталей, если совсем с рисунком худо. Продумывайте источник света, размещайте объекты, мысленно включайте лампочку на "холсте",  кладите тень и свет, потом уже занимайтесь цветом. Многие великие художники сначала "писали" в монохроме, потом уже постепенно вводили цвет, как например, Лейтон. Несмотря на то что он был прекрасно осведомлен в анатомии, всегда перед тем как создать многофигурную композицию, лепил и драпировал фигуры, одевая их в муслин, тщательно изучал и потом уже приступал к работе над картиной. Это уже какая-то непередаваемая словами любовь к искусству, несмотря на уже годами отработанное мастерство. Или забавные, но правдивые истории с Тернером, у которого готовые работы выставлены в выставочном зале, публика дефилирует по залам, лицезреет прекрасные шедевры, а Тернер как ни в чем не бывало стоит у одной из своих уже законченных полотен, в котелке, невозмутимый, и что-то там размеренно подтирает, подкрашивает, подмазывает кистью, отходит на десять метров, смотрит внимательно, потом вновь возвращается и продолжает писать. Все вокруг – "ха-ха-ха", а он не обращая ни на кого внимания делает свое дело. Даже карикатуры рисовали на данный эпизод.  Вывод здесь простой - нет предела совершенству. Плюс безграничная любовь к искусству и кропотливый труд, который направлен на глубокое и всестороннее изучение предмета. Постепенно, постоянно практикуясь и смело продвигаясь вперед, вы достигнете высоких результатов, а иначе быть не может. Всё в ваших руках!

3dgo.ru: Станислав, благодарим Вас за интересную беседу. Редакция 3dgo.ru желает Вам неиссякаемого вдохновения, успехов в творчестве и во всех Ваших начинаниях, и с нетерпением ждем Ваши новые работы в галерее 3dgo.ru.

 

Здесь всё предельно просто фрилансер находит себе подходящий ...

Нажмите что бы увеличитьЗдесь всё предельно просто: фрилансер находит себе подходящий проект (например, с помощью специализированных бирж удаленной работы), оставляет заявку с примерами выполненных работ и ждёт решения заказчика. Если заказчика устраивает уровень фрилансера и предложенная цена, то стороны переходят к переговорам (с помощью ICQ, электронной почты, Skype и др.), обговаривают условия сотрудничества, а затем фрилансер приступает к выполнению работы. После её завершения происходит оплата переданной работы заказчиком. Но это в идеальном варианте :-) На деле же всё может быть иначе: заказчик исчезнет после передачи ему готовой работы, не оплатив проект; фрилансер «заболеет» и не выйдет больше на связь, забрав предоплату и т. д. и т. п.
Кроме того, не стоит забывать, что для физического лица налог на доходы составляет 13% (против 6% для ИП). Но при маленьких суммах это не критично.
Из плюсов, конечно, отсутствие бумажной работы и канцеляризма, полная свобода действий и возможность для заказчика сэкономить на стоимости выполнения работы.
Такой способ сотрудничества больше всего подходит в качестве дополнительного заработка тем фрилансерам, которые имеют ещё и постоянную работу или тем, кто только начинает зарабатывать с помощью удаленной работы.

 

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

Во всех приложениях трехмерного моделирования и анимации, включая 3ds Max, имеется собственное представление локального вращения, т.е. поворота вокруг локальных осей объекта. Но как было только что показано, вращение в локальной системе координат не дает истинных значений для треков X Rotation, Y Rotation и Z Rotation в окне Track View. В этом смысле локальное вращение не позволяет правильно судить о происходящем.

С другой стороны, рамочная система координат дает более точное представление об истинных значениях вращения вокруг осей X, Y и Z, хотя вращение в этой системе вокруг нескольких осей рассчитывается в определенном порядке. Если изменить порядок расчетов, конечная ориентация объекта, скорее всего, окажется другой.

Таким образом, точного способа представления конкретного локального вращения с помощью значений эйлерова вращения вокруг осей X, Y и Z не существует. В силу особого характера расчетов вращения в трехмерном пространстве этим недостатком страдают буквально все приложения трехмерного моделирования и анимации.

 


Страница 1 из 34

Архив статей

 авг   Сентябрь 2019   окт

ВПВСЧПС
  1  2  3  4  5  6  7
  8  91011121314
15161718192021
22232425262728
2930 
Julianna Walker Willis Technology

Случайная новость

vladirr

Привет всем! Вот и решился я снова потревожить ваш покой. Пойдем мы, как говорится - ab ovo, то бишь от постановки яйц... тьфу, задачи. :)

Те, кто занимался низкополигональным моделированием, особенно если занимались не только в качестве хобби, знают две очень полезные утилиты - Summary Info (вызывается последовательным нажатием ALT+F+U, дает полную информацию о составе и объектах сцены) и PoligonCounter (по умолчанию - клавиша Q/(в пятой версии - клавиша 7), показывает количество вершин и фейсов для выделенного объекта). В принципе - этого вполне достаточно, чтобы контролировать процесс моделирования... но лично мне неудобно с ними работать - а потому приступим...

Сегодняшний урок достаточно прост, поскольку несет нагрузку не учебную, а абсолютно практическую - мы попытаемся сделать так, чтобы нужная нам при работе информация всегда находилась перед глазами, а не где-то там, куда добираться 15 вест, зимой и в гору :) На кого расчитан данный урок? Я подразумеваю, что вы в состоянии самостоятельно открыть окно MaxScriptListener, не задавая вопросов что это такое (ну в крайнем случае - подсмотрев в справке :)), создать объект, выделить его и снять выделение, обнулить/перезапустить 3dsmax (да простят меня разработчики, но в дальнейшем я буду называть его просто "максом" )... ну и еще умение печатать без ошибок :)... вроде все, поскольку теорией мучить сегодня я не буду, кто хочет - сам найдет, а кто не хочет... думаю все понятно.

Для начала определимся, что же мы хотим видеть?
Нас интересуют в общем-то только два параметра - количество фейсов в сцене вообще, и количесво их же, но у редактируемого в данный момент объекта. Но поскольку при работе с конкретным объектом некоторые особо продвинутые товарищи предпочитают видеть еще и количество вершин в нем, то, что же делать - дадим им такую возможность :). Итак, мы должны получить в конечном итоге три следующие строки:

SelectObj Vertex= ###
SelectObj Face =###
Scene Face = ###

Задача поставлена, соответственно - половина дела сделана.

Переходим к решению.

Во первых, у нас сразу же есть проблема - тот же PolygonCounter имеет небольшой недочет - при выделении сплайнового объекта он начинает показывать количество вершин и полигонов для этого объекта, исходя из преобразования данного сплайна в mesh - объект. Не знаю, какой логикой пользовались создатели данного скрипта, но для нужд низкополигонального моделирования она не подходит - даже если в процессе создания модели и используются сплайны, то только как вспомогательные объекты, ну а при переводе данного объекта в вид редактируемого mesh-а любой нормальный моделлер сократит количество полигонов получаемого объекта до минимума. Эрго - данная информация нам просто не нужна, а в некоторых случаях даже вредна, поскольку дает искаженное представление о состоянии сцены. Ввиду вышесказанного все сплайновые объекты мы с вами должны будем просто проигнорировать в нашем алгоритме, для чего ввести соответствующее условие выбора. А поможет нам в этом метод Category, возвращающий категорию выбранного объекта.

Обнулите макс, создайте в нем бокс как представителя класса геометрических объектов, и окружность, как представителя класса спрайновых объектов. Нажмите клавишу Q/7 (либо другим способом запустите PolygonCounter) и выделите сначала бокс, а потом окружность. Наблюдая за значениями количества фейсов убедитесь в наличии ошибки алгоритма. Для полной уверенности можно так же взглянуть на Summary Info - этот алгоритм не учитывает полигоны для сплайнов - и правильно делает :)
Убедились? Будем лечить... Открываем окно MaxScriptListener и в нижнем поле вводим:

$Circle01.category (Circle01 - имя нашей окружности, если у Вас не совпадает, подставьте свое)

Жмем Enter (на цифровой панели!) и получаем в том же окне ответ:

#Splines

Все верно, это у нас сплайн :)
Однако сейчас мы указали объект напрямую, через его имя, но делать это постоянно мы не можем, потому воспользуемся тем фактом, что данный объект выделен, следовательно - может быть вызван с помощью метода $selection
выделен у нас при работе один объект, следовательно он будет первым и единственным элементом массива, представляющего выделение. Для проверки введем:

$selection.count - мы запрашивает количество элементов массива

после ввода получаем ответ

1 - мы получили число элементов выделения, как ни удивительно, но оно и правда равно еденице :) Вводим:

$selection[1] - доступ к первому элементу массива, жмем enter, получаем ответ:
-----------------
$Circle:Circle01 @ [-11.532874,-35.139202,0.000000] - в квадратных скобках - положение опорной точки в пространстве, у Вас, естественно - другие значения...

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

$selection[1].category
----------------
#Splines

выделим бокс, и повторим ввод, для чего мышкой установим курсор в окне MaxScriptListener на ту же строку и снова нажмем enter (для выполнения операции, вводимой с клавиатуры нажимать enter нужно именно на цифровой панели).

$selection[1].category
----------------------------------
#Standard_Primitives

как видно, данный способ позволяет определить категорию выделенного объекта.

теперь определимся с фейсами-вершинами... для получения такой информации воспользуемся методом getPolygoncount, возвращаюшим массив из двух элементов - количество фейсов, и количество вершин:

getPolygoncount $selection[1]
----------------------------------------------
#(12, 8)

Ну это уже практически все :)

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

if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
)
else
(
getPolygoncount $selection[1]
)

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

#(12, 8)

теперь выделите окружность, снова выделите весь текст и нажмите ввод - ответ должен быть:

undefined - то есть не определено... что и требовалось.

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

if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
)
else
(
(getPolygoncount $)[1]
)
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
)
else
(
(getPolygoncount $)[2]
)

повторите операции с проверкой работы алгоритма, поочередно выделяя бокс и окружность, и выполняя написанный выше код

С общими параметрами разобрались, теперь полезем в "святая святых" :) - займемся интерфейсом. Для начала в окне MaxScriptListener выполните File->New Script (нажмите CTRL+N) и создайте пустой файл сценария.
--------------
macroScript ScenePolyCounter
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ScenePolyCounter"
toolTip:"ScenePolyCounter"
(
)
----------------
Сохраните файл как

\\root_max\UI\Macroscripts\Macro_ScenePolyCounter.ms

где root_max - корневая директория макса. Таким образом мы разместили наш скрипт в разделе пользовательского интерфейса. С помошью проводника найдите этот файл и измените ему разрешение на *.mcr - чтобы макс воспринимал его как макроскрипт. У меня получилось следующим образом:

D:\WORK\3D_PROG\3DSMAX5\UI\Macroscripts\Macro_ScenePolyCounter.mcr

Теперь надо закрыть макс и снова стартовать его... Идем в меню Customize->Customize User Interface, вкладка Toolbars,
группа - main UI, категория, как и указали - MAX Script Tools. Если все сделано правильно, то в окне Action должен находиться наш макрос. Берем его, и ташим на панель закладок, например - на вкладку объекты. В принципе это не важно, поскольку в последствии мы все равно удалим эту кнопку, но поскольку работать мы будем с объектами, то так несколько удобнее. У нас появилась новая кнопка с надписью ScenePolyCounter. Закрываем окно редактирования интерфейса и пытаемся нажать на нашу кнопку. Ничего не происходит, и это правильно, ведь мы не указали - что именно должно происходить... Сейчас мы запишем туда код обработчика, и все начнет работать :)

Правый клик мыши по нашей кнопке, выбираем пункт Edit Macro Script. Вводим обработчик нажатия, конечный текст выглядит следующим образом:

-----------------------
macroScript ScenePolyCounter
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ScenePolyCounter"
toolTip:"ScenePolyCounter"
(
local ScenePolyCounterOn = false

on ischecked return ScenePolyCounterOn

on execute do
(
ScenePolyCounterOn = not ScenePolyCounterOn
completeredraw ()
updateToolbarButtons()
)

)
-----------------------

мы добавили:
-обработчик нажатия кнопки ischecked, возвращающий значение переменной ScenePolyCounterOn , в которой хранится состояние нашего макроса - активирована или не активирована. По умолчанию, естественно, неактивна (false).
- обработчик события execute - исполнение, то есть собственно последовательность выпоняемых действий. Первым делом мы в нем меняем значение активности макроса на противоположное, поскольку с каждым вызавом макроса он последовательно активируется и дезактивируется. Для описания этого мы воспользовались оператором NOT, меняющим значение булевской переменной (тип ДА НЕТ) на противоположное. Оставшиеся две строки - перерисовка рабочего экрана и кнопки вызова скрипта.
Нажимаем комбинацию клавиш CTRL+E - так называемое событие Evaluate - аналог компиляции програмного кода. не закрывая окна с телом скрипта пробуем нажать на нашу кнопку. Как мы видим, она изменяет свое состояние, но больше ничего не происходит. Ну что ж, "продолжаем разговор" (С)... Введем следующий код:
-----------------------------
macroScript ScenePolyCounter
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ScenePolyCounter"
toolTip:"ScenePolyCounter"
(
local ScenePolyCounterOn = false
local TextFaceObj, TextVertexObj, TextFaceAll
local lastViewport
fn printtext =
(
TextFaceObj = "SelObjFace : "
TextVertexObj = "SelObjVertex :"
TextFaceAll = "SceneFace : "
gw.wtext [5, 40, 0] TextFaceObj color:(color 255 234 0)
gw.wtext [5, 60, 0] TextVertexObj color:(color 255 234 0)
gw.wtext [5, 80, 0] TextFaceAll color:(color 255 234 0)
gw.enlargeUpdateRect #whole
gw.updateScreen()
if viewport.activeViewport != lastViewport then
(
completeredraw()
lastViewport = viewport.activeViewport
)
)

on ischecked return ScenePolyCounterOn

on execute do
(
if ScenePolyCounterOn then
unregisterRedrawViewsCallback printtext
else
(
registerRedrawViewsCallback printtext
)
ScenePolyCounterOn = not ScenePolyCounterOn
completeredraw ()
updateToolbarButtons()
)
)
---------------------------
нажимаем комбинацию CTRL+E (компилируем код) и нажимаем на кнопку нашего макроса. В активном видовом окне появились три надписи, соответствующие установленным нами. Убеждаемся, что при переключении окон проекции надписи следуют за переключением, а по выключении макроса - исчезают, и идем дальше. Давайте разберемся, что же мы написали.

Во-первых, мы добавили переменную lastViewport, в которой хранится значение текущего окна проекции, и добавили действие - при смене окна проекции перерисовать все видовые окна - completeredraw().

if viewport.activeViewport != lastViewport then
(
completeredraw()
lastViewport = viewport.activeViewport
)

В качестве условия мы поставили выражение viewport.activeViewport != lastViewport . Таким образом, в случае если хранящееся в переменной lastViewport значение текущего окна проекции не совпадает с реальным, получаемым с помощью вызова viewport.activeViewport, мы перерисовываем все окна проекций и меняем значение переменной lastViewport на актуальное. Закомментируйте или удалите строки с данным условием, и попробуйте попереключать окна проекций при активном макросе, чтобы стала понятна необходимость данного условия...
Так же мы добавили вывод наших надписей на экран:

gw.wtext [5, 40, 0] TextFaceObj color:(color 255 234 0)
gw.wtext [5, 60, 0] TextVertexObj color:(color 255 234 0)
gw.wtext [5, 80, 0] TextFaceAll color:(color 255 234 0)
gw.enlargeUpdateRect #whole
gw.updateScreen()
первые три строки - собственно вывод, то есть команда gw.wtext - написать текст, далее координаты вывода в текущем окне, далее - что, собственно писать, ну и в последнем разделе - цвет надписей.
последние две строки -
gw.enlargeUpdateRect #whole - задаем прямоугольник, впределах которого необходимо произвести перерисовку экрана (в данном случае - весь экран)
gw.updateScreen() - собственно перерисовка, то есть вывод на экран заданных значений.

Начинаем собирать кусочки мозаики, то есть создавать конечный код. Дописываем следующее:
-------------------------------
macroScript ScenePolyCounter
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ScenePolyCounter"
toolTip:"ScenePolyCounter"
(
local ScenePolyCounterOn = false
local TextFaceObj, TextVertexObj, TextFaceAll
local lastViewport
fn printtext =
(
TextFaceObj = "SelObjFace : "
TextVertexObj = "SelObjVertex :"
TextFaceAll = "SceneFace : "
if selection.count == 1 do
(
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
TextFaceObj= "SelObjFace :0"
)
else
(
TextFaceObj= "SelObjFace : " + (getPolygoncount $)[1] as string
)
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
TextVertexObj = "SelObjVertex :0"
)
else
(
TextVertexObj = "SelObjVertex :" + (getPolygoncount $)[2] as string
)
)
gw.wtext [5, 40, 0] TextFaceObj color:(color 255 234 0)
gw.wtext [5, 60, 0] TextVertexObj color:(color 255 234 0)
gw.wtext [5, 80, 0] TextFaceAll color:(color 255 234 0)
gw.enlargeUpdateRect #whole
gw.updateScreen()
if viewport.activeViewport != lastViewport then
(
completeredraw()
lastViewport = viewport.activeViewport
)
)
on ischecked return ScenePolyCounterOn
on execute do
(
if ScenePolyCounterOn then
unregisterRedrawViewsCallback printtext
else
(
registerRedrawViewsCallback printtext
)
ScenePolyCounterOn = not ScenePolyCounterOn
completeredraw ()
updateToolbarButtons()
)
)
-------------------------

Что мы добавили? Во-первых, мы определили выделение:
if selection.count == 1 do ,
то есть в случае, если у нас выделен один объект, то мы в соответствии с алгоритмом, выработанным в начале урока, проверяем - является ли он плоской формой, и если не является, то фиксируем количество принадлежащих ему фейсов и вершин.
Так же несколько изменилась строка

TextVertexObj = "SelObjVertex :" + (getPolygoncount $)[2] as string,

здесь мы добавили к нашей записи SetObj... значение, получаемое с помощью метода getPolygonCounter, приписанное в конец записи как строковая переменная: as string для совпадения форматов.
Сохраните макрос и перезапустите макс. Создайте в сцене несколько объектов, включая камеры, вспомогательные объекты, сплайны и, собственно, геометрические объекты. Активируйте наш макрос и попереключайте выделение с одного объекта на другой.

Убедитесь, что все работает как надо...
Небольшое примечание - мы вводили условия только для сплайнов, поскольку во-первых, все остальные объекты, не являющиеся геометрическими - итак не имеют ни вершин, ни фейсов, следовательно - нам жить не мешают :) а во-вторых - как сказано в самом начале - мы делаем инструмент для низкополигонального моделирования, соответственно - остальные объекты нас вообще в данной ситуации не интересуют.
Итак, нам осталось немного - получить информацию о всей сцене. Для этого нам придется воспользоваться во-первых, методом rootnode, а заодно вспомнить, что все объекты сцены являются потомками корневого узла сцены. Следовательно, задав обращение rootnode.children мы должны получить список всех объектов сцены.
Если вы успели обнулить макс - создайте в сцене небольшой хаос из объектов различных категорий :) и открывайте окно MaxScriptListener. Вводим:
rootnode.children
-------------------------------
#children($Box01, $Cylinder01, $Pyramid01, $L-Ext01, $Plane01, $Arc01, $NGon01, $Fspot01, $Camera01, $BoxGizmo01)

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

getPolygonCount rootnode.children[1]
rootnode.children[1].category
-----------------------------
#(12, 8)
#Standard_Primitives

как мы видим, все правильно и аналогично тем действиям, что мы делали с выделением одного объекта. Разница лишь в том, что в данном случае мы вынуждены будем организовать цикл и последовательно суммировать фейсы всех объектов сцены. Для этого нам понадобится оператор while ... do и значение количества объектов в сцене, которое мы получим с помощью метода count.

В общем виде алгоритм будет выглядеть следующим образом:

facecount = 0 - - задаем стартовое значение количества фейсов
iter=1 - - задаем начальное количество итераций цикла
countObjScene = rootnode.children.count - - получаем информацию о количестве объектов в сцене
while iter < (countObjScene+1) do - - задаем цикл
(
if (rootnode.children[iter].category == #shape) or (rootnode.children[iter].category == #Splines) then
(
TextFaceAll= "SceneFace :0"
)
else
(
facecount = facecount + (getPolygoncount rootnode.children[iter])[1]
)
TextFaceAll= "SceneFace : " + facecount as string
iter = iter+1
)



дописываем это выражение в наш макрос и проверяем:
-----------------------------------
macroScript ScenePolyCounter
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ScenePolyCounter"
toolTip:"ScenePolyCounter"
(
local ScenePolyCounterOn = false
local TextFaceObj, TextVertexObj, TextFaceAll
local lastViewport
fn printtext =
(
TextFaceObj = "SelObjFace : "
TextVertexObj = "SelObjVertex :"
TextFaceAll = "SceneFace : "
if selection.count == 1 do
(
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
TextFaceObj= "SelObjFace : 0"
)
else
(
TextFaceObj= "SelObjFace : " + (getPolygoncount $)[1] as string
)
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
TextVertexObj = "SelObjVertex : 0"
)
else
(
TextVertexObj = "SelObjVertex :" + (getPolygoncount $)[2] as string
)
)
facecount=0
countObjScene = rootnode.children.count
iter=1
while iter < (countObjScene+1) do
(
if (rootnode.children[iter].category == #shape) or (rootnode.children[iter].category == #Splines) then
(
TextFaceAll= "SceneFace :0"
)
else
(
facecount = facecount + (getPolygoncount rootnode.children[iter])[1]
)
TextFaceAll= "SceneFace : " + facecount as string
iter = iter+1
)
gw.wtext [5, 40, 0] TextFaceObj color:(color 255 234 0)
gw.wtext [5, 60, 0] TextVertexObj color:(color 255 234 0)
gw.wtext [5, 80, 0] TextFaceAll color:(color 255 234 0)
gw.enlargeUpdateRect #whole
gw.updateScreen()
if viewport.activeViewport != lastViewport then
(
completeredraw()
lastViewport = viewport.activeViewport
)
)
on ischecked return ScenePolyCounterOn
on execute do
(
if ScenePolyCounterOn then
unregisterRedrawViewsCallback printtext
else
(
registerRedrawViewsCallback printtext
)
ScenePolyCounterOn = not ScenePolyCounterOn
completeredraw ()
updateToolbarButtons()
)
)
--------------------------------------------------

Должно все работать. Мы неплохо потрудились, напоследок вкусности :)

О чем хотелось бы сказать в заключение?
Во первых, о том, что не доделано... можно было задать условие, при котором перерисовывался бы не весь экран, а только та часть его, в которой мы пишем... если кому интересен этот вариант - отправляю разбираться с алгоритмом, реализованным в макросе PoligonCounter, по крайней мере в пятой версии макса этот способ реализован.
Можно было обойтись и без цикла для определения количества полигонов в сцене, однако исходя из того, что макрос писался под задачи низкополигонального моделирования и, соответственно, небольшого количества объектов в сцене и небольшого числа полигонов - данный способ скорее предпочтителен. Причина проста - быстрота написания, легкость доступа к коду и возможность редактирования "на лету", а главное - не требуется дополнительных компиляторов кода, фактически работа ведется в текстовом редакторе.
Ну и главное - как всегда - учите скрипты, они строить и жить помогают :) Два способа изучения мы рассмотрели в данном уроке. Первый - с использованием MaxScriptListener - это хороший инструмент для отладки черновых кусков кода, наблюдения за результатами своих действий. Второй - загрузка своего сценария как макроса и интерактивная его отладка. Лично мне второй способ наиболее симпатичен хотя бы потому, что позволяет сохранить в текстовом файле результаты своих попыток, даже если эти искания приводят к зависанию компьютера (ну бывает, бывает :)) - главное чаще использовать волшебную комбинациюCTRL+S... В качестве источников информации можно использовать справку (она достаточно тупа, не говоря уже про то, что на буржуйском) и волшебную кнопку - правую на мышке. Кликаешь на любую (ну или почти любую) кнопку на панели закладок, выбираешь Edit Macro Script и получаешь неограниченный доступ к информации о строении, методах и процедурах макса. Главное при этом - научиться разбираться в коде и не бояться экспериментировать...

Ну что ж - вот и конечный текст нашего макроса с небольшим добавлением как в заголовке, так и в самом теле макроса. Заодно и задачка - найти 10 отличий и понять, зачем они нужны :)

--------------start macros--------------------------------
-- MacroScript File

-- Created: Sept 12 2003
-- Author: VladiRR
-- MacroScript for Turning On a Polygon counter in the viewpot.
--***********************************************************************************************
-- MODIFY THIS AT YOUR OWN RISK


macroScript ScenePolyCounter
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ScenePolyCounter"
toolTip:"ScenePolyCounter"
(
local ScenePolyCounterOn = false
local TextFaceObj, TextVertexObj, TextFaceAll
local lastViewport
fn printtext =
(
try
(
TextFaceObj = "SelObjFace : "
TextVertexObj = "SelObjVertex :"
TextFaceAll = "SceneFace : "
if selection.count == 1 do
(
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
TextFaceObj= "SelObjFace : 0"
)
else
(
TextFaceObj= "SelObjFace : " + (getPolygoncount $)[1] as string
)
if ($selection[1].category == #shape) or ($selection[1].category == #Splines) then
(
TextVertexObj = "SelObjVertex : 0"
)
else
(
TextVertexObj = "SelObjVertex :" + (getPolygoncount $)[2] as string
)
)
facecount=0
countObjScene = rootnode.children.count
iter=1
while iter < (countObjScene+1) do
(
if (rootnode.children[iter].category == #shape) or (rootnode.children[iter].category == #Splines) then
(
TextFaceAll= "SceneFace :0"
)
else
(
facecount = facecount + (getPolygoncount rootnode.children[iter])[1]
)
TextFaceAll= "SceneFace : " + facecount as string
iter = iter+1
)
gw.wtext [5, 40, 0] TextFaceObj color:(color 255 234 0)
gw.wtext [5, 60, 0] TextVertexObj color:(color 255 234 0)
gw.wtext [5, 80, 0] TextFaceAll color:(color 255 234 0)
gw.enlargeUpdateRect #whole
gw.updateScreen()
if viewport.activeViewport != lastViewport then
(
completeredraw()
lastViewport = viewport.activeViewport
)
)
catch ()


)
on ischecked return ScenePolyCounterOn
on execute do
(
if ScenePolyCounterOn then
unregisterRedrawViewsCallback printtext
else
(
registerRedrawViewsCallback printtext
)
ScenePolyCounterOn = not ScenePolyCounterOn
completeredraw ()
updateToolbarButtons()
)

)
--------------end macros----------------------


Нам осталось только удалить созданную вначале урока кнопку (с помощью правого клика мышки и выбора меню Delete Button), и назначить нашему макросу горячую клавишу для вызова. Лично у меня сейчас настроен на клавишу Q вызов макроса PoligonCounter, а на комбинацию CTRL+Q - свежесозданный. Используются по очереди и по ситуации оба.

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

Успехов всем! Если есть вопросы - пишите Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , по возможности постараюсь ответить.

Титры:
Создание макроса - 2 часа
Написание урока - 3.5 часа
выпито: кофе - 2 литра
пива - не помню
при написании урока ни один компьютер не пострадал.

Скачать макрос урока

Всегда Ваш - VladiRR

далее