2-й УФ-фильтр в Aframe для окружающей окклюзии - PullRequest
0 голосов
/ 30 мая 2020

Я хотел бы использовать запеченную АО на obj-модели в Aframe. Дон Маккарди объясняет, что АО нужен второй UV-канал, и как решить эту проблему в Java здесь:

https://github.com/aframevr/aframe/issues/2721

Я пробовал, но не заставить его работать!

var geometry = me sh .geometry;

geometry.addAttribute ('uv2', новый THREE.BufferAttribute (geometry.attributes.uv.array, 2) );

Как мне указать эти js -строчки на мою obj-модель в Aframe?

Большое спасибо за помощь! Бест, банка

1 Ответ

1 голос
/ 03 августа 2020

В идеале, я бы предложил открыть файл OBJ в Blender, добавить текстуру Ambient Occlusion, как описано в документации Blender , а затем экспортировать в glTF. Остальное будет обработано автоматически с помощью компонента gltf-model A-Frame и загрузится быстрее.

Если преобразование в другой формат невозможно, вам нужно написать собственный компонент, который прослушивает загрузку модели, а затем проходит через все me sh в модели (их может быть несколько!) и создает дополнительный набор UV:

AFRAME.registerComponent('copy-uvs', {
  init: function () {
    this.el.addEventListener('model-loaded', function (e) {
      e.detail.model.traverse(function(object) {
        if (object.isMesh && object.geometry.attributes.uv) {
          var geometry = object.geometry;
          geometry.setAttribute('uv2', geometry.attributes.uv);
          console.log('copied UVs!');
        }
      });
    });
  }
});

Этот copy-uvs компонент должен быть прикреплен к тому же элементу, что и ваша модель OBJ.

...