Đồ án Mô phỏng chất liệu trong thực tại ảo và ứng dụng

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

pdf69 trang | Chia sẻ: netpro | Lượt xem: 1727 | Lượt tải: 5download
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, w0 = 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:

  • pdfMô 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