Что бы вы поменяли в синтаксисе языка C++

Tarsius
29.12.2006, 18:10

Уважаемые программисты, предлагаю обсудить тему «Что бы вы поменяли в синтаксисе языка C++». Возможны любые варианты, даже самые невероятные, вроде добавления набора логики из языка Prolog, или самые глупые, вроде добавления знака $ перед именами переменных. Прошу, высказывайте ваше мнение, не стесняйтесь!
P.S. Заранее прошу прощения за повторение, т.к. это сообщение уже фигурировало в теме «Вопросы: С и C++» но мы с уважаемым и авторитетным программистом .DeV!L, немного обсудив данный вопрос, решили создать отдельную тему. Спасибо за понимание. :)


cleg
29.12.2006, 23:10

гм…
убрал бы множественное наследование
ввел интерфейсы
уравнял бы ссылки и укаатели
заменил . -> :: на что-то одно. например .
ввел бы строки нормальные
короче получил бы яву :-)
еще добавил бы: указатели на тип, лямбда-выражения, хвостовую рекурсию
потом убрал ВСЕ языковые неоднозначности. получился бы пайтон


Ilya_Okonsky
29.12.2006, 23:20

гм…
убрал бы множественное наследование
ввел интерфейсы
уравнял бы ссылки и укаатели
заменил . -> :: на что-то одно. например .
ввел бы строки нормальные
короче получил бы яву :-)
еще добавил бы: указатели на тип, лямбда-выражения, хвостовую рекурсию
потом убрал ВСЕ языковые неоднозначности. получился бы пайтон
та не, множественное наследование иногда даже полезно.
>>заменил . -> :: на что-то одно. например .
нее, этого не надо, как по мне, без них читабельность будет меньше
строки итак есть. Чем тебя string из STL не удовлетворяет?
Я бы хотел вот так: вызов функций внешенего класса, из функции внутреннего класса, без создания екземпляра внутреннего класса.
если по-русски – то это так:
class A
{

public:
void FuncA();
private:
class B
{
void FuncB{FuncA();}
};
};
Чтобы такая конструкция была возможно без лишнего геморроя. (типа во внутреннем классе создавать указатель на внешний, и т.д.)
А! вспомнил! Видел как один извращенец или просто сильный фанат паскаля сделал вот так:
#define begin {
#define end }
ГЫ! ЛОЛ!


torn
30.12.2006, 00:12

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



Курсы Python

cleg
08.06.2007, 19:40

Для начала – ученики отписываемся ;-)
Потом – если будет человек 10 я начну.
ЗЫ Завтра постараюсь сделать пробный урок.
ЗЗЫ Блин, как плохо будет без постоянного модератора :-(
Так, буду тут писать результаты.
Урок 1.
1. ALIK
2. Slash
3. rw)x
4. DOMINUStrator
5. Givi
6. Psih
7. qwone
Урок 2.
1. Slash
2. Joker
3. Psih
Урок 3.
1. Slash


Givi
08.06.2007, 19:47

Мочи!!! Я первым буду… ;-)


pauk
08.06.2007, 20:09

кто крайний?=)
з.ы. я втарой, только вот, в чем писать то?


GRUNGER
08.06.2007, 20:10

Предлогаю начать с поиска компилятора и вообще всех «причендалов» :)


cleg
08.06.2007, 20:14

Предлогаю начать с поиска компилятора и вообще всех «причендалов» :)
дык с этого и начнем. что ж мы звери что ли? :-) кстати – ты «записываешься» или просто совет дал? :-)


GRUNGER
08.06.2007, 20:39

записывающейся :)


((Gad))
08.06.2007, 21:24

Для начала попробую а там посмотрим


Psih
08.06.2007, 21:36

/записалсо


qwone
08.06.2007, 23:59

впиши и меня


DOMINUStrator
09.06.2007, 00:48

йа хотеть знать, что есть питон… всмысле поехали :smile:

ещё неплохо было бы в каждом уроке что-нибудь типа «домашних заданий» – написать программу и выслать в личку «преподу» :smile: и если clegу будет не лень чтобы он проверил и оценил, хотя бы по той же 5ти бальной шкале :smile:


GRUNGER
09.06.2007, 01:20

йа хотеть знать, что есть питон… всмысле поехали :smile:

ещё неплохо было бы в каждом уроке что-нибудь типа «домашних заданий» – написать программу и выслать в личку «преподу» :smile: и если clegу будет не лень чтобы он проверил и оценил, хотя бы по той же 5ти бальной шкале :smile:
Ага.. а также дневники и родительские собрания )) И выпускной )


Givi
09.06.2007, 01:23

И выпускной )
пацталом ))))))))))

по сабжу: неплохо было бы начать еще раньше чем установка языка (интерпретатора).
cleg! Расскажи для чего язык используется, что можно реального на нем писать… Интересно!

Впрочем, курс обучения пусть форимруется самим преподавателем по его усмотрению ;-) Мы в тебя верим!!! ;-)


ALIK
09.06.2007, 14:11

готов учиться


Quake
09.06.2007, 14:16

я тож, сугубо для общего развития интересно


campan
09.06.2007, 14:26

/me


Slash
09.06.2007, 14:55

и меня попрошу внести в список


cleg
09.06.2007, 19:47

Сегодня делал первый урок не видя пожеланий. Но так уж вышло что они были учтены. Критическая масса есть. Понеслась!!!
Python для начинающих. Глава первая. «О чем это мы»
Python (читается как «Пайтон» а не «питон») – скриптовый язык, разработанный Гвидо ван Россумом в качестве простого языка, легкого в изучении новичку.
В наше время Пайтон – широко распространыенынй язык, который используется во многих областях:
- Разработка прикладного ПО (например linux-утилиты yum, pirut, system-config-*, IM-клиент pidjin и многие другие)
- Разработка web-приложений (мощнейший Application-сервер Zope и разработанная на его основе CMS Plone, на основе которой работает например сайт ЦРУ, и масса фреймворков для быстрой разработки приложений Plones, Django, TurboGears и многие другие)
- Использование в качестве встраиваемого скриптового языка во многих играх, и не только (в офисном пакете OpenOffice.org, 3d редакторе Blender, СУБД Postgress)
- Использование в научных рассчетах (с пакетами SciPy и numPy для расчетов и PyPlot для рисования графиков Пайтон становится практически сравним с пакетами типа MatLab)
И это конечно далеко не полный список проектов, использующих этот замечательный язык.
Так, что же необходимо новичку для изучения Пайтона?
1. Сам интерпретатор, его можно взять тут (magnet:?xt=urn:tree:tiger:MD2XY6QYFSUUYCHSF4SRZLY ZCNENGASC2XEVM6A&xl=10970624&dn=python-2.5.1.msi).
2. Среда разработки. Она для начала необязательна, да и идущей в дистрибутиве IDLE подойдет новичку, но для серъезных проектов нужно что-то посерьезней.
Для Windows я использую замечательный легковесный PyScripter (magnet:?xt=urn:tree:tiger:JOFWS45FLLWV2HOAVAODKB2 ZX262QUIRMVQJUCI&xl=3451629&dn=PyScripterv1.8.6.zip), для Linux – Komodo IDE.
Хотя для первого урока достаточно будет просто интерактивной оболочки самого Пайтона.
Просто запустите python.exe. Приглашение ввода не заставит себя долго ждать, оно выглядит так:
>>>
Также можно записывать программы в файлы с расширением py, в вашем любимом текстовом редакторе, который не добавляет к тексту своих символов разметки (нет Word не подойдет). Также желательно чтобы этот редактор умел делать «умные табуляторы» и не заменял пробелы знаком табуляции.
Для запуска файлов на исполнение по ним можно щелкать 2 раза. Если консольное окно закрывается слишком быстро, вставьте в конце программы следующую строку:
raw_input()
Тогда интерпретатор будет в конце программы ждать нажатия enter.
Или ассоциируйте py-файлы в Far с Пайтоном и открывайте нажимая enter.
Наконец можно воспользоваться одной из многих удобных IDE для Пайтона, которые предоставляют и возможности отладки и подсветку синтаксиса и многие другие «удобства».
Немного теории.
Для начала, Пайтон – язык со строгой динамической типизацией. Что это означает?
Есть языки со строгой типизацией (pascal, java, c и т.п.), у которых тип переменной определяется заранее и не может быть изменен, и есть языки с динамической типизацией (python, ruby, vb), в которых тип переменной трактуется в зависимости от присвоенного значения.
Языки с динамической типизацией можно разделить еще на 2 вида. Строгие, которые не допускают неявного преобразования типа (Пайтон) и нестрогие, которые выполняют неявные преобразования типа (например VB, в котором можно легко сложить строку ‘123′ и число 456).
Разобравшись с классификацией Пайтона, попробуем немного «поиграть» с интерпретатором.
>>> a = b = 1
>>> a, b
(1, 1)
>>> b = 2
>>> a, b
(1, 2)
>>> a, b = b, a
>>> a, b
(2, 1)
Таким, образом мы видим что присваивание осуществляется с помощью знака =. Присвоить значение можно сразу нескольким переменным. При указании интерпретатору имени переменной в интерактивном режиме, он выводит ее значение.
Следующее, что необходимо знать – как строятся базовые алгоритмические единицы – ветвления и циклы. Для начала, необходима небольшая справка. В Пайтоне нет специального ограничителя блоков кода, их роль выполняют отступы. То есть то что написано с одинаковым отступом – является одним командным блоком. Поначалу это может показаться странным, но после легкого привыкание, понимаешь что эта «вынужденная» мера позволяет получать очень читабельный код.
Итак условия.
>>> x = 15
>>> if (x<10) or (x>20):
… print «x is bad»
… elif 10<x<20:
… print «x is good!»
… else:
… print «x is werid»

x is good!
Условие задается с помощью оператора if, который заканчивается «:». Альтернативные условия которые будут выполняться если первая проверка «не прошла» задаются оператором elif. Наконец else задает ветку, которая будет выполнена если ни одно из условий не подошло.
Обратите внимание, что после ввода if интерпретатор с помощью приглашения «…» показывает что он ожидает продолжения ввода. Чтобы сообщить ему что мы закончили, необходимо ввести пустую строку.
Циклы.
Простейшим случаем цикла является цикл while. В качестве параметра он принимает условие и выполняется до тех пор, пока оно истино.
Вот маленький пример.
>>> x = 0
>>> while x<=10:
… print x
… x += 1

0
1
2
………..
10
Обратите внимание что поскольку и print x и x+=1 написаны с одинаковым отступом, они считаются телом цикла (помните что я говорил про блоки? ;-) ).
Второй вид циклов в Пайтон – цикл for. Он аналогичен циклу foreach других языков. Его синтаксис условно таков.
for переменная in список:
команды
Переменной будут присваиваться по очереди все значения из списка (на самом деле там может быть не только список, но и любой другой итератор, но не будем пока этим забивать голову).
Вот простой пример. В роли списка будет выступать строка, которая является ничем иным как списком символов. >>> x = «Hello, Python!»
>>> for char in x:
… print char

H
e
l
………..
!
Таким образом мы можем разложиьт строку по символам.
Что же делать если нам нужен цикл, повторяющийся определенное число раз? Очень просто, на помощь придет функция range.
На входе она принимает от одного до трех параметров, на выходе возвращает список чисел, по которому мы можем «пройтись» оператором for.
Вот несколько примеров использования функции range, которые объясняют роль ее параметров.
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(2, 12)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> range(2, 12, 3)
[2, 5, 8, 11]
>>> range(12, 2, – 2)
[12, 10, 8, 6, 4]
И маленький пример с циклом.
>>> for x in range(10):
… print x

0
1
2
…..
9

Ввод-вывод
Последнее, что следует знать перед тем как начать использовать Пайтон полноценно – это как осуществляется в нем ввод-вывод.
Для вывода используется команда print, которая выводит на печать все свои аргументы в удобочитаемом виде.
Для ввода с консоли используется функция raw_input(приглашение), которая выводит на экран приглашение и ожидает ввода пользователя, возвращая то что ввел пользователь в виде своего значения.
Пример.
x = raw_input («Введи число:»)
print «Квадрат этого числа составляет «, x * x
Внимание! Несмотря на существование функции input() схожего действия, использовать ее в программах не рекомендуется, так как интерпретатор пытается выполнить вводимые с ее помощью синтаксические выражения, что является серьезной дырой в безопасности программы.
Вот и все для первого урока.
Домашнее задание.
1. Составить программу расчета гипотенузы прямоугольного треугольника. Длинна катетов запрашивается у пользователя.
2. Составить программу нахождения корней квадратного уравнения в общем виде. Коэффициенты запрашиваются у пользователя.
3. Составить программу вывода таблицы умножения на число M. Таблица составляется от M * a, до M * b, где M, a, b запрашиваются у пользователя. Вывод должен осуществляется в столбик, по одному примеру на строку в следующем виде (например):
5 х 4 = 20
5 х 5 = 25
И так далее.
Домашнее задание – отсылаем мне в личку. :-)



Как создается трехмерная анимация

AndrieL
25.07.2008, 23:02

Как создается трехмерная анимация
За столетнюю историю своего существования анимационное кино постоянно развивалось и усовершенствовалось. Сегодня оно по праву стало считаться одним из видов искусства и подтверждение тому – от года к году неуклонно возрастающее число анимационных проектов, которые претендуют на престижную премию Оскара. Такие картины, как Final Fantasy, Shrek, Little Stuart, The Incredibles, Finding Nemo невольно заставляют задуматься о будущем кинематографа. Наступит ли когда-нибудь момент, когда актеров заменят их трехмерные двойники? Пока однозначного ответа на этот вопрос дать никто не может, но некоторые предпосылки предполагать, что это рано или поздно произойдет, уже есть.
Трехмерные сцены, создаваемые воображением 3D художника, становятся все более реалистичными, а себестоимость подобных работ снижается. Без трехмерных декораций не обходится ни один современный экшн.
Даже классическая двухмерная мультипликация постепенно вытесняется трехмерной. Хорошо знакомые всем мультяшные герои, с которыми выросло не одно поколение, или «уходят на пенсию» (с ними просто больше не делают новых мультфильмов), или обретают новую жизнь в 3D. Например, в конце прошлого года был выпущен первый трехмерный мультфильм с моряком Папаем, сделанный при помощи 3D-редактора Softimage|XSI.
А на рождество 2004-го года известная анимационная студия Blur Studio представила первый анимационный проект, в котором Микки Маус и другие диснеевские герои стали трехмерными. Три мультфильма общей продолжительностью 40 минут стали самым крупным проектом за девятилетнюю историю Blur Studio.

Работа над проектом велась совместно 3D-аниматорами Blur и художниками Disney Studios, которые в свое время рисовали Дональда, Плуто и прочих персонажей. Для того чтобы максимально сохранить особенности движения и внешнего вида персонажей при переносе их в трехмерный мир, ведущий аниматор студии Disney Андреас Дежа (Andreas Deja) все время давал советы коллегам-3D-художникам. Результатом остались довольны все, и в Blur Studio надеются, что проект не будет последним.

Метод ключевых кадров
Несмотря на то, что анимационные фильмы выпускались и двадцать, и пятьдесят лет назад, принцип их создания кардинально отличался от современной техники анимации.
Задолго до появления трехмерной графики существовала так называемая кукольная анимация. Делалась она так: снимался один кадр с мультипликационным героем, затем, например, руку персонажа передвигали на очень небольшое расстояние и опять снимали один кадр. Вся работа состояла в том, чтобы снять на пленку все положения руки мультяшного героя. Что же касается рисованной анимации, каждый кадр рисовался вручную.
В компьютерной анимации все гораздо проще. Аниматор задает в программе только два положения руки – верхнее и нижнее, а все промежуточные положения просчитываются компьютером. Кадры, которые фиксируют начальное и конечное положение тела, называются ключевыми.
Используя метод ключевых кадров, можно «оживить» практически любые параметры анимационной сцены. Так, например, если статуэтка в одном ключевом кадре бронзовая, а в другом – стеклянная, то программа, в которой просчитывается анимация, создаст видео, на котором вы получите красивый спецэффект превращения бронзы в стекло. Другой пример использования ключевых кадров – анимация движения маятника. Скажем, если в одном ключевом кадре маятник отклонен на максимальную амплитуду в одну сторону, а в другом – во вторую, на полученной анимации он будет совершать движение. Продолжительность анимации зависит от количества промежуточных кадров между ключевыми.
В реальной жизни характер движения объектов и изменения каких-либо действий, может быть различным. Чтобы вам было понятнее, что имеется в виду, приведем следующий пример: представьте простую ситуацию, когда электрическая лампочка гаснет и загорается снова. Это несложное действие, однако, оно может происходить совершенно по-разному. Лампочка может плавно потухать до тех пор, пока перестанет излучать свет (вспомните освещение в театре), а затем так же плавно накаляться. В другом случае лампочка может потухнуть резко и так же резко зажечься вновь или плавно погаснуть и резко загореться. Как видите, существует большое количество вариантов того, как может происходить данное действие.
Приведем другой пример: автомобиль подъезжает к столбу. Он может приближаться с некоторой постоянной скоростью, с ускорением или торможением. Если создать подобную анимационную сцену, то положение объекта в ключевых точках будет одинаковым, однако характер изменения параметра в каждом случае будет различным.
Если математически отобразить зависимость анимированного параметра (или ключа анимации, как его еще называют) от времени, каждый ключевой кадр будет характеризоваться двумя кривыми, которые определяют функциональные зависимости анимированного параметра на промежутке между текущим ключевым кадром и предыдущим, а также настоящим ключевым кадром и следующим. Во многих редакторах для работы с трехмерной графиков подобной графической зависимостью можно управлять, определяя характер анимации.
Преимущество метода ключевых кадров перед классической техникой создания анимации очевидно: аниматор тратит на создание проекта гораздо меньше времени. Большая часть рутинной работы, которая ранее выполнялась вручную, сегодня переложена на компьютер.
Проблемы при создании анимации методом ключевых кадров
Несмотря на универсальность и простоту техники ключевых кадров, существуют случаи, когда использование этого метода не позволяет добиться желаемого результата. Это касается тех сцен, в которых необходимо отобразить эффекты, подчиняющиеся законам физики.
В реальной жизни все, что нас окружает, постоянно изменяется – шторы слабо двигаются, по озеру бежит мелкая рябь и так далее. Аниматору очень трудно воссоздать такую картину методом ключевых кадров.
Если сцена содержит большое количество анимированных объектов, установить для каждого из них свой набор ключевых кадров очень сложно. Поскольку подбор параметров значений анимированных параметров в каждом из ключевых кадров производится методом проб и ошибок, на подгонку такой сцены уйдет очень много времени.
Допустим, требуется создать простую сцену, в которой мячик падает на пол. В реальной жизни этот мячик несколько раз подпрыгнет, причем каждый последующий раз он будет подскакивать все ниже. Если вы решите делать такую сцену при помощи ключевых кадров, вам придется потратить большое количество времени. Во-первых, необходимо точно вычислить промежутки времени между ключевыми кадрами, а во-вторых, потребуется подобрать положение мячика относительно пола в каждом ключевом кадре. Согласитесь, задание не из легких! Заметьте, что сцена – очень проста, и объектов в ней только два. Если же представить сцену, в которой, например, таких мячиков более десяти, то создание анимации с расстановкой ключевых кадров вручную покажется непосильной задачей.
Кроме этого, при помощи ключевых кадров 3D-аниматору бывает очень сложно воссоздать реалистичную анимацию некоторых объектов: жидкости, материи, огня, волос, разбивающихся предметов. Алгоритм решения этих проблем настолько сложен, что его разработкой занимаются целые институты.
Существует большое количество программного обеспечения, которое помогает аниматорам в этой области – от мелких скриптов до крупных, самостоятельных программ, вроде симулятора жидкости RealFlow от компании NextLimit. При помощи подобных программ можно воссоздать модель физических процессов, просчитав такую сцену за сравнительно короткое время. При этом, все ключевые кадры будут созданы автоматически, практически без участия 3D-аниматора. Например, симуляторы поведения ткани позволяют сымитировать поведение материи в разных ситуациях – он колебания на ветру до разрыва.
Симуляторы волос – это тоже довольно сложные модули, поскольку количество трехмерных объектов, поведение которых нужно вычислить, очень велико. Просчитать геометрию каждого такого объекта в отдельности невозможно, поэтому в подобных модулях используется математическое описание поведения волос. Например, при создании известного фильма Final Fantasy разработкой волос главной героини занималась целая группа сотрудников. Они создавали скрипты для 3D-редактора Alias Maya, описывающие динамику ее волос.
Каждая программа для создания динамики в трехмерных сценах по-своему уникальна, имеет свои преимущества и недостатки. Поэтому при выборе программного обеспечения руководитель анимационного проекта обычно учитывает задачи, которые планируется выполнить на данном этапе.
В некоторых случаях можно обойтись без громоздких программ для моделирования физических процессов. Например, если на краю стола стоит ваза, ее задевают, и она, падая, «уходит» из кадра, моделировать физически правильное падение и соударение с полом бессмысленно. Другой пример: для имитации несложной анимации жидкостей можно использовать метаболы – специальные объекты, которые присутствуют практически во всех трехмерных редакторах. Их особенность в том, что они при сближении вступают во взаимодействие друг с другом и как бы «сливаются» в один. Создание анимации таким способом требует гораздо меньше системных ресурсов, а кроме того, позволяет сэкономить на покупке дополнительного программного обеспечения.
Помимо проблем, связанных с моделированием физических процессов, существует еще одна трудность, связанная с анимированием большого количества объектов в сцене. Создать простую, на первый взгляд, сцену с горящим бенгальским огнем при помощи ключевых кадров невозможно. Вручную задать траекторию движения для каждой из огромного количества разлетающихся искр – задача практически невыполнимая. В этом случае в трехмерной анимации используются так называемые источники частиц. Их особенность в том, что они позволяют одновременно управлять большим количеством объектов. Значимость частиц в трехмерной графике столь велика, что некоторые 3D-редакторы имеют сложные системы управления источниками частиц, которые позволяют тонко настроить анимационные эффекты с учетом изменения скорости движения частиц, размера, цвета, формы, изменения положения в пространстве и т.д.
Персонажная анимация
Само понятие анимации многие ассоциируют с персонажной анимацией, то есть, с двигающимися героями анимационной картины. Создание персонажной анимации – это один из важнейших этапов создания трехмерного проекта.
Любую анимацию можно условно разделить на два типа: реалистичная и нереалистичная. Персонажная анимация может быть как реалистичной, так и нереалистичной, однако, зрителем она лучше воспринимается, если напоминает движения, совершаемые реальными существами. Даже если персонаж анимации – это вымышленное существо, плод воображения художника, лучше, чтобы его движения были правдоподобны. В противном случае персонаж будет выглядеть безжизненным манекеном.
В повседневной жизни наши движения настолько естественны и привычны, что мы не думаем, например, прикрыть ли нам рот ладонью, когда мы кашляем, или совершить ли движения руками при ходьбе. Моделирование подобного поведения в трехмерной графике сопряжено с множеством трудностей. Поскольку зрителю очень знакомы движения живых существ (особенно если имитируются движения человека), он без труда отличит несовершенную трехмерную подделку. Поэтому в персонажной анимации модель должна выглядеть безукоризненно.
Характер движения любого существа определяется анатомическим строением его скелета. Поэтому при создании трехмерной анимации сначала создается модель скелета существа, на который позже «одевается» оболочка. При движении отдельных частей скелета внешняя оболочка будет деформироваться в соответствии с формой каркаса. Таким образом, для анимирования персонажа достаточно настроить параметры движения скелета, который затем можно использовать с различными внешними оболочками, например, когда требуется анимировать группу мультяшных героев. «Одевание» оболочки – это тоже достаточно трудоемкий процесс, ведь нужно «привязать» кости к соответствующим частям тела таким образом, чтобы при изменении положения скелета оболочка деформировалась реалистично.
Создавать анимацию скелета будущего персонажа можно двумя способами: вручную, с помощью ключевых кадров, и используя систему захвата движения Motion Capture. Последний способ получил широкое распространение и используется практически по всех коммерческих анимационных проектах, так как имеет ряд преимуществ перед методом ключевых кадров.
Технология Motion Capture использовалась, например, в одном из самых громких трехмерных анимационных фильмов прошлого года – <Полярный экспресс> (The Polar Express). В этом фильме известный актер и двукратный обладатель премии Оскар Том Хенкс, играл сразу несколько ролей: маленького мальчика, проводника поезда, бродягу и Санта Клауса. При этом, во многих анимационных сценах актер играл сам с собой. Конечно же, все герои мультфильма были трехмерными, но Том Хенкс управлял их действиями, жестами и даже мимикой. Актер одевал специальное одеяние с датчиками, напоминающее гидрокостюм, совершал действия перед специальным устройством, а компьютер получал информацию об изменении положения отметок на костюме и моделировал, таким образом, движения трехмерного персонажа. Подобные датчики были установлены и на лице актера, что позволило переносить на анимационных героев его мимику.

Понятно, что анимация персонажей, созданная с использованием технологии Motion Capture, более реалистична, чем полученная методом ключевых кадров.
Мимика персонажа
Для создания мимики трехмерного персонажа, кроме метода Motion Capture, используется также метод морфинга. Все современные 3D-редакторы обычно имеют средства для создания морфинга.
Добиться высокой реалистичности при имитации мимики методом Motion Capture не всегда удается. Выражение лица человека определяется положением лицевых мускулов, которые исчисляются десятками. Для моделирования мимики персонажа большое значение имеет положение бровей, губ, наличие морщин на лбу, ямочек на щеках и т.д. Чем сложнее форма головы персонажа, тем менее реалистично выглядит мимика, полученная с использованием метода Motion Capture. Чтобы она была правдоподобной, необходимо имитировать движения огромного количества мускулов, а ведь на каждый мускул датчик повесить невозможно.
Поэтому для имитации мимики используется метод морфинга. Он заключается в том, что на основе модели, которая будет анимирована, создается определенное количество клонированных объектов. Затем каждый из этих объектов редактируется вручную – форма лица изменяется таким образом, чтобы на нем присутствовала та или иная гримаса. При создании мимики очень важно, чтобы лицо персонажа при анимации не выглядело однообразным. Для этого необходимо использовать модели-заготовки с самыми разными гримасами. Пусть на одной заготовке персонаж будет моргать, на другой – щуриться, на третьей – надувать щеки и т.д.
На основе этих моделей при помощи метода морфинга создается анимация. При этом, просчитывается, как изменяется лицо персонажа при переходе от выражения лица одной модели до гримасы, созданной на второй модели и т.д. Таким образом, каждая из моделей служит ключом анимации, в результате использования морфинга форма объекта изменяется, и создается мимика персонажа.

3D-аниматор, который профессионально занимается «оживлением» персонажей, должен быть не только художником, но и знатоком анатомии. Знания о строении тела и работе мускулов помогают создать реалистичные движения и выражения лица.
Если же персонаж не только ходит и кривляется, но еще и говорит, 3D-аниматор обязан превратиться еще и в лингвиста. Каждый звук, который произносит человек, сопровождается определенными движениями его губ, языка, челюсти. Для того чтобы перенести эти движения на трехмерную анимацию, нужно уметь разбивать речь на фонемы и создавать соответствующие их произношению движения на лице персонажа.
Виртуальные камеры
Многие трехмерные анимационные эффекты создаются с помощью виртуальных камер. Эти вспомогательные объекты предназначены для того, чтобы изменять положение точки съемки в виртуальном пространстве. Виртуальная камера выполняет ту же функцию, что и настоящая – она фиксирует все то, что попадает в ее объектив. С помощью виртуальной камеры можно совершить прогулку по трехмерному дому, заглянув во все его комнаты, осмотреть трехмерный город с высоты птичьего полета и т.д. Причем, если перемещение настоящей камеры ограничено техническими возможностями, виртуальную камеру в трехмерной сцене можно поместить куда угодно и заставить ее двигаться в любом направлении.
Виртуальные камеры обладают всеми основными параметрами, которые присущи настоящим камерам. Так, например, для виртуальной камеры можно указать фокусное расстояние, установить свой тип линз и т.д.
Виртуальная камера, в отличие от настоящей, – это лишь вспомогательный объект, которого вы никогда не увидите на трехмерной анимации. Даже если камера «подъедет» к зеркальному объекту, в отражении ее видно не будет. При создании анимации можно использовать несколько камер, переключаясь между ними, и, в отличие от реальных съемок, одна виртуальная камера никогда не попадет в объектив другой.
Трехмерная анимация заметно упрощает реализацию многих спецэффектов. Так, например, хорошо всем известный «эффект Матрицы», когда, камера медленно объезжает вокруг человека, замершего в прыжке, гораздо проще создать при помощи виртуальной камеры. Для реализации этого эффекта в фильме «Матрица» использовалось большое количество камер, расположенных вокруг объекта съемки. Все они зафиксировали положение человека в один и тот же момент времени. Из этих кадров была создана анимация, имитирующая «облет» вокруг объекта.
В трехмерной анимации законы физики не действуют, поэтому для создания такого эффекта достаточно зафиксировать в прыжке трехмерную модель человека и задать плавное движение виртуальной камеры вокруг него.
Для движения камеры по кругу используется еще один распространенный прием 3D-анимации – движение вдоль заданной траектории. Для его реализации рисуется кривая (для «эффекта Матрицы» это окружность), которая описывает траекторию движения объекта (в данном случае камеры), после чего объект «привязывается» к созданной кривой. После такой привязки свое движение камера может совершать только вдоль указанной траектории.
В реальном мире при съемке фото или видеокамерой быстро движущиеся объекты остаются на полученном изображении смазанными. Причем, размытие изображения в конкретном кадре указывает на направление движения заснятого объекта. Присутствие этого эффекта в трехмерной анимации делает ее более реалистичной.
Эффект смазанного движения (Motion Blur) позволяет создать в трехмерных анимированных сценах смазанный шлейф от быстродвижущихся объектов, и отобразить их такими, какими они выглядят при реальных съемках. Возможность использования эффекта смазанного движения имеется практически во всех модулях просчета изображения, которые используются в 3D-графике.

Вывод
Думаем, никто не будет возражать против утверждения, что за трехмерной анимацией большое будущее. Несмотря на то, что средства анимации, которые находятся в распоряжении разработчиков трехмерной графики, кажутся удивительными, 3D-анимация сегодня находится только на ранней стадии своего развития. Потребуется еще немало времени, пока в 3D будут созданы анимационные шедевры, которые можно будет сравнить с лучшими образцами классической анимации.
А пока люди с удовольствием продолжают смотреть мультфильмы, выпущенные много лет назад. Знаменитый мультфильм «Бемби», созданный студией Диснея шестьдесят три года назад, отреставрированный при помощи современных средств видеообработки и выпущенный на DVD в начале марта, в первый же день разошелся тиражом более миллиона экземпляров.
Хочется надеяться, что такую же популярность, нерушимую временем, смогут снискать и трехмерные анимационные проекты будущего.

:throb:
_ttp://www.3domen.com



[разминка мозга] Задачка для 2-го класса

Unknown_2
22.01.2007, 10:35

дано
a+b=c
d+e=f
g+h=j
Где [a,b,c,d,e,f,g,h,i,j] – числа от 1 до 9
Нужно сделать полную подстановку чисел без дубликатов(!).
Задачка со 2-го класса(!!).
Решение обосновать.


Joka
22.01.2007, 10:58

а это вообще реально ??


Silenser
22.01.2007, 12:50

нереально :-))
добавлено через 30 секунд
А при чем тут пограмирование ?


chuk
23.01.2007, 20:31

и шо потом переведут в 3 класс??


Des
23.01.2007, 20:39

Нет решений.


Edinorog
23.01.2007, 21:12

Нужно сделать полную подстановку чисел без дубликатов(!).
а можно объяснить, что это значит?


nkt
23.01.2007, 21:16

а можно объяснить, что это значит?
+1! Задачю подразумевается написать в поскале? И откуда в масиве переменная ef и i, когда в условии их нет?


Edinorog
23.01.2007, 21:22

дано
a+b=c
d+e=f
g+h=j
Где [a,b,c,d,ef,g,h,i,j] – числа от 1 до 9
Нужно сделать полную подстановку чисел без дубликатов(!).
Задачка со 2-го класса(!!).
Решение обосновать.
это просто подумать, или реально надо найти решение?


nkt
23.01.2007, 21:23

это просто подумать, или реально надо найти решение?
это нужно правильное условие;) Да и что за полная подстановка?


Silenser
23.01.2007, 22:13

видимо вместо переменных надо подставить
1,2.3.4.5.6.7.8.9 , что бы все выражения были правильными , ну и ничего не повторялось


SCORPION
23.01.2007, 22:15

Афтар отзовись, интересно решение, а то что-то не догадываюсь пока как это надо делать


Bond
23.01.2007, 22:20

нереально…


FOXXCON
23.01.2007, 22:20

:wow: Наверно второй класс специализированной школы-изолятора полоумных индивидов :kz: :kz: :kz:


nkt
23.01.2007, 22:27

:wow: Наверно второй класс специализированной школи-изолятора полоумных индивидов :kz: :kz: :kz:
+1 маюсь с момента создания топика, чтоб его…


911 Twin turbo DOHC
23.01.2007, 22:42

+1 маюсь с момента создания топика, чтоб его…
угу, в одном месте бок получается, вывести в идеал никак
[a,b,c,d,ef,g,h,i,j]
тут запятая пропущена или как?


nkt
23.01.2007, 22:43

угу, в одном месте бок получается, вывести в идеал никак
Был бы там ноль вместо любого числа, было бы все круто


Freeman87
23.01.2007, 22:50

Автор ! Расскажи ответ ! А то тут народ уже паскаль долбает :))


matyusha
23.01.2007, 22:50

Автор где ты? очень интересно узнать решение ( а может ты сам его не знаешь ) .


Ilya_Okonsky
23.01.2007, 22:52

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


Tarsius
23.01.2007, 22:54

дано
a+b=c
d+e=f
g+h=j
Где [a,b,c,d,ef,g,h,i,j] – числа от 1 до 9
Нужно сделать полную подстановку чисел без дубликатов(!).
Задачка со 2-го класса(!!).
Решение обосновать.
Автор понял что основательно затупил с условием и решил больше на тему «Программирование» не отписываться. :laught:



Найти информацию?

Используйте форму ниже, чтобы начать поиск по сайту:

Не нашли то что искали? Напишите мне на почту, возможно я помогу найти Вам необходимую информацию!

Сыылки на полезные сайты!

Тут будут публиковаться ссылки на интересные ресурсы по теме...