2015-06-03 16 views
6

Tôi muốn biết cách xem và hiển thị một đối tượng trò chơi cụ thể (mesh) trong wireframe, không phải toàn bộ khung cảnh. Tôi có thể thay đổi khung cảnh thành wireframe bằng cách sử dụng GL.wireframe nhưng vấn đề tôi muốn xem và chỉ hiển thị một đối tượng nhất định (không phải toàn bộ khung cảnh) trong wireframe. Có lời khuyên nào không?Hiển thị và hiển thị chỉ một đối tượng cụ thể trong wireframe trong Unity3D

Trả lời

8

Sử dụng Lớp. Thay đổi lớp của đối tượng trò chơi (thả xuống ở trên cùng bên phải của cửa sổ Trình kiểm tra) từ Mặc định sang một lớp khác (bạn có thể tạo một lớp mới chọn Thêm lớp ... trong menu thả xuống).

Sau đó, tạo một máy ảnh mới (hoặc chọn máy ảnh chính, tùy thuộc vào những gì bạn muốn đạt được) và thay đổi Mặt nạ lộng lẫy thành lớp bạn đang sử dụng trong đối tượng trò chơi.

Đối vẽ wireframe, bạn gửi kịch bản này trong máy ảnh đó là nghĩa vụ để vẽ đối tượng trò chơi:

// from http://docs.unity3d.com/ScriptReference/GL-wireframe.html 
using UnityEngine; 
using System.Collections; 

public class ExampleClass : MonoBehaviour { 
    void OnPreRender() { 
     GL.wireframe = true; 
    } 
    void OnPostRender() { 
     GL.wireframe = false; 
    } 
} 

Bạn có thể phải sử dụng 2 camera tùy thuộc vào những gì bạn muốn đạt được (một máy ảnh cho đối tượng wireframe, một máy ảnh khác để vẽ phần còn lại của cảnh), trong trường hợp này, bạn sẽ đặt Xóa cờ của một trong các máy ảnh thành Không xóa. Đảm bảo giá trị Độ sâu của cả hai máy ảnh giống nhau.

Xóa cờ của máy ảnh cho biết điều gì sẽ xảy ra với pixel không có gì để vẽ (khoảng trống) của máy ảnh đó và điều gì xảy ra khi có nhiều máy ảnh vẽ cùng một pixel.

Trong trường hợp Rõ ràng FlagsKhông xóa, nó sẽ không làm bất cứ điều gì với các không gian trống rỗng, để lại nó cho các máy ảnh khác để lấp đầy với một đối tượng hoặc một nền tảng. Đối với các pixel mà nó sẽ vẽ một cái gì đó, nó sẽ cho phép chiều sâu của đối tượng quyết định những gì sẽ được rút ra, đó là, các đối tượng gần camera sẽ được vẽ trên đầu trang của những người khác.

+0

Cảm ơn câu trả lời của bạn. Tôi đã làm điều đó nhưng điều này thay đổi toàn bộ khung cảnh thành wireframe, tôi chỉ muốn một vật thể hoặc lưới nhất định. – Tak

+0

Tôi không nhớ có hai camera. Và tôi đã làm chính xác những gì bạn nói nhưng máy ảnh chịu trách nhiệm vẽ cảnh là người duy nhất hiển thị, máy ảnh chịu trách nhiệm đối với đối tượng wireframe không hiển thị đối tượng. Bất kỳ suy nghĩ xin vui lòng? Tôi sẽ upvote câu trả lời của bạn anyway cho sự hỗ trợ của các bạn. – Tak

+0

và cả hai camera đều ở cùng vị trí. Nhưng 'camera2' được đặt để xem một đối tượng nhất định và' camera1' được đặt để xem phần còn lại của cảnh. Nhưng khi chỉ hiển thị phần còn lại của cảnh, sử dụng 'camera1'. – Tak

0

Có một asset trên Cửa hàng tài sản hợp nhất chứa nhiều tài liệu đổ bóng làm chính xác những gì bạn cần. Bạn có thể tải xuống, phân tích và tự viết các trình tạo bóng hoặc chỉ cần sử dụng nội dung được cung cấp.

Sau đó bạn có thể đính kèm các shader đến một liệu và rằng để một lưới renderer để đạt được hiệu quả mong muốn.

+0

điều này cần Unity Pro – Tak

+0

Điều đó không còn đúng nữa. ** Unity 5 miễn phí ** hỗ trợ ** shaders **. Tôi tự mình thử nghiệm điều này. Và ngay cả khi vậy, bạn vẫn có thể phân tích các trình đổ bóng :). Dù sao, đây là giải pháp trong trường hợp 'gl.wireframe' không được hỗ trợ. –

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