Всичко, което ви е нужно е идея



Дата01.05.2017
Размер129.43 Kb.
Всичко, което ви е нужно е идея

по материали от Интернет и невероятните есета на Scott Manley




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


Първите компютърни изображения бяха рендвани (създавани, обработвани, изчислени - от англ. render) от мощни суперкомпютри като Cray YMP, единствени способни да изчислят движението на 250 хиляди многоъгълника. Много от съвремените графични ускорители вече могат да правят това в детайли и в реално време. Именно тази нарастнала изчислителна мощ ни гарантира забавлението от компютърното видео и дори кара някои от нас да се изживяват като кино-режисьори.
Както и да е аз не съм eдинственият Linux фен, щъпуркащ в плитчините на това изкуство - киното. Всъщност любимата ми операционна система вече се използва съвсем на професионално ниво в това велико изкуство. Digital собственоръчно навързаха около стотина Alpha-и (чували сте за клъстери, нали?) за да рендват водните ефекти на Titanic. (Всъщност аз съм все още силно впечатлен от броя на хората, които казват: 'Компютърните специални ефекти са тъпотия, вижте 'Titanic' - просто е очевидно, че този кораб е компютърно генериран' - Стоп, да се изцвиля от удоволствие! Корабът си беше съвсем реално моделче, дълго 14 метра, a водата беше това дето не е истинско... пък ти си мислеше, че си много умен, нали?)
Е, не е необходимо да започваме от 'Titanic' за да доказваме на света, колко сме велики в уменията си на кино-магьосници. Като за начало да вземем да направим някое анимирано GIF-че за собствената си страница, просто така, да не скучаем докато чакаме да ни ангажират за някой голям проект.
От какво всъщност се нуждаем?
Ами я да погледнем назад... Киното са движещи се картинки, евентуално с някакви звуци около тях. Сигурен съм, че вече знаете за онзи трик, с който баламосват човешкото зрение като му показват множество статични изображения със съвсем малка разлика между тях. Значи за да направим филм ни трябват много изображения, които да нанижем заедно. Обикновено изображенията се комбинират в един файл, който ги компресира на база времеви и пространствени корелации за да изхвърли излишния обем данни или иначе казано компресията работи като обозначава някак различията от един кадър до друг. Преобразуването на многото кадри в един компресиран файл става с помощта на програма, която се нарича енкодер.
Значи за да си направим филмче ни трябва:
1. Последователност от изображения
2. Звуков файл (само ако искате озвучаване)
3. Енкодер
Енкодерът обикновено определя формата на файла, който получаваме като краен резултат. Някои формати не се нуждаят или въобще не са в състояние да се обвържат с аудио - например анимираните GIF-ове, а за други формати енкодерът преминава през няколко стъпки за да комбинира всичко. След като ползваме Linux като, че ли естествено е да се опитаме да правим дългите видеоклипове в MPEG фомат. MPEG е съкращение от Moving Pictures Expert Group и всъщност е фамилия от стандарти, проектирани за различни специфични задачи.
MPEG 1 и MPEG 2 са най-добре установени. MPEG1 е кодиране за видео, докато MPEG2 е на практика MPEG1 с някои разширения, които го оптимизират за цифров броадкастинг. MPEG 4 е голяма крачка напред и все още е в развитие.
MPEG 1 сам по себе си се дели на три части - видео потоци, аудио потоци и системни потоци, т.е. изображенията се преобразуват във видеопоток, звуците в аудиопоследователност, а двата потока са мултиплицирани и капсулирани в един единствен системен поток. Не се спичайте - това ще го разясняваме малко по-късно, сега само го споменавам за да си имаме наум с какво се захващаме. Ако искате да научите повече за всичко това хвърлете едно око на www.mpeg.org - можете да си вземете и няколко добри безплатни нещица.

Taka... Хайде сега да се върнем в правия път и да си спомним какво казахме, че ни трябва най-напред - изображения - тук моите технически съвети са далеч по-маловажни от Вашия артистичен талант. Следователно трябва да си изберем софтуер, с който да генерираме изображенията си. Много хора ще искат да работят с тримерни изображения като мен, а на други и традиционните софтуерни пакети за двумерна графика ще им свършат работа. Някои пакети имат специални инструменти за анимация, а други изискват повече или по-малко намеса от Ваша страна, всички обаче без изключение си искат да им отделите необходимото време и усилия да ги поразучите. Не е страшно ако първите 10 минути не можете нищо да раберете, но ако след седмица още тъпчете на едно място по-добре сменете програмата и си потърсете нещо друго.


Кадрите на нашето видео трябва да удовлетворяват следните правила:
1. Трябва да са в един и същ формат - jpeg, tiff, gif - ако не намерете си добра версия на ImageMagick за да ги преобразувате.
2. Трябва всички да са в една и съща разделителна способност - да смените разделителната способност по средата на клипа съвсем не е добра идея.
3. Отношението на ширината към височината на кадрите трябва да е около 4:3 за да нямате проблеми с изобразяването им на повечето системи. Широкоекранната телевизия ползва съотношение 16:9 - може би си струва да опитате...
4. Размера на изображението трябва да е съобразен с медията за която сме го предназначили - 160x120 е възможно най-ниската резолюция, която трябва да използвате, 360x288 е разделителната способност при Video CD, докато при DVD е 720x576. Мерната единица разбира се е пиксели. Имайте едно на ум, че много видеокарти, които имат хардуерен MPEG декодер не харесват резолюции, които не отговарят на VCD или DVD - веднъж правих филмче за една конференция и машината, която се използваше за плейър умря, когато пуснах филмчето си - беше с ATI карта и естествено с Windows'95, така че не бях много изненадан от това...
5. Номерирайте кадрите последователно и по еднакъв начин, като съблюдавате да има проста линейна корелация между времето и поредицата.
6. Огледайте си дисковото пространство преди да започнете - пакети като POVRay правят TGA или PNG файлове, които се нуждаят от дисково пространство, конвертирането до JPEG (използвайки примерно cjpeg) е добра идея. Ако обаче ще правите анимация може би GIF е по-добрият избор.
7. Възможно е да промените резолюцията когато генерирате mpeg потока - така, че можете да получите различни нива на детайлност от един и същ набор изображения.
Казано с две думи - ако искате да направите 10 минутно филмче за летене около Слънчевата система Вие се нуждаете от петдесет 720x576 изображения за всяка секунда или общо 30 хиляди изображения. Ако ще го правите с POVRay ще ви отнеме няколко часа - затова правете всичко както трябва за да на трябва да започвате отначало заради невнимание или немарливост.
Инструменти за създаване на изображения
Ох! Това е толкова огромна област, че трябва да съм много внимателен да не се издъня и да кажа, че някой пакет е по-добър от друг и с това да засегна някого. Затова приемете долния списък като ревю на нещата, които използвам аз и вероятно в него липсват много неща, които си струват вниманието, но са ми убягнали.
2D графика - използва се за обработка на кадрите или за създаването им
The GIMP - това е един наистина фантастичен пакет, ако сте достатъчно търпеливи да преплувате огромното море от скриптове, опции и всичко, което ви се оставя в ръцете ви.
XPaint - един стар, но златен пакет.
3D графика - светът е тримерен, затова и вашият виртуален свят трябва да е такъв. Проверете http://linux3d.netpedia.net/ за повече препратки.
POVRay - може би най-добрата 3D рендваща машина достъпна безплатно - макар и не най-бързата. Абсолютно коректна по отношение на математическия алгоритъм - например, когато дефинирате сфера, ще получите сфера, а не набор многоъгълници. Вземете си го от http://www.povray.org.
SCED - ako предпочитате по-интерактивна конструкторска система това е за вас. Работи по същите основни геометрични правила като POVRay, но може да записва моделите ви в различни формати и те няма да носят толкова привкуса на POVRay. Е - за сметка на това пък нямате всичките възможности на POVRay и SCED ще дефинира обектните ви трансформации чрез трансформации на матрици, които хич не са лесни за четене (не се шашкайте POVRay потребителите знаят какво е това :-) Има експериментална версия на SCED, която се справя и с анимация, но никога не съм я ползвал. Можете да си намерите SCED от http://http.cs.berkeley.edu/~schenney/sced/sced.html и SCEDa от http://home.on.rogers.wave.ca/mbeast/scedamain.html.
LibMesa - това не е инструмент сам по себе си, а безценна библиотека, която се ползва от други програмки. Вземете си я от http://www.mesa3d.org/.
Blender - това е нещо съвсем ново - цялостена среда за моделиране, конструиране и рендване на тримерни изображения. Използва Mesa. Вижте http://www.blender.nl/.
Blue Moon Rendering Tools - http://www.bmrt.org/.
Обработка на изображения - след като сте заредили изображенията си трябва с нещо да ги пипнете преди да ги хвърлите на енкодера. ImageMagick - великолепен е за трансформиране на дълга последователност от изображения, конвертиране от един формат в друг, изсветляване, потъмняване, замъгляване и т.н. Безценнен инструмент за филмчета, но си вземете пълната версия, много Linux дистрибуции предлагат версии, компилирани примерно без GIF компресия. Източника е http://www.wizards.dupont.com/cristy/ImageMagick.html.
XV - Xview e друг всеобщоизвестен пакет за обработка и на единични кадри, но аз го харесвам заради опцията wait 0, с която мога да му кажа да дисплейва поредица от кадри възможно с най-бърза скорост, което е много полезно preview без да губите време с енкодера.
Jpeglib - cjpeg, djpeg - бързо jpeg преобразуване - много полезно за скриптове и много, много, много, много, много по-бързо от ImageMagick.
Разни други неща
Конвертори на модели - най-добрите модели никога не са в необходимия ви формат, така че ако ще се борите с 3D събирайте всякакви конвертори дето ви се изпречат на пътя. ftp://avalon.viewpoint.com/avalon/utils/converters/ e една добра отправна точка от където да започнете.
Скриптов език - TCL/TK или Perl са страшно важни ако знаете да ги ползвате, но не е необходимо да сте програмисти за да правите 3D - добре е обаче поне да разбирате как работят скриптовете, които ползвате дори да не сте ги писали вие.
Какво не ви трябва
Видеокарти с 3D ускорители - колкото и кощунствено да ви звучи - примерно Voodoo не е добра карта за нашите занимания просто защото тя така се заема да контролира всичко, че никаква работа няма да свършите.
Големи и мощни машини - но няма к'во да си кривим душата - ако ги имате нещата стават по-бързо.
Артистичен талант - винаги можете да си откраднете модел от нечия друга сцена - хвърлете едно око на ftp://avalon.viewpoint.com/avalon/. Разбира се повечето ще са в крив формат ама пък има толкова много конвертори, които подпомагат вашето плагиатство.
TV/Video карти - трябват ви само ако ще сваляте на видео лента.

И сега к'во...

Ами в следващата статия се захващаме за работа... Ама вземете си поне един POVRay ако не друго и вижте там как работи 'щото иначе четенето на следващия материал ще е мъничко безсмислено. Разбира се можете да игнорирате напълно моите препоръки и да си намерите нещо съвсем различно..., а защо не и по-добро.

Малки стъпки

по материали от Интернет и невероятните есета на Scott Manley


Нека започнем с нещо простичко като например анимираните GIF-изображения. Окей, не е точно проект като "Междузвездни войни", но и Джордж Лукас е започнал снимайки любителски 8-милиметрови кратки филмчета.


Средностатистическия анимиран GIF не е повече от няколко стотин квадратни пиксела с около дузина кадри, дори по-малко. Използват се масово в web-страниците, затова скоростта за download (която зависи от размера му) е важен параметър за модемните потребители на Интернет.
Хайде да направим нещичко. Трябва ви прост 2D-графичен редактор и ImageMagick. Простичката анимация, с която ще започнем е един от тези малки бутончета, които хората правят по страниците за да ви привлекат вниманието. Те са стандартни по-размер (87x31 пиксела) и броят цветове и кадри трябва да е отраничен от това, че размера в байтове на получения в крайна сметка анимиран GIF трябва да е колкото се може по-малък.
Така, че хващайте любимата си програма за рисуване се и направете основния кадър на бутона.


b
lank.gif

Е, знам, че не е шедьовър, но нашата цел най-напред е да накараме нещо да се мърда, а артистичността оставям на въобръжението ви. Нашата цел ще бъде да накараме думичката 'Linux' да подскача от единия край на бутона до другия. Да добавим въпросния текст и да го запишем като anim1.gif. Така де, великите художници винаги са слагали достойни имена на творенията си.


a
nim1.gif

Сега да го направим още веднъж, но с малко отместване и да го запишем като anim2.gif...

a
nim2.gif

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

a
nim3.gif
anim4.gif
a
nim5.gif a
nim6.gif

Вашите картинки могат съвсем да не приличат на моите - всичко си зависи от въображението ви.
Тъй или иначе до този момент трябва да сте направили няколко изображения...

$ ls -l anim?.gif


-rw-rw-r-- 1 spm spm 269 Apr 11 12:22 anim1.gif
-rw-rw-r-- 1 spm spm 277 Apr 11 12:13 anim2.gif
-rw-rw-r-- 1 spm spm 275 Apr 11 12:15 anim3.gif
-rw-rw-r-- 1 spm spm 271 Apr 11 12:16 anim4.gif
-rw-rw-r-- 1 spm spm 275 Apr 11 12:17 anim5.gif
-rw-rw-r-- 1 spm spm 277 Apr 11 12:17 anim6.gif

Сега вече трябва да използваме командата animate на ImageMagick:

$ animate -delay 15 anim?.gif

и да се полюбуваме на творението си. Променяйки параметъра -delay можем да регулираме скоростта на анимацията изберете нещо, което не е много подлудяващо. Мерната единица е стотни от секундата между кадрите.







-delay 5





-delay 10





-delay 50

Преди да прекараме това през енкодер за да получим един единствен файл трябва да използвамe командата convert за да комбинираме всички отделни кадри.

$ convert -delay 15 -loop 0 anim?.gif anim.gif

Опцията -loop 0 е необходима ако искаме последователността да е безкрайно зациклена в противен случай ще видите анимацията еднократно. След като създадете анимирания си GIF можете да го видите с командата animate или да го пуснете в любимия си браузър.

Простичка кратка анимация само с няколко кадъра не може да се получи много голяма, но някои версии на ImageMagick са компилирани без LZW компресия използвана от .gif енкодера като в резултат анимацията може да се получи огромна. Ако сте такъв късметлия потърсете си друга версия на ImageMagick или си компилирайте собствена от изходния код.


Нови измерения

по материали от Интернет и невероятните есета на Scott Manley




Сега след като вече знаете как се създават анимирани GIF изображения и както сте много горди от това трябва да ви кажа, че това е само началото и пред вас има все още един цял нов свят, който трябва да пребродите... или по-скоро едно ново измерение.


Традиционната анимация се базира на способностите на художниците да изрисуват един и същи герой хиляди пъти под много различни гледни точки и да го направят така, че той да прилича на себе се през цялото време. Това е забележителен талант и е нещо, което бил искал да умея, вместо това обаче, аз ползвам съвременни технологии, които ми помагат моите светове да изглеждат реалистични. В повечето съвременни анимации героите и сцените се моделират в три измерения чрез компютър и накрая се преглеждат през виртуална камера преди финалния продукт.
Това отнема много повече време докато се започне процеса, всичко трябва да се дефинира в трите измерения от всички ъгли, работата много се доближава до тази с използването на миниатюрни модели за ефекти в телевизията и киното. Но веднъж изграден цялостно и с дефинирани движения, които да може да изпълнява раздвижването (оживяването) на този модел е просто работа на компютъра, който върши цялата черна работа по рисуването на хилядите кадри. Като всеки кадър ще е перфектно отражение на точно този виртуален свят, който сте описали математически в машината. Всички ъгли, сенки и осветености ще са перфектни и всичко ще изглежда точно както трябва, просто всичко ще е базирано на законите на геометрията, които човешката природа и зрение по навик безпогрешно анализира непрекъснато.
Хайде да сътворим нещо най-накрая. Да направим анимиран GIF, който да представлява стъклено кубче въртящо се на единия си ъгъл върху осветен от слънце под. Ще използваме POVRay като рендер като ще дефинираме сцената с описания и без средства за моделиране, а само с прости примитиви... и мъничко математика, разбира се. Така, че отваряйте любимия си текстов редактор и създайте файл наречен spin_cube.pov, който дефинира следната сцена:

Първо дефинираме основния куб с ъгли в <-1,-1,-1> и <1,1,1>

box {
<-1,-1,-1>, <1,1,1>

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

texture {
pigment { rgbf <0,0.5,1,0.5> }
finish { reflection 0.3 specular 0.2 }
}

Сега се нуждаем от математиката - искаме да го въртим около единия ръб - в повечето POVRay сцени y-вектора е вертикален, следователно за до го въртим около ъгъл, трябва да въртим 45 градуса по x-оста и 35.3 градуса по z-оста.

Искаме и това въртене да става съобразно времето следователно установяваме ротация по оста y като функция на времето.

rotate <45,0,0>


rotate <0,0,35.3>
rotate <0,clock,0>
}

Трябва ни и източник на светлина за да можем да виждаме нещата от нашия виртуален свят и нека в този случай дефинираме насочена прожекторна светлина осветяваща нашето кубче точно отгоре, карайки го да илюминира.

light_source {
<0,20,0>
rgb <1,1,1>
spotlight
point_at <0,0,0>
radius 5
falloff 10
}

Кубът ще стои върху бялa повърхност, която незначително отразява светлина.

plane {
<0,1,0> , -1.732
texture { pigment { rgb <1,1,1> }
finish { reflection 0.3 ambient 0}
}
}

Накрая да опишем как камерата вижда кубчето:

camera {
location <14,2,0>
direction <0,0,2>
look_at <0,-0.5,0>
}

Това е всичко, запишете файла и рендвайте изображнието си от него. Ако допуснем, че нямате някаква странна конфигурация за povray - всичко, което трябва да направите е да подадете командата:

$ povray +Ispin_cube.pov +W320 +H240 +D


+W и +H определят ширината и височината, а опцията +D кара POVRay да се опита да дисплейва изображението в процеса на рендването му, когато приключи работа ще получите резултата във файл, наречен spin_cube.tga, който можете да видите с почти всеки image viewer. Всичко изглежда добре, но всъщност не се движи. Това е, защото трябва да зададем параметъра clock, който ползвахме малко по-горе дефинирайки въртенето по оста y. Опцията +K в командата на POVRay ще ни помогне да го направим - просто задаваме +K 30 за да установим clock да е равно на 30, тъй като въртенето на куба измерваме в градуси стойността на clock е този случай е равен на броя градуси, с които искаме нашият куб да се извърти. Просто за тест нека да опитаме...

$ povray +Ispin_cube.pov +W320 +H240 +D +K30

И виждаме кубът, завъртян на 30 градуса...




Сега искаме да получим малък анимиран GIF, на който нашият куб се върти непрекъснато. Едно пълно завъртане е 360 градуса, но човешкото зрение всъщност можем да заблудим прекрасно заради симетрията на нашето кубче, което означава, че въртенето на 120 градуса около оста y ще върне изображението в началното му положение, т.е. нашите кадри е достатъчно да покрият само една трета от ротацията. За проста 6 кадрова анимация това означава стъпка от по 20 градуса и ако имате povray 3.0 или по-нов можете да направите всичко с една единствена команда:

$ povray +Ispin_cube.pov +W80 +H60 +D -J +A0.1 +KFI1 +KFF6 +KI0 +KF120 +KC

Леле, колко опции, но напишете ги всичките и обекта ще започне да се рендва докато вие си проверите в документацията какво значи всяка от тях.

И в зависимост от скоростта на машината ви скоро ще имате 6 готови кадъра

$ ls -l spin_cube?.tga


-rw-rw-r-- 1 spm spm 14418 Apr 11 14:46 spin_cube1.tga
-rw-rw-r-- 1 spm spm 14418 Apr 11 14:46 spin_cube2.tga
-rw-rw-r-- 1 spm spm 14418 Apr 11 14:46 spin_cube3.tga
-rw-rw-r-- 1 spm spm 14418 Apr 11 14:46 spin_cube4.tga
-rw-rw-r-- 1 spm spm 14418 Apr 11 14:46 spin_cube5.tga
-rw-rw-r-- 1 spm spm 14418 Apr 11 14:46 spin_cube6.tga

Комбинирайте ги в анимация по същия начин както направихме за бутончето в предната част:

$ convert -delay 10 -loop 0 spin_cube?.tga spin_cube.gif

$ ls -l spin_cube.gif


-rw-rw-r-- 1 spm spm 12315 Apr 11 14:57 spin_cube.gif

И готовият резултат можете с гордост да сложите в web-страницата си




Това е малко изображение, само 12 килобайта, но можем още да го намалим ако намалим и броя цветове, които ползваме в него.

$ convert -delay 10 -loop 0 -colors 128 spin_cube?.tga spin_cube.gif

$ ls -l spin_cube.gif


-rw-rw-r-- 1 spm spm 6157 Apr 11 15:01 spin_cube.gif


Наполовина по-малко, а без чувствителна разлика. Хайде да опитаме само с няколко цвята.

$ convert -delay 10 -loop 0 -colors 32 spin_cube?.tga spin_cube.gif

$ ls -l spin_cube.gif


-rw-rw-r-- 1 spm spm 4084 Apr 11 15:06 spin_cube.gif




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


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница