Phát hiện va chạm

Một phần của tài liệu mô phỏng chất liệu trong thực tại ảo và ứng dụng (Trang 43 - 51)

Nó rất quan trọng để kiểm tra tương tác của tóc với những vật thể khác. Tóc luôn luôn được tiếp xúc một phần với da Đầu. Vì độ phức tạp cao của tóc mà những tính toán cho tóc hoạt động rất tốn kém. Việc phát hiện va chạm được thực hiện hiệu quả do nó là một phần quan trọng trong toàn bộ thời gian hoạt động của tóc trong thời gian thực.

Có nhiều kỹ thuật dùng cho phát hiện va chạm. Một vài giải thuật sử dụng cho những mô hình chung, nó dựa vào ranh giới thể tích hình hộp đã được phân cấp. Một cây những phần thể tích hình hộp giáp ranh là việc tính toán độc lập ngoài tập hợp những hình học ban đầu, những tam giác và những miếng tóc. Những phần diện tích giáp ranh khác nhau được sử dụng để phát hiện va chạm, nó bao gồm những hình hộp giáp ranh được sắp thẳng hàng, những hộp này định hướng theo trục và làm thành hình cầu, hoặc những khối hình học khác. Việc phát hiện va chạm dựa vào những phần giáp ranh này, nhờ kiểm tra những đối tượng đi ngang qua theo cách đệ quy.

khác nhau của các kiểu tóc, chúng ta sử dụng cách quét tập hợp các hình cầu có thể tích khác nhau để bao vây tóc. Tập hợp những hình cầu nằm dưới những phần giáp ranh tương ứng với lõi một bộ khung, nó được phát triển dần ra bên ngoài, từ một điểm ban đầu nào đó. Tập hợp lõi của bộ khung có thể bao gồm một điểm, một hàng hay một khung khép kín. Chúng ta có thể chọn sử dụng những hình chữ nhật có hướng tùy ý thay vì cả khung khép kín, như những bộ khung phức tạp nhất của chúng ta. Trong hình 9 : cho ví dụ của tập hợp hình cầu, chính xác, để cho C là lõi bộ khung và S là một hình cầu, bán kính r. Với mỗi tập hợp hình cầu đó, B có thể được định nghĩa như sau:

B=C  S =  c + s c C, s  S 

Hình 2.4: Tập hợp hình cầu được quét.

(a) Một điểm hình cầu ; (b) hình cầu quét theo kiểu một hàng ; (c) Hình cầu quét theo một khung hình chữ nhật.

Để trả lời những câu hỏi về phát hiện va chạm về một cặp tùy ý trong tập hợp hình cầu này, chúng ta có thể thực hiện một cách giao nhau đơn giản để kiểm tra trên những cặp tương ứng từ lõi của bộ khung và sau đó trừ dần đi bán kính của mỗi hình cầu tương ứng. Chúng ta có những thể tích khối cầu được chọn như những thể tích giáp ranh, vì những hình dạng của nó phù hợp với ba cách mô phỏng đơn giản của tóc. Sự khác nhau rõ rệt là quá trình quét tạo ra thể tích những khối cầu đã tạo ra những tính chất khác nhau cho những bó, những nhóm tóc riêng lẻ, những hàng quét tạo ra những hình cầu là cách tốt nhất cho mỗi vùng tóc. Trong khi những dòng quét của hình chữ nhật làm thành những hình cầu, có ứng dụng tốt cho những miếng tóc, và những điểm quét tạo thành hình

cầu cho những điểm ở đầu. Việc sử dụng tập hợp những hình cầu nằm bên dưới phần thể tích giáp ranh, khi đó việc phát hiện va chạm có thể thực hiện hiệu quả và dễ dàng kết hợp cùng một lúc ba cách mô phỏng đơn giản của tóc.

Mỗi khu vực của bộ khung mà điều khiển hình dạng của ba kiểu tóc, chúng ta tính toán một vùng giáp ranh của khu vực mà hình cầu quét để xây dựng những vùng giáp ranh cho tóc và những đối tượng gần bên cạnh( ví dụ: Đầu, Cổ, và những vật thể khác ở xung quanh), những ảnh hưởng của những vật thể ở xung quanh tóc. Cho một bộ khung tạo ra n nút, ở đó có n-1 vùng, và n-1 phần thể tích hình hộp giáp ranh của vùng hình cầu quét. Bề dày của mỗi vùng được định nghĩa bằng bán kính của điểm gốc của đường mà hình cầu quét dọc theo chiều dài của nó. Để tính toán một vùng tiếp xúc với một miếng tóc, chúng ta sử dụng 4 điểm điều khiển của miếng tóc đó để tạo ra một vùng bao trùm lên nó. Khi đó nó thực hiện trên n-1 vùng. Tương tự cho cach mô phỏng đó, chúng ta sử dụng 8 điểm điều khiển để định nghĩa một khu vực, trong đó có 4 điểm điều khiển tạo ra mặt cắt ngang tại đỉnh của mỗi khu vực, và 4 điểm ở đáy để tạo ra một khu vực giáp ranh. Đối với những sợi tóc riêng lẻ, chúng ta có thể phát hiện va chạm cho mỗi sợi tóc hoặc nhóm lại theo một cách tương tự. Chúng ta tính toán một tập hợp điểm xung quanh bộ khung, để định nghĩa một khu vực với bề dày các bán kính. Đối với những sợi tóc riêng lẻ, khi đó bán kính là 0, như vậy việc phát hiện va chạm là sự kiểm tra sự giao nhau trên đường cong của bộ khung. Hơn nữa, bán kính của mỗi vùng quét dựa vào bề dày của mỗi nhóm. Mỗi một lần vùng lân cận tính toán cho một khu vực mô phỏng tóc một cách đơn giản, chúng ta xây dựng vùng lân cận của không gian quét, sử dụng cả phần trên và phần dưới cho tóc, và mỗi đối tượng cho một lần tính toán. Trong thời gian thực hiện mô phỏng, vùng lân cận được thực hiện để phát hiện va chạm, và được sử dụng một cách cẩn thận.

Nhiều kỹ thuật về hoạt động của tóc và lông thú đã được nghiên cứu tỷ mỷ. Trong hệ thống của chúng ta có một sự pha trộn các kiểu của mô hình riêng biệt và liên tục của những khối hình học ở mức độ chi tiết, được sử dụng để trình bày sự thay đổi của tóc. Mỗi cách mô phỏng có một kiểu trình bày hình học rõ ràng

như: mỗi một sợi riêng biệt là một sự biến đổi của một đường cong của khung động, mỗi bó tóc là một cách biến đổi một bề mặt của khung( ví dụ như bề mặt được phát sinh bằng quá trình quét một đường cong xung quanh một trục ), mỗi mảnh là một cách biến đổi một bề mặt của khung. Bằng việc thay đổi các thông số màu sắc, như là một hàm khoảng cách tới người xem, gần như liên tục ở mức độ chi tiết, được cung cấp cho việc mô phỏng hình học của tóc. Một trong những điều quan trọng của biến đổi tóc ở phía bề ngoài, là nhờ tác động của ánh sáng. Những kiểu chiếu sáng truyền thống phụ thuộc vào bề mặt mặc định. Tuy nhiên, đối với sự biến đổi của những sợi riêng lẻ, không có sự lựa chọn ánh sáng của một vector pháp tuyến. Hơn nữa, tóc là một bề mặt không được định hướng. Sự phản chiếu ánh sáng đối với những bề mặt không được định hướng, thường xảy ra đối với tóc, làm cho tóc có thể bóng và có màu bạc, màu của tóc thay đổi theo những hướng nhìn khác nhau. Những giải thuật đối với những phản xạ bề mặt, chỉ số của nó được xác định bằng khoảng cách từ mắt tới hướng của ánh sáng chiếu vào và hướng mà chúng ta nhìn thấy tóc được chiếu sáng. Sự chiếu sáng truyền thống không được áp dụng trong quá trình miêu tả tóc của chúng ta. Thay vào đó, sự chiếu sáng không định hướng này được pha lẫn với màu nguyên thuỷ bên dưới, trong suốt quá trình biến đổi hoạt động của tóc. Đối với những sợi tóc, thì bóng sẽ được mặc định trong hệ thống màu của tóc cho mỗi sợi riêng lẻ. Những bề mặt khung được sử dụng tốt cho những miếng và những bó tóc, ánh sáng phản xạ trên bề mặt đó được gán bằng những màu trong một phạm vi tương tự. Sự chuyển tiếp giữa những sợi, bó, miếng là nguyên nhân gây ra sự rối loạn màu sắc khi ta quan sát tóc. Để có một chuyển tiếp mịn, thì phải khắc phục những hạn chế trên bề mặt khung, khi những miếng được sử dụng để thiết kế kiểu tóc. Những miếng được sử dụng khi tóc hoàn toàn che khuất, hoặc ở khoảng cách xa đối với người quan sát. Ngoài ra, những phần xung quanh của những kiểu tóc và xung quanh bề mặt, là tập hợp những điểm không chuyển tiếp dưới cách mô phỏng của một bó. Bởi vì không cho phép những phần tóc chuyển tiếp đến cách mô phỏng của miếng, thể tích và hình bóng của mỗi kiểu tóc được bảo vệ.

Việc đưa ra ba cách mô phỏng của một khu vực tóc, một cách trình bày nhất định cho kiểu tóc và mô phỏng những vùng này được tính toán dựa trên

cơ sở của vài tiêu chuẩn. Chúng ta đã sử dụng những thành phần sau trong quá trình thực hiện là:  Tính rõ ràng  Khoảng cách quan sát  Sự hoạt động của tóc Tính rõ ràng

Nếu người xem không thể nhìn thấy một vùng của tóc, thì vùng đó không cần mô phỏng, hoặc không cần hoạt động mô phỏng ở mức độ chi tiết cao cho những nhóm tóc riêng lẻ. Tóc không thể được nhìn thấy nếu nó ở ngoài vùng quan sát của camera, hoặc nó hoàn toàn bị che khuất bởi Đầu hoặc những đối tượng khác trong cảnh.

Một vùng của nhóm những sợi tóc thông thường mô hình của nó được sử dụng đến 5 bộ khung, nhưng nó lại bị che khuất bởi các đối tượng khác, một mô hình tóc của chúng ta sử dụng một bó lớn, do vậy ta chỉ sử dụng một khung. Mô hình tốt nhất là mô hình có thể thay thế cho cả 5 khung, với cách tính toán thời gian bằng cách tính toán cho cả 5 khung hình trên. Khi mà khung hình của tóc được quay về chế độ hiển thị, thì vấn đề quan trọng là sắp xếp các hành động của tóc, nó thích hợp cho trường hợp tóc không được miêu tả ở mức độ chi tiết. Ví dụ: điều này có thể xảy ra khi mà một nhóm tóc bị cuốn lại bởi một cơn gió lốc. Đồng thời, khi tóc quay lại chế độ hiển thị bởi chuyển động của camera, hoặc chuyển động của Đầu, tất nhiên tóc được miêu tả một cách thích hợp, cùng với sự hiểu biết của người xem về mô hình đó. Việc duy trì mô hình tóc ở mức độ chi tiết nó cho phép mô phỏng ở đó một cách trực quan, trong khi giảm bớt được thời gian tính toán cho việc mô phỏng tóc.

Trong quá trình thêm, khi những vùng tóc ít được chú ý thì qúa trình hoạt động của tóc cũng được đơn giản đi. Nếu tóc hoàn toàn đứng yên, thì không cần phải biến đổi nữa. Bởi vậy khi một vùng của tóc không hoạt động, chúng ta có

thể mô phỏng tóc ở những dạng đơn giản như: những bó, hoặc những nhóm tóc, hay những miếng tóc, mà sử dụng ít khung hình cho những vùng này.

Cách mà chúng ta tính toán liệu có phải một vùng tóc nào đó có phải là quan trọng, hay là không trong quá trình thi hành, chúng ta sẽ thực hiện kiểm tra một cách đơn giản. Chúng ta đặt những cái hộp xung quanh cái đầu và điều chỉnh những cái hộp đó sao cho nó nhỏ hơn cái đầu. Chúng ta chiếu một đường từ camera đến đỉnh và phần dưới cùng của mỗi kiểu trình bày tóc. Nếu tóc có kiểu là một bó thì những tia sáng bắt nguồn từ camera và kết thúc ở tại đỉnh và phần dưới của bó. Chúng ta kiểm tra xem liệu có phải những tia sáng cắt chéo nhau với bất kỳ sáu mặt nào của cái hộp không. Nếu cả hai tia sáng cùng cắt ngang cái hộp trước khi chiếu đến vùng tóc, thì chúng ta kết luận rằng toàn bộ vùng tóc đó đã bị che khuất. Nó có thể được sử dụng để thành lập những giải thuật để che khuất tóc.

Khoảng cách nhìn

Một nguyên nhân tiếp theo để xem xét việc chọn một kiểu trình bày tóc, là từ khoảng cách người quan sát đến tóc, hay tóc ở xa người quan sát, thì ta không thể nhìn thấy tóc ở mức độ chi tiết được. Do vậy, chúng ta không thể sử dụng môt kiểu trình bày duy nhất cho tóc được. Chúng ta có thể đánh giá được mức độ chi tiết mà chúng ta nhìn thấy bằng việc tính toán vùng không gian màn hình mà tóc được thể hiện.

Ví dụ: Một vùng tóc có thể được trình bày bằng một bó, một nhóm của vài ba bó, một miếng, hay một nhóm những sợi riêng lẻ. Mỗi sự trình bày này được thiết kế để bao trùm một vùng tương tự của không gian thế giới. Tổng hợp từ tất cả những gì đã được trình bày này, nó chiếm giữ một lượng tương tự của không gian thế giới, chúng ta sử dụng điều khiển các khung của những miếng như là đánh giá số lượng tóc đã được chiếm giữ bởi không gian hiển thị. Ví dụ: để xác định phạm vi thể hiện của một mảnh, chúng ta chiếu một hàng từ một điểm đầu tiên trong khung đến điểm cuối cùng của khung trong không gian hiển thị. Nếu số lượng không gian màn ảnh bao trùm bởi hàng này

vượt quá sự cho phép của kích cỡ cực đại của mảnh, thì vùng tóc này được biến đổi giống như một bó. Tương tự, nếu, số lượng không gian màn ảnh bao trùm bởi hàng vượt quá kích cỡ cực đại cho phép của một bó, thì nó sẽ được trình bày giống như những sợi tóc riêng lẻ.

Chuyển động của tóc

Một khía cạnh khác, để xem xét việc lựa chọn kiểu trình bày thích hợp cho tóc và hoạt động hiện thời của tóc. Nếu tóc là không chuyển động chút nào, thì không cần một sự tính toán lớn cho nó, vì vậy chúng ta không cần trình bày ở mức độ chi tiết. Khi mà con người làm cho nó chuyển động đột ngột, chẳng hạn như rung chuyển anh ấy, hoặc cái Đầu của cô ấy, hay một cơn gió lớn, khi đó chúng ta cần mô phỏng tóc ở một mức độ chi tiết. Khi một lực lớn tác động đến tóc, chẳng hạn như gió, những sợi tóc riêng lẻ có thể được nhìn thấy, nhưng thông thường ở khoảng cách xa, thì không thể nhìn thấy những sợi tóc riêng lẻ hoạt động. Đồng thời, nếu tóc chuyển động nhiều ở xung quanh, thì nó có nhiều va chạm với những đối tượng khác( ví dụ như thân thể ) xung quanh nó. Khi tóc va chạm vào nhau trong quá trình hoạt động của nó, ta sử dụng miêu tả ở mức chi tiết nhất để đạt được kết quả cao trong việc phát hiện va chạm của tóc. Chúng ta chọn những cách mô phỏng ở mức độ chi tiết đặc biệt dựa vào sự chuyển động của tóc bằng việc đầu tiên là xác định điểm điều khiển trong khung trong sự trình bày hiện thời, và có những lực tác động mạnh lên nó, bắt nó phải hành động theo. Giá trị này được so sánh với với những ngưỡng của định nghĩa cho những sợi hoặc những bó. Nếu những lực hoạt động trong khung không phải là đủ cao, nó chỉ đủ để dùng cho những sợi, hoặc những bó.

Ở tại bất kỳ một khoảng thời gian nào trong quá trình miêu tả, một cái Đầu có tóc được đại diện bởi nhiều cách mô phỏng ở mức độ chi tiết khác nhau. Mỗi vùng của tóc sử dụng những tham số giá trị của chính mình để thúc đẩy một sự chuyển tiếp. Đối với những vùng tóc có một vị trí gốc nằm trên đỉnh đầu, vì vậy nó được nhìn thấy một cách dễ dàng hơn những nhóm tóc ở mức xa hơn như khu vực tóc ở cổ. Như vậy, mặc dù hai vùng tóc có cùng khoảng cách từ đó đến

camera và có cùng sự chuyển động, nhưng lớp ở đỉnh lại được quan tâm nhiều hơn, ví dụ như những sợi riêng lẻ được quan tâm nhiều hơn các bó, khi nó được quan sát trực tiếp. Khi xác định một LOD để sử dụng, trước hết chúng ta kiểm tra vùng mà tóc che khuất. Nếu tóc không cần miêu tả chi tiết cho người xem, thì chúng ta coi nó như một miếng tóc và không cần phải cho nó hoạt động. Trong trường hợp này không cần có sự kiểm tra chuyển tiếp nào được sử dụng đến. Nếu

Một phần của tài liệu mô phỏng chất liệu trong thực tại ảo và ứng dụng (Trang 43 - 51)

Tải bản đầy đủ (PDF)

(69 trang)