Я использую ThreeJS r68.
Я всегда использовал THREE.Geometry
для своего проекта, и он отлично работает. Теперь я хочу изменить с THREE.Geometry
на THREE.BufferGeometry
, потому что я читал, что это лучший выбор. Но я не смог заставить SmoothShading работать с моим THREE.BufferGeometry
.
Я загружаю свой объект в BufferGeometry и вызываю bufferGeometry.computerVertexNormals
. И тогда мой результат — FlatShading.
Я прочитал в методе computeVertexNormals()
, что BufferGeometry вычисляет по-разному, если я использую атрибут "index". Я попытался создать «индексированную» BufferGeometry, но это только ухудшило ситуацию. Я не знаю, если я только что создал это право. Я просто добавил индексы, как если бы я добавлял их к граням в обычной геометрии. Метод BufferGeometry.fromGeometry()
не создает индексированную BufferGeometry, поэтому я не знаю, где искать.
Нужна ли мне индексированная BufferGeometry для SmoothShading?
ОБНОВИТЬ
[... немного позже....]
Думаю, теперь я мог бы создать индексированный THREE.BufferGeometry
. Это больше похоже на геометрию. А гладкое затенение отлично смотрится с индексированной BufferGeometry. Итак, теперь у меня есть SmoothShading, но недействительная uv-карта. Но почему uv-карта в индексированной BufferGeometry отличается от неиндексированной BufferGeometry? BufferGeometry действительно не так легко загружается.