2016-04-08 14 views
0

Three.js, bir nesnenin tıklatılmış yüzünü alma ve daha sonra bu yüzü vurgulama ile ilgili örneklere sahiptir. Sadece yüz yerine tüm nesneyi nasıl alacağımı merak ediyordum.3d nesne nasıl seçilir (yalnızca tıklanan yüz yerine)?

Örnek: Tek bir arabellekte işlenen çok sayıda asteroit var. Tıklanan asteroit nesnesini nasıl alabilirim?

* Güncelleme *

Ben 'toplama' amaca ulaşmak için bir yol buldum. Esas olarak, bellekteki nesnelerin bir listesini tutuyorum. Bir nesne seçildiğinde, listedeki tüm nesnelere karşı bir çarpışma algılaması yapmak için o nesnenin nokta bilgilerini kullanırım. Kesişen noktaya en yakın olan nesne, teoride, ihtiyacım olan nesne olmalıdır.

cevap

0

iyi bir örnek here

Sen elde edebilirsiniz yok ki ışınlarını yansıtmak ve kavşakları algılamak için raycaster kullanarak.

Bu, nesne toplama için gerek duyduğunuz kodun bir parçasıdır.

// find intersections 

      raycaster.setFromCamera(mouse, camera); 

      var intersects = raycaster.intersectObjects(scene.children); 

      if (intersects.length > 0) { 

       if (INTERSECTED != intersects[ 0 ].object) { 

        if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex); 

        INTERSECTED = intersects[ 0 ].object; 
        INTERSECTED.currentHex = INTERSECTED.material.emissive.getHex(); 
        INTERSECTED.material.emissive.setHex(0xff0000); 

       } 

      } else { 

       if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex); 

       INTERSECTED = null; 

      } 

      renderer.render(scene, camera); 

GÜNCELLEME 1: tüm nesnelerin tek BufferGeometry içine birleştirilirse:

//pseudo code 
foreach(object in bufferGeometry){ 
    foreach(face in object){ 
     face.addAttribute (name[object], attribute[object]) 
    } 
} 
Yani nesnenin her biri için özel bir özellik oluşturma ve yüzlerinden geçirmeden, sen olabilir:
  • bir yüze kesiştiği

  • Özel niteliğini al

  • Bu özniteliğin tüm yüzlerini seçin -> objec t

ben test etmedim ama işe sanırım, bana :)

+0

bildirmek Ama bu bana bir tamponlu geometride olduğu belirli aldı nesneyi alacak? – AlvinfromDiaspar