Hé lộ những bí mật về Human Shaders trong UE4

LỜI MỞ ĐẦU

Xin tự giới thiệu tôi là Phùng Đình Dũng. Năm 2010 tôi đã giành giải nhất trong cuộc thi modeling demo reel của Autodesk Contest cho sinh viên ( CGSA) . Giờ đây nó được biết tới với cái tên “The Rookies”. Tôi đã và đang làm việc trong ngành 3D được gần 10 năm. Trong những năm đầu sự nghiệp, tôi làm việc với vai trò một Game Artist cho Rare UK và đã tích lũy kinh nghiệm làm việc từ một chuỗi các sản phẩm cho game Xbox như Fable III và Halo Reach. Sau đó, tôi chuyển sang làm VFX (kỹ xảo điện ảnh) cho thị trường phim với vị trí Creature Effect & generalist artist cho Double Negative London trong các dự án phim như John Carter Of Mars, Snow White & the Huntsman hay 007: Skyfall.

Đó là những gì diễn ra trước khi tôi quyết định thành lập và dẫn dắt studio của riêng mình tại Việt Nam với cái tên Thunder Cloud. Đây là nơi sáng tạo ra những sản phẩm chất lượng cao cho các studio phát triển trên toàn thế giới – những nơi cần sự hỗ trợ về outsource và Art Production. Mục tiêu của chúng tôi tại Thunder Cloud là trở thành một Animation studio chuyên sản xuất animation và cinematics với kỹ thuật tiên tiến nhất. Đó là lí do mà hiện tại UE4 là một trong những mảng R&D then chốt và được ưu tiên hàng đầu tại đây.

DỰ ÁN EXPARIA

Có lẽ bạn đã biết thì quay trở lại năm 2016, ArtStation tổ chức cuộc thi mang tên “The Journey”.

Tôi thực sự hào hứng với đề bài và ngay lập tức bắt tay vào thực hiện nó. Đầu tiên là đăng ký tham gia và lên kế hoạch cho một cảnh 3D ấn tượng theo chủ đề. Tổng thời gian để dự thi vào khoảng 3 tháng, mà theo tôi thì đây là một khoảng thời gian vừa đủ để một nghệ sĩ có thể tạo ra được sản phẩm ưng ý nếu đầu tư toàn tâm toàn ý.

Thật không may là công việc tại Thunder Cloud khá bận rộn vào thời gian đó, vì thế tôi không kịp để gửi bài dự thi trước thời hạn quy định. Nghĩ lại thì có thể lúc đó tôi không có đủ thời gian, hoặc đơn giản là tôi quá tham vọng để chăm chút cho bài thi của mình. Tuy vậy sau đó tôi đã quyết định tái khởi động lại dự án và hoàn thành nó – lúc này đã là dự án cá nhân. Một lần nữa, tôi lại đặt tham vọng của mình vào đó.

Mục tiêu đặt ra là tạo ra một đại cảnh cinematic hoành tráng theo chủ đề “The Journey”. Nhân vật chính là một cô nàng tên là Exparia (hầu hết các nhân vật nữ của tôi đều có hậu tố “aria” trong tên). Đó là cách chơi chữ để gọi những nhà thám hiểm  – Explorer, ở đó Exparia là một Mech Pilot (phi công điều khiển robot) có nhiệm vụ thám hiểm tìm kiếm ngôi nhà mới cho nhân loại. Exparia có một câu chuyện khá thú vị như bạn thấy trong concept.

Một cổng không gian vũ trụ (wormhole) xuất hiện trên quỹ đạo Trái Đất, có một số cấu trúc ngoài hành tinh dạng đá đang trôi nổi xung quanh, điều đó có nghĩa cánh cổng kia không phải là sản phẩm tự nhiên. Loài người quyết định gửi đi một hạm đội phi công điều khiển robot để tìm hiểu điều gì xảy ra ở đó. Tất cả đều được đặt tên là Kamikaze – những người đầu tiên bước ra tiền tuyến với một trái tim cảm tử. Họ được huấn luyện để trở thành nhà khoa học kiêm chiến binh. Trung tâm là nhân vật chính của chúng ta – Exparia trong một con robot với nụ cười trên môi – nửa phấn khích khi được khám phá thế giới mới, nửa lo lắng về những hiểm họa rình rập.

Kết quả cuối cùng của dự án không chỉ là một hình ảnh tĩnh mà còn là một cảnh cinematic ngắn với chuyển động và hiệu ứng – tất cả đều được thực hiện trong UE4. Mục tiêu của tôi là nâng cao cả hai kỹ năng art và tech trong dự án này. Trang phục và cơ thể hữu cơ, robot cơ khí, các môi trường trong nhà, bề mặt vật thể rắn và một khung nền mở thực sự là thử thách không nhỏ để có thể phát triển kỹ năng, hiểu biết về workflow cũng như các công cụ khác nhau để tối ưu hóa trong UE4. Như đã nói ở trên, mọi workflow được quy chuẩn với UE4.

Bạn có thể thắc mắc là với ngần đấy thứ, thì đâu mới là yếu tố chính trong dự án này. Câu trả lời nằm ở tiềm năng của UE4 trong quá trình render để tạo ra hình ảnh và chuyển động chất lượng nhất. Cân nhắc nền tảng của mình là character art – cũng là dịch vụ thế mạnh của Thunder Cloud, thì Exparia đóng vai trò một dự án đào tạo, R&D (nghiên cứu và phát triển sản phẩm) cho cả tôi và đội ngũ nhân viên tại studio.

2D Concept

Một nghệ sĩ 3D là người xóa mờ lằn ranh giữa “nghệ thuật” và “kỹ thuật” trong 3D. Tại thời điểm theo đuổi nghề 3D, tôi đã và đang trau dồi phần art và concept 2D kỹ thuật số. Với kỹ năng vẽ 2D sẵn có, tôi có thể tư duy về concept, thiết kế và màu sắc phóng khoáng hơn mà không bị gò bó bởi công nghệ và phần mềm 3D. Cụ thể trong dự án này, tôi hướng đến một phong cách vẽ 2D kỹ thuật số đậm chất trực quan và độc đáo với một chút PBR shaders.

Đây là mẫu vẽ được chọn làm concept chính cho nhân vật. Tôi sử dụng hình này như mẫu tham khảo chính để tiến hành shader và texture. Tôi phải bóc tách từng thành phần trong bản vẽ 2D để khiến nó trông như một bản hand painted (phong cách vẽ tay) rồi sử dụng kỹ thuật trong 3D để “dịch” ra ngôn ngữ 3D. Tôi cũng học hỏi và tham khảo sản phẩm của các họa sĩ 2D khác xem cách mà họ render và xử lý từng bộ phận riêng biệt của một nhân vật 2D.

Ví dụ như, đôi mắt trong 2D kỹ thuật số sẽ đem lại cảm giác có hồn hơn rất nhiều một mẫu dựng 3D được lập trình bởi một người làm render 3D. Đầu tiên, tôi học cách vẽ trong 2D, tìm hiểu cấu trúc nền tảng của một phong cách 2D rồi làm lại nó và tùy chỉnh các yếu tố trong 3D và UE4.

Nói chung, việc có thể nháp sẵn ra một concept 2D trước hết cho phép tôi hình dung ra cảnh dựng 3D cuối cùng như thế nào. Nó đặt ra một yêu cầu về chất lượng trực quan mà mẫu dựng 3D cần phải đạt tới. Đồng thời, điều này cũng giúp tôi xác định được những chi tiết quan trọng cần phải ưu tiên, để tiến tới tạo ra một workflow phù hợp với thời gian cần cho từng sản phẩm cụ thể.

Nhìn vào concept, có thể thấy cô gái và bộ đồ robot là nhân vật trung tâm nhưng nền xưởng bay bao quanh họ cũng cần được đầu tư vào tiểu tiết. Trong khi đó, các tàu không gian và phần bầu trời rộng mở đằng sau lại khá xa và bị khuất lấp trong màn khói bụi, thì chỉ cần một lượng chi tiết phù hợp. Tôi sẽ phải quyết định xem workflow nào là tốt nhất, liệu chúng cần high poly normal map hay chỉ cần mẫu dựng và diffuse. Thậm chí một tranh dạng matte có thể được áp dụng cho những ngọn núi phía xa.

Quy trình làm việc

Thunder Cloud hiện đang cung cấp dịch vụ sản xuất nhân vật cho nhiều khách hàng trên thế giới với nhiều phong cách cùng yêu cầu đặc biệt đi kèm, từ mobile game tới high end.

Nghe thì khó tin, nhưng tại Thunder Cloud có một quy trình tổng được đặt ra cho tất cả các nhân vật. Đầu tiên khi đặt quy trình “mẹ” này lên một dự án, chúng tôi gạch bỏ những bước không cần thiết rồi sau đó chọn lọc ra những bước làm việc phù hợp cho từng thành phần. Cuối cùng, ta có các bước làm việc cụ thể cho một dự án trong khi giữ được quy trình gốc. Trong khi đó, các thành viên trong đội lại không bị lộn xộn bởi các quy trình khác nhau cho các dự án khác nhau, bởi chúng đều được phát triển từ một quy trình gốc.

Đây là ví dụ một quy trình “mẹ” được áp dụng:

Còn đây là một ví dụ về sự phát triển từ quy trình gốc cho một nhân vật low poly hand painted texture (nhân vật low poly có bề mặt theo phong cách vẽ tay).

Dưới đây là một phiên bản phức tạp hơn phù hợp với phong cách PBR được áp dụng cho dự án Experia, trong đó yêu cầu phiên bản high poly sculpt và baking (Có thể tham khảo thêm Overwatch để hiểu hơn).

Công cụ và phần mềm

Đối với những bước khác nhau trong cả quy trình, chúng tôi sử dụng các công cụ khác nhau tùy vào mục đích. Từ các công cụ quen thuộc như Maya để dựng hình, Zbrush để sculpt, xNormal để baking, Substance Painter cho PBR masking cho tới những cái tên khá lạ lẫm như BodyPaint 3D để texture, Crazybump để chuyển đổi maps và một số chương trình tôi viết cho riêng nội bộ đội sản xuất của Thunder Cloud. Như bạn có thể đã biết thì phần mềm chuyên về tóc GMH2 do tôi tạo nên được sử dụng để chuyển từ hair base mesh sang hair cards và texture cho nhân vật trong dự án này. Thông tin thêm về GMH2 có thể đọc thêm tại đây.

WIP của mẫu dựng tóc tôi đang thực hiện sử dụng GMH2.6

Tôi tạo ra khá nhiều công cụ nội bộ để phục vụ cho quá trình làm việc của Thunder Cloud ví dụ như:

Quản lý tốt quá trình baking sẽ giúp bạn tiết kiệm được thời gian để bake từ high poly sang low poly, đồng thời tự động tách được ID khỏi mesh cũng như tự động tạo cage. Tôi đang nghiên cứu cách để giao tiếp được với xNormal cho batch baking.

 

Export Manager: một chương trình nhỏ được sử dụng để xuất ra nhân vật nhanh chóng cho phép tôi chuyển đổi giữa UE4 và Maya dễ dàng.

Art Direction & Quá trình sản xuất

Cụ thể trong dự án này, tôi hướng tới mẫu dựng 3D có ngoại hình tương tự Overwatch, Blade & Soul…hoặc các tranh 2D kỹ thuật số thường thấy trong các sáng tác của một số nghệ sĩ như Mujiha, BdsPlace. Cân nhắc việc không thực sự đầu tư vào tiểu tiết trong sculpt mà giữ mọi thứ gọn gàng và sạch sẽ, tôi dành sự chú ý tới những chi tiết lớn mang tính tổng quan như các khối, cạnh, mảng trang phục lớn, các bộ phận quan trọng như mũi, mắt, môi.

Các chi tiết nhỏ trong sculpt sẽ không thực sự nổi bật dưới một lớp texture dày, đã thế chúng lại khó thay đổi. Vì thế với những mẫu high poly sculpt, tôi sẽ chỉ dừng lại ở các chi tiết lớn và tầm trung – những thứ có thể thấy trực quan khi bake out map sau này.

Với mẫu dựng low poly, giống như nhiều game next gen chất lượng cao ngày nay đang sử dụng, tôi lên kế hoạch cho nhân vật chính của mình khoảng 50k tris count và thêm từ 40-60 tris cho tóc để có đủ polygon dựng mẫu low poly. Tôi dựng từng thành phần của nhân vật như các khối lẻ để có thể bake dễ dàng hơn. Tất nhiên chúng sẽ được sử dụng cho cảnh cinematic sau này, vì thế chúng không nên quá low – poly nhưng vẫn phải tương đối nhẹ để có thể chạy êm trong UE4.

Texture phong cách hand painted đóng vai trò quan trọng trong dự án, trực tiếp ảnh hưởng lên độ thẩm mỹ và cảm giác đem lại về nhân vật. Tôi không thường xuyên vẽ texture từ 1 tờ giấy trắng, thay vào đó tôi bake out một loạt map từ Xnormal, sau đó kết hợp và lọc các map này trong Photoshop để có thể nhanh chóng tạo ra một base map (bản đồ nền) ưng ý.  

Bằng cách này tôi có thể xem trước và kiểm soát đầu ra texture một cách dễ dàng và nhanh chóng. Tôi gọi base texture này là “Procedure map” được hoàn toàn tạo ra trong Photoshop sử dụng bộ lọc và masking đơn giản, không cần tới vẽ. Khi đã hài lòng với tạo hình, tông màu và hình dáng bởi Procedure map, tôi bắt đầu draft out phần texture bằng cách vẽ trên BodyPaint. Lý do tôi chọn Bodypaint là bởi chỉ với một chút chỉnh sửa trong UI và hotkey là nó đã trở nên tương đồng với Photoshop hơn bất cứ phần mềm texture nào khác, vì thế tôi có thể thoải mái chuyển đổi từ Bodypaint và Photoshop khi làm việc trên cùng một file PSD.

Theo tôi diffuse texture là map quan trọng và trước hết cần phải làm đúng thì mới nghĩ tới những phần khác. Một khi tôi có trong tay diffuse texture chuẩn chỉnh của mọi thứ, tôi sẽ đem mẫu dựng thẳng vào UE4, với môi trường được sắp xếp ánh sáng và HDRI hợp lý để kiểm tra và xem trước trong các map khác như roughness, specular, normal…

Cho tới nay thì quy trình của tôi có vẻ như khá tuyến tính, nhưng từ điểm này khi tôi hoàn thành diffuse map thì nó gần như là chuyển đổi qua lại giữa dựng hình, tweaking diffuse, normal và các map khác cũng như phát triển phần shader từng chút một cho tới khi tôi có được kết quả như ý.

 

Chất liệu

Thực ra tôi mới chỉ chọn dùng UE4 không lâu nên vẫn còn đang nghiên cứu và học hỏi khá nhiều. Tôi không phát minh ra những công thức chất liệu siêu phức tạp hoặc viết riêng các shader bởi công nghệ không phải là chuyên môn của tôi. Vì thế mọi thứ tôi có hiện nay hầu hết được lấy thẳng từ các tài nguyên cơ bản của UE4.

 

Tôi bắt đầu với chất liệu nền trong UE4 mà tôi cảm thấy gần giống nhất với thứ mình muốn, ví dụ như chất liệu da. Bắt đầu với một Subsurface shader (đổ bóng nền), sau đó tôi nhìn vào tranh 2D và xem xét xem yếu tố nào cần thiếu và tìm cách tạo ra hiệu ứng tương tự trong UE4. Đây là bóc tách từng bước cụ thể:

SubSurface shader với các thông số cơ bản

 

Diffuse màu

Chèn texture nền

Thêm vào một fresnel mask với phần texture da đậm hơn để kiểm soát các mảng sáng – tối giống như cách mà nghệ sĩ 2D làm với tranh của họ ( với 3D vui lòng tham khảo Street Fighter).

Hiệu ứng này có thể được điều chỉnh bằng cách sử dụng strength và falloff cho ra các kết quả khác nhau.

Màu bổ trợ (Sub-Surface Color)

Nhân rộng diffuse texture với màu xanh và đặt vào phần Subsurface Color để xem hiệu ứng màu da bổ trợ (subsurface effect).

 

Tạo một Fresnel mask để hợp nhất hai màu bổ trợ làm một để tái tạo lại sự chuyển đổi tinh tế về màu da nhân vật trong các tranh hand painted.

Tôi tạo ra một công thức riêng cho chất liệu fresnel mask để kiểm soát các chỉ số như gradient position và strength cho nhân vật, đồng thời cho phép chỉnh sửa fresnel mask để khiến làn da trông thật hơn. Dưới đây là cận cảnh của một công thức gradient:

Sử dụng các strength, giá trị fallofff khác nhau và texture được blend thêm, mẫu dựng giờ nhìn “thật hơn” với mạch máu chìm dưới da. Các công thức khác nhau sẽ cho ra sản phẩm khác nhau và có tiềm năng được sử dụng trong nhiều thứ khác bên cạnh Skin shader.

Độ nhám, Độ phản chiếu và tùy chỉnh

Một số vùng bóng/bắt sáng trong tranh 2D có khá nhiều điểm hội tụ sáng nhỏ lấp lánh như chất liệu trên vỏ ô tô mới, thế nên tôi thêm vào một số micro noise map chi tiết trên cùng base roughness / specular map /normal map bằng cách overlay blend với một micro grunge texure để thêm vào các chi tiết nhỏ nhằm bắt bóng khi nhìn cận cảnh.

Tuy nhiên tôi vẫn cần nhiều hơn các điểm bóng trên vùng bắt sáng. Cuối cùng thì tôi cũng tìm ra một cách để kiểm soát các vùng bắt sáng mà không làm gây hư hại tới phối cảnh ánh sáng quá nhiều.

Tới đây thì cần một chút khéo léo. Tôi cài đặt bảng này chủ yếu dùng công cụ Reflection Vector node của UE4. Đưa nó vào UV của một texture node và chúng ta sẽ có một kết cấu phản xạ hình cầu trong môi trường.

Tuy nhiên qua một số thử nghiệm tôi nhận thấy nó cần một Cube map (bản đồ lập phương) làm texture sample để có thể thao tác chính xác. Quá trình chuyển đổi từ hình ảnh 2D từ Photoshop sang Cube map nói chung không có gì khó khăn nhưng vẫn là một công việc thủ công và có thể tốn kha khá thời gian nếu ta phải làm đi làm lại để kiểm tra.

Vì thế tôi sử dụng một môi trường phẳng và dài để phản xạ bề mặt 2D từ photoshop rồi áp nó lên một quả cầu bóng, sau đó đặt một khối lập phương render target bên trong để tạo ra một cube map từ bên trong khối cầu. Bằng cách này, tôi có thể cập nhật reflection map (bản đồ phản chiếu) trong Photoshop, nhập ngược trở lại và cập nhật cube map ngay lập tức trong UE4. Để có được một sự bắt sáng và độ bóng tương thích với màu bề mặt vật thể, tôi blend bản đồ phản chiếu này với phần bề mặt màu cùng fresnel mask.

Tôi cũng tạo ra một chức năng cho phép tùy chỉnh vật liệu để kiểm soát một số tham số của bản đồ phản chiếu như là độ mạnh của khu vực hi-light, giá trị phản chiếu cơ sở, falloff fresnel, specular map dùng cho quá trình masking vân vân…

Đó là những cài đặt tổng thể cho các mảng sáng tối của da, ngoài dự án này ra thì tôi chưa có cơ hội được kiểm chứng tính hiệu quả của chúng ở các trường hợp khác nhưng tôi khá hài lòng với kết quả cuối cùng khi vừa có thể duy trì được phong cách 2D hand painted mà mẫu dựng lại bắt sáng một cách tự nhiên, hoặc thậm chí có thể thêm thắt một số chi tiết/lớp vật liệu như màu dưới da hay sự phản chiếu…

Với phần da thì như vậy về cơ bản là tất cả những gì tôi đã làm, dưới đây tôi sẽ nói về các bước làm mảng tối sáng cho đôi mắt – phức tạp hơn, nhưng với một quy trình tương tự.

     

 

 

Mục tiêu và hạn chế

Mục tiêu cuối cùng của tôi là tạo ra một 3D cinematic animation theo phong cách 2D digital painting. Đây là kiểu dự án mà đòi hỏi người ta phải khai thác tối đa UE4 cho ra kết quả tốt nhất về trực quan. Vì thế một khi đầu ra trông đủ đẹp và đủ “khỏe” ở một mức nhất định ( dưới các ánh sáng khác nhau, góc nhìn và khoảng cách khác nhau) thì chuyện thật giả không còn quan trọng lắm.

Ví dụ, với Fresnel Ramp đáng lẽ sẽ chính xác hơn nếu nó được cài đặt dựa trên hướng ánh sáng như một tán xạ ngầm dưới làn da, nhưng vì hiệu ứng này không thực sử rõ rệt nên tôi có thể chỉ cần dùng một fresnel gradient đơn giản. Mẹo này có thể không hiệu quả với những nhân vật được chiếu dưới nguồn ánh sáng lớn. Màu Sub-surface Scattering phải được loại bỏ dựa trên hướng của nguồn sáng, không phải hướng nhìn, tuy nhiên với trường hợp này thì chấp nhận được.

Bất cứ khi nào tôi quyết định thêm layer hoặc chi tiết vào shader của mình, tôi cần phải kiểm tra liệu trông nó thế nào dưới các điều kiện ảnh sáng và góc nhìn khác nhau. Đôi khi một hiệu ứng như fuzz effect trông rất tuyệt khi nhìn chính diện, nhưng nhìn từ mặt bên trông rất khó coi, vì thế tôi phải cân bằng giữa cái gì trông đẹp nhất với cái gì hiệu quả nhất, thậm chí là phải tìm ra cách tiếp cận mới.

Cấu trúc

Một số cài đặt có thể chưa chính xác ngay lúc bấy giờ, nhưng tôi đã có mọi yếu tố cơ bản được draft out sẵn vì thế luôn luôn có thể quay lại từng bước để chỉnh sửa. Ví dụ, trong tương lai nếu tôi có thể nghĩ ra một cách tốt hơn để làm việc với reflection map hoặc subsurface gradient tôi có thể cập nhật những công thức này vào thư viện – tại đó nó sẽ được sử dụng và nâng cấp.

Cân bằng

Sau khi đã hoàn thành việc thêm các tiểu tiết vào phần shader tôi lùi lại một chút để có thể xem xét tổng thể và đánh giá xem liệu mình có đi quá xa so với mục tiêu ban đầu – cụ thể như trong dự án này tôi muốn giữ cảm giác của nó gần với tranh hand painted 2D nhất có thể.

Để vậy tôi cần chỉnh sửa và loại bỏ bất cứ thứ gì khiến nhân vật của mình trông mất tự nhiên hoặc không theo phong cách đã lựa chọn. Ví dụ như việc tạo ra một bề mặt da quá gồ ghề sẽ khiến chúng trông rõ ràng là một mẫu 3D kỹ thuật số.

 

Đặc điểm khuôn mặt

Trong những dự án cũ, tôi chỉ đơn giản là đưa các texture asset hand painted vào UE4, thêm ánh sáng và như vậy là xong. Đó là một vấn đề lớn bởi các texture asset hand painted có thể rất đẹp mắt và phong cách khi đặt trong môi trường bình thường, nhưng khi được nguồn sáng chiếu vào thì không chỉ mỗi màu của texture là thứ ảnh hưởng tới mẫu dựng.

Chúng ta có các mảng tối – sáng, điểm phản chiếu, phản xạ, bạn sẽ mất đi những chi tiết mình vẽ và phần màu thì bị “bóc mẽ” là chúng chỉ được vẽ lên đầy lộ liễu.

Đây là một trong những sản phẩm trước đây khi tôi còn chưa nghiên cứu sâu về UE4, vì thế mọi thứ dừng lại ở mức cơ bản. Tại dự án Exparia, tôi đã rút kinh nghiệm và bỏ công sức chăm chút cho phần mảng sáng tối và phản xạ trên mẫu dựng.

Đặc biệt trên vùng mặt, tôi tập trung vào những chi tiết quan trọng như mắt, mũi và miệng. Tôi có thể dành cả ngày để thêm thắt texture, chỉnh sửa mẫu dựng, tweak shader làm đi làm lại, từng chút một cho tới khi hài lòng.

Trong quy trình làm việc từ đầu đến cuối, mọi thứ đều tương đối rõ ràng trừ phần refine. Thời gian để refine có thể bằng tất cả các bước còn lại gộp vào, nhưng kết quả thì xứng đáng với công sức bỏ ra. Không có một phương án nào để có thể thành công trong mọi lần thử đầu tiên, đôi lúc tôi thậm chí phải dựng hẳn một bộ phận mới, thay đổi cấu trúc mẫu dựng cho cả một phần cơ thể để chúng có thể tương thích với shader mà mình tạo ra.

 

Phần mắt

 

 

 

 

 

 

 

 

 

 

Lúc tôi tạo ra vùng mắt đồng nhất, nhưng sau đó tôi phải bóc tách thành các bộ phận như ảnh trên để có thể tùy chỉnh từng thành phần của con mắt như đô phản xạ, hi-light, chyển động đảo tròng mắt…

Dưới đây là bảng shader mắt:

Lông mi

Tương tự, ban đầu lông mi được vẽ thẳng vào texture khuôn mặt, nhưng sau đó phải xuất riêng ra một sheet mesh và để có được kết quả cuối cùng, tôi phải nhân đôi phần mesh của mi để tạo độ dày. Tôi đã thử tối đa hóa sử dụng translucency shader bởi AA alpha mask của nó ưu việt hơn nhiều so với loại Masked shader.

Điều phiền toái duy nhất đó là ưu tiên phân loại, nhưng vì đôi mắt có một hình dáng gọn ghẽ nên tôi cũng không gặp nhiều trở ngại gì.

Một lựa chọn khác đó là sử dụng Dither Opacity Mask shader – cũng cho ra một AA đẹp nhưng lại không thực sự hợp với các bề mặt mỏng hoặc chuyển động.

Môi

Tôi không muốn quá tập trung vào chi tiết ngay từ bước sculpt vì thế ban đầu đôi môi sẽ không có nhiều chi tiết nhỏ. Tôi thích thêm các tiểu tiết vào sau, trong phần Photoshop hơn là sculpt chúng trực tiếp. Lúc này tôi có thể thử nhiều chi tiết khác nhau để xem đâu mới là thứ hợp lý nhất cho nhân vật của mình.

Đôi khi tôi cần làm chuyển động riêng cho từng bộ phận và render nó cận cảnh để xem các chi tiết như môi hay mắt có thể chịu được các thay đổi trong khi chuyển động và bị biến dạng, cũng như dưới ánh sáng và góc nhìn khác nhau hay không. Làm chuyển động và biến dạng vật trong UE4 thì khá đơn giản, tôi chỉ cần chuẩn bị một loạt blend shapes của các mesh. Tại sao lại là blendshape ấy à? Bởi vì như thế sẽ kiểm tra nhanh hơn và kiểm soát biến dạng tốt hơn là joint skinning animation. Sau đó tạo chuyển động trong Maya, xuất ra UE4 và thử nhanh phần render.

 

Rendering

Cho dự án Exparia này, tôi không đặt ra giới hạn cài đặt bởi toàn cảnh sẽ được sử dụng để tạo ra một cinematic scene nhỏ – có thể được render thành phim với UE4 hoặc tiết chế lại thành một real-time demo với khung hình chuẩn. Tôi tối đa hóa mọi cài đặt render trong UE4 vì không muốn bất cứ hạn chế nào khi phát triển một sản phẩm trực quan mà sẽ được tối ưu hóa sau này.

Dưới đây là một số mẹo để tăng cài đặt cho UE4 render mà tôi sử dụng:

Tôi vô hiệu hóa pre-computed lightning vì thế từ đầu tới cuối sẽ làm việc với realtime dynamic lightning, điều này sẽ cắt giảm thời gian chờ đợi dựng sáng.

Trong khi chủ yếu refine và lookdev, tôi cố ý giữ ánh sáng đơn giản nhất có thể với cảnh nền sử dụng BP_lightStudio với nguồn sáng từ một phía, bắt đầu bằng một đèn skylight và một HDRI dome – đồng nghĩa với việc không có các loại ánh sáng rực rỡ để tránh mọi nhầm lẫn khi kiểm tra mảng sáng tối và phản xạ sau đó.

Dzung Phung Dinh, Founder Thunder Cloud Studio