2012-11-09 31 views
6

Üç.js'de, nesnenin her nesnenin arkasında olsa bile, her zaman sahnenin üzerinde oluşturulmuş bir ağa sahip olması mümkün mü? Bir örgü ile bir kement seçimini yapıyorum ve sahnenin geri kalanının en üstünde seçim kutusunu seçmem gerekiyor.Three.js - Geometri bir başka üstte

cevap

19

Evet.

Öncelikle bu yapın:

renderer.autoClear = false; 

Sonra yukarıda yer almasını istediğiniz gibi nesneleri içeren bir ikinci sahneyi oluşturun. Ardından, içinde döngü işlemek:

renderer.clear();      // clear buffers 
renderer.render(scene, camera);  // render scene 1 
renderer.clearDepth();    // clear depth buffer 
renderer.render(scene2, camera); // render scene 2 

DÜZENLEME: örgü tek bir malzeme vardır

mesh.renderOrder = 999; 
mesh.onBeforeRender = function(renderer) { renderer.clearDepth(); }; 

, bu olacak: Başka bir çözüm sadece bir sahne var, ama bu desen kullanmaktır "üstünde" render. Eğer siz de false o nesnenin malzemesi için depthTest ayarlayarak yönetebilir cephesinde tek örgü işlemek istiyorsanız

Three.js r.85

+1

Bu tek yol mu? Mesh.renderDepth, material.depthTest ve material.depthWrite ile aynı etkiyi elde etmeye çalışıyordum ama boşuna. – Andrew

+0

@Andrew Bir sorunuz varsa lütfen bir yazı gönderin. – WestLangley

+0

@Andrew şu anda aynı şeyi yapmaya çalışıyor, http://stackoverflow.com/questions/16247280/force-a-sprite-object-to-always-be-in-front-of-skydome-object-in adresine bakın -three-js – sixFingers

0

:

var onTopMaterial = new THREE.MeshStandardMaterial({ 
    color: 'red', 
    depthTest: false 
}); 

mesh.material = onTopMaterial; 

bir demonstation edin this fiddle


Not: Eğer 01 olduğundan emin olunvarsayılan true değerine ayarlandı.

+0

Bu, _not_ iyi bir fikir. Birçok tuzak var. Birincisi için mavi küplerde 'transparent: true' ayarını yapın. Ancak en büyük sorun, "depthTest = false" ayarlanarak, "üst ağda" denen şeyin artık kendisiyle birlikte derinlemesine test yapmayacağı ve bu da yapay eserlerin ortaya çıkmasına yol açabileceğidir. – WestLangley

+0

@WestLangley Geri bildiriminiz için teşekkür ederiz. Şeffaf ayarlarla çatışmak benim durumumda kabul edilebilir, ama emin olamadığım eserler hakkında. Bunu nasıl test ederim? Sadece bir nesneyi geçici olarak diğerlerinin önüne, 'mouseover' ve 'mousout' üzerine geri taşımaya ihtiyacım var. Bana böyle bir durumda geçici olarak farklı bir sahneye eklenmesi arzu edilmez. – Wilt

+0

Çok sınırlı kullanım durumunuz olmadıkça, kabul edilen yanıttaki yaklaşımı izlerim. – WestLangley