2013-09-07 2 views
1

В object picking from small three.js viewport Мне дали путь к объектам мыши с маленького (а не полноэкранного) холста.
Но теперь я хочу отобразить N разных видов одной и той же сцены, а также сделать выбор объектов.THREE.js Несколько видов на несколько холстов путем клонирования объектов. Ловушки?

Чтобы избежать сложности: -
Я предпочитаю не иметь N видовых на одном полотне (как на http://webglsamples.googlecode.com/hg/multiple-views/multiple-views.html)
, и я предпочитаю не делать брезентовый копирование (в соответствии с красивым способом GMan в Display different scenes sharing resources on multiple canvases).

Я собираюсь создать для каждого объекта мира несколько трёх объектов (клонов), один клон для каждой сцены: renderer: canvas.
Тогда мне просто нужно сохранить синхронизацию свойств клонов.

Неужели кто-то еще это сделал? Я не обратил внимания на любые подводные камни?

Update 20151202

Метод клонирования работал нормально, но в конце концов я пошел с несколькими видовых экранов решения мульти-визуализатора упоминается в моем ответе (ниже).

В настоящее время я использую один полноэкранный рендерер с несколькими видовыми экранами, питаемыми несколькими камерами в одной сцене.

+0

[Это решение может показаться вам интересным] (http://stackoverflow.com/questions/30608723/is-it-possible-to-enable-unbounded-number-of-renderers-in-three-js/30633132 # 30633132) – gman

+0

@gman. Спасибо, что это выглядит интересно. В моем ответе я пошел с многооконным мультирезервным решением, но я буду замечать вашу технику для будущего использования. В настоящее время я использую один полноэкранный рендерер с несколькими видовыми экранами. – steveOw

ответ

0

Для меня клонирование объектов не было изящным.

В конце концов я понял, как выбрать объекты из разных видовых экранов одной и той же сцены. Хитрость включает в себя одну сцену, несколько видовых и рендеры

Следующая эволюционирует HTML приложение использует метод, но я боюсь, что это смешивается с большим количеством других (грязный) код: - http://www.zen226082.zen.co.uk/TRI_VP.html Лучше смотреть с Chrome/Opera (в Windows 7) или Firefox (на Android).

Нажмите клавиши < 1> или < 3>, чтобы включить левый и правый видовые экраны. Затем, когда вы нажимаете на объект в любом из трех видовых экранов, текстовое поле будет сообщать об имени объекта, а также может произойти какое-то другое действие, например звук или изменение цвета объекта или переход на другую веб-страницу.

Ключевая подпрограмма - SOW_MouseClick_Maybe_on_Object.

0

Это работало для меня в той же ситуации. Не могли бы вы проверить это?

var obj = new THREE.Object3D(); 
function traverseChild(elem) { 
    if(elem.children instanceof Array && elem.children.length > 0) { 
     for(var k in elem.children) { 
      traverseChild(elem.children[k]); 
      } 
     } 

     if (elem instanceof THREE.Mesh) { 
      var mesh = new THREE.Mesh(elem.geometry.clone(), elem.material.clone()); 
      mesh.scale.copy(elem.scale); 
      mesh.rotation.copy(elem.rotation); 
      mesh.position.copy(elem.position); 
      obj.add(mesh); 
     } 
    } 

traverseChild(target); 

scene.add(obj); 
+0

Это выглядит мощным, но я могу клонировать объекты, когда создаю оригиналы, поэтому в настоящее время он не нужен. Также я пошел с несколькими решениями для просмотра. – steveOw

+0

Не могли бы вы поделиться своим решением для выбора нескольких видов? – hawaii

+0

В моем ответе я добавил ссылку. – steveOw

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