ТРИ. js как спрятать стены спереди в 3d модели комнаты - PullRequest
0 голосов
/ 08 марта 2020

Я хочу сделать 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 , простой способ выше ломается. И я изо всех сил пытаюсь придумать умную математику, чтобы правильно скрыть геометрию.

Реальная проблема, которую я подозреваю, состоит в том, как определить внешнюю стену относительно внутренней стены на параллельных стенах и скрыть стену, которая находится ближе к камере (передняя стенка), но показать другую.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...