2014-06-20 11 views
6

Về cơ bản, tôi có 2 hình tam giác xuất hiện hơi khác màu (trông giống như vấn đề ánh sáng do các chuẩn không chính xác). Nhưng tôi không nghĩ rằng đây là trường hợp ...Hiển thị hình đa giác hộp w/normals cho thấy ánh sáng kỳ lạ/màu

Chi tiết

Tôi có một khối lập phương đơn giản (hộp), trong đó mỗi mặt gồm 6 đỉnh sử dụng một bộ đệm đỉnh (Tôi không sử dụng một bộ đệm chỉ mục tại thời điểm này).

Ngoài các đỉnh của tôi, tôi đã xác định các giá trị bình thường cho mỗi khuôn mặt.

Tuy nhiên, có vẻ như có điều gì đó hơi sai với một trong hai chuẩn (mà tôi không nghĩ có vấn đề với) và/hoặc ánh sáng.

enter image description here

Mỗi khuôn mặt được vẽ bằng WebGl.drawArrays sử dụng TRIANGLE_STRIP. Hình ảnh hiển thị mặt trước của hình lập phương. Sau đây là đỉnh của nó (lưu ý rằng nguồn gốc là góc trên cùng bên trái của mặt trước):

  0, 1, 0, 
      0, 0, 0, 
      1, 0, 0, 

      1, 0, 0, 
      1, 1, 0, 
      0, 1, 0 

Sau đây là normals của nó:

  0, 0, 1, 
      0, 0, 1, 
      0, 0, 1, 

      0, 0, 1, 
      0, 0, 1, 
      0, 0, 1 

Câu hỏi

Bất kỳ ý tưởng nào tại sao hình tam giác thứ nhất có màu sáng hơn tam giác thứ 2?

+0

Điều này rất có thể sẽ không giải quyết được vấn đề nhưng bạn nên sử dụng TRIANGLES thay vì TRIANGLE_STRIP nếu bạn có 6 đỉnh mỗi khuôn mặt. Để sử dụng TRIANGLE_STRIP, bạn cần 4 đỉnh, từ mảng của bạn, chúng sẽ là dòng thứ nhất, thứ 2, thứ 3 và thứ 5. Hãy thử sửa chữa rằng kể từ bây giờ bạn đang thực sự vẽ 4 hình tam giác cho mỗi khuôn mặt thay vì 2. –

+0

Hiển thị cho chúng tôi mã chịu trách nhiệm vẽ mảng. Mặc dù dữ liệu bình thường có vẻ đúng, nhưng có thể dữ liệu bạn truyền đến trình đổ bóng là sai. Chia sẻ thêm một số mã, bởi vì tôi sẽ đặt cược tiền của tôi vào dữ liệu bình thường xấu. – Elvithari

+0

@Matic. Tôi sẽ xem xét đến hình tam giác. Tôi sử dụng điều này bởi vì tôi muốn Cube của tôi trông giống như một hộp wireframe khi sử dụng LINE_STRIP (không có đường chéo). – AlvinfromDiaspar

Trả lời

1

Bí quyết với dải tam giác là mỗi tam giác bổ sung nhận thêm một đỉnh nhưng ba vectơ thông thường. Tôi đoán bạn không chỉ định đủ vectơ bình thường hoặc chỉ định quá nhiều đỉnh.

Các vấn đề liên quan