Причуды зеркального отражения в ThreeJS

(Отказ от ответственности: первый пост на SO. Я искал ответ на этот вопрос в SO и в других местах, но, хотя зеркала и отражения появляются, я не нашел ничего, связанного с моей конкретной проблемой.)

проблемное зеркало

Это моя первая сцена в ThreeJS, и большая ее часть основана на официальных примерах (очень полезно!). Как видите, по какой-то причине зеркальное отражение черное/фрагментированное под большинством углов, поэтому оно отображает правильное отражение только в очень узком диапазоне. (Исследуйте другие углы, чтобы понять, о чем я говорю.)

Соответствующий код:

  // MIRROR

verticalMirror = new THREE.Mirror( renderer, camera, { clipBias: 0.003, textureWidth: 1024, textureHeight: 1024, color:0x889999 } );

var verticalMirrorMesh = new THREE.Mesh( new THREE.PlaneBufferGeometry( 300, 300 ), verticalMirror.material );
verticalMirrorMesh.add( verticalMirror );
verticalMirrorMesh.position.y = 100;
verticalMirrorMesh.position.z = -500;
scene.add( verticalMirrorMesh );

И в функции рендеринга:

function render()
{
  renderer.render( scene, camera );
  verticalMirror.renderWithMirror( verticalMirror );
}

Я безуспешно пытался возиться с настройками текстуры и clipbias, и весь код в основном основан на Справочный пример ThreeJS для зеркала.

Любая помощь будет принята с благодарностью - спасибо!


person AquaVitae    schedule 21.03.2015    source источник
comment
Вместо этого попробуйте verticalMirror.render().   -  person WestLangley    schedule 22.03.2015


Ответы (1)


Спасибо WestLangley, verticalMirror.render() спас положение! Зеркало теперь красиво отражает. Я буду избегать renderWithMirror, пока не получу лучшее представление о том, что он делает.

Очень признателен.

person AquaVitae    schedule 22.03.2015
comment
Mirror.renderWithMirror() следует использовать, когда у вас есть два зеркала. - person WestLangley; 23.03.2015