Три js: отключить выборку усеченного конуса для некоторых объектов - PullRequest
0 голосов
/ 14 января 2020

Чтобы решить проблему z-боев, я ограничил ближнюю и дальнюю камеры небольшим диапазоном. Но когда я хочу добавить более крупный объект, он был отбракован с помощью frustum вида.

Я попытался object3d.frustumCulled свойство, не работает, как ожидалось, причина в следующем: https://github.com/mrdoob/three.js/issues/12170

Итак, есть ли способ убедиться, что некоторые указанные c объекты не являются усеченный отбракованный без смены камеры ближний и дальний? THX.

1 Ответ

0 голосов
/ 15 января 2020

Отбраковка не означает, что объект нарисован или нет. Он может быть нарисован или не нарисован в зависимости от того, где он находится. Это оптимизация, которая пытается сказать что-то вроде этого:

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

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

Если вы загрузите что-то вроде призрака. js и осмотрите свои вызовы отрисовки, вы увидите, что с помощью frustumCulled = false вы получите вызов отрисовки для каждого объекта в вашей сцене. Ваш экран может быть пустым.

...