Очень дальние точечные источники света не отображаются должным образом - PullRequest
0 голосов
/ 01 ноября 2019

Если я попытаюсь увеличить рабочую сцену с одной сферой и точечным освещением, чтобы сделать расстояния между объектами очень большими (> 1E5), то визуализированное освещение будет неправильным - оно выглядит как крошечная щель, которая движется по объектукак точка зрения VR меняется, когда я показываю на Oculus Quest или Google Cardboard. Сцена выглядит корректно в веб-браузере без виртуальной реальности на рабочем столе.

Эта проблема явно связана с расстояниями, точностью и объектом a-сферы, а также с тем, как он реагирует на источники света и камеры на больших расстояниях. Но мне нужен обходной путь. Я пытаюсь смоделировать Солнечную систему в реальном масштабе (по крайней мере, насколько расстояния между планетами). Чтобы луна находилась достаточно далеко от наблюдателя, чтобы она не двигалась, мне нужно масштабировать ее так, чтобы луна находилась на расстоянии не менее 2000 м от камеры. Это ставит солнце на расстоянии 800000 м, и именно отсюда исходит солнечный свет. В результате, другие планеты не отображаются правильно. Если я уменьшу масштаб, все работает, но луна движется относительно других объектов, когда я встаю или хожу вокруг.

Есть ли обходной путь, который я могу использовать здесь? Есть ли опубликованный лимит, который объясняет, какой бит системы является проблемой - он явно более низко, чем aframe, но я не уверен, что это три.js или реализация webgl в oculus или что.

<a-scene background="color:black;">
  <a-sphere id="mars" position="0 500E3 -2000E3" radius="40E3" color="#FFBBBB"></a-sphere>
  <a-entity id="sunlightnear" light="color: #00FF00; type: point;" position="0 0 -1000"></a-entity>
  <a-entity id="sunlightfar" light="color: #FF0000; type: point;" position="0 0 -1000E3"></a-entity>
  <a-entity id="mainCamera" camera="far:1E10;" position="0 1.6 0"  look-controls></a-entity>
</a-scene>

При этом используются два источника света на разных расстояниях. Я ожидаю, что сфера Марса будет равномерно освещена. Вместо этого он всегда заметно зеленый от первого источника, но красный от второго источника выглядит как полоса, которая движется по сфере со странными артефактами, когда я двигаю свой глаз.

1 Ответ

0 голосов
/ 01 ноября 2019

Не используйте точечные светильники. Если источник света очень далеко или очень большой, его лучше аппроксимировать направленным светом

Пример и соответствующим HTML .

Я также рекомендую использовать маленькие цифры. С ним легче работать, и не возникнет проблем с точностью или переполнением. Лучше сосредоточиться на правильном соотношении расстояний и размеров.

...