MỤC LỤC
LỜI CẢM ƠN. 1
LỜI CAM ĐOAN .
MỞ ĐẦU . . 4
CHƯƠNG I: THỰC TẠI ẢO VÀ CHẤT LIỆU TRONG THỰC TẠI ẢO .5
1.1. Thực tại ảo và ứng dụng.5
1.1.1. Khái niệm về thực tại ảo .5
1.1.2. Các lĩnh vực ứng dụng của thực tại ảo . 5
1.2. Mô phỏng chất liệu trong thực tại ảo . 10
1.2.1. Tổng quan về mô phỏng chất liệu . 10
1.2.2. Mô hình mô phỏng chất liệu tóc. . 14
1.3. Chức năng. . . 17
CHƯƠNG II: MÔ PHỎNG CHẤT LIỆU LÔNG, TÓC TRONG THỰC
TẠI ẢO . 21
2. 1. Mô phỏng tóc ở mức độ chi tiết . 21
2.1.1. Những sợi tóc riêng lẻ . 22
2.1.2. Miếng tóc . 29
2.1.3. Bó tóc . . 30
2.2. Nhóm và chia nhỏ nhóm .33
2.2.1 Xây dựng mô hình phân cấp tóc. 33
2.2.2. Chia nhỏ mảnh và bó .34
2.2.3. Chia nhỏ những nhóm sợi . 35
2.2.4. Hợp nhất ngầm định cho mô phỏng động. 36
2.2.5. Khả năng chia nhỏ của tóc . . 38
- 3 -2.2.6. Khả năng hòa trộn. . 39
2.3.1. Tương tác giữa tóc với tóc . . 41
2.3.2. Tương tác giữa tóc với vật thể khác . . 42
2.4. Phát hiện va chạm . 43
2.5. Việc thúc đẩy cho hệ thống khung kép . 51
2.6. Thiết lập bộ khung kép . . 52
CHƯƠNG III : XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG . 54
3.1. Giới thiệu một số mô hình tóc . 54
3.2. Xây dựng chương trình ứng dụng . 57
3.2.1. Chương trình mô phỏng chất liệu lông . 57
3.2.2. Chương trình mô phỏng chất liệu tóc . 61
KẾT LUẬN . 68
TÀI LIỆU THAM KHẢO . . 69
69 trang |
Chia sẻ: netpro | Lượt xem: 1832 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Đồ án Mô phỏng chất liệu trong thực tại ảo và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
út Pi trong khung.
Một trong những ảnh hưởng lớn của việc sử dụng cách mô phỏng tóc ở mức độ
chi tiết trong một mô phỏng trực quan là khả năng chuyển tiếp giữa những cách
mô phỏng đơn giản một cách mượt mà, êm ái. Thật tuyệt vời, nếu sự chuyển đổi
giữa những mức đó làm cho người xem khó phát hiện những lỗi của tóc, khi mà
nó đang mô phỏng. Để tránh một sự thay đổi đột ngột những cảnh biến đổi đồ
hoạ của tóc, thì cần phải xác định vị trí điểm điều khiển trên khung của tóc và
quản lý sự chuyển động của nó trong suốt quá trình mô phỏng. Một khi sự
chuyển động của mỗi mức chi tiêt được dựa vào mô hình khung nằm bên dưới
đó, chúng ta có thể sử dụng những công thức tính được để di chuyển từ mức này
sang mức khác một cách trơn tru. Như vậy khi sự chuyển đổi được kích hoạt thì
một bộ khung mới ở mức độ chi tiết được tạo ra, trạng thái hoạt động của nó
được kế thừa từ bộ khung trước đây. Khi mà chuyển đổi từ cách mô phỏng đơn
giản đến mức cao hơn, chi tiết hơn, những trạng thái chuyển động của bộ khung
mới được chèn vào cạnh khung của mức trước đây, tạo ra một chuỗi các khung
liên tiếp các khung có những mức dịch chuyển thay đổi không đáng kể so với
khung ban đầu.
Ví dụ, nếu mô phỏng tóc chi tiết tóc hiện thời là một ảnh 2D được áp vào
khung của tóc, thì có một thuật toán làm cho kiểu tóc tinh tế hơn và làm sự
chuyển tiếp cho nhiều bó tóc. Trong suốt quá trình chuyển tiếp này, một miếng là
đặc thù của năm bó tóc chụm lại, trong khu vực chuyển tiếp này, từ một kiểu ban
đầu cùng với một khung hình đến một kiểu khác cùng với năm khung hình cơ
bản. Trong thời gian chuyển tiếp từ một miếng tóc đến năm bó tóc, bó trung tâm
- 27 -
kế thừa những giá trị chính xác từ bộ khung của miếng, khi đó bộ khung của bó
trung tâm nằm tại vị trí của bộ khung của miếng tóc. Những bộ khung của các
bó còn lại được tính toán bằng việc thêm vào những giá trị của nó từ những
khung của miếng tóc, việc thêm vào này dựa vào vị trí gốc của nó, hoặc điều
khiển những điểm đầu tiên trên bộ khung P0 trong mối quan hệ với gốc bộ
khung của miếng tóc. Hơn nữa, năm bó tóc mới bao trùm kín lên vùng của
miếng tóc trước đây.
Những quá trình chuyển tiếp này thậm chí còn trơn tru hơn trong hướng
chuyển động ngược lại. Sau khi chúng ta dịch chuyển năm bó tóc lại thành một
miếng đơn, bộ khung của miếng tóc được kế thừa từ bộ khung của bó trung tâm.
Những chuyển tiếp giữa những bó và những sợi riêng lẻ được thực hiện theo một
cách tương tự. Bởi vì việc sử dụng những cách mô phỏng đơn giản cùng nhau,
khung của chúng ta tự động chuyển giữa các mức chi tiết khác nhau của tóc và
những chuyển động đơn giản của tóc khi cần, có thể cũng sử dụng khung cơ bản
đó. Một miếng là một mô hình lớn nhất của kiểu một kiểu tóc và việc mô phỏng
của nó phụ thuộc vào những nhóm tóc riêng lẻ hay những bó tóc. Khi thích hợp,
những miếng tóc được tăng tốc mô phỏng, trong khi đó nó vẫn đảm bảo chuyển
động của tóc ở mức độ cao. Những bó tóc cũng được sử dụng tương tự để tăng
tốc mô phỏng cho tóc.
Cả 3 mô hình trên của tóc được bắt nguồn từ công thức tính được của những
thanh đồng dạng tạo nên những bộ khung cho tóc. Những khung hình học có
những nút có thể di chuyển linh hoạt được thiết kế để cho phép hợp nhất những
hành vi hoạt động theo những hình dạng hình học khác nhau của tóc. Những
khung hình này trình bày khái quát cho những mẫu bề mặt ở dạng tự do. Hình
dạng của một khung cong hoặc bề mặt của tóc được xác định bằng cách điều
khiển những điểm trong khung hay những lực của nó. Với những khung hình
động sử dụng cho mô phỏng tóc, những đơn vị đo có thể được ứng dụng trực tiếp
để điều khiển những điểm trên khung vào quá trình tự động sửa đổi hình dạng
của bất kỳ khung động nào hay những bề mặt của khung tuân theo một quy luật.
Gọi Bi,k (u) là những hàm cơ bản của những đọan thẳng, ta có những hàm cơ bản
- 28 -
của (k-1) đoạn. Những đường cong của khung động đại diện cho những hàm phụ
thuộc thời gian( hay là những hàm biến đổi theo thời gian).
Pi (t) là hàm thời gian phụ thuộc vào những điểm được điều khiển và Wi (t) là
hàm thời gian phụ thuộc vào toạ độ các điểm đã được khái quát trong khung
động của tóc. Những hàm đường cong khác nhau phụ thuộc vào những khoảng
thời gian khác nhau, C( u,t) nhấn mạnh sự phụ thuộc vào vector C( u,P( t)) và nó
là một hàm phụ thuộc vào thời gian. Tương tự một miếng của khung động được
sử dụng những phần tử nhạy cảm để mô phỏng những bề mặt cho tóc. Dựa vào
việc trình bày khung động và những khung cơ bản, chúng ta có thể mô phỏng ba
mô hình đơn giản của tóc. Cách tiếp cận của chúng ta là một cơ chế mạnh cho sự
tự động đơn giản những chuyển động được ưu tiên và những mô phỏng hình học
cho sự phát hiện va chạm và những biến đổi đồ hoạ của tóc.
Một khung cơ bản bao gồm những điểm được điều khiển nhất định, hoặc những
nút, khung bao gồm một chuỗi các đoạn thẳng được liên kết bằng các nút. Một
lực đàn hồi dùng để điều khiển góc giữa các nút, trong khi khoảng cách giữa
những nút là không thay đổi.
Có n điểm điều khiển là ( P0, P1, …, Pn-1) và n-1 đoạn ( S1, S2,…, Sn-1) cho bộ
khung. Số điểm điều khiển được đánh dấu một cách tự động, dựa vào những tiêu
chuẩn nhất định, như độ dài của tóc, tóc lượn sóng, hay tóc quăn và muốn đạt
được một sự mượt mà, uyển chuyển như trong thực tế. Những điểm điều khiển,
hay những nút này của khung là những vị trí hoạt động tích cực dựa vào tiêu
chuẩn đã được trình bày. Dạng lượn sóng hoặc dạng quăn của tóc được sử dụng
một tham số cho góc và tần số của sóng. Việc sắp xếp các nút dựa vào những toạ
độ cực của mỗi nút, và Ø0 đại diện cho nó, cùng với những góc của các nút trong
chuỗi đó. Trong hình 2(b), góc Ø0 xác định dạng sóng của tóc bằng việc xác định
một góc nằm trong khoảng từ 0 đến 90 độ, (đối với tóc thẳng thì Ø0 =0).
Một số nhỏ những sợi riêng lẻ có thể được nhóm lại thành những bó, như vậỵ
mỗi một mô hình khung được sử dụng để đại diện cho một nhóm những sợi riêng
- 29 -
lẻ. Đa số mỗi một đầu của con người có một ít những sợi tóc riêng lẻ xõa ra. Khi
mà tóc được nhìn từ khoảng cách gần thì một số tóc đó thường là không được
hoàn hảo. Bởi vì việc thêm chúng vào mô hình làm cho giống với hiện thực hơn.
Từ những sợi tóc xõa ra này, nó được dùng ở dìa của mô hình tóc, và xung quanh
cái bóng của cái đầu khi mà bóng của đầu được chiếu lên một vật thể nào đó,
chúng xuất hiện ở hình bóng của mô hình tóc. Khả năng nhìn thấy những sợi tóc
riêng lẻ này làm cho việc trình bày về mô hình tóc tinh tế hơn cho những bó tóc.
2.1.2. Miếng tóc
Mô phỏng tóc dưới dạng miếng được sử dụng một kiểu khung cơ bản
phục vụ cho chuyển động của nó. Bộ khung trung tâm của miếng và mỗi nút
trong bộ khung có hai điểm điều khiển được sử dụng để định nghĩa miếng. Hai
điểm nút điều khiển của miếng và điểm nút điều khiển của khung được theo một
trật tự nhất định. Khoảng cách giữa hai điểm điều khiển từ nút của khung phụ
thuộc vào kích thước xác định được của mỗi miếng tóc.
Hình 2.1.5: Khung cơ bản của mảnh tóc
Một bộ khung được tạo nên từ n điểm sẽ sử dụng 2n điểm điều khiển để định
nghĩa một khung động cho một miếng tóc. Mỗi một lần 2 điểm điều khiển được
xác định từ các nút của khung , những nút điều khiển của khung được quay dựa
vào sự định hướng của miếng tại thời điểm đó. Sự định hướng của miếng tóc đối
với những tóc lượn sóng được xác định từ bước sóng của tóc. Nếu miếng tóc
được gắn vào Đầu thì sự định hướng chuyển động của tóc sẽ theo sự định hướng
- 30 -
của Đầu khi mà Đầu chuyển động.
Một miếng tóc tiêu biểu được sử dụng đại diện cho đa số các lớp bên trong của
một kiểu tóc hoặc những bộ phận khác của tóc. Nó là cái cơ bản nhất của mức
chi tiết được sử dụng để mô phỏng cho mô hình tóc.
Hình 2.1.6: Những cách mô phỏng tóc sử dụng những khung động và những
bộ khung cơ sở. Những chấm là những điểm điều khiển và những đường gấp
khúc là khung cơ bản, (a) Miếng tóc; (b) Bó tóc; (c) Sợi tóc
2.1.3. Bó tóc
Những bó được mô phỏng giống như việc tạo ra những hình trụ cùng với
những kết cấu bề mặt động, nó được thể hiện trong hình.
Hình 2.1.7: Khung cơ bản của bó tóc
Mỗi bó được dựa vào một đường cong của bộ khung được đặt tại trung tâm của
bó. Bán kính được xác định tại đầu và đáy của mỗi bó. Bán kính được thêm vào
tại mỗi điểm của khung, nó cho phép thay đổi độ dày của điểm đặt bán kính này
theo độ dài của bó tóc. Tại mỗi nút ở bộ khung, một mặt cắt ngang bó tóc tạo ra
- 31 -
những đường tròn với bán kính có giá trị được xác định tại nút đó. Bốn điểm điều
khiển được sử dụng để tạo ra hình dạng vòng tròn này của mặt cắt ngang cho mỗi
nút của bộ khung. Như vậy một bộ khung được dựa trên n điểm sẽ tạo ra một bó
gồm 4n điểm để điều khiển. Mỗi mặt cắt ngang được định nghĩa có 4 điểm điều
khiển được quay dựa vào việc định hướng của bộ khung tại điểm đó.
Hình 2.1.8: Mô phỏng bó tóc và điều chỉnh độ dài của tóc
Dựa trên bộ khung cơ bản này mà chúng ta có thể điều khiển được độ dài
của tóc theo mong muốn, những điểm của khung ở phía dưới cái kéo đều bị loại
bỏ. Điều khiển những điểm quay là một bước cần thiết để cho bó tóc hoạt động,
tạo ra sự uyển chuyển và tạo dáng chuyển động cho tóc, đặc biệt là cho tóc quăn
và gợn sóng. Để tạo ra những kiểu tóc quăn hay lượn sóng ta sử dụng giải thuật
sau:
angle = 0;
For each hair node of the key hair{
Position(hair node) = Position(hair node) + cos(angle) * radius
*direction 1 + sin(angle)* radius * direction 2
angle = angle + progressive angle
Next node};
Ban đầu, ta khởi động cho góc giữa hai nút là bằng 0, sau đó tại mỗi vị trí của các
nút tiếp sau sẽ là một hàm phụ thuộc vào hàm sin và cos, ta có hình ảnh của bó
tóc như sau:
Hình 2.1.9: Khung của búi tóc
- 32 -
Một bó được sử dụng làm mô hình cho những lớp trung gian của tóc và thường
tạo ra phần lớn tóc của thân thể. Nó thích hợp ở nhiều nơi, nó ít tốn kém hơn
nhiều so với cách cách mô phỏng khác, để mô phỏng một nhóm tóc sử dụng mô
hình bó tóc thay vì một số lớn những sợi tóc riêng lẻ. Những sợi tóc được mô
phỏng đặt bên trong lớp khung này, do vậy để cho những sợi tóc này chuyển
động chúng ta chỉ cần đìều khiển cho bộ khung này chuyển động mà thôi, khi đó
những sợi tóc này sẽ tự chuyển động theo.
Hình 2.1.9a: Hình dạng của búi tóc, bao gồm 3 bó tóc nhỏ bện tóc.
Để có thể tạo ra những búi tóc như trong hình vẽ, ta sử dụng giải thuật sau:
dir0 = horizontal; // x-axis direction dir1 = vertical; // y-axis
direction dir2 = CrossProduct(dir0,dir1);
dir1_q = a * sin(angle); // angle: the angle difference
dir2_q = b * sin(angle2); // angle2: the angle difference
hairs->wisp[i].Path[j] = hairs->wisp[i].Path[j] +dir1_q*dir0 +dir2_q*dir2;
Ở giải thuật này ta sử dụng tới 3 bó tóc nhỏ, sau đó đặt cho mỗi bó một
hướng phù hợp, và được sử dụng hàm số sin cho mỗi bó tóc. Đối với những
kiểu tóc được mô phỏng ở dạng bó, thì lưới khung cho tóc phải được thay đổi
cho phù hợp.
- 33 -
Hình 2.1.9b: Khung và tóc thể hiện dưới dạng bó tóc.
2.2. Nhóm và chia nhỏ nhóm
2.2.1 Xây dựng mô hình phân cấp tóc
Giải thuật mô phỏng ở mức độ chi tiết của chúng ta sử dụng việc chia
nhỏ liên tục của những nhóm sợi, những bó, những mảnh để đạt đến những độ
chi tiết khác nhau, dựa vào những trạng thái mô phỏng hiện thời.Việc chia nhỏ
được thực hiện như là một luồng xử lý, và thông tin được lưu lại, được sử
dụng trong thời gian thực hiện quá trình mô phỏng. Trong khi thực hiện chia
nhỏ một nhóm tóc, nhiều bộ khung được thêm vào hệ thống, tạo ra một cách
mô phỏng ở mức độ chi tiết hơn. Sự phân cấp nhóm sợi của chúng ta được xây
dựng theo kiểu từ trên xuống, tạo ra những nhóm nhỏ hơn, cho đến khi nào
không thể chia nhỏ được nữa.
Chúng ta thực hiện đồng thời những phân cấp nhóm sợi với những phân cấp
bó và mảnh để đạt đến độ riêng biệt và liên tục của việc mô phỏng ở mức độ chi
tiết. Sự phân cấp của kiểu trình bày tóc được minh họa trong hình 4, mảnh tóc
gốc trong sự phân cấp mảnh là một kiểu trình bày thô nhất, cơ bản nhất cho một
tập hợp tóc. Để đạt được độ chi tiết hơn, chúng ta phân theo chiều ngang và dần
xuống, cho đến khi không thể chia nhỏ tiếp được nữa.Sau đó đưa những biến đổi
mảnh ở mức độ chi tiết, tinh tế nhất vào trong mô phỏng cơ bản nhất của các bó,
hoặc bó gốc trong việc mô phỏng phân cấp bó. Tương tự cho những bó, chúng ta
cũng phân tích theo chiều ngang và đi dần xuống cho đến khi không thể chia nhỏ
ra được nữa. Tại điểm này, việc mô phỏng các bó được thay thế bởi những đỉnh
của những nhóm sợi trong việc phân cấp nhóm sợi. Để đạt tới độ mô phỏng chi
- 34 -
tiêt, chúng ta duyệt qua tất cả các nút ở cây nhóm sợi cho đến khi nào duyệt qua
các sợi tóc riêng biệt. Những mục tiếp theo giải thích những quá trình xây dựng
và phân cấp chia nhỏ của chúng ta bắt đầu với sự hình thành của sự phân cấp bó
và mảnh tóc.
Hình 2.2.1: Phân cấp tóc. Phân cấp tóc bao gồm: phân cấp mảnh đơn, nhiều phân
cấp bó, phân cấp những nhóm sợi. Kiểu mô phỏng tóc thô nhất được thể hiện
trong phân cấp mảnh, ở vị trí đỉnh đầu tiên trong toàn bộ công việc phân cấp tóc.
2.2.2. Chia nhỏ mảnh và bó
Trước khi chúng ta có thể xây dựng việc phân cấp của những mảnh tóc
hoặc những bó tóc, chúng ta phải tạo ra mảnh ở đỉnh đầu. Một mảnh ở mức đỉnh
đầu tiên được tạo ra bằng việc chọn một vị trí trên đỉnh đầu cho gốc của bộ
khung( điểm đầu tiên của bộ khung tóc ). Tiếp theo, một bề rộng do người dùng
định ra để điều chỉnh độ dày và độ rộng của mảnh. Thông tin đặc biệt về kiểu tóc
được khai báo, như xác định độ dài của tóc, số các điểm điều khiển của khung,
độ quăn của tóc hay độ lượn sóng của tóc xuống chiều dài của khung. Do mảnh
là một bề mặt hai chiều, chúng ta hạn chế việc chia nhỏ của nó sao cho có thể chỉ
chia ra làm hai phần bằng nhau. Chia nhỏ mảnh đơn giản là trường hợp nhóm lại
hoặc phân chia những nhóm sợi, việc sử dụng cây sinh tư, hoặc cây nhị phân,
thay kết cấu dữ liệu của cây sinh 4 mà nó được sử dụng cho các bó hay các nhóm
tóc. Quá trình chia nhỏ kết thúc khi mà chiều rộng hiện thời của bó bên dưới đạt
đến một ngưỡng do người dùng định ra. Đối với quá trình chia nhỏ bó, chúng ta
tạo ra một vòng tròn chéo qua khu vực mà ta định nghĩa bó. Mặt cắt ngang vòng
tròn này chia ra thành 4 phần bằng nhau. Bốn mức dưới bó có cùng giá trị bán
kính đó nhưng bốn góc lại đại diện cho 4 phần khác nhau của bó ban đầu. Việc
- 35 -
chia nhỏ của một bó luôn có kết quả là 4 bó con, vì vậy thông tin của nó được lưu
trong cây sinh tư. Việc phân cấp những bó dừng lại khi bán kính của các đường
tròn là một ngưỡng nào đó do người dùng định ra. Tại thời điểm này, mức độ chi
tiết hơn đã được tạo ra trong việc phân cấp nhóm sợi.
Hình 2.2.2: Quá trình chia nhỏ nhóm sợi. Một nhóm sợi được chia nhỏ
thành các nhóm sợi khác. (a) Khu vực chéo nhau của một nhóm sợi đơn; (b)
Nhóm sợi được chia thành 4 góc phần tư bằng nhau; (c) Mặt cắt ngang vòng tròn
mỗi góc phần tư, là phần nhỏ của nhóm sợi gốc; (d) Bốn nhóm sợi mới được tạo
ra mà chúng là những nhóm con của nhóm ban đầu; (e) Quá trình chia nhỏ được
lặp lại đỗi với mỗi nhóm con.
2.2.3. Chia nhỏ những nhóm sợi
Một nhóm sợi được định nghĩa bởi một bộ khung đơn giản, một bán kính
để định nghĩa mặt cắt ngang vòng tròn của nhóm, những sợi tóc để biến đổi theo
những mục đích khác nhau. Một mặt cắt ngang nhóm sợi được minh hoạ trong.
Những sợi tóc riêng lẻ ngẫu nhiên được đặt vào các nhóm và đi theo những lực
của bộ khung. Những hình dạng vòng tròn của nhóm sợi được sử dụng cho tính
đơn giản của nó trong phát hiện va chạm. Chúng ta sử dụng một cấu trúc dữ liệu
của cây sinh tư để chứa đựng thông tin phân cấp, bởi vậy mà từng nhóm sợi chia
ra vào trong 4 mục bằng nhau. Việc chia nhỏ của một nhóm sợi vào trong 4 mục
tạo ra mặt cắt ngang của vòng tròn phù hợp cho mỗi nhóm. Mỗi lần chia tách
nhóm sợi, chúng ta tính toán số sợi trong mỗi góc phần tư. Nếu một góc phần tư
nào đó không có những sợi bên trong ranh giới của nó, thì những cung phần tư
nhỏ đó là tập hợp rỗng. Một nhóm sợi bao gồm từ 0 đến 4 nhóm con. Một nhóm
sợi mà chứa duy nhất một sợi tóc thì nhóm con đó trở thành một lá của cây. Mỗi
- 36 -
nút trong việc phân cấp chứa đựng một nhóm sợi, mà bao gồm những bộ khung
hình học tóc sử dụng cho giai đoạn biến đổi cuối cùng. Trong việc phát sinh thêm
mỗi nhóm sợi, cũng như mỗi bó tóc và mảnh tóc, sử dụng n-1 những thể tích
khối hộp giáp ranh cho việc phát hiện va chạm, khi mà n là số nút của khung.
Một bộ khung chứa đựng cùng một số điểm điều khiển như nhóm tóc cha của nó,
mà nó giúp cho chuyển động giữa các mức khác nhau .
Hình 2.2.3: Việc phân cấp nhóm sợi, quá trình chia nhỏ tạo ra một cây sinh
tư chứa đựng thông tin nhóm sợi, phân cấp nhóm sợi có thể mở rộng tới những
sợi riêng biệt.
2.2.4. Hợp nhất ngầm định cho mô phỏng động
Sau khi hệ thống tính toán những phản ứng cần phải trả lại đối với va
chạm cho mô phỏng động, chúng ta đi theo những kiểu chuyển động cơ bản cho
việc mô phỏng tóc. Chúng ta mở rộng những phương pháp này bởi vì việc sử
dụng một kỹ thuật hợp nhất, để đạt được kết quả tốt hơn trong suốt thời gian mô
phỏng hoạt động của tóc. Cách tiếp cận này tương tự như việc mô phỏng vải.
Mỗi điểm điều khiển của khung tóc được điều khiển bởi tập hợp những phương
trình vi phân:
- 37 -
Trong đó Ii là mô men quán tính cho điểm điều khiển thứ i của khung, i là hệ số
tắt dần, , là những thành phần lực xoắn tương ứng. M và M, được tính toán
từ lực đàn hồi điều khiển của tóc và những lực ngoài như là lực của gió. Kết quả
M và M trở thành:
Những lực xoắn do những lực đàn hồi được tính toán như:
Khi K và K là những hằng số đàn hồi tương ứng. Hơn nữa, 0 và 0 là
những giá trị hiện thời của góc , . Mặc dù những thuật toán rõ ràng như Euler
hoặc fourth – order Runge – Kutter có thể sử dụng cho việc hợp nhất này, chúng
ta lựa chọn việc hợp nhất ẩn cho sự chính xác hơn của quá trình mô phỏng.
Chúng ta đang làm việc trong toạ độ cực, sẽ sử dụng những vị trí góc , , và
những vận tốc góc w0, w0. Việc thay đổi vận tốc góc cho thành phần của một
nút trong khung làm xuất hiện:
Gọi h là bước thời gian, w0 = w( t0 ) là vận tốc góc vào thời gian t0. Ở đây: = w
(t0 + h) - w ( t0 ). Mỗi lần chúng ta tính toán w chúng ta sẽ tính toán được
- 38 -
việc thay đổi trong vị trí góc từ =h(w0 +w ). Cũng quá trình đó có thể
ứng dụng tới thành phần của những vị trí góc và vận tốc góc cho mỗi điểm điều
khiển của bộ khung. Việc hợp nhất ẩn cho phép chúng ta sử dụng cách đàn hồi
cứng, ví dụ: khi miêu tả râu cứng hay tóc cứng và đưa ra những sự đàn hồi không
thay đổi như trên tóc của một người đàn ông. Việc sử dụng những tính co giãn
cứng, yêu cầu phải có nhiều bước thời gian nhỏ hơn để đảm bảo một quá trình
mô phỏng ổn định.
Hình 2.2.4: Những hiệu ứng của quá trình phát hiện va chạm giữa tóc với
tóc. (a) hoạt động của tóc có va chạm. (b) hoạt động của tóc không có va chạm.
2.2.5. Khả năng chia nhỏ của tóc
Sử dụng những luồng tính toán phân cấp , chúng ta chia cắt một nhóm tóc
vào trong nhiều nhóm bởi việc phân cấp được thực hiện ở các mức khác nhau.
Mỗi nhóm tóc của bộ khung có cùng số điểm điều khiển như là những nút cha
của nó trong khung. Hơn nữa tất cả các thuộc tính được áp dụng từ nút cha đến
nút con. Khi một sự chuyển tiếp của một nhóm tóc con xuất hiện, những bộ
khung con kế thừa trạng thái động của bộ khung cha mẹ nó. Mỗi điểm điều khiển
trong bộ khung con tương ứng với một điểm điều khiển trong một bộ khung của
cha mẹ nó. Khi những nhóm con được sinh ra từ nhóm cha nó, thì mỗi địa chỉ
tương ứng của nó với cha nó được lưu lại, khi di chuyển những nhóm con thì
những địa chỉ này được dùng để định vị nhóm con đó. Ta thấy hai bộ khung động
được chia nhỏ ra vào trong nhiều bộ khung nhỏ khi mà gió thổi qua tóc.
- 39 -
2.2.6. Khả năng hòa trộn
Hòa trộn nhiều bộ khung con vào bộ khung cha là một sự lặp lại dễ hiểu.
Phương pháp của chúng ta là tính trung bình những trạng thái động của khung
con, bao gồm những giá trị và vận tốc, sau đó gán những trạng thái này cho bộ
khung cha. Để làm giảm bớt những hiện tượng thiếu trực quan xuất hiện bởi việc
hoà trộn những nhóm con vào những nhóm cha, một sự chuyển tiếp chỉ có thể
xuất hiện nếu tất cả các nhóm con sẵn sàng chuyển tiếp đằng sau vào trong nhóm
cha. Hơn nữa để tránh một sự chuyển tiếp đột ngột trong vị trí của tóc, chúng ta
áp đặt một vị trí ràng buộc trên nhóm con. Sau khi tính trung bình những điểm
điều khiển của bộ khung con, chúng ta xác định khoảng cách giữa những điểm
điều khiển của khung con tương ứng với những điểm điều khiển của cha mẹ. Nếu
khoảng cách này lớn hơn một ngưỡng nhất định thì sự chuyển tiếp sẽ không xuất
hiện. Nếu khoảng cách nhỏ hơn một ngưỡng nhất định nhưng vị trí không cần
chính xác, thì một lực đàn hồi sẽ kéo nhóm con sao cho nó chuyển tiếp được mịn
màng hơn.
Hình 2.2.6: hình ảnh chia nhỏ của khung tóc. Những hình ảnh biến đổi của
tóc được chia nhỏ và không được chia nhỏ.
- 40 -
Tương tác tóc
Giải thuật của chúng ta dựa vào vùng lân cận của không gian quét, tự
động phát hiện va chạm giữa tóc và Đầu, hoặc gần những đối tượng khác. Quá
trình tương tác được tính toán dựa vào đầu ra của việc phát hiện va chạm. Khi
cùng một mô hình khung được sử dụng cho mỗi cách mô phỏng, mỗi khi một va
chạm nào đó được phát hiện, chúng ta tính toán tác động lại cũng dựa trên
phương pháp đó. Khi va chạm giữa tóc và Đầu được phát hiện, đầu tiên chúng ta
xác định phương hướng mà nó sẽ tác động lại. Vùng lân cận trên Đầu mà ta phát
hiện va chạm là những tam giác tác động với những phần của tóc. Sau đó, chúng
ta tính toán phương hướng trung bình của nó, Navg, của những hình tam giác này,
bởi vì việc cộng trung bình liên quan đến mỗi hình tam giác, bởi toàn bộ n điểm
cắt ngang của các tam giác. Chúng ta sử dụng hướng trung bình này (Navg ) dọc
theo hướng mà chúng ta áp dụng. Navg được định nghĩa như sau:
Navg = p
Ni với i = 1, ……, n
Ni là mặc định của mặt cắt ngang tam giác thứ i, ở trên Đầu, mà nó tác động đến
một vùng của tóc.
Điều quan trọng của việc tác động trở lại, đặt cơ sở ban đầu cho tốc độ của
vùng tóc và của đầu. Mỗi vùng tóc được tạo ra từ một vùng nhất định trong bộ
khung đó. Vùng nhất định này có hai điểm điều khiển, một là tại đỉnh của nó, và
một điểm ở đáy. Không gian hoạt động thứ i của của một nhóm tóc có những
điểm điều khiển Pi ở tại đỉnh và Pi+1 ở đáy. Vận tốc của vùng tóc được tính toán
ở tại đỉnh của mỗi vùng, Vt , và đáy của mỗi vùng, Vb, bằng việc tính toán sự
thay đổi vị trí của các điểm điều khiển trong những khoảng thời gian ngắn.
Trong đó i là vùng tóc, là thời gian hiện hành, t là khoảng thời gian ngắn.
Những tốc độ tính toán là những tốc độ được sử dụng để tính toán những tác
- 41 -
động trở lại. Từ mỗi điểm điều khiển khung được kết nối với hai vùng lân cận,
mỗi vùng là một không gian quét của tóc, trừ đi điểm điều khiển đầu và điểm
điều khiển cuối của mỗi khung, chúng ta phải tính các lực tác động giữa mỗi
điểm điều khiển. Sự tác động trở lại được tính toán như sau:
Để áp dụng trên những điểm điều khiển, Pi và Pi+1. Một lực ma sát cũng
được tạo ra, được áp dụng cho một điểm điều khiển trên khung, khi mà một
vùng của tóc va đụng vào Đầu. Vector trung bình Navg được tính toán cho sự
tác động lại va chạm, theo mặt phẳng tiếp tuyến với Đầu tại điểm xuất hiện va
chạm. Những lực được áp dụng tới một điểm điều khiển của khung, kể cả
những lực ở bên trong, trọng lực, và những lực bên ngoài như là gió. Kết quả
là một vector lực được chiếu lên một đường thẳng, để tạo ra những lực thành
phần hoạt động dựa trên những điểm được điều khiển, để nó hoạt động theo
phương tiếp tuyến. Một lực ma sát xuất hiện và chống lại hoạt động của tóc
dọc theo Đầu, hướng ngược lại của các lực thành phần là hướng của lực ma
sát. Phần lớn các lực thành phần làm tăng thêm hệ số ma sát, và ứng dụng cho
các điểm điều khiển của khung.
2.3.1. Tương tác giữa tóc với tóc
Vì tóc tiếp xúc không thay đổi trong vùng không gian xung quanh tóc,
tương tác giữa tóc quan trọng trong thực tại ảo. Đầu người tiêu biểu có hàng
ngàn kiểu tóc. Vì vậy việc kiểm tra (n-1) vùng của mỗi nhóm tóc dựa vào những
thành phần chính của mỗi nhóm tóc, làm cho việc mô phỏng tóc mất nhiều thời
gian, công sức. Thay vào đó chúng ta phân tích không gian xung quanh tóc, trong
những lưới ba chiều, và chèn mỗi mỗi vùng không gian lân cận của tóc vào hệ
thống lưới đó. Chỉ vùng lân cận rơi vào trong vùng lưới đó được kiểm tra sự tác
động lẫn nhau. Trung bình chiều dài của những đoạn cứng tóc của những bộ
khung được sử dụng như chiều cao, chiều rộng, chiều sâu của mỗi ô lưới đó. Cho
mỗi cặp của không gian lân cận rơi vào trong cùng ô lưới đó, chúng ta xác định
- 42 -
khoảng
Các file đính kèm theo tài liệu này:
- Mô phỏng chất liệu trong thực tại ảo và ứng dụng với chất liệu lông & tóc.pdf