Tôi cần giúp đỡ với bóng 3d / ánh sáng


8

Làm thế nào để các bạn xử lý bóng trong một trò chơi 3d? Tôi có một nguồn ánh sáng định hướng che phủ một bên của cây làm bằng hình khối. 3 mặt còn lại tất cả chỉ được che bóng xung quanh. Vì vậy, hiệu ứng 3d bị mất khi nhìn vào hai mặt bóng mờ xung quanh. Tui bỏ lỡ điều gì vậy? Tôi có nên che phía bên xa nhất khỏi nguồn sáng thậm chí tối hơn không? Tôi đã thử nhìn vào Fallout 3 và có vẻ như đây là những gì họ làm tuy nhiên Minecraft dường như che phủ một gò cỏ với hai ánh sáng đối diện và hai bên đối diện tối lại tạo ra hiệu ứng rằng có hai ánh sáng định hướng cho hai ánh sáng bên bóng mờ và ánh sáng xung quanh cho các bên bóng tối.

Câu trả lời:



5

Vấn đề của bạn là ánh sáng xung quanh bạn là một màu không đổi. Trong thực tế, ánh sáng xung quanh có xu hướng sáng từ trên xuống và tối từ phía dưới, vì ánh sáng thường đến từ phía trên.

Có rất nhiều bạn có thể làm để khắc phục điều này. Ít nhất, bạn nên có một hằng số shader đỉnh "hướng xung quanh trên cùng", "màu xung quanh phía dưới" và "hướng xung quanh trên cùng".

Trong shader đỉnh của bạn, lấy sản phẩm chấm của "hướng xung quanh trên cùng" và đỉnh bình thường, và sử dụng kết quả để lerp giữa "màu môi trường xung quanh trên cùng" và "màu môi trường xung quanh phía dưới:"

float value = dot( vertex_normal, top_ambient_direction ) * 0.5 + 0.5;
ambient_color = lerp( bottom_ambient_color, top_ambient_color, value );

Đó là một trong những cách đơn giản hơn để làm cho môi trường xung quanh trông đẹp hơn và thường được sử dụng trong các trò chơi PS2 và XBOX1. Các trò chơi hiện đại tiến xa hơn bằng cách sử dụng "sơ đồ khối xung quanh" hoặc "hệ số điều hòa hình cầu xung quanh".


3

Đây là một chủ đề phức tạp và tôi hầu như không đủ điều kiện để nói về nó, nhưng tôi sẽ cho nó một shot. Nhiều trò chơi sử dụng bản đồ ánh sáng được nung sẵn có tính đến ánh sáng bật ra từ nhiều bề mặt, sau đó kết hợp nó với ánh sáng động để tạo ra một môi trường nhanh, chân thực và đẹp mắt. Có lẽ có những trò chơi hiện đại làm nảy nhẹ trong thời gian thực.

Một điều cần lưu ý là ánh sáng giảm dần theo khoảng cách; nếu đèn của bạn nằm ở một góc so với bề mặt, cạnh gần hơn sẽ sáng hơn cạnh xa hơn. Mọi thứ có xu hướng trông rất giả nếu một chiếc đèn chiếu thẳng vào chúng chứ không phải ở một góc.

Ánh sáng của Minecraft rất đặc biệt, bởi vì nó sử dụng một hệ thống kỳ lạ, nơi ánh sáng được coi gần giống như nhiệt lan tỏa khắp thế giới: http://www.minecraftwiki.net/wiki/Light Không dễ dàng mở rộng thành giải pháp đa năng.

Hiệu ứng đẹp mắt nhất mà tôi thấy được sử dụng được gọi là tắc xung quanh. Nó đắt tiền, và thường chỉ được sử dụng trong một giải pháp được nung sẵn, nhưng nó tính đến việc các góc của căn phòng tối hơn vì các bức tường che khuất ánh sáng xung quanh; phần giữa của bức tường có một ánh sáng đáng giá của một bán cầu chiếu vào nó, trong khi góc mà ba bề mặt gặp nhau chỉ có giá trị ánh sáng của một hình cầu bán cầu (1/8 hình cầu). https://secure.wik mega.org/wikipedia/en/wiki/Ambient_occlusion

Có hàng tấn chữ viết trên hệ thống chiếu sáng; tìm kiếm xung quanh có thể sẽ phục vụ bạn tốt.


0

Ánh sáng / bóng cần phải tiên tiến hơn là quyết định nhị phân. Các khối không được thắp sáng hoặc không hoàn toàn bằng ánh sáng, chúng có thể được thắp sáng một phần. Đôi khi khuôn mặt phải hoàn toàn sáng bóng, trong trường hợp nó bị ánh sáng chiếu thẳng vào. Đôi khi bạn chỉ muốn ánh sáng xung quanh, nếu nó hoàn toàn không bị ánh sáng chiếu vào. Tuy nhiên, khi nó bị che khuất một phần, bạn cần cung cấp cho nó một giá trị ánh sáng giữa ánh sáng đầy đủ và hoàn toàn không sáng.

Phương pháp chiếu sáng cơ bản tiêu chuẩn chuyển từ ánh sáng bằng 0 sang ánh sáng tối đa dựa trên sự chênh lệch góc giữa tia sáng tới và bề mặt bình thường của khuôn mặt bạn đang chiếu sáng.

Nếu bình thường của bề mặt bằng (hoặc ngược lại, tùy thuộc vào cách bạn nhìn vào nó) thì bạn có độ sáng tối đa. Khi góc giữa ánh sáng tới và bề mặt bình thường tăng lên, bạn càng ngày càng ít ánh sáng trên mặt đó từ ánh sáng đó.

Bằng cách này, với hai đèn, mỗi mặt sẽ nhận được độ sáng là sự kết hợp giữa độ sáng mà mỗi ánh sáng đặt trên mỗi mặt dựa trên góc của nó.

Điều này sẽ tự nhiên hơn nhiều so với việc cố gắng xác định xem một khuôn mặt có sáng hay không. Bạn sẽ có độ dốc tự nhiên khi các bề mặt cách xa ánh sáng hơn và bạn sẽ cân bằng cho các bề mặt bị ảnh hưởng bởi nhiều hơn một ánh sáng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.