Я хочу сделать 3d комнату на три. js. Я хочу, чтобы стены, находящиеся перед камерой, становились прозрачными при повороте комнаты.
Вот пример того, что мне нужно: http://jsfiddle.net/1yuxm9g4/
Я знаю, что на этот вопрос уже получен ответ здесь , и хитрость заключается в том, чтобы использовать методы onBeforeRender
и onAfterRender
, чтобы скрыть геометрию.
return function onBeforeRender( renderer, scene, camera, geometry, material, group ) {
if ( v.subVectors( camera.position, this.position ).dot( this.userData.normal ) > 0 ) {
geometry.setDrawRange( 0, 0 );
}
};
}();
var onAfterRender = function( renderer, scene, camera, geometry, material, group ) {
geometry.setDrawRange( 0, Infinity );
};
Однако для более сложного примера с геометриями стен по сетке см. fiddle , простой способ выше ломается. И я изо всех сил пытаюсь придумать умную математику, чтобы правильно скрыть геометрию.
Реальная проблема, которую я подозреваю, состоит в том, как определить внешнюю стену относительно внутренней стены на параллельных стенах и скрыть стену, которая находится ближе к камере (передняя стенка), но показать другую.
Любая помощь с этим будет принята с благодарностью. Спасибо!