2015-11-18 1 views
0

Я пытаюсь загрузить внешнюю модель с помощью ObjectLoader. Я использую следующий кодКак получить доступ к загруженной модели с помощью objectLoader

loader.load('teapot.obj', function (object) { 

     globalobject=object; 
     object.traverse(function (child) { 

      if (child instanceof THREE.Mesh) { 

       child.material.map = texture; 
       console.log(child); 
       child.position.x = 3; 
       child.position.y = -6; 
       child.position.z = -17; 
       child.scale.x=.04; 
       child.scale.y=.04; 
       child.scale.z=.04; 
       child.name='tea'; 
       scene.add(child); 

      } 

     }); 

Но когда я пытаюсь получить доступ к этому объекту в моем методе отрисовки с помощью следующего кода он показывает ошибку

scene.getObjectByName('tea').rotation.z+=.01; 

Я видел, используя консоль, которая scene.getObjectByName('tea') является undefined я могу используйте все другие стандартные объекты Mesh, используя указанную выше команду, но в чем проблема с моим объектом, загруженным с помощью загрузчика? Может кто-нибудь мне помочь?

+0

вы назначаете такое же имя для всех ваших дочерних объектов. – gaitat

+0

Как я могу это сделать тогда –

+0

Я также пробовал использовать следующий код object.name = 'tea', но тот же результат я получил –

ответ

1

Если у вас есть несколько дочерних элементов в одном файле obj, добавьте некоторое число для различения между несколькими сетками. Тогда это должно работать:

scene.getObjectByName("objectName"); 

This answer may help

+0

не работает в моем случае, как я сказал –

Смежные вопросы