Три. js артефакт прозрачности на непрозрачном объекте - PullRequest
0 голосов
/ 06 апреля 2020

Проблема с артефактом прозрачности

Здравствуйте, у меня проблема с тремя. js. Я импортирую «большую» модель glb на мою сцену, которая не прозрачна, но если модель видна на экране камеры, передний план становится прозрачным. (как вы можете видеть на картинке, фон montain находится на переднем плане)

Я пробовал некоторые решения, такие как:

  • deepTest для false на материале glb
  • sortOrder в false
  • Использовать logarithmicDepthBuffer
  • Изменить материал прозрачным на false
  • Изменить alphaTest с 0 на 1 с шагом 0,1

Но ничего не работает. Если у кого-то есть решение:)

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Благодаря donmccurdy , которые нашли мое решение на форуме 3. js.

Наконец мой файл glb был прозрачным :( Так что есть два решения.

Решение 1:

Найдите прозрачность модели и исправьте ее.

Решение 2:

Изменение вернуться к непрозрачному и восстановить значение глубины по умолчанию.

mesh = content.getObjectByName('mesh_0');
mesh.material.transparent = false;
mesh.material.depthWrite = true;
0 голосов
/ 06 апреля 2020

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

Исправление этого включает в себя разрезание проблемных c объектов (даже отдельных треугольников) на более мелкие кусочки, чтобы порядок может быть сохранен, и это часто почти невозможно. Поскольку вы работаете с Three. js, посмотрите, не могли бы вы изменить свой дизайн, чтобы это не было проблемой или чтобы артефакты неправильного порядка рендеринга не были слишком заметны.

...