Mô phỏng Chất Liệu Lông & Tóc trong Thực Tế Ảo

MỤC LỤC

Mô hình mô phỏng chất liệu tóc

Chúng được dùng cho những đối tượng ít được quan tâm hơn như: những con thú có lông, những con thú nhồi bông, quần áo lông, hay trên con người như lông my, lông mày, lông tay…Do đó khi mô phỏng lông chỉ cần tạo ra lông và gắn vào đối tượng, khi mà đối tượng chuyển động thì lông cũng chuyển động theo. Nhưng mái tóc vàng nói nên người con gái đó là một người sành điệu, mái tóc ngắn cứng cáp cho thấy một người con trai khoẻ mạnh, hùng dũng…Ngoài ra khi có các lực tác động vào tóc, thì tóc phải bay theo những hướng đã xác định, do vậy cần phải tính toán nhiều lực trên một sợi tóc.

Hình 1.2.1b: Mô phỏng chất liệu lông áo
Hình 1.2.1b: Mô phỏng chất liệu lông áo

Chức năng

Những sợi tóc riêng lẻ

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. 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. 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 đó.

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.

Hình 2.1.1: Mô phỏng sợi tóc trong không gian
Hình 2.1.1: Mô phỏng sợi tóc trong không gian

Miếng tóc

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. 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.

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.

Bó 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. 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.
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.

Nhóm và chia nhỏ nhóm

    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. 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. Tóc có thể tương tác với bất kỳ vật thể nào trong vùng hoạt động của nó, chẳng hạn như Đầu hay thân thể con người, nơi mà đối tượng là một thân thể đặc mà không cho phép sự thâm nhập nào từ bên ngoài.

    Giải thuật phát hiện va chạm tóc với vật thể khác, bắt đầu bằng việc gói gọn đối tượng cùng với một vùng thể tích giáp ranh đã được phân cấp thể tích xung quanh vùng không gian quét của tóc mà được tính toán từ bên ngoài.

    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
    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

    Phát hiện va chạm

    Để 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. 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. 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ị.

    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.

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

    Việc thúc đẩy cho hệ thống khung kép

    Vì vậy trong thời gian chuyển tiếp mô phỏng chi tiết, những giá trị mà thường xuyên được cập nhật là những vị trí nút của các bộ khung. Hơn nữa, chúng ta trình bày mô phỏng một kiểu đầu đơn giản, để thực hiện phát hiện va chạm giữa Đầu và tóc. Hệ thống khung kép này cung cấp những bộ khung đơn để điều khiển toàn bộ khung tóc hay một bộ phận tóc, và một khoảng ngắn cung cấp hướng để xác định vị trí, vùng để phát hiện ra va chạm.

    Chúng ta tham chiếu đến toàn bộ bộ khung, và những bộ khung địa phương thành phần theo một thứ tự định sẵn.

    Thiết lập bộ khung kép

    Để thiết kế những kiểu tóc cho các nhân vật trong Game 3D, hay phim hoạt hình, chúng ta thường sử dụng phần mềm chuyên dụng để thiết kế nhân vật, một số phần mềm được sử dụng rộng rãi hiện nay là phần mềm Maya, hay phần mềm 3D smax. Để thiết kế được những mô hình tóc như trong hình 13, chúng ta phải sử dụng một hệ thống lưới khung, có thể thao tác đến từng điểm nút trên khung, việc thêm hay bớt những nút này tùy thuộc vào người thiết kế mô hình tóc hay tuỳ từng kiểu tóc mà số điểm nút của khung có thể dày hay thưa. Sau khi việc xây dựng mô hình lưới hoàn thành, có thể nói đây là một khung tổng quát có thể lưu lại để sử dụng cho việc tạo ra những mẫu tóc khác nhau, tuỳ theo kiểu tóc mà thay đổi độ dày mỏng khác nhau cho các lớp tóc, sau đó chúng ta áp ảnh của những sợi tóc lên khung đã được xây dựng, hình ảnh của tóc được thể hiện trong hình.

    Phần tóc trước mặt được thể hiện trong hình ta thấy với bất kỳ một khuôn mặt nào cũng cần phải tạo tóc mai, để cho nó giống với hiện thực hơn, nhưng việc mô phỏng động của một nhóm tóc này lại phụ thuộc vào một khung riêng để có thể tạo những chuyển động riêng cho nó, chẳng hạn như khi có gió tác động vào.

    Hình 3.1.1: Thiết kế khung tóc cho mô hình nhân vật, sử dụng phần mềm Maya.
    Hình 3.1.1: Thiết kế khung tóc cho mô hình nhân vật, sử dụng phần mềm Maya.

    Xây dựng chương trình ứng dụng 1. Chương trình mô phỏng chất liệu lông

    Mỗi một sợi lông đều phải có điểm gốc của nó, nếu như nó không được gắn vào đâu thì nó sẽ trở thành một sợi lông lơ lửng trong không gian, do vậy cần sử dụng hàm CHair::Aff(); để gắn lông vào bề mặt đã có. Nhưng việc xây dựng này là chưa đủ, vì thực tế nếu như thế này thì chúng ta không thể biết được vùng nào sẽ được phủ tóc, vì vậy nhưng vùng được phủ tóc phải được đánh dấu bằng màu khác để khi lập trình chúng ta còn biết. Chúng ta đã có đối tượng 3d, nhưng thực tế khi lập trình chúng ta chỉ có thể lấy được những điểm của đa giác, vì vậy chúng ta phải vẽ lại các điểm đó và phủ kín đa giác để tái tạo lại cái đầu trong mô phỏng.

    Sau khi đã tái tạo lại đối tượng ta tiến hành khởi tạo tóc bằng việc sử dụng hàm:void CHair::Init(CObject *_o,CSurface *_s), dựa trên bề mặt lấy được thông qua một loạt các hàm khác.

    Hình 3.2.1b. Đối tượng sau khi đã được che phủ lông
    Hình 3.2.1b. Đối tượng sau khi đã được che phủ lông