2015-03-25 14 views
5

Tôi muốn có 2 cảnh với một camera được thêm vào mỗi ảnh và tôi muốn chúng được vẽ trong cùng một khung hình (nhưng không phải để chia canvas này). Tôi curently sử dụng 2 renderers vẽ trong cùng một yếu tố canvas, nhưng vấn đề của tôi là renderer thứ hai ghi đè lên đầu tiên vì vậy tôi chỉ nhìn thấy một trong 2 cảnh. Tôi đã thử alpha: true cho trình kết xuất và setClearColor(0x000000, 0); nhưng vẫn không có kết quả mong muốn.Vẽ 2 cảnh trong cùng một khung hình - ba.js

Tôi muốn đạt được một hình ảnh trong hiệu ứng hình ảnh, nhưng tôi muốn "hình ảnh bên trong" được minh bạch (chỉ để vẽ các đối tượng, không phải là nền).

Điều đó có thể thực hiện với ba.js không?

cảm ơn

+0

bạn có thể đăng hình ảnh hiển thị sự cố không? Cả hai trình kết xuất của bạn có 'setClearColor (0x000000, 0);' – gaitat

+0

@gaitat: Cả hai trình kết xuất đồ họa đều có setClearColor (0x000000, 0). Hình ảnh là không có gì thú vị, tôi chỉ không thể nhìn thấy bất cứ điều gì từ cảnh đầu tiên, tôi chỉ nhìn thấy cảnh thứ 2. Nó giống như trình kết xuất đồ họa thứ 2 ghi đè lên canvas. – ThanosSar

+0

Xem http://stackoverflow.com/questions/12666570/how-to-change-the-zorder-of-object-with-threejs/12666937#12666937 – WestLangley

Trả lời

7

Nếu bạn có hai cảnh và bạn muốn tạo hiệu ứng ảnh trong ảnh, bạn có thể sử dụng mẫu sau. Đầu tiên thiết lập autoClear:

renderer.autoClear = false; // important! 

Sau đó, trong làm cho vòng lặp của bạn, sử dụng một mô hình như thế này:

renderer.clear(); 
renderer.setViewport(0, 0, window.innerWidth, window.innerHeight); 
renderer.render(scene, camera); 

renderer.clearDepth(); // important! clear the depth buffer 
renderer.setViewport(10, window.innerHeight - insetHeight - 10, insetWidth, insetHeight); 
renderer.render(scene2, camera); 

three.js r.71

+0

đúng vậy. chưa kể rằng tất nhiên có thể sử dụng một máy ảnh khác cho lần hiển thị thứ hai. – ThanosSar

+0

@WestLangley một lần nữa bạn tiết kiệm ass của tôi, bạn là người đàn ông tuyệt vời. Nợ biết ơn của tôi đã đạt tới vũ trụ. Cảm ơn bạn !!! – atom

0

Tôi nghĩ rằng một giải pháp tốt hơn sẽ được sử dụng kiểm tra cắt kéo. Về cơ bản, kiểm tra cắt kéo sẽ loại bỏ bất kỳ mảnh vỡ nào bên ngoài cửa sổ cắt kéo.

Phương pháp rõ ràng có thể trở nên khó chịu khi bạn sử dụng màu sắc rõ ràng, giá trị stencil, vv

for (...) { 
    // init left, bottom, etc. with viewport info 

    renderer.setViewport(left, bottom, width, height); 
    renderer.setScissor(left, bottom, width, height); 
    renderer.setScissorTest(true); 

    renderer.render(scene[i], camera[i]); 
} 

Dưới đây là một ví dụ three.js trên các cổng đa view: link. Nó thể hiện cùng một cảnh, nhưng ý tưởng khá giống nhau. Nó đang sử dụng kiểm tra cắt kéo.

+0

Khi tôi làm điều này, nó chỉ vẽ cảnh cuối cùng và mọi thứ khác màu đen. Làm cách nào để ngăn không cho nó vẽ tất cả mọi thứ màu đen trong khu vực mảnh cắt hình cắt kéo? – trusktr

+0

@trusktr Hmm .. Thử tắt autoClear của trình kết xuất đồ họa. Có thể hữu ích nếu bạn đặt liên kết tới mã của mình. – shrekshao

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