Saturday, December 5, 2009

Полигоны бүтэц


3 хэмжээст объектыг бүрдүүлэгч үндсэн элемент нь полигон буюу олон өнцөгт юм.3 хэмжээст график програмчлалд гурвалжин хамгийн чухал полигон юм.Учир нь гурвалжин доорхи гурван шинжийг байнга хадгалж байдаг.
1) Гурвалжин гүдгэр хэлбэртэй
2) Гурван орой нь байнга нэг хавтгайд оршино.
3) Өөрөө өөрийгөө огтлохгүй.
Гүдгэр хэлбэртэй гэдэг нь дурын шулуун татахад зөвхөн хоёр талыг л дайрч огтлох бөгөөд  дотоод өнцөгүүд нь 180 градусаас бага байна. Жирийн нэг дөрвөлжин шооноос эхлээд машины загвар хүртэл бүгд л хоорондоо ирмэгээр холбогдсон вертекс оройнуудын цуглуулга юм. Тиймээс вертексүүд хаана  байрлаж байгааг мэдэж байх нь тун чухал. 3 хэмжээст графикт загварыг бүрдүүлэгч вертексийг удирдах болон харахдаа Картезын координатын системийг ашигладаг. 10 жилийн алгебрийн хичээл дээр энэхүү системийн хоёр хэмжээст хувилбар дээр график зурж үзээгүй хүн байхгүй байх. Х ба Ү  гэсэн перпендикуляр тэнхлэгийн дагуу харгалзах утгыг оноосон байдаг.
  Вектор ба нормал
Та дэлгүүрт явж байгаад худалдагчаас бие засах газар хаана байгааг асууя гэж бодъё. Тэгтэл 100 метр гэж хариулбал та юу гэж ойлгох вэ? Харин гараараа заагаад тэр зүг рүү 100 метр яв гэж хэлбэл тун төвөггүй олно.Энэ тохиолдолд худалдагч вектор гэсэн үг. Түүний заасан зүг нь векторын чиглэл харин 100 метр гэдэг нь магнитуд буюу урт нь болно гэсэн үг. Координатын эхийг ямар нэг цэгтэй холбосныг вектор гэж ойлгож болно. Хоёр цэгийг холбосон эхлэл ба төгсгөлтэй вектор нь  шугаман алгебрын онолд хэрэглэгддэг боловч компьютер графикт ихэвчлэн координатын эхлэлийг төгсгөлийн цэг гэж  авч үздэг.Векторыг скаляр тоогоор үржүүлэхэд чиглэл өөрчлөгдөхгүй бөгөөд уртын хэмжээ л өөрчлөгдөнө.Вектор нэмж хасах үйлдлүүдийг  хэрхэн гүйцэтгэхийг алгебрын хичээлд үзсэн.
Векторын уртыг олохдоо |v|= √(x2 + y2 + z2) тэнцэтгэлийг ашигладаг.
        Нормал буюу нэгж вектор гэж магнитуд нь 1- тэй тэнцүү векторыг хэлдэг. Нэгж урттай векторыг ашиглан тооцоолол хийхэд тун хялбар. Жишээ v(5,1,2) гэсэн векторыг нормалчилж  үзье. урт(v) =5.47723 байна. к=Нормалчлах(v) үйлдэл хийсний дараа к(x,y,z) нь
 x=0.9128
 y=0.1825
 z=0.3651
болсон байна. Харин урт(к)=1 байна. Нормалчлах үйлдэл хийхэд чиглэл огт өөрчлөгдөхгүй.

3 хэмжээст координатын систем

3 хэмжээст зураг дэлгэцэнд хэрхэн дүрслэгддэг вэ? Бодит байдал бидний нүдэнд яаж харагдаж байна түүнтэй адил зургийг дэлгэцэнд харуулах ёстой. Бодит байдлын   перспектив тусгал бидний нүдэнд буухад  объектуудын хэмжээ, алслалт зэргийг тархи ялгаж өгдөг. Хол байрлаж байгаа нь жижиг ойр байрласан нь том харагдана. Энэ зарчим компьютер графикт ч хүчин төгөлдөр. Ортогонал болон перспектив гэсэн хоёр төрлийн проекцийг ашигладаг.      

Wednesday, December 2, 2009

Хүүхэлдэйн нүүрийг тоноглох (cartoon facial rig)

Визуал эффект болон хүүхэлдэйн анимацын гол ялгаа.
Парадигм гэдэг нь тухайн цаг хугацаанд ямарваа нэг үгийг хэрхэн илэрхийлж байгааг харуулсан перспектив тусгалыг хэлдэг. Өөрөөр хэлбэл тал бүрээс нь харуулах гэсэн үг.Програмчлалын үүднээс харвал класс эсвэл бүлэг процедуруудын нэгдэлтэй ижил. Маяад нүүрний хувирлыг илэрхийлэхэд зарим тохиолдолд төвөгтэй, нийлмэл бүтэцтэй тохиргоо шаардлагатай учраас парадигм гэсэн үгийг ашигладаг.Зөв бүтэцтэй нүүр хувиргах систем нь эцсийн бүтээгдэхүүнд процедур маягаар нэмэгдэн, хэрэглэгдэж болохуйц  үндсэн болон дэд хэсгүүд бүхий мэдээллүүдээс бүрддэг.Визуал эффектийн нүүр хувиргах систем нь дараахь онцлогуудтай.
 -Хүрч болох физик хязгаартай
 -Бодит байдал дээр тулгуурлан загварчлагдсан
 -Ихэвчлэн live action дүрстэй хавсардаг
 -Хэрэв жүжигчний тоон хувилбар нь бол яг л амьд мэт харагдаж хөдлөх ёстой.
Визуал эффектийн хамгийн чухал зүйл нь хэдийгээр характер нь  физикийн хуульд захирагдахгүй хэтрүүлэгтэй хөдөлгөөн хийж байсан ч ямар нэг хэлбэрээр бодит байдалтай холбоотой.Визуал эффектийн дүрийн нүүр царай,бие нь  хийсвэр байсан ч бодит мэт харагдах ёстой. Харин хүүхэлдэйн анимацид энэ нь яг эсрэгээрээ байх ёстой.Хүүхэлдэйн характер хийхдээ зарим нэг дүрэм журмыг таягдан хаяж цоо шинээр эхлэх хэрэгтэй.
 -Ямар нэг физик хязгаар байхгүй.
 -Маш уян хатан, яаж ч тохируулж болдог байх
 -Загварыг өөрийн төсөөллөөрөө хүссэнээрээ хийж болно
 -Бодит амьдрал дээрх хөдөлгөөн, жүжигчлэлтэй ямар ч хамааралгүй.
Нүүрний бүтэц ба задаргаа
Нүүр нь ам, нүд, хөмсөг, уруул, хамар гэсэн үндсэн элемэнтүүдээс бүрддэг. Характер нь бодит эсвэл хүүхэлдэйн дүрээс үл хамааран дээрх элемэнтүүдийг ямар нэг хэлбэрээр зайлшгүй агуулсан байдаг.Хүүхэлдэйн нүүр царай ямар ч байж болно. Дээрх үндсэн элементүүдийн хэлбэр хэмжээ нь том эсвэл жижиг, бүр байхгүй эсвэл олон байсан ч хамаагүй.Ам болон нүд нь хамгийн чухал хэсэг. Хүүхэлдэйн нүүр хэсгийн модел анимаци хийхэд дараахь шаардлагыг хангасан байвал илүү үр дүнтэй.
 -Нэг бүхэл хэсгээс бүрдсэн, тополог нь дотроос гадагш чиглэсэн цагираг хэлбэртэй
 -Нүд нь бөмбөрцөг хэлбэртэй байх
 -Нүүрний поз тун тайван байдалд байх
 -Нүд ба ам хаалттай байх
 -Цагираг хэлбэртэй ирмэгүүд нүд, амнаас гадна тийш зөв чиглэсэн байх
 -Ам хамрын хоорондох агшилт гэх мэтийг хийж чадах зөв геометрийн төрөл байх.Өөрөөр хэлбэл дан дөрвөн өнцөгтөөс тогтсон полигон геометр нэн тохиромжтой. Характер тоноглогчийн хувьд хүүхэлдэйн характерийн тоноглол нь тун ярвигтай.Хүүхэлдэйн характер нь хөдөлгөөний хязгаар байхгүй тун уян хатан.Иймээс ямар нэг эвдрэл, алдаагүй тоноглоход ихээхэн анхаарал шаардана.Хүүхэлдэйн риг нь ямар ч хөдөлгөөнийг хийх чадвартай,ямар ч поз авч болох давуу талуудтай ч анхны хэлбэр дүрсээ алдах,тоноглоход цаг их шаарддаг, алдаа гарахад засахад хүндрэлтэй зэрэг сөрөг талууд ч бий.Хүүхэлдэйн анимаци хийхдээ урьдчилан ямар орчинд ямархуу дүрмийн дагуу хөдлөх вэ гэдгийг нарийн тодорхойлсон байвал зохимжтой.Хүний нүүр  бол хүмүүсийн хоорондоо харилцаж ойлголцох хэрэгсэл. Бидний тархи эдгээр дүр төрхүүдийг хооронд нь тун сайн ялгадаг.Хүүхэлдэйн дүр төрх ч хүмүүстэй харьцаж байгаа учраас хүний нүүртэй төстэй үйлдэл үзүүлэх хэрэгтэй.
Хүүхэлдэй ярих хэрэгцээ гарвал хүний ярьсныг дуурайхаас өөр арга байхгүй.
Нүүр хувиргах системийн дизайн.
Нүүр хувиргах системийн загварыг сайн тодорхойлох нь цаашид гарах ямар нэг хүндрэлээс сэргийлнэ.Цаас харандаа аваад  нүүрний хийх хөдөлгөөнүүд дээр урьдчилж сайн ажиллах хэрэгтэй.Хамгийн нэгдүгээр зорилт бол модулар систем байгуулах явдал. Үүнийг сайн хийж чадвал цаашид олон дахин ашиглах бололцоотой. Нүүр хувиргалтын систем нь дараахи удирдлагын давхаргуудыг агуулж байх хэрэгтэй.(шаардлагатай бол)
-skin cluster- нүүрний ерөнхий FK удирдлагуудыг агуулна.
-blend shape- сэтгэлийн хөдлөл болон харилцан яриа зэрэгт ашиглах
-cluster- тодорхой нэгэн хэсгийг нарийвчлан удирдахад 
-vertex averaging- Бүгдийг хамтад нь багцалж хянахад ашиглана
-accessories- нүд, үс, шүд, хөмсөг
-volume- суналт ба агшилт
Эдгээр давхаргууд нь бүгд нэг  биет дээр байснаас тухайн биетийг хувилан тус тусад нь нэг нэг биетэд оноосон нь үр дүнтэй. Ингэснээр ямар нэг давхаргыг өөрчилж янзлах шаардлагатай болвол бусаддаа нөлөөлөхгүй байх давуу талтай.Хамгийн сүүлд энэ бүхнийг нэгтгэн нэг биетэд онооно.Давхарга бүрийг MEL процедур маягаар программчилж өгвөл тун тохиромжтой бөгөөд хүссэн үедээ дуудаж хэрэглэн засаж янзлах бололцоотой.Дээрх давхаргууд нь нүүр хувиргалтын парадигмын бүрэлдхүүн хэсгүүд нь юм.
       Хамгийн чухал нь дээрх давхаргууд бие биенээсээ хамааралгүй ажиллаж чаддаг байх явдал.Давхарга бүр нүүрний аль нэг хэсэгт нарийн чимхлүүр зүйлийг хийж чадах удирдлага болон задрана.Гэхдээ энэ олон давхаргыг аниматорууд хялбархан ойлгож, ашиглах явдал нэн чухал. Аль болох хялбар байх тусам аниматоруудын давхарга бүр дээр зарцуулах цаг нь багасна.Зарим аниматорууд channelbox ашиглан анимаци хийх дургүй байдаг.Шууд харагдаж буй удирдлагыг сонгоод  хөдөлгөж үр дүнг тэр дор нь харж байвал  цагийг ихээхэн хэмнэнэ.       Удирдлагууд нь бие биенээсээ  өнгөөр ялгарч яг ямар хэсгийг удирдаж байгаагаа мэдэхэд  тун тохиромжтой. Жишээ нь баруун талын удирдлагууд улаан, зүүн талынх ногоон, голынх шар, бусад нь цэнхэр гэх мэт. Мөн удирдлагууд нь бүгд нэг төрлийн схемтэй байх хэрэгтэй.Жишээ нь NURBS цагирагийг холбоосын shape болгон хэрэглэх нь тохиромжтой. Тэдгээр нь хэлбэржүүлэх болон нууцлахад хялбар учир хамгийн шилдэг сонголт. Сonsolidation буюу бэхжүүлэлт нь интерактив ажиллагааны гол түлхүүр юм. Риг нь маш хурдан ажиллаж байх ёстой.Гэхдээ нүүр хэсгийн геометр нь хэт ерөнхий байж болохгүй эцсийн үр дүн харагдаж байхаар нягтрал сайтай байх ёстой.Удирдлагыг хөдөлгөхөд риг секундын төдий гацаж уншигдахад л анимаци хийх боломжгүй болно.Тиймээс хэт олон хэрэггүй удирдлагуудыг нэмж хийх огт шаардлагагүй. Хамгийн чухал нь маш хурдан ажиллах ёстой. Зарим хүмүүс аниматорыг мартаад маш нарийн бүтэцтэй, автоматчлагдсан риг хийчихдэг.Үүнд аниматорууд маш дургүй бөгөөд аль болох хялбар бүтэцтэй ригээр комплекс анимаци хийхийг илүүд үздэг. Тэгэхээр эхийг нь эцээхгүй тугалыг нь тураахгүй гэдэг шиг л ямар хөдөлгөөн зайлшгүй хийх шаардлагатай болон хэр хугацаанд хийх ёстойг тооцоолж байгаад тэрэндээ тохируулж тоноглох хэрэгтэй.  Өөрийн хийсэн нүүр хувиргалтын системээ маш сайн тестлэж бэлдэх хэрэгтэй.Ямар нэг алдаа гарвал бүү сандар бүхнийг ахин шинээр эхлэх хэрэгтэй. Нэг сурчихсан байхад үүнийг байнга сайжруулаад ашиглаад явах бололцоотой. Хүүхэлдэйн тоноглол хийх бол зарим нэг хуучин аргуудыг шууд орхих хэрэгтэй.
                                               Эхний давхарга
Хамгийн эхний суурь давхарга бол холбоос бүхий арьсан давхарга.(skin cluster).Энэ давхарга эрүү, хамар,чих зэргийг хөдөлгөх FK холбоосуудыг агуулна. Энд нэг чухал зүйлийг зайлшгүй анхаарах хэрэгтэй.Бүх холбоосууд эргэх хөдөлгөөн хийхийн хажуугаар шилжих болон том жижиг болох бололцоотой байх ёстой.Тиймээс холбооснуудын вертекст үзүүлэх жинг (weight) тохируулахад нэлээдгүй хугацаа зарцуулах шаардлагатай болдог. Будах горимд жинг тохируулж байхдаа хулганы дунд товчыг даран тухайн холбоосыг камерын харагдах өнцөгтэй перпендикуляр чиглэлд эргүүлж шалгах боломжтой.Жинг тохируулахдаа mirror, prune багажуудыг ашиглах нь тохиромжтой. Жинг тохируулж дууссан бол гадны ямар нэг файлд байнга хадгалж заншсан байх хэрэгтэй. .
   Идэвхжсэн холбоос бүрд FK удирдлага оноохдоо доорхи скриптийг ашиглана. Холбоосуудын нэрийг анхааралтай хараарай!!!!!!!!
   fk удирдлагыг идэвхжсэн холбоосд нэмэх
Мэдээж характер болгоны хэлбэр  өөр учраас цагирагийн хэлбэрийг CV-г нь хөдөлгөж өөрчлөн тохируулах хэрэгтэй.Эхний давхарга бүрэн болсон учир тестлээд үзэх хэрэгтэй.
                                                 2-дахь давхарга
Blend shape буюу морф давхаргыг хийхэд хамгийн их ажиллагаа шаардана.Морф давхарга нь нүүрний тодорхой нэг хэсэгт өргөн хүрээтэй хувиргалт хийх бололцоог олгодог.  Эхний давхарга ихэвчлэн ерөнхий хөдөлгөөн хийхэд ашиглагддаг бол 2 дахь давхаргыг нэмснээр өөрийн хүссэн позыг гаргаж авах бололцоотой. Морфыг хийх олон аргууд байдаг.Гэхдээ хүүхэлдэйн анимацын хувьд дахин дахин ашиглагдаж  болохоор үр дүнтэй аргыг хэрэглэвэл зохистой.Эхний давхарга руу буцаж нүд, уруул гээд хаана л хэрэгцээтэй байгаа газар нь  шинэ холбоосуудыг нэмж өгнө.Эдгээр холбоосуудыг ашиглан нүүрийг янз бүрийн төрхтэй болгож хувиргаж болно.Ихэвчлэн модел бүтээгчид нүүрний морф хэлбэрүүдийг бүтээдэг бол хүүхэлдэйн анимацын хувьд энэ нь аниматоруудын үүрэг.
Дараахь дарааллын дагуу хийх хэрэгтэй
  1. Шинэ холбоосуудыг агуулж, жинг нь тохируулсан нүүрний шинэ хувилбарыг үүсгэнэ.
  2. Үүсгэсэн хувилбарыг аниматор руу дамжуулна
  3. Аниматор нэг нэг фреймд  инээмсэглэх нүдээ аних зэрэг нүүрний хувирал бүрд анимаци хийнэ. 
  4. Хөдөлгөөнд оруулсан нүүрийг буцаад риг хийгч рүү буцаана
  5. Нүүрний хувирал бүрийг тус тусад нь файлд хадгална.
Аниматорууд нүүрний үндсэн гол хувирлуудыг хийж таваас арван кадр анимаци хийх хэрэгтэй. Ингэснээр дундын морфыг хадгалах бололцоо бүрдэнэ. Нүүрний хэсэг тус бүр тусдаа хөдөлдөг байх ёстой.Жишээ нь уурласан болон инээж байгаа нүүрний хувирлуудад харгалзах нэг нэг удирдлага байснаас хөмсөг, уруулыг хөдөлгөх удирдлагууд нь хоорондоо хамааралгүй тус тусдаа бол  хамаагүй илүү үр дүнтэй. Анимаци хийхийн бас нэг давуу тал бол target-уудыг янзлахад тун хялбар.         
Blend shape    
 Blend shape хэлбэржүүлэгч нь энгийн ажиллагаатай боловч хүчирхэг хэрэгсэл юм. Blend shape хэлбэржүүлэгчийн ажиллах үндсэн зарчим нь хувиргаж өөрчилсөн геометр биетийн цэгүүдээс үндсэн эх биетийн цэгүүдийг хасаад ялгаврыг нь хадгалдаг.
                       Vj =SUM(WkBkj)
Энэхүү тэнцэтгэлд Vj  нь биетийн j дүгээр вертекс,Wk нь хувиргалтын жин (вектор), к-дугаартай blend shape-д харгалзах  j дугаартай вертекс
           Blend shape деформ нь  хувиргахдаа  цэгүүдийн хооронд зөвхөн шугаман шилжилт хийдэг сул талтай. Ийм учир анимаци хийхдээ 4-өөс 5 кадрын урттай хийвэл завсрын морф ( in-between) биетүүдийг гаргаж авах бололцоотой болно. Аниматор анимацын дунд хэсэгт  шугаман шилжилтийг хялбархан засаж нуман хэлбэртэй хөдөлгөөнийг нэмж оруулна.
  Дундын биетүүдийг blend shape-д нэмснээр удаан болно гэж айх хэрэггүй.(blend shape үүсгээд target моделуудыг устгасан тохиолдолд). Биетийн хэлбэр өөрчлөгдөж байгаа анимацийг  тухайн фрэйм бүрд хувилж, шинэ нэр оноохдоо доорхи скриптийг ашиглана.
      Анимацыг хувилах