này, ta sử dụng các thao tác như dịch chuyển, xoay, co giãn cùng với các kỹ thuật chỉnh sửa như cắt xén, mở rộng, thêm bớt …để tạo nên đối tượng mong muốn trong thế giới thực. Sau đó các đối tượng sẽ được thêm xương (nếu có), tính chất bề mặt (như màu sắc, da, tóc, mắt,…) và được tạo các chuyển động mô phỏng một cách sinh động các thể hiện của đối tượng trong thế giới thực.
Thứ hai là lập trình điều khiển mô hình :Hệ thống mô phỏng thử nghiệm mô phỏng sợi tóc thông qua sử dụng ngôn ngữ lập trình C++, thư viện đồ hoạ OpenSG và thư viện mã nguồn mở.
Khi làm việc với các phần mềm ta sẽ thao tác trên 4 khung nhìn khác nhau của đối tượng, 4 khung nhìn này sẽ cho ta nhìn được đối tượng ở các góc độ khác nhau một cách đồng thời, hình ảnh sau đây minh họa điều này :
Hình 3.1. Các khung nhìn khác nhau trên 3DSMax
Ta có hệ trục tọa độ 3 chiều XYZ, màu xanh lam ứng với trục Y, đỏ với trục X và xanh đậm với trục Z. Góc trên phải là khung làm việc cho phép ta thao tác trong 3 chiều, 3 góc còn lại cho phép ta làm việc ở 3 mặt cắt của mô hình. Với các
khung nhìn này ta có thể thao tác dễ dàng hơn, khi một thay đổi xuất hiện ở một khung nhìn sẽ cho hiệu ứng đối với các khung nhìn khác.
Bên cạnh hệ trục tọa độ XYZ ta còn có hệ tọa độ UV, hệ tọa độ UV bao bọc bề mặt theo 2 chiều trái sang phải và dưới lên trên. Có thể hình dung ra hệ tọa độ này như là các đường kinh tuyến và vĩ tuyến của trái đất. Hệ tọa độ này chủ yếu được sử dụng trong quá trình thêm tính chất bề mặt cho mô hình.
Có thể bạn quan tâm!
- Nội Suy Các Điểm Còn Lại Để Đảm Bảo Ràng Buộc Trong Một Vùng Tóc
- Nâng Cao Hiệu Quả Mô Phỏng Đối Tượng Dạng Sợi, Mảnh
- Kỹ Thuật Mô Phỏng Đối Tượng Dựa Vào Mass-Springs
- Kỹ thuật mô phỏng đối tượng dạng sợi và ứng dụng mô phỏng tóc trong thực tại ảo - 9
- Kỹ thuật mô phỏng đối tượng dạng sợi và ứng dụng mô phỏng tóc trong thực tại ảo - 10
Xem toàn bộ 81 trang tài liệu này.
3.3. Một số kết quả của chương trình thử nghiệm
3.3.1. Kết quả thử nghiệm kỹ thuật mô phỏng sử dụng NURBS
Với lựa chọn công cụ là phần mềm 3DSMax và ngôn ngữ lập trình C++, thư viện đồ họa OpenSG và mã nguồn mở với các thuật toán kỹ thuật xử lý ảnh. Sau đây là kết quả thu được khi mô phỏng mô hình 3D về sợi tóc trên máy tính.
Mô phỏng một số đối tượng có hình dạng sợi, mảnh dựa vào mô hình NURBS
Hình 3.14. Mô phỏng đối tượng dạng sợi
Hình 3.3. Xác định vectơ nút ứng với trường hợp tối ưu
Trên cơ sở có mô hình sợi tóc, chúng ta cần biểu diễn tóc hay các kỹ thuật nâng cao chất lượng biểu diễn tóc sao cho phù hợp với từng ứng dụng. Ví dụ: trong giải trí, thường không yêu cầu cao về chất lượng hình ảnh mà chủ yếu yêu cầu về tốc độ xử lý.
Tiếp theo, trình bày một ứng dụng cụ thể về mô phỏng tóc trên nhân vật con người với một số chức năng như: thiết lập số lượng sợi tóc, mảnh tóc, kích thước của mỗi sợi, bó tóc, độ dài và số điểm điều khiển mỗi sợi cũng như thêm vào các ràng buộc như: sức gió, lực hấp dẫn và trọng lực, màu sắc,.. trên cơ sở những nghiên cứu và đề xuất trên.
Sử dụng công cụ 3DS MAX, MAYA để tạo mô hình nhân vật cũng như thiết kế và định nghĩa các vùng cho phù hợp như: vùng mặt, vùng tóc, lông mày, lông my, vùng râu, vùng ria, …trên mô hình con người ảo.
+ Mô hình đầu được thiết kế từ 3DS MAX:
Hình 3.1. Mô hình thiết kế đầu và chi tiết thành phần (đầu và da đầu)
+ Mô hình đầu được lưu trữ với định dạng: *.WRML, *.LWO
Vì mỗi một định dạng (*.WRML, *.LWO,) lại có cách tổ chức và lưu trữ dữ liệu khác nhau, tùy thuộc từng định dạng mà có cách load khác nhau, vì vậy một yêu cầu tối thiểu trong quá trình load các file này vào chương trình là phải nắm rõ được cấu trúc cũng như cách tổ chức dữ kiệu của từng định dạng, từ những hiểu biết đó mới có thể làm chủ được các định dạng này.
Hình 3.2. Minh họa mô hình render tổng thể
+ Tiếp theo, sử dụng ngôn ngữ lập trình như VC++ kết hợp với các thư viện đồ họa như OpenGL để load mô hình, điều khiển và tiến hành mô phỏng tóc trên các mô hình đã thiết kế này. Load một mô hình vào chương trình thực chất là việc lấy các thông số về tọa độ các điểm của mô hình trong không gian 3 chiều, các thông tin về màu sắc, ánh sáng,...
Xác định các bề mặt (Faces) đã được định nghĩa trong khi thiết kế mô hình, mỗi một bề mặt là tập hợp của nhiều đa giác. Mỗi một đa giác thường được cấu thành từ các thành phần nguyên thủy như: vertex, nomal, color…. , ở đây cần quan tâm nhiều đến Vertex chính là một điểm hay một đỉnh của một đa giác. Một Vertex sẽ quan tâm tới hai thành phần đó là: position và một vector nomal. Nếu chỉ sử dụng các position được định nghĩa sẵn từ mô hình thì thử hình dung: mỗi người thường có khoảng trên 100 nghìn sợi tóc, tức là tạo trước cần đó position cho mỗi FacesHair. Đây quả là một thách thức không nhỏ trong quá trình thiết kế. Nhưng lại có một cách khá đơn giản mà hiệu quả: thay vì phải tạo ra hàng nghìn position, mà chỉ thiết kế, tạo ra khoảng vài trục position cho mỗi FacesHair, sau đó áp dụng các thuật toán nội suy cho các position đó để sinh ra các position mới.
Tiến hành biểu diễn các sợi tóc và cho chúng chuyển động theo các ngoại lực tác dụng hoặc chuyển động ngẫu nhiên. Trong ứng dụng này dựa trên kỹ thuật bề mặt NURBS đã trình bày trong chương 2.
Kết quả chính: dưới đây một số kết quả đạt được dựa trên những thuật toán đề xuất trên, với thể hiện một số thuộc tính của mô hình tóc như: Biểu diễn sợi tóc, mảnh tóc, màu sắc, tác động ngoại lực (gió thổi, lực hấp dẫn, trọng lực) với số điểm điều khiển, độ dài và kích thước khau nhau của tóc.
Dưới đây là một số kết quả thử nghiệm cài đặt Thuật toán AHS thực hiện việc mô phỏng tóc trên bề mặt da đầu và đã được cài đặt thực nghiệm trên máy tính PC với Core(TM) i5 @ 2.60 GHz, 2 GB RAM bằng phần mềm Visual C++, thư viện OPENGL ứng với số lượng sợi tóc khác nhau.
Head
Win
Hair Color
Background
Tools
Option
Hệ thống mô phỏng tóc được xây dựng với các chức năng chính như sau:
Help
Hệ thống mô phỏng tóc
File
Open
Exit
Hình 3.3. Chức năng chính của hệ thống
Một số giao diện chính của hệ thống:
Hình 3.4. Giao diện chính và tuỳ chọn cách tạo tóc
Trong hình 3.7, cho phép lựa chọn việc biểu diễn tóc dưới dạng sợi tóc, hay bó tóc với những thuộc tính ràng buộc về số lượng sợi tóc, kích thước, số điểm điều khiển và độ dài mỗi sợi tóc.
- Biểu diễn sợi tóc bởi NURBS:
a) Tóc với 8 sợi b) Tóc với 870 sợi c) Tóc với 2820 sợi
Hình 3.5. Tóc với số sợi khác nhau
- Biểu diễn bó tóc bởi NURBS:
a) Bó tóc với 7 sợi b) Bó tóc với 450 sợi c) Bó tóc với 750 sợi
Hình 3.6. Bó tóc với số sợi khác nhau
- Giao diện minh hoạ một số màu của tóc:
Hình 3.7. Hai kiểu tóc màu trắng và đen xoắn cùng với gió thổi
Ngoài ra, khi thêm những thuộc tính khác nhau thì hệ thống mô phỏng sẽ cho những kết quả khác nhau, cụ thể:
Dưới đây là hình ảnh tóc kết quả khi thực hiện thuật toán AHS với một số kiểu tóc ngắn (tóc nam giới) khi không và có ngoại lực tác động.
a) 10.000 sợi tóc, độ lớn=1,0 b) 50 sợi tóc, độ lớn=1,0
Hình 3.15. Một số mô hình tóc khi không có lực tác động
Sau khi thêm vào những lực tác động như gió (wind), trọng lực (gravity) ứng với số sợi tóc, độ lớn (width), điểm điều khiển (control point) và độ dài của mỗi sợi tóc (length) khác nhau.
a) Có 10.000 sợi tóc; trọng lực=15,0; độ lớn=1,0; số điểm điều khiển=4; độ dài=3,0 và có các hướng gió tác động khác nhau
b) Bó tóc có 50 sợi; độ lớn=1,0; số điểm điều khiển=5; gió=2,0 và có trọng lực khác nhau
Hình 3.12. Một số mô hình tóc khi có lực tác động
* Kết quả thực nghiệm: mô hình NURBS tổng quát ở công thức (2.9) và NURBS nâng cao ở công thức (2.12) vào mô phỏng tóc với số sợi, điểm điều khiển khác nhau.
Biểu đồ 2.1. So sánh thời gian tính toán giữa mô hình NURBS gốc ở công thức (2.9) và mô hình NURBS cải tiến ở công thức (2.12):