à¤Ã×èͧÁ×ÍÇÒ´ÀÒ¾ 2 ÁÔµÔâ´Â㪈¡ÒÃÇҧÀÒ¾ ÊÓ ËÃѺ¡ÒÃÊÈҧÀÒ¾à¤Å×è͹äËǢͧÀÒÉÒÁ×Í
The Sketching-Based 2D Drawing Tool for Sign Language Animation
ณัฐสินี ตั้งศิริไพบูลย (Natsinee Tangsiripaiboon)*และ นราธิป เที่ยงแท (Narathip Tiangtae)*
บทคัดยอ
งานวิจัยนี้จะนําเสนอเครื่องมือชวยสรางพจนานุกรมภาษามือ ไทยสามมิติ ซึ่งเครื่องมือที่พัฒนาขึ้นในงานวิจัยนี้จะใชหลักการ การรางภาพ และนําหลักการกลศาสตรแบบยอนกลับมา ประยุกตใชเพื่อชวยลดระยะเวลาในการสรางภาพเคลื่อนไหว ของภาษามือ นอกจากนั้นงานวิจัยนี้ยังไดนําเสนอเทคนิคการ กําหนดจํานวนคียเฟรมที่มีประสิทธิภาพสูงดวยการวาดกราฟ เสนโคง ผลการทดลองแสดงใหเห็นวาระบบที่พัฒนาขึ้นใน งานวิจัยนี้มีประสิทธิภาพสูง
คําสําคัญ: ภาษามือ, การสรางภาพเคลื่อนไหวดวยการางภาพ
Abstract
This research presents a tool for building the 3D Thai Sign Language Dictionary. In order to reduce time in adding or editing the vocabulary, we developed a convenient tool based on sketching and applied Inverse Kinematics to help users create the vocabulary in a short period of time. In addition, we proposed an effective technique to calculate the number of frames between a pair of key frames by drawing a curve. The experiments showed that the proposed system is effective.
Keyword: Sign language, Sketching-based animation.
1. บทนํา
ปจจุบันมีความพยายามที่จะนําคอมพิวเตอรกราฟกมา ประยุกตใชในการสรางภาพเคลื่อนไหว 3 มิติของทามือเพื่อชวย ในการเรียนการสอนภาษามือและการติดตอสื่อสารระหวาง
* กลุมวิจัยการจําลองทางคอมพิวเตอรและการคํานวณ ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร มหาวิทยาลัยเชียงใหม
คนหูหนวกกับคนปกติ [1], [2], [3] การใชภาพเคลื่อนไหว 3 มิติ
เพื่อแสดงทามือนี้ชวยทําใหการเรียนรูภาษามือเปนไปไดอยางมี
ประสิทธิภาพ เพราะผูใชสามารถปรับเลือกมุมที่ตองการดู
ยอขยายขนาดของโมเดล หรือจะดูกี่ครั้งก็ไดตามความพอใจ นัทธนทีและคณะ [4] ไดนําเทคโนโลยีดานคอมพิวเตอร
กราฟกมาประยุกตใชในการสรางพจนานุกรมภาษามือไทย 3 มิติ ซึ่งผูใชสามารถเพิ่มและแกไขคําศัพทเองได และยัง สามารถนําคําศัพทภาษามือที่อยูในรูปแบบของภาพเคลื่อนไหว 3 มิติมาเรียงตอกันไดอยางตอเนื่อง ซึ่งผลลัพธของงานวิจัยนี้
ทําใหบุคคลทั่วไปที่ตองการเรียนภาษามือสามารถเรียนรู
ภาษามือเองไดอยางมีประสิทธิภาพ
ณัฐดนัยและคณะไดพัฒนาระบบแปลภาษาไทยเปนภาษา มือไทย 3 มิติแบบใชกฎไวยากรณ (Rule-based Machine Translation) [5] โดยนําพจนานุกรมภาษามือไทยสามมิติที่ได
กลาวไปในขางตนมาประยุกตใชเปนฐานขอมูลคําศัพท
จุดเดนของงานวิจัยนี้คือ สามารถแปลประโยคภาษาไทยไปเปน ประโยคภาษามือที่อยูในรูปแบบภาพเคลื่อนไหวสามมิติที่ใชได
จริงในชีวิตประจําวันของคนหูหนวกได แตอยางไรก็ตาม ประโยคที่สามารถแปลไดในงานวิจัยนี้ยังถูกจํากัดอยูในขอบเขต แคบๆ เนื่องจากจํานวนคําศัพทของภาษามือที่บันทึกไวใน พจนานุกรมยังมีจํานวนนอย ซึ่งสาเหตุสําคัญที่ทําใหการสราง ภาพเคลื่อนไหวสามมิติของภาษามือไทยเปนไปดวยความยาก ลําบากและตองใชเวลาก็คือ จํานวนคําศัพทของภาษามือซึ่งมี
อยูเปนจํานวนมาก [6] และแตละคํามีการเคลื่อนไหวที่ซับซอน จากปญหาดังที่ไดกลาวไปนี้จึงทําใหเกิดแนวคิดที่จะนํา หลักการการสรางภาพกราฟกดวยการวาดภาพในพิกัด 2 มิติ
(Sketching-based) มาประยุกตใชในการสรางและกําหนด การเคลื่อนไหวของแขนซึ่งเปนองคประกอบสําคัญในการกําหนด
ทาทางของภาษามือ ซึ่งเทคโนโลยีการสรางภาพ 3 มิติโดย การวาดภาพในระบบพิกัด 2 มิตินี้ไดรับการพัฒนามาอยาง ตอเนื่อง จุดเดนของเทคโนโลยีนี้ก็คือ ผูใชสามารถออกแบบ โมเดล 3 มิติไดอยางรวดเร็วและสามารถดัดแปลงแกไขรูปทรง ที่ตองการไดโดยงายและมีประสิทธิภาพ [7], [8], [9], [10]
ประโยชนที่จะไดรับจากการนําหลักการการวาดภาพ 2 มิติมาประยุกตใชนี้ก็คือ สามารถชวยใหการสรางภาพ เคลื่อนไหวสามมิติของภาษามือเปนไปไดอยางมีประสิทธิภาพ เสมือนกับวาผูใชกําลังสรางภาพเคลื่อนไหวสามมิติบนแผน กระดาษโดยใชเพียงดินสอและยางลบเทานั้น นอกจากนั้น ประสิทธิผลของงานวิจัยนี้ยังเชื่อมโยงไปถึงประสิทธิภาพใน การแปลภาษาไทยเปนภาษามือ หรือจากภาษามือเปน ภาษาไทย ซึ่งจําเปนตองใชคําศัพทภาษามือจํานวนมากได
อีกดวย
2. งานและทฤษฎีที่เกี่ยวของ 2.1 การรูจํารูปทรงเรขาคณิต
รูปทรงเรขาคณิตพื้นฐานในพิกัด 2 มิติที่จะนํามาใชใน งานวิจัยนี้มีทั้งหมด 3 รูปแบบคือ เสนตรง รูปสี่เหลี่ยม และรูป วงกลม การรูจํารูปทรงพื้นฐานเหลานี้จะนําหลักการการรูจํารูป ทรงเรขาคณิตที่มีคุณสมบัติแบบ Convex Hull [11] รูปทรง เรขาคณิตพื้นฐานที่ไดจากการวาดภาพและผลลัพธที่ไดจาก การรูจําสามารถแสดงไดดังภาพที่ 1
ภาพที่ 1 ตัวอยางรูปทรงเรขาคณิตที่ใชในงานวิจัยนี้
2.2 กลศาสตรแบบยอนกลับ (Inverse kinematics)
กลศาสตรแบบยอนกลับเปนหลักการที่นํามาชวยในการ คํานวณหามุมของขอตอในตําแหนงหัวไหลและขอศอก ซึ่งมุมของหัวไหลและขอศอกจะถูกคํานวณใหโดยอัตโนมัติ
เพียงแครูตําแหนงปลายของขอมือเทานั้น [12]
ภาพที่ 2 การคํานวณหามุมของหัวไหลและขอศอก ถากําหนดให (px, py, pz)T คือตําแหนงของขอมือ l1 คือ ความยาวของแขนทอนบน l2 คือความยาวของแขนทอนลาง มุม θ1 และ θ2 คือมุมที่ใชกําหนดทาของหัวไหล θ3 มุม คือมุมที่
แขนสวนบนกระทํากับแขนสวนลางดังภาพที่ 2 จากรูปเราสามารถคํานวณหามุมตางๆ ไดดังนี้
−
=
Pz Px tan 1
θ1 (1)
−
±
− +
= − −
α α θ π
cos cos tan 1
2 tan
2 1
2 2 1 2
z x
y
P P
P (2)
−
±
= −
β π β
θ cos
cos tan 1
2 1
3 (3)
3. การสรางภาพเคลื่อนไหวดวยคียเฟรม
การสรางภาพเคลื่อนไหวดวยคียเฟรมเปนหลักการที่นิยม ใชกันอยางแพรหลายในการสรางภาพเคลื่อนไหว ซึ่งคียเฟรม ก็คือเฟรมที่ใชกําหนดรายละเอียดการเคลื่อนไหวของโมเดล นั้นๆ โดยจะกําหนดขอมูลการเคลื่อนไหวของมุมของขอตอของ โมเดลลงในคียเฟรมตนทางและคียเฟรมปลายทางเพียงเทานั้น สําหรับขอมูลการเคลื่อนไหวในเฟรมอื่นๆระหวาง 2 คียเฟรมนี้
จะถูกคํานวณใหโดยอัตโนมัติ โดยที่ผูใชไมมีความจําเปนตอง กําหนดการเคลื่อนไหวเอง [12]
3.1 ขั้นตอนวิธีการสรางโมเดล 2 มิติ และการสรางคียเฟรม การสรางภาพเคลื่อนไหวดวยการวาดภาพในงานวิจัยนี้มี
ขั้นตอนวิธีดังตอไปนี้
โมลเดลที่วาด
โมลเดลที่รูจํา ดานหนา ดานซาย ดานขวา
ภาพที่ 3 การสรางโมเดลดวยรูปทรงเรขาคณิตพื้นฐาน นอกจากนั้นในขั้นตอนนี้ผูใชสามารถลบภาพที่วาดไดดวย การวาดเครื่องหมายกากบาททับภาพที่ตองการลบดังภาพที่ 4
ภาพที่ 4 การลบภาพที่ไมตองการดวยเครื่องหมายกากบาท
ภาพที่ 6 การปรับทาแขนของโมเดล
นอกจากนั้นระบบจะทําการกําหนดระยะหางเริ่มตนจาก ขอมือไปยังลําตัวใหโดยอัตโนมัติ ซึ่งผูใชสามารถปรับตําแหนง ของขอมือหรือขอศอกในแนวแกนลึกไดจากระนาบในมุมมอง ดานขางทั้ง 2 ดาน โดยการวาดวงกลมและลูกศรดวยวิธีเดียวกัน 4) เชื่อมโมเดลกับคียเฟรมดวยการวาดลูกศรจากจุดที่มี
ตําแหนงอยูภายในตัวโมเดลไปยังจุดที่อยูภายในคียเฟรมที่ตองการ ในกรณีที่ตองการเปลี่ยนแปลงการเชื่อมโยงกับคียเฟรมสามารถ ทําไดโดยงายเพียงแคลบลูกศรนั้นดวยการวาดเครื่องหมาย กากบาททับแลววาดลูกศรเสนใหมดังภาพที่ 7
5) กําหนดทาแขนของโมเดลสําหรับคียเฟรมถัดไป ซึ่งในขั้นตอนนี้ผูใชไมจําเปนตองวาดโมเดลขึ้นมาใหมทั้งหมด แตสามารถถายสําเนาขอมูลของโมเดลในคียเฟรมกอนหนา ไดดวยการวาดลูกศรจากตําแหนงของโมเดลในคียเฟรม ปจจุบันไปยังดานขวาดังภาพที่ 8
6) กําหนดทาของโมเดลที่ตองการในแตละคียเฟรมจน ครบตามขั้นตอนวิธีที่ไดกลาวมาดังตัวอยางในภาพที่ 9 1) วาดรางกายสวนบนของโมเดลเสมือนมนุษยดวยรูป
วงกลม 7 รูป รูปสี่เหลี่ยมผืนผา 1 รูป และเสนตรง 4 เสน ซึ่งระบบจะทําการประมวลผลและตัดสินใจวาภาพที่วาดขึ้นนั้น เปนรางกายสวนบนของโมเดลหรือไมโดยจะประเมินจากตําแหนง และรูปแบบความสัมพันธของภาพที่อยูรอบขาง หลังจากนั้น ระบบจะทําการสรางภาพ 2 มิติของโมเดลที่ผานกระบวนการ ตรวจสอบแลวใหโดยอัตโนมัติโดยมีมุมมอง 3 ดานดังภาพที่ 3
2) วาดเฟรมรูปสี่เหลี่ยมผืนผาดานลางของโมเดลและวาด เสนตรงเพื่อแบงคียเฟรมใหไดจํานวนตามที่ตองการดังภาพที่ 5 3) กําหนดทาใหมของแขนของโมเดลดวยการวาดวงกลม ของขอมือขางที่ตองการเปลี่ยนตําแหนง หลังจากนั้นวาดลูกศร จากขอมือไปยังวงกลมที่วาดขึ้นมาใหมดังภาพที่ 6 ระบบจะทํา การประมวลผลและกําหนดตําแหนงของหัวไหลและขอศอกใน
ภาพที่ 5 การสรางและกําหนดจํานวนคียเฟรม ทาใหมใหโดยอัตโนมัติตามหลักการของกลศาสตรแบบยอนกลับ ซึ่งในการคํานวณจะยึดความยาวของแขนที่กําหนดไวในขั้นตอน ที่ 1 เปนเกณฑ
ภาพที่ 8 การถายสําเนาขอมูลโมเดล
ภาพที่ 9 ตัวอยางการกําหนดทาของโมเดลดวย 4 คียเฟรม 3.2 การปรับความเร็วของภาพเคลื่อนไหวดวยกราฟ เสนโคง
ในการสรางภาพเคลื่อนไหว การกําหนดจํานวนเฟรม ระหวางคียเฟรมแตละชวงเปนปจจัยสําคัญที่จะชวยใหเราสามารถ ปรับความเร็วในการแสดงผลภาพไดตามความตองการ ซึ่งในงานวิจัยนี้จะนําเสนอวิธีการกําหนดจํานวนเฟรมระหวาง คียเฟรมดวยกราฟเสนโคงดังตัวอยางในภาพที่ 10
ในการคํานวณหาฟงกชันของกราฟเสนโคงที่วาดขึ้นจะใช
หลักการการประมาณคาในชวงเชิงพหุนาม
ภาพที่ 11 การใชกราฟเสนโคงในการกําหนดจํานวนเฟรม จากภาพที่ 11 ถากําหนดให ai คือความชันของเสนตรง ที่ลากผานจุด fi-1 และ fi และกําหนดให wi มีคาดังนี้
>
≤
≤
−
−
<
=
1
; / 1
1 1
; 1
1
;
i i
i i i
i
a if a
a if
a if a
w (4)
ถากําหนดให T คือระยะเวลาในการแสดงภาพเคลื่อนไหว ของคําศัพท 1 คํา ∆tคือระยะเวลาที่ตองใชในการแสดงภาพ 1 เฟรม และกําหนดให n = [T / ∆t] คือจํานวนเฟรมที่สามารถ แสดงไดในระยะเวลา
Interpolation) มาชวยในการคํานวณ โดยจะกําหนดใหกําลัง สูงสุดของพหุนามเทากับ 5 กําหนดให m คือจํานวนคียเฟรม ทั้ งหมดของภาพเคลื่ อนไหวที่ สรางขึ้ น f0 และ fm-1
คือจุดเริ่มตนและจุดสุดทายของกราฟเสนโคงและเปนจุดที่
สัมพันธกับคียเฟรมแรกและคียเฟรมสุดทายของภาพเคลื่อนไหว ตามลําดับ แบงกราฟออกเปน m -1 ชวงเทาๆ กันดังภาพที่ 11
ภาพที่ 10 ตัวอยางกราฟเสนโคงที่ใชในการปรับความเร็ว ภาพที่ 7 การเชื่อมโมเดลกับคียเฟรม
กําหนดให nFramejคือจํานวนเฟรมตั้งแตคียเฟรมลําดับที่
j-1 ถึงคียเฟรมลําดับที่ j ดังภาพที่ 12 โดยที่
1 1
,
1
1
−
≤
≤
×
=
∑
−=
m j n
w nFrame mw
i i j
j (5)
จากสมการที่ 4 และ 5 จะเห็นวาถาความชันของกราฟ ระหวาง 2 คียเฟรมมีคาเปนลบ จํานวนเฟรมระหวางคียเฟรม ทั้งสองจะมีจํานวนมากซึ่งจะใชเวลาในการแสดงผลภาพระหวาง คียเฟรมนาน ตรงกันขามถาความชันของกราฟมีคาเปนบวก จํานวนเฟรมระหวางคียเฟรมจะมีจํานวนนอยซึ่งจะใหเวลาใน การแสดงผลภาพระหวางคียเฟรมสั้น
4. ผลการทดลอง
งานวิจัยนี้ใช Microsoft Visual C++ 2010 Express Edition
ในการพัฒนาโปรแกรม และใช OpenGL ในการแสดงผลภาพ โดยการทดลองจะแบงออกเปน 2 ลักษณะคือ การทดลองเพื่อ ทดสอบประสิทธิภาพในการรูจําโมเดล และการทดลองเพื่อ ทดสอบประสิทธิภาพในการกําหนดการเคลื่อนไหวของแขน ในภาษามือ
4.1 การทดสอบประสิทธิภาพในการรูจําโมเดล ในการทดลองนี้ไดใหผูทดลองทั้งหมด 3 คน วาดรูปโมเดล เสมือนคน รูปกากบาท รูปลูกศร และรูปคียเฟรม คนละ 20 ภาพ ตอ 1 ประเภท โดยผูทดลองทุกคนจะรูองคประกอบที่จําเปน ทุกอยางของโมเดลในแตละรูปแบบ ผลการทดลองแสดงได
ดังตารางที่ 1
จากตารางที่ 1 จะเห็นวาความแมนยําในการรูจําโมเดล รูปแบบตางๆ ที่จําเปนในการสรางภาพเคลื่อนไหวอยูในระดับที่
นาพอใจ
4.2 การทดสอบประสิทธิภาพในการสรางคําศัพทภาษามือ จุดประสงคหลักของงานวิจัยนี้คือการกําหนดทาแขนซึ่ง เปนสวนสําคัญในการสรางคําศัพทภาษามือ 3 มิติที่มีความ ซับซอน ในการทดลองนี้ไดใหผูทดลอง 3 คนเดิมทําการสราง
ตารางที่ 2 ระยะเวลาที่ใชในการสรางคําศัพทภาษามือ
จากตารางที่ 2 จะเห็นวาระบบที่พัฒนาขึ้นจากงานวิจัยนี้
ชวยใหผูใชสามารถสรางภาพเคลื่อนไหว 3 มิติของภาษามือ ไดอยางรวดเร็ว
5. บทสรุป
งานวิจัยนี้ไดนําหลักการการวาดภาพ 2 มิติมาประยุกตใช
ในการสรางภาพเคลื่อนไหว 3 มิติของคําศัพทภาษามือไทย โดยมีวัตถุประสงคเพื่อใหการสรางภาพเคลื่อนไหวของภาษามือ เปนไปไดอยางมีประสิทธิภาพเสมือนกับวาผูใชกําลังสรางภาพ เคลื่อนไหว 3 มิติบนแผนกระดาษโดยใชเพียงดินสอและยางลบ เทานั้น นอกจากนั้นงานวิจัยนี้ยังไดนําหลักการกลศาสตรแบบ ยอนกลับมาชวยในการกําหนดทาทางการเคลื่อนไหวของ โมเดล และไดนําเสนอวิธีการปรับความเร็วของภาพเคลื่อนไหว
โมเดลที่วาด ความแมนยําในการรูจํา (%)
คน 90
กากบาท 100
ลูกศร 93.33
คียเฟรม 91.66
ประเภทของภาษามือ
เวลาโดยเฉลี่ย งานวิจัย [4]
(นาที)
เวลาโดยเฉลี่ย [งานวิจัยนี้]
(นาที)
แบบมือเดียวไม 1.57 0.89
แบบมือเดียวซับซอน 3.41 1.3
แบบสองมือไม 2.43 1.49
แบบสองมือซับซอน 5.61 2.22
ภาพที่ 12 จํานวนคียเฟรมตั้งแตคียเฟรม Kj-1 ถึง Kj
ตารางที่ 1 ประสิทธิภาพในการรูจําภาพของโมเดลตางๆ
คําศัพทภาษามือมาคนละ 100 คํา โดยคําศัพทภาษามือที่สราง ขึ้นนั้นมีทั้งคําศัพทที่มีการเคลื่อนไหวที่ซับซอนและไมซับซอน และคําศัพทที่ใชแขนเดียวและสองแขน
เมื่อนําผลการทดลองที่ไดจากการใชระบบที่พัฒนาขึ้นใน งานวิจัยนี้ไปเปรียบเทียบกับผลการทดลองที่ไดจากการใช
โปรแกรมสรางพจนานุกรมภาษามือไทย 3 มิติ [4] สามารถ แสดงไดดังตารางที่ 2
ดวยกราฟเสนโคงซึ่งชวยใหผูใชสามารถกําหนดความเร็วของ ภาพเคลื่อนไหวในแตละชวงของคียเฟรมไดโดยงายและมี
ประสิทธิภาพ
นอกจากนั้นในมุมมองของการแปลภาษาดวยคอมพิวเตอร
แบบใชกฎ จํานวนคําศัพทที่บันทึกไวในพจนานุกรมภาษาตน ทางและปลายทางจะมีผลกระทบโดยตรงตอประสิทธิภาพในการแปล ดังนั้นระบบที่พัฒนาขึ้นนี้นอกจากจะชวยใหการสรางพจนานุกรม ภาษามือไทย 3 มิติเปนไปไดอยางมีประสิทธิภาพแลว ยังจะ เชื่อมโยงไปถึงประสิทธิภาพในการแปลจากภาษาไทยเปนภาษามือ หรือจากภาษามือเปนภาษาไทยไดอีกดวย
6. เอกสารอางอิง
[1] S. Yeates, E.J. Holden, and R. Owens, “An Animated Auslan Tuition System,” in International Journal of Machine Graphics and Vision, Vol. 12, No. 2, pp. 203-214, 2003.
[2] Xu Lin, Gao Wen, “Human-Computer Chinese Sign Language Interaction System,” Human-Computer Chinese Sign Language Interaction System, Vol.4, No.3 ,2000.
[3] Hirohiko Sagawa, Masaru Takeuchi, “A Teaching System of Japanese Sign Language Using Sign Language Recognition and Generation,” Proceedings of the tenth ACM international conference on Multimedia, Juan-les-Pins, France, pp. 137–145, 2002.
[4] N. Maneerat, N. Tiangtae, “Development of Tools for Building the 3D Thai Sign Language Dictionary,”
Proceedings of the 6th International Joint Conference on Computer Science and Software Engineering (JCSSE 2009), Phuket, Thailand, pp. 27-32, May 2009.
[5] N. Homkong, N. Maneerat, N. Tiangtae, “Development of Thai–3D Thai Sign Language Machine Translation System,” Proceeding of the 2nd ECTI-Conference on Application Research and Development, Pattaya, Thailand, pp. 111-116, May 2010.
[6] คณะวิจัยภาษามือไทย, ปทานุกรมภาษามือไทย ฉบับ ปรับปรุงและขยายเพิ่มเติม, สมาคมคนหูหนวกแหง ประเทศไทย (ส.ห.ท.), เลม 1 -2, กรุงเทพฯ, 2533.
[7] R.C. Zeleznik, K.P. Herndon, J.F. Hughes, “SKETCH:
An interface for sketching 3D scenes,” SIGGRAPH’96.
[8] T. Igarashi, S. Matsuoka, H. Tanaka, “Teddy: A Sketching Interface for 3D Freeform Design,”
SIGGRAPH’99.
[9] V. Kraevoy, A. Sheffer, Michiel van de Panne.,
“Modeling from Contour Drawings,” EUROGRAPHICS Symposium on Sketch-Based Interfaces and Modeling, 2009.
[10] J. LaViola, R. Zeleznik, “MathPad2, A System for the Creation and Exploration of Mathematical Sketches,”
ACM Transactions on Graphics, 23(3), pp. 423-440, August, 2004.
[11] A. Apte, V. Vo, T.D. Kimura, “Recognizing Multistroke Geometric Shapes: An Experimental Evaluation,”
Proceedings of ACM conference on User Interface and Software Technology (UIST), pp. 121-128, 1993.
[12] Nik Lever, Real-time 3D Character Animation with Visual C++, Focal Press, 2002.